/* @license crypto-js-wasm v1.1.1 (c) 2022-2024 peteralfredlee https://github.com/originjs/crypto-js-wasm Released under the MulanPSL2 License. */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('pako')) : typeof define === 'function' && define.amd ? define(['pako'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.CryptoJSWasm = factory(global.pako)); })(this, (function (pako) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var pako__default = /*#__PURE__*/_interopDefaultLegacy(pako); /** * Latin1 encoding strategy. */ const Latin1 = { /** * Converts a word array to a Latin1 string. * * @param {WordArray} wordArray The word array. * * @return {string} The Latin1 string. * * @static * * @example * * const latin1String = CryptoJSW.enc.Latin1.stringify(wordArray); */ stringify(wordArray) { // Shortcuts const { words, sigBytes } = wordArray; // Convert let latin1Chars = ''; for (let i = 0; i < sigBytes; i++) { const byte = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; latin1Chars += String.fromCharCode(byte); } return latin1Chars; }, /** * Converts a Latin1 string to a word array. * * @param {string} latin1Str The Latin1 string. * * @return {WordArray} The word array. * * @static * * @example * * const wordArray = CryptoJSW.enc.Latin1.parse(latin1String); */ parse(latin1Str) { // Shortcut const latin1StrLength = latin1Str.length; // Convert const words = []; let word = 0; // const words = new Array(latin1StrLength >>> 2); for (let i = 0; i < latin1StrLength - latin1StrLength % 4; i++) { word |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8; if (i % 4 == 3) { words[i >>> 2] = word; word = 0; } } for (let i = latin1StrLength - latin1StrLength % 4; i < latin1StrLength; i++) { words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8; } return new WordArray(words, latin1StrLength); } }; /** * UTF-8 encoding strategy. */ const Utf8 = { /** * Converts a word array to a UTF-8 string. * * @param {WordArray} wordArray The word array. * * @return {string} The UTF-8 string. * * @static * * @example * * const utf8String = CryptoJSW.enc.Utf8.stringify(wordArray); */ stringify(wordArray) { try { return decodeURIComponent(escape(Latin1.stringify(wordArray))); } catch (e) { throw new Error('Malformed UTF-8 data'); } }, /** * Converts a UTF-8 string to a word array. * * @param {string} utf8Str The UTF-8 string. * * @return {WordArray} The word array. * * @static * * @example * * const wordArray = CryptoJSW.enc.Utf8.parse(utf8String); */ parse(utf8Str) { return Latin1.parse(unescape(encodeURIComponent(utf8Str))); } }; /** * Hex encoding strategy. */ const Hex = { /** * Converts a word array to a hex string. * * @param {WordArray} wordArray The word array. * * @return {string} The hex string. * * @static * * @example * * const hexString = CryptoJSW.enc.Hex.stringify(wordArray); */ stringify(wordArray) { // Shortcuts const { words, sigBytes } = wordArray; // Convert const hexChars = []; for (let i = 0; i < sigBytes; i++) { const bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; hexChars.push((bite >>> 4).toString(16)); hexChars.push((bite & 0x0f).toString(16)); } return hexChars.join(''); }, /** * Converts a hex string to a word array. * * @param {string} hexStr The hex string. * * @return {WordArray} The word array. * * @static * * @example * * const wordArray = CryptoJSW.enc.Hex.parse(hexString); */ parse(hexStr) { // Shortcut const hexStrLength = hexStr.length; // Convert const words = []; for (let i = 0; i < hexStrLength; i += 2) { words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4; } return new WordArray(words, hexStrLength / 2); } }; /** * Determine if a value is a String * * @param {Object} val The value to test * @returns {Boolean} True if value is a String, otherwise false */ const isString = val => typeof val === 'string'; /** * Check if the input parameter is valid * * @param parameter {any} input parameter * @param parameterDesc {string} description input parameter * @param validTypes {string|array} valid types of parameter * @param validValues {array} valid values of parameter * @throws if parameter is invalid */ const parameterCheck = (parameter, parameterDesc, validTypes, ...validValues) => { let isValid = true; if (validTypes !== undefined) { if (typeof validTypes === 'string' && typeof parameter !== validTypes) { isValid = false; } if (validTypes.indexOf(typeof parameter) < 0) { isValid = false; } } if (validValues !== undefined && validValues.length > 0) { if (validValues.indexOf(parameter) < 0) { isValid = false; } } if (!isValid) { throw TypeError(`The input value ${parameter} of ${parameterDesc} is invalid! The type should be ${validTypes}, and the values should be ${validValues}.`); } }; /* eslint-disable no-use-before-define */ let crypto; // Native crypto from window (Browser) if (typeof window !== 'undefined' && window.crypto) { crypto = window.crypto; } // Native crypto in web worker (Browser) if (typeof self !== 'undefined' && self.crypto) { crypto = self.crypto; } // Native crypto from worker // eslint-disable-next-line no-undef if (typeof globalThis !== 'undefined' && globalThis.crypto) { // eslint-disable-next-line no-undef crypto = globalThis.crypto; } // Native (experimental IE 11) crypto from window (Browser) if (!crypto && typeof window !== 'undefined' && window.msCrypto) { crypto = window.msCrypto; } // Native crypto from global (NodeJS) if (!crypto && typeof global !== 'undefined' && global.crypto) { crypto = global.crypto; } // Native crypto import via require (NodeJS) if (!crypto && typeof require === 'function') { try { crypto = require('crypto'); // eslint-disable-next-line no-empty } catch (err) {} } const cryptoSecureRandomInt = () => { if (crypto) { // Use getRandomValues method (Browser) if (typeof crypto.getRandomValues === 'function') { try { return crypto.getRandomValues(new Uint32Array(1))[0]; // eslint-disable-next-line no-empty } catch (err) {} } // Use randomBytes method (NodeJS) if (typeof crypto.randomBytes === 'function') { try { return crypto.randomBytes(4).readInt32LE(); // eslint-disable-next-line no-empty } catch (err) {} } } throw new Error('Native crypto module could not be used to get secure random number.'); }; class Base { /** * Copies properties into this object. * * @param {Object} properties The properties to mix in. * * @example * * MyType.mixIn({ * field: 'value' * }); */ mixIn(properties) { return Object.assign(this, properties); } /** * Creates a copy of this object. * * @return {Object} The clone. * * @example * * let clone = instance.clone(); */ clone() { const clone = new this.constructor(); Object.assign(clone, this); return clone; } /** * Get a new instance of this class. * Arguments to create() will be passed to constructor. * * @return {Object} The new object. * * @static * * @example * * var instance = MyType.create(); */ static create(...args) { return new this(...args); } } /** * An array of 32-bit words. * * @property {Array} words The array of 32-bit words. * @property {number} sigBytes The number of significant bytes in this word array. */ class WordArray extends Base { /** * Initializes a newly created word array. * * @param {Array} words (Optional) An array of 32-bit words. * @param {number} sigBytes (Optional) The number of significant bytes in the words. * * @example * * let wordArray = new WordArray(); * let wordArray = new WordArray([0x00010203, 0x04050607]); * let wordArray = new WordArray([0x00010203, 0x04050607], 6); */ constructor(words = [], sigBytes = words.length * 4) { super(); let typedArray = words; // Convert buffers to uint8 if (typedArray instanceof ArrayBuffer) { typedArray = new Uint8Array(typedArray); } // Convert other array views to uint8 if (typedArray instanceof Int8Array || typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) { typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); } // Handle Uint8Array if (typedArray instanceof Uint8Array) { // Shortcut const typedArrayByteLength = typedArray.byteLength; // Extract bytes const _words = []; for (let i = 0; i < typedArrayByteLength; i++) { _words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8; } // Initialize this word array this.words = _words; this.sigBytes = typedArrayByteLength; } else { // Else call normal init this.words = words; this.sigBytes = sigBytes; } } /** * Creates and initializes a word array * A compatibility method for crypto-js * * @param {Array} words (Optional) An array of 32-bit words. * @param {number} sigBytes (Optional) The number of significant bytes in the words. */ static create(words = [], sigBytes = words.length * 4) { return new WordArray(words, sigBytes); } /** * Creates a word array filled with random bytes. * * @param {number} nBytes The number of random bytes to generate. * * @return {WordArray} The random word array. * * @static * * @example * * const wordArray = CryptoJSW.lib.WordArray.random(16); */ static random(nBytes) { const words = []; for (var i = 0; i < nBytes; i += 4) { words.push(cryptoSecureRandomInt()); } return new WordArray(words, nBytes); } /** * Converts this word array to a string. * * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJSW.enc.Hex * * @return {string} The stringified word array. * * @example * * const string = wordArray + ''; * const string = wordArray.toString(); * const string = wordArray.toString(CryptoJSW.enc.Utf8); */ toString(encoder = Hex) { return encoder.stringify(this); } /** * Concatenates a word array to this word array. * * @param {WordArray} wordArray The word array to append. * * @return {WordArray} This word array. * * @example * * wordArray1.concat(wordArray2); */ concat(wordArray) { // Shortcuts const thisWords = this.words; const thatWords = wordArray.words; const thisSigBytes = this.sigBytes; const thatSigBytes = wordArray.sigBytes; // Clamp excess bits this.clamp(); // Concat if (thisSigBytes % 4) { // Copy one byte at a time for (let i = 0; i < thatSigBytes; i++) { const thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8; } } else { // Copy one word at a time for (let i = 0; i < thatSigBytes; i += 4) { thisWords[thisSigBytes + i >>> 2] = thatWords[i >>> 2]; } } this.sigBytes += thatSigBytes; // Chainable return this; } /** * Removes insignificant bits. * * @example * * wordArray.clamp(); */ clamp() { // Shortcuts const { words, sigBytes } = this; // Clamp words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8; words.length = Math.ceil(sigBytes / 4); } /** * Creates a copy of this word array. * * @return {WordArray} The clone. * * @example * * let clone = wordArray.clone(); */ clone() { const clone = super.clone.call(this); clone.words = this.words.slice(0); return clone; } } /** * Abstract buffered block algorithm template. * * The property blockSize must be implemented in a concrete subtype. * * @property {number} _minBufferSize * * The number of blocks that should be kept unprocessed in the buffer. Default: 0 */ class BufferedBlockAlgorithm extends Base { constructor() { super(); this._minBufferSize = 0; } /** * Resets this block algorithm's data buffer to its initial state. * * @example * * bufferedBlockAlgorithm.reset(); */ reset() { // Initial values this._data = new WordArray(); this._nDataBytes = 0; } /** * Adds new data to this block algorithm's buffer. * * @param {WordArray|string} data * * The data to append. Strings are converted to a WordArray using UTF-8. * * @example * * bufferedBlockAlgorithm._append('data'); * bufferedBlockAlgorithm._append(wordArray); */ _append(data) { let m_data = data; // Convert string to WordArray, else assume WordArray already if (isString(m_data)) { m_data = Utf8.parse(m_data); } // Append this._data.concat(m_data); this._nDataBytes += m_data.sigBytes; } /** * Processes available data blocks. * * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. * * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. * * @return {WordArray} The processed data. * * @example * * let processedData = bufferedBlockAlgorithm._process(); * let processedData = bufferedBlockAlgorithm._process(!!'flush'); */ _process(doFlush) { let processedWords; // Shortcuts const { _data: data, blockSize } = this; const dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSizeBytes = blockSize * 4; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { for (let offset = 0; offset < nWordsReady; offset += blockSize) { // Perform concrete-algorithm logic this._doProcessBlock(dataWords, offset); } // Remove processed words processedWords = dataWords.splice(0, nWordsReady); data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } /** * Creates a copy of this object. * * @return {Object} The clone. * * @example * * let clone = bufferedBlockAlgorithm.clone(); */ clone() { const clone = super.clone.call(this); clone._data = this._data.clone(); return clone; } } /** * HMAC algorithm. */ class HMAC extends Base { /** * Initializes a newly created HMAC. * * @param {Hasher} SubHasher The hash algorithm to use. * @param {WordArray|string} key The secret key. * * @example * * const hmacHasher = new HMAC(CryptoJSW.algo.SHA256, key); */ constructor(SubHasher, key) { super(); const hasher = new SubHasher(); this._hasher = hasher; // Convert string to WordArray, else assume WordArray already let _key = key; if (isString(_key)) { _key = Utf8.parse(_key); } // Shortcuts const hasherBlockSize = hasher.blockSize; const hasherBlockSizeBytes = hasherBlockSize * 4; // Allow arbitrary length keys if (_key.sigBytes > hasherBlockSizeBytes) { _key = hasher.finalize(key); } // Clamp excess bits _key.clamp(); // Clone key for inner and outer pads const oKey = _key.clone(); this._oKey = oKey; const iKey = _key.clone(); this._iKey = iKey; // Shortcuts const oKeyWords = oKey.words; const iKeyWords = iKey.words; // XOR keys with pad constants for (let i = 0; i < hasherBlockSize; i++) { oKeyWords[i] ^= 0x5c5c5c5c; iKeyWords[i] ^= 0x36363636; } oKey.sigBytes = hasherBlockSizeBytes; iKey.sigBytes = hasherBlockSizeBytes; // Set initial values this.reset(); } /** * Resets this HMAC to its initial state. * * @example * * hmacHasher.reset(); */ reset() { // Shortcut const hasher = this._hasher; // Reset hasher.reset(); hasher.update(this._iKey); } /** * Updates this HMAC with a message. * * @param {WordArray|string} messageUpdate The message to append. * * @return {HMAC} This HMAC instance. * * @example * * hmacHasher.update('message'); * hmacHasher.update(wordArray); */ update(messageUpdate) { this._hasher.update(messageUpdate); // Chainable return this; } /** * Finalizes the HMAC computation. * Note that the finalize operation is effectively a destructive, read-once operation. * * @param {WordArray|string} messageUpdate (Optional) A final message update. * * @return {WordArray} The HMAC. * * @example * * let hmac = hmacHasher.finalize(); * let hmac = hmacHasher.finalize('message'); * let hmac = hmacHasher.finalize(wordArray); */ finalize(messageUpdate) { // Shortcut const hasher = this._hasher; // Compute HMAC const innerHash = hasher.finalize(messageUpdate); hasher.reset(); const hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); return hmac; } } /** * Abstract hasher template. * * @property {number} blockSize * * The number of 32-bit words this hasher operates on. Default: 16 (512 bits) */ class Hasher extends BufferedBlockAlgorithm { constructor(cfg) { super(); this.blockSize = 512 / 32; /** * Configuration options. */ this.cfg = Object.assign(new Base(), cfg); // Set initial values this.reset(); } /** * Creates a shortcut function to a hasher's object interface. * * @param {Hasher} SubHasher The hasher to create a helper for. * * @return {Function} The shortcut function. * * @static * * @example * * let SHA256 = CryptoJSW.lib.Hasher._createHelper(CryptoJSW.algo.SHA256); */ static _createHelper(SubHasher) { let result = (message, cfg) => new SubHasher(cfg).finalize(message); result.loadWasm = async () => { if (!SubHasher.wasm) { await SubHasher.loadWasm(); } }; result.outputSize = SubHasher.outputSize; return result; } /** * Creates a shortcut function to the HMAC's object interface. * * @param {Hasher} SubHasher The hasher to use in this HMAC helper. * * @return {Function} The shortcut function. * * @static * * @example * * const HmacSHA256 = CryptoJSW.lib.Hasher._createHmacHelper(CryptoJSW.algo.SHA256); */ static _createHmacHelper(SubHasher) { let result = (message, key) => new HMAC(SubHasher, key).finalize(message); result.loadWasm = async () => { if (!SubHasher.wasm) { await SubHasher.loadWasm(); } }; return result; } /** * Resets this hasher to its initial state. * * @example * * hasher.reset(); */ reset() { // Reset data buffer super.reset.call(this); // Perform concrete-hasher logic this._doReset(); } /** * Updates this hasher with a message. * * @param {WordArray|string} messageUpdate The message to append. * * @return {Hasher} This hasher. * * @example * * hasher.update('message'); * hasher.update(wordArray); */ update(messageUpdate) { // Append this._append(messageUpdate); // Update the hash this._process(); // Chainable return this; } /** * Finalizes the hash computation. * Note that the finalize operation is effectively a destructive, read-once operation. * * @param {WordArray|string} messageUpdate (Optional) A final message update. * * @return {WordArray} The hash. * * @example * * let hash = hasher.finalize(); * let hash = hasher.finalize('message'); * let hash = hasher.finalize(wordArray); */ finalize(messageUpdate) { // Final message update if (messageUpdate) { this._append(messageUpdate); } // Perform concrete-hasher logic const hash = this._doFinalize(); return hash; } } const X32WordArray = WordArray; /** * A 64-bit word. */ class X64Word extends Base { /** * Initializes a newly created 64-bit word. * * @param {number} high The high 32 bits. * @param {number} low The low 32 bits. * * @example * * let x64Word = new X64Word(0x00010203, 0x04050607); */ constructor(high, low) { super(); this.high = high; this.low = low; } } /** * An array of 64-bit words. * * @property {Array} words The array of CryptoJSW.x64.Word objects. * @property {number} sigBytes The number of significant bytes in this word array. */ class X64WordArray extends Base { /** * Initializes a newly created word array. * * @param {Array} words (Optional) An array of CryptoJSW.x64.Word objects. * @param {number} sigBytes (Optional) The number of significant bytes in the words. * * @example * * let wordArray = new X64WordArray(); * * let wordArray = new X64WordArray([ * new x64Word(0x00010203, 0x04050607), * new x64Word(0x18191a1b, 0x1c1d1e1f) * ]); * * let wordArray = new X64WordArray([ * new x64Word(0x00010203, 0x04050607), * new x64Word(0x18191a1b, 0x1c1d1e1f) * ], 10); */ constructor(words = [], sigBytes = words.length * 8) { super(); this.words = words; this.sigBytes = sigBytes; } /** * Converts this 64-bit word array to a 32-bit word array. * * @return {CryptoJSW.lib.WordArray} This word array's data as a 32-bit word array. * * @example * * let x32WordArray = x64WordArray.toX32(); */ toX32() { // Shortcuts const x64Words = this.words; const x64WordsLength = x64Words.length; // Convert const x32Words = []; for (let i = 0; i < x64WordsLength; i++) { const x64Word = x64Words[i]; x32Words.push(x64Word.high); x32Words.push(x64Word.low); } return new X32WordArray(x32Words, this.sigBytes); } /** * Creates a copy of this word array. * * @return {X64WordArray} The clone. * * @example * * let clone = x64WordArray.clone(); */ clone() { const clone = super.clone.call(this); // Clone "words" array clone.words = this.words.slice(0); const { words } = clone; // Clone each X64Word object const wordsLength = words.length; for (let i = 0; i < wordsLength; i++) { words[i] = words[i].clone(); } return clone; } } 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; } const parseLoop = (base64Str, base64StrLength, reverseMap) => { const words = []; let nBytes = 0; for (let i = 0; i < base64StrLength; i++) { if (i % 4) { const bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2; const bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2; const bitsCombined = bits1 | bits2; words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8; nBytes++; } } return new WordArray(words, nBytes); }; /** * Base64 encoding strategy. */ const Base64 = { /** * Converts a word array to a Base64 string. * * @param {WordArray} wordArray The word array. * * @return {string} The Base64 string. * * @static * * @example * * const base64String = CryptoJSW.enc.Base64.stringify(wordArray); */ stringify(wordArray) { // Shortcuts const { words, sigBytes } = wordArray; const map = this._map; // Clamp excess bits wordArray.clamp(); // Convert let base64 = ''; // the following implementation is referred from https://gist.github.com/jonleighton/958841 const byteRemainder = sigBytes % 3; const mainLength = sigBytes - byteRemainder; let a, b, c, d; let chunk; // Main loop deals with bytes in chunks of 3 for (let i = 0; i < mainLength; i = i + 3) { const byte1 = this.getByteByIndex(words, i); const byte2 = this.getByteByIndex(words, i + 1); const byte3 = this.getByteByIndex(words, i + 2); // Combine the three bytes into a single integer chunk = byte1 << 16 | byte2 << 8 | byte3; // Use bitmasks to extract 6-bit segments from the triplet a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18 b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12 c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6 d = chunk & 63; // 63 = 2^6 - 1 // Convert the raw binary segments to the appropriate ASCII encoding base64 += map[a] + map[b] + map[c] + map[d]; } // Deal with the remaining bytes and padding if (byteRemainder == 1) { chunk = this.getByteByIndex(words, mainLength); a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2 // Set the 4 least significant bits to zero b = (chunk & 3) << 4; // 3 = 2^2 - 1 base64 += map[a] + map[b] + '=='; } else if (byteRemainder == 2) { chunk = this.getByteByIndex(words, mainLength) << 8 | this.getByteByIndex(words, mainLength + 1); a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10 b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4 // Set the 2 least significant bits to zero c = (chunk & 15) << 2; // 15 = 2^4 - 1 base64 += map[a] + map[b] + map[c] + '='; } return base64; }, getByteByIndex(words, index) { return words[index >>> 2] >>> 24 - index % 4 * 8 & 0xff; }, /** * Converts a Base64 string to a word array. * * @param {string} base64Str The Base64 string. * * @return {WordArray} The word array. * * @static * * @example * * const wordArray = CryptoJSW.enc.Base64.parse(base64String); */ parse(base64Str) { // Shortcuts let base64StrLength = base64Str.length; const map = this._map; let reverseMap = this._reverseMap; if (!reverseMap) { this._reverseMap = []; reverseMap = this._reverseMap; for (let j = 0; j < map.length; j++) { reverseMap[map.charCodeAt(j)] = j; } } // Ignore padding const paddingChar = map.charAt(64); if (paddingChar) { const paddingIndex = base64Str.indexOf(paddingChar); if (paddingIndex !== -1) { base64StrLength = paddingIndex; } } // Convert return parseLoop(base64Str, base64StrLength, reverseMap); }, _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' }; /** * Decode Base64 encoded .wasm bytes * * @param compressedBase64Bytes Base64-encoded pako-compressed .wasm bytes * @return {Uint8Array|*} .wasm bytes, this is intended to be used by WebAssembly.instantiate */ const generateWasmBytes = function (compressedBase64Bytes) { function charCodeAt(c) { return c.charCodeAt(0); } let compressedBytes; if (typeof atob === 'function') { // Browser case compressedBytes = new Uint8Array(atob(compressedBase64Bytes).split('').map(charCodeAt)); } else { compressedBytes = require('buffer').Buffer.from(compressedBase64Bytes, 'base64'); } return pako__default["default"].inflate(compressedBytes); }; /** * Load wasm bytes by WebAssembly.instantiate. Note this is async as WebAssembly.instantiate is async. * The async WebAssembly.instantiate is recommended instead of its sync variant WebAssembly.instance * * @param wasmBytes .wasm file bytes * @param imports configs for WebAssembly.instantiate, this is related to the generated glue code * @return {Promise} the generated WebAssembly target */ const loadWasm = async function (wasmBytes, imports) { if (typeof WebAssembly !== 'object' || typeof WebAssembly.instantiate !== 'function') { throw new Error('WebAssembly is not supported.'); } const loadResult = await WebAssembly.instantiate(wasmBytes, imports); return loadResult.instance.exports; }; /** * An async function to load all existing WebAssembly modules. Please note that this only need to be called once. */ const loadAllWasm = async function () { await Promise.allSettled(Object.values(index.algo).map(algo => { if (!algo.loadWasm) { return; } return algo.loadWasm(); })); }; const wasmBytes$b = generateWasmBytes('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'); function md5Wasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} doFlush * @param {Uint32Array} hashWords * @param {Uint32Array} dataWords * @param {number} dataSigBytes * @param {number} blockSize * @param {number} minBufferSize * @returns {number} */ function md5Process(doFlush, hashWords, dataWords, dataSigBytes, blockSize, minBufferSize) { try { var ptr0 = passArray32ToWasm0(hashWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ret = wasm.md5Process(doFlush, ptr0, len0, ptr1, len1, dataSigBytes, blockSize, minBufferSize); return ret >>> 0; } finally { hashWords.set(getUint32Memory0().subarray(ptr0 / 4, ptr0 / 4 + len0)); wasm.__wbindgen_free(ptr0, len0 * 4); } } return { md5Process: md5Process }; } /** * MD5 hash algorithm. */ class MD5Algo extends Hasher { static async loadWasm() { if (MD5Algo.wasm) { return MD5Algo.wasm; } MD5Algo.wasm = await loadWasm(wasmBytes$b); return MD5Algo.wasm; } async loadWasm() { return MD5Algo.loadWasm(); } _doReset() { this._hash = new WordArray([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]); } _process(doFlush) { if (!MD5Algo.wasm) { throw new Error('WASM is not loaded yet. \'MD5Algo.loadWasm\' should be called first'); } // Shortcuts const data = this._data; const dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const H = this._hash.words; const H_array = new Uint32Array(4); H_array[0] = H[0]; H_array[1] = H[1]; H_array[2] = H[2]; H_array[3] = H[3]; const nWordsReady = md5Wasm(MD5Algo.wasm).md5Process(doFlush ? 1 : 0, H_array, dataWords, dataSigBytes, blockSize, this._minBufferSize); // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); H[0] = H_array[0]; H[1] = H_array[1]; H[2] = H_array[2]; H[3] = H_array[3]; let processedWords; if (nWordsReady) { processedWords = dataWords.splice(0, nWordsReady); data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } /* eslint-ensable no-param-reassign */ _doFinalize() { // Shortcuts const data = this._data; const dataWords = data.words; const nBitsTotal = this._nDataBytes * 8; const nBitsLeft = data.sigBytes * 8; // Add padding dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32; const nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); const nBitsTotalL = nBitsTotal; dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 0x00ff00ff | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 0xff00ff00; dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 0x00ff00ff | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 0xff00ff00; data.sigBytes = (dataWords.length + 1) * 4; // Hash final blocks this._process(); // Shortcuts const hash = this._hash; const H = hash.words; // Swap endian for (let i = 0; i < 4; i++) { // Shortcut const H_i = H[i]; H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00; } // Return final computed hash return hash; } clone() { const clone = super.clone.call(this); clone._hash = this._hash.clone(); return clone; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.MD5('message'); * const hash = CryptoJSW.MD5(wordArray); */ _defineProperty(MD5Algo, "wasm", null); _defineProperty(MD5Algo, "outputSize", 128 / 8); const MD5 = Hasher._createHelper(MD5Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacMD5(message, key); */ const HmacMD5 = Hasher._createHmacHelper(MD5Algo); /** * This key derivation function is meant to conform with EVP_BytesToKey. * www.openssl.org/docs/crypto/EVP_BytesToKey.html */ class EvpKDFAlgo extends Base { static async loadWasm() { return MD5Algo.loadWasm(); } async loadWasm() { return EvpKDFAlgo.loadWasm(); } /** * Initializes a newly created key derivation function. * * @param {Object} cfg (Optional) The configuration options to use for the derivation. * * @example * * const kdf = new EvpKDF(); * const kdf = new EvpKDF({ keySize: 8 }); * const kdf = new EvpKDF({ keySize: 8, iterations: 1000 }); */ constructor(cfg) { super(); /** * Configuration options. * * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) * @property {Hasher} hasher The hash algorithm to use. Default: MD5 * @property {number} iterations The number of iterations to perform. Default: 1 */ this.cfg = Object.assign(new Base(), { keySize: 128 / 32, hasher: MD5Algo, iterations: 1 }, cfg); } /** * Derives a key from a password. * * @param {WordArray|string} password The password. * @param {WordArray|string} salt A salt. * * @return {WordArray} The derived key. * * @example * * const key = kdf.compute(password, salt); */ compute(password, salt) { let block; // Shortcut const { cfg } = this; // Init hasher const hasher = new cfg.hasher(); // Initial values const derivedKey = new WordArray(); // Shortcuts const derivedKeyWords = derivedKey.words; const { keySize, iterations } = cfg; // Generate key while (derivedKeyWords.length < keySize) { if (block) { hasher.update(block); } block = hasher.update(password).finalize(salt); hasher.reset(); // Iterations for (let i = 1; i < iterations; i++) { block = hasher.finalize(block); hasher.reset(); } derivedKey.concat(block); } derivedKey.sigBytes = keySize * 4; return derivedKey; } } /** * Derives a key from a password. * * @param {WordArray|string} password The password. * @param {WordArray|string} salt A salt. * @param {Object} cfg (Optional) The configuration options to use for this computation. * * @return {WordArray} The derived key. * * @static * * @example * * const key = CryptoJSW.EvpKDF(password, salt); * const key = CryptoJSW.EvpKDF(password, salt, { keySize: 8 }); * const key = CryptoJSW.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); */ const EvpKDF = (password, salt, cfg) => new EvpKDFAlgo(cfg).compute(password, salt); EvpKDF.loadWasm = async function () { return EvpKDFAlgo.loadWasm(); }; /** * PKCS #5/7 padding strategy. */ const Pkcs7 = { /** * Pads data using the algorithm defined in PKCS #5/7. * * @param {WordArray} data The data to pad. * @param {number} blockSize The multiple that the data should be padded to. * * @static * * @example * * CryptoJSW.pad.Pkcs7.pad(wordArray, 4); */ pad(data, blockSize) { // Shortcut const blockSizeBytes = blockSize * 4; // Count padding bytes const nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; // Create padding word const paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes; // Create padding const paddingWords = []; for (let i = 0; i < nPaddingBytes; i += 4) { paddingWords.push(paddingWord); } const padding = new WordArray(paddingWords, nPaddingBytes); // Add padding data.concat(padding); }, /** * Unpads data that had been padded using the algorithm defined in PKCS #5/7. * * @param {WordArray} data The data to unpad. * * @static * * @example * * CryptoJSW.pad.Pkcs7.unpad(wordArray); */ unpad(data) { const _data = data; // Get number of padding bytes from last byte const nPaddingBytes = _data.words[_data.sigBytes - 1 >>> 2] & 0xff; // Remove padding _data.sigBytes -= nPaddingBytes; } }; /** * Abstract base cipher template. * * @property {number} keySize This cipher's key size. Default: 4 (128 bits) * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. */ class Cipher extends BufferedBlockAlgorithm { static get _ENC_XFORM_MODE() { return 1; } static get _DEC_XFORM_MODE() { return 2; } static get keySize() { return 128 / 32; } static get ivSize() { return 128 / 32; } /** * Initializes a newly created cipher. * * @param {number} xformMode Either the encryption or decryption transormation mode constant. * @param {WordArray} key The key. * @param {Object} cfg (Optional) The configuration options to use for this operation. * * @example * * const cipher = new Cipher( * CryptoJSW.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray } * ); */ constructor(xformMode, key, cfg) { super(); this._ENC_XFORM_MODE = 1; this._DEC_XFORM_MODE = 2; this.keySize = 128 / 32; this.ivSize = 128 / 32; /** * Configuration options. * * @property {WordArray} iv The IV to use for this operation. */ this.cfg = Object.assign(new Base(), cfg); // Store transform mode and key this._xformMode = xformMode; this._key = key; // Set initial values this.reset(); } /** * Creates this cipher in encryption mode. * * @param {WordArray} key The key. * @param {Object} cfg (Optional) The configuration options to use for this operation. * * @return {Cipher} A cipher instance. * * @static * * @example * * const cipher = CryptoJSW.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); */ static createEncryptor(key, cfg) { return new this(this._ENC_XFORM_MODE, key, cfg); } /** * Creates this cipher in decryption mode. * * @param {WordArray} key The key. * @param {Object} cfg (Optional) The configuration options to use for this operation. * * @return {Cipher} A cipher instance. * * @static * * @example * * const cipher = CryptoJSW.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); */ static createDecryptor(key, cfg) { return new this(this._DEC_XFORM_MODE, key, cfg); } /** * Creates shortcut functions to a cipher's object interface. * * @param {Cipher} cipher The cipher to create a helper for. * * @return {Object} An object with encrypt and decrypt shortcut functions. * * @static * * @example * * const AES = CryptoJSW.lib.Cipher._createHelper(CryptoJSW.algo.AES); */ static _createHelper(SubCipher) { const selectCipherStrategy = key => { if (isString(key)) { return PasswordBasedCipher; } return SerializableCipher; }; return { async loadWasm() { if (!SubCipher.wasm) { await SubCipher.loadWasm(); } // the default hasher for most algorithms is md5, so we should load it here if (!MD5Algo.wasm) { await MD5Algo.loadWasm(); } }, encrypt(message, key, cfg) { return selectCipherStrategy(key).encrypt(SubCipher, message, key, cfg); }, decrypt(ciphertext, key, cfg) { return selectCipherStrategy(key).decrypt(SubCipher, ciphertext, key, cfg); } }; } /** * Resets this cipher to its initial state. * * @example * * cipher.reset(); */ reset() { // Reset data buffer super.reset.call(this); // Perform concrete-cipher logic this._doReset(); } /** * Adds data to be encrypted or decrypted. * * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. * * @return {WordArray} The data after processing. * * @example * * const encrypted = cipher.process('data'); * const encrypted = cipher.process(wordArray); */ process(dataUpdate) { // Append this._append(dataUpdate); // Process available blocks return this._process(); } /** * Finalizes the encryption or decryption process. * Note that the finalize operation is effectively a destructive, read-once operation. * * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. * * @return {WordArray} The data after final processing. * * @example * * const encrypted = cipher.finalize(); * const encrypted = cipher.finalize('data'); * const encrypted = cipher.finalize(wordArray); */ finalize(dataUpdate) { // Final data update if (dataUpdate) { this._append(dataUpdate); } // Perform concrete-cipher logic const finalProcessedData = this._doFinalize(); return finalProcessedData; } } /** * Abstract base stream cipher template. * * @property {number} blockSize * * The number of 32-bit words this cipher operates on. Default: 1 (32 bits) */ class StreamCipher extends Cipher { constructor(...args) { super(...args); this.blockSize = 1; } _doFinalize() { // Process partial blocks const finalProcessedBlocks = this._process(!!'flush'); return finalProcessedBlocks; } } /** * Abstract base block cipher mode template. */ class BlockCipherMode extends Base { /** * Initializes a newly created mode. * * @param {Cipher} cipher A block cipher instance. * @param {Array} iv The IV words. * * @example * * const mode = new BlockCipherMode(cipher, iv.words); */ constructor(cipher, iv) { super(); this._cipher = cipher; this._iv = iv; } /** * Creates this mode for encryption. * * @param {Cipher} cipher A block cipher instance. * @param {Array} iv The IV words. * * @static * * @example * * const mode = CryptoJSW.mode.CBC.createEncryptor(cipher, iv.words); */ static createEncryptor(cipher, iv) { return new this.Encryptor(cipher, iv); } /** * Creates this mode for decryption. * * @param {Cipher} cipher A block cipher instance. * @param {Array} iv The IV words. * * @static * * @example * * const mode = CryptoJSW.mode.CBC.createDecryptor(cipher, iv.words); */ static createDecryptor(cipher, iv) { return new this.Decryptor(cipher, iv); } } function xorBlock(words, offset, blockSize) { const _words = words; let block; // Shortcut const iv = this._iv; // Choose mixing block if (iv) { block = iv; // Remove IV for subsequent blocks this._iv = undefined; } else { block = this._prevBlock; } // XOR blocks for (let i = 0; i < blockSize; i++) { _words[offset + i] ^= block[i]; } } /** * Cipher Block Chaining mode. */ /** * Abstract base CBC mode. */ class CBC extends BlockCipherMode {} /** * CBC encryptor. */ _defineProperty(CBC, "_name", 'CBC'); CBC.Encryptor = class extends CBC { /** * Processes the data block at offset. * * @param {Array} words The data words to operate on. * @param {number} offset The offset where the block starts. * * @example * * mode.processBlock(data.words, offset); */ processBlock(words, offset) { // Shortcuts const cipher = this._cipher; const { blockSize } = cipher; // XOR and encrypt xorBlock.call(this, words, offset, blockSize); cipher.encryptBlock(words, offset); // Remember this block to use with next block this._prevBlock = words.slice(offset, offset + blockSize); } }; /** * CBC decryptor. */ CBC.Decryptor = class extends CBC { /** * Processes the data block at offset. * * @param {Array} words The data words to operate on. * @param {number} offset The offset where the block starts. * * @example * * mode.processBlock(data.words, offset); */ processBlock(words, offset) { // Shortcuts const cipher = this._cipher; const { blockSize } = cipher; // Remember this block to use with next block const thisBlock = words.slice(offset, offset + blockSize); // Decrypt and XOR cipher.decryptBlock(words, offset); xorBlock.call(this, words, offset, blockSize); // This block becomes the previous block this._prevBlock = thisBlock; } }; /** * Abstract base block cipher template. * * @property {number} blockSize * * The number of 32-bit words this cipher operates on. Default: 4 (128 bits) */ class BlockCipher extends Cipher { constructor(xformMode, key, cfg) { /** * Configuration options. * * @property {Mode} mode The block mode to use. Default: CBC * @property {Padding} padding The padding strategy to use. Default: Pkcs7 */ super(xformMode, key, Object.assign({ mode: CBC, padding: Pkcs7 }, cfg)); this.blockSize = 128 / 32; } reset() { let modeCreator; // Reset cipher super.reset.call(this); // Shortcuts const { cfg } = this; const { iv, mode } = cfg; // Reset block mode if (this._xformMode === this.constructor._ENC_XFORM_MODE) { modeCreator = mode.createEncryptor; } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { modeCreator = mode.createDecryptor; // Keep at least one block in the buffer for unpadding this._minBufferSize = 1; } this.modeProcessBlock = undefined; this._mode = modeCreator.call(mode, this, iv && iv.words); this._mode.__creator = modeCreator; } _doProcessBlock(words, offset) { this._mode.processBlock(words, offset); } _doFinalize() { let finalProcessedBlocks; // Shortcut const { padding } = this.cfg; // Finalize if (this._xformMode === this.constructor._ENC_XFORM_MODE) { // Pad data padding.pad(this._data, this.blockSize); // Process final blocks finalProcessedBlocks = this._process(!!'flush'); } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { // Process final blocks finalProcessedBlocks = this._process(!!'flush'); // Unpad data padding.unpad(finalProcessedBlocks); } return finalProcessedBlocks; } } /** * A collection of cipher parameters. * * @property {WordArray} ciphertext The raw ciphertext. * @property {WordArray} key The key to this ciphertext. * @property {WordArray} iv The IV used in the ciphering operation. * @property {WordArray} salt The salt used with a key derivation function. * @property {Cipher} algorithm The cipher algorithm. * @property {Mode} mode The block mode used in the ciphering operation. * @property {Padding} padding The padding scheme used in the ciphering operation. * @property {number} blockSize The block size of the cipher. * @property {Format} formatter * The default formatting strategy to convert this cipher params object to a string. */ class CipherParams extends Base { /** * Initializes a newly created cipher params object. * * @param {Object} cipherParams An object with any of the possible cipher parameters. * * @example * * let cipherParams = new CipherParams({ * ciphertext: ciphertextWordArray, * key: keyWordArray, * iv: ivWordArray, * salt: saltWordArray, * algorithm: CryptoJSW.algo.AES, * mode: CryptoJSW.mode.CBC, * padding: CryptoJSW.pad.PKCS7, * blockSize: 4, * formatter: CryptoJSW.format.OpenSSL * }); */ constructor(cipherParams) { super(); this.mixIn(cipherParams); } /** * Converts this cipher params object to a string. * * @param {Format} formatter (Optional) The formatting strategy to use. * * @return {string} The stringified cipher params. * * @throws Error If neither the formatter nor the default formatter is set. * * @example * * let string = cipherParams + ''; * let string = cipherParams.toString(); * let string = cipherParams.toString(CryptoJSW.format.OpenSSL); */ toString(formatter) { return (formatter || this.formatter).stringify(this); } } /** * OpenSSL formatting strategy. */ const OpenSSLFormatter = { /** * Converts a cipher params object to an OpenSSL-compatible string. * * @param {CipherParams} cipherParams The cipher params object. * * @return {string} The OpenSSL-compatible string. * * @static * * @example * * let openSSLString = CryptoJSW.format.OpenSSL.stringify(cipherParams); */ stringify(cipherParams) { let wordArray; // Shortcuts const { ciphertext, salt } = cipherParams; // Format if (salt) { wordArray = new WordArray([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); } else { wordArray = ciphertext; } return wordArray.toString(Base64); }, /** * Converts an OpenSSL-compatible string to a cipher params object. * * @param {string} openSSLStr The OpenSSL-compatible string. * * @return {CipherParams} The cipher params object. * * @static * * @example * * let cipherParams = CryptoJSW.format.OpenSSL.parse(openSSLString); */ parse(openSSLStr) { let salt; // Parse base64 const ciphertext = Base64.parse(openSSLStr); // Shortcut const ciphertextWords = ciphertext.words; // Test for salt if (ciphertextWords[0] === 0x53616c74 && ciphertextWords[1] === 0x65645f5f) { // Extract salt salt = new WordArray(ciphertextWords.slice(2, 4)); // Remove salt from ciphertext ciphertextWords.splice(0, 4); ciphertext.sigBytes -= 16; } return new CipherParams({ ciphertext, salt }); } }; /** * A cipher wrapper that returns ciphertext as a serializable cipher params object. */ class SerializableCipher extends Base { /** * Encrypts a message. * * @param {Cipher} cipher The cipher algorithm to use. * @param {WordArray|string} message The message to encrypt. * @param {WordArray} key The key. * @param {Object} cfg (Optional) The configuration options to use for this operation. * @param {Object} wasm The initialed wasm module * * @return {CipherParams} A cipher params object. * * @static * * @example * * let ciphertextParams = CryptoJSW.lib.SerializableCipher * .encrypt(CryptoJSW.algo.AES, message, key); * let ciphertextParams = CryptoJSW.lib.SerializableCipher * .encrypt(CryptoJSW.algo.AES, message, key, { iv: iv }); * let ciphertextParams = CryptoJSW.lib.SerializableCipher * .encrypt(CryptoJSW.algo.AES, message, key, { iv: iv, format: CryptoJSW.format.OpenSSL }); */ static encrypt(cipher, message, key, cfg, wasm) { // Apply config defaults const _cfg = Object.assign(new Base(), this.cfg, cfg); // Encrypt const encryptor = cipher.createEncryptor(key, _cfg, wasm); const ciphertext = encryptor.finalize(message); // Shortcut const cipherCfg = encryptor.cfg; // Create and return serializable cipher params return new CipherParams({ ciphertext, key, iv: cipherCfg.iv, algorithm: cipher, mode: cipherCfg.mode, padding: cipherCfg.padding, blockSize: encryptor.blockSize, formatter: _cfg.format }); } /** * Decrypts serialized ciphertext. * * @param {Cipher} cipher The cipher algorithm to use. * @param {CipherParams|string} ciphertext The ciphertext to decrypt. * @param {WordArray} key The key. * @param {Object} cfg (Optional) The configuration options to use for this operation. * * @return {WordArray} The plaintext. * * @static * * @example * * let plaintext = CryptoJSW.lib.SerializableCipher * .decrypt(CryptoJSW.algo.AES, formattedCiphertext, key, * { iv: iv, format: CryptoJSW.format.OpenSSL }); * let plaintext = CryptoJSW.lib.SerializableCipher * .decrypt(CryptoJSW.algo.AES, ciphertextParams, key, * { iv: iv, format: CryptoJSW.format.OpenSSL }); */ static decrypt(cipher, ciphertext, key, cfg) { let _ciphertext = ciphertext; // Apply config defaults const _cfg = Object.assign(new Base(), this.cfg, cfg); // Convert string to CipherParams _ciphertext = this._parse(_ciphertext, _cfg.format); // Decrypt const plaintext = cipher.createDecryptor(key, _cfg).finalize(_ciphertext.ciphertext); return plaintext; } /** * Converts serialized ciphertext to CipherParams, * else assumed CipherParams already and returns ciphertext unchanged. * * @param {CipherParams|string} ciphertext The ciphertext. * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. * * @return {CipherParams} The unserialized ciphertext. * * @static * * @example * * let ciphertextParams = CryptoJSW.lib.SerializableCipher * ._parse(ciphertextStringOrParams, format); */ static _parse(ciphertext, format) { if (isString(ciphertext)) { return format.parse(ciphertext, this); } return ciphertext; } } /** * Configuration options. * * @property {Formatter} format * * The formatting strategy to convert cipher param objects to and from a string. * Default: OpenSSL */ SerializableCipher.cfg = Object.assign(new Base(), { format: OpenSSLFormatter }); /** * OpenSSL key derivation function. */ const OpenSSLKdf = { async loadWasm() { // the default hasher for OpenSSLKdf is MD5 return MD5Algo.loadWasm(); }, /** * Derives a key and IV from a password. * * @param {string} password The password to derive from. * @param {number} keySize The size in words of the key to generate. * @param {number} ivSize The size in words of the IV to generate. * @param {WordArray|string} salt * (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. * * @return {CipherParams} A cipher params object with the key, IV, and salt. * * @static * * @example * * let derivedParams = CryptoJSW.kdf.OpenSSL.execute('Password', 256/32, 128/32); * let derivedParams = CryptoJSW.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); */ execute(password, keySize, ivSize, salt, hasher) { let _salt = salt; // Generate random salt if (!_salt) { _salt = WordArray.random(64 / 8); } // Derive key and IV let key; if (!hasher) { key = new EvpKDFAlgo({ keySize: keySize + ivSize }).compute(password, _salt); } else { key = new EvpKDFAlgo({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt); } // Separate key and IV const iv = new WordArray(key.words.slice(keySize), ivSize * 4); key.sigBytes = keySize * 4; // Return params return new CipherParams({ key, iv, salt: _salt }); } }; /** * A serializable cipher wrapper that derives the key from a password, * and returns ciphertext as a serializable cipher params object. */ class PasswordBasedCipher extends SerializableCipher { static async loadWasm() { // the default hasher for kdf is MD5 return MD5Algo.loadWasm(); } async loadWasm() { return PasswordBasedCipher.loadWasm(); } /** * Encrypts a message using a password. * * @param {Cipher} cipher The cipher algorithm to use. * @param {WordArray|string} message The message to encrypt. * @param {string} password The password. * @param {Object} cfg (Optional) The configuration options to use for this operation. * * @return {CipherParams} A cipher params object. * * @static * * @example * * let ciphertextParams = CryptoJSW.lib.PasswordBasedCipher * .encrypt(CryptoJSW.algo.AES, message, 'password'); * let ciphertextParams = CryptoJSW.lib.PasswordBasedCipher * .encrypt(CryptoJSW.algo.AES, message, 'password', { format: CryptoJSW.format.OpenSSL }); */ static encrypt(cipher, message, password, cfg, wasm) { // Apply config defaults const _cfg = Object.assign(new Base(), this.cfg, cfg); // Derive key and other params const derivedParams = _cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, _cfg.salt, _cfg.hasher); // Add IV to config _cfg.iv = derivedParams.iv; // Encrypt const ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, _cfg, wasm); // Mix in derived params ciphertext.mixIn(derivedParams); return ciphertext; } /** * Decrypts serialized ciphertext using a password. * * @param {Cipher} cipher The cipher algorithm to use. * @param {CipherParams|string} ciphertext The ciphertext to decrypt. * @param {string} password The password. * @param {Object} cfg (Optional) The configuration options to use for this operation. * * @return {WordArray} The plaintext. * * @static * * @example * * let plaintext = CryptoJSW.lib.PasswordBasedCipher * .decrypt(CryptoJSW.algo.AES, formattedCiphertext, 'password', * { format: CryptoJSW.format.OpenSSL }); * let plaintext = CryptoJSW.lib.PasswordBasedCipher * .decrypt(CryptoJSW.algo.AES, ciphertextParams, 'password', * { format: CryptoJSW.format.OpenSSL }); */ static decrypt(cipher, ciphertext, password, cfg) { let _ciphertext = ciphertext; // Apply config defaults const _cfg = Object.assign(new Base(), this.cfg, cfg); // Convert string to CipherParams _ciphertext = this._parse(_ciphertext, _cfg.format); // Derive key and other params const derivedParams = _cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, _ciphertext.salt, _cfg.hasher); // Add IV to config _cfg.iv = derivedParams.iv; // Decrypt const plaintext = SerializableCipher.decrypt.call(this, cipher, _ciphertext, derivedParams.key, _cfg); return plaintext; } } /** * Configuration options. * * @property {KDF} kdf * The key derivation function to use to generate a key and IV from a password. * Default: OpenSSL */ PasswordBasedCipher.cfg = Object.assign(SerializableCipher.cfg, { kdf: OpenSSLKdf }); const swapEndian = word => word << 8 & 0xff00ff00 | word >>> 8 & 0x00ff00ff; /** * UTF-16 BE encoding strategy. */ const Utf16BE = { /** * Converts a word array to a UTF-16 BE string. * * @param {WordArray} wordArray The word array. * * @return {string} The UTF-16 BE string. * * @static * * @example * * const utf16String = CryptoJSW.enc.Utf16.stringify(wordArray); */ stringify(wordArray) { // Shortcuts const { words, sigBytes } = wordArray; // Convert const utf16Chars = []; for (let i = 0; i < sigBytes; i += 2) { const codePoint = words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff; utf16Chars.push(String.fromCharCode(codePoint)); } return utf16Chars.join(''); }, /** * Converts a UTF-16 BE string to a word array. * * @param {string} utf16Str The UTF-16 BE string. * * @return {WordArray} The word array. * * @static * * @example * * const wordArray = CryptoJSW.enc.Utf16.parse(utf16String); */ parse(utf16Str) { // Shortcut const utf16StrLength = utf16Str.length; // Convert const words = []; for (let i = 0; i < utf16StrLength; i++) { words[i >>> 1] |= utf16Str.charCodeAt(i) << 16 - i % 2 * 16; } return new WordArray(words, utf16StrLength * 2); } }; const Utf16 = Utf16BE; /** * UTF-16 LE encoding strategy. */ const Utf16LE = { /** * Converts a word array to a UTF-16 LE string. * * @param {WordArray} wordArray The word array. * * @return {string} The UTF-16 LE string. * * @static * * @example * * const utf16Str = CryptoJSW.enc.Utf16LE.stringify(wordArray); */ stringify(wordArray) { // Shortcuts const { words, sigBytes } = wordArray; // Convert const utf16Chars = []; for (let i = 0; i < sigBytes; i += 2) { const codePoint = swapEndian(words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff); utf16Chars.push(String.fromCharCode(codePoint)); } return utf16Chars.join(''); }, /** * Converts a UTF-16 LE string to a word array. * * @param {string} utf16Str The UTF-16 LE string. * * @return {WordArray} The word array. * * @static * * @example * * const wordArray = CryptoJSW.enc.Utf16LE.parse(utf16Str); */ parse(utf16Str) { // Shortcut const utf16StrLength = utf16Str.length; // Convert const words = []; for (let i = 0; i < utf16StrLength; i++) { words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << 16 - i % 2 * 16); } return new WordArray(words, utf16StrLength * 2); } }; const wasmBytes$a = generateWasmBytes('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'); function sha1Wasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} doFlush * @param {Uint32Array} hashWords * @param {Uint32Array} dataWords * @param {number} dataSigBytes * @param {number} blockSize * @param {number} minBufferSize * @returns {number} */ function doCrypt(doFlush, hashWords, dataWords, dataSigBytes, blockSize, minBufferSize) { try { var ptr0 = passArray32ToWasm0(hashWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ret = wasm.doCrypt(doFlush, ptr0, len0, ptr1, len1, dataSigBytes, blockSize, minBufferSize); return ret >>> 0; } finally { hashWords.set(getUint32Memory0().subarray(ptr0 / 4, ptr0 / 4 + len0)); wasm.__wbindgen_free(ptr0, len0 * 4); } } return { doCrypt: doCrypt }; } /** * SHA-1 hash algorithm. */ class SHA1Algo extends Hasher { static async loadWasm() { if (SHA1Algo.wasm) { return SHA1Algo.wasm; } SHA1Algo.wasm = await loadWasm(wasmBytes$a); return SHA1Algo.wasm; } async loadWasm() { return SHA1Algo.loadWasm(); } _doReset() { this._hash = new WordArray([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]); } _process(doFlush) { if (!SHA1Algo.wasm) { throw new Error('WASM is not loaded yet. \'SHA1Algo.loadWasm\' should be called first'); } // Shortcuts const data = this._data; const dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const H = this._hash.words; const H_array = new Uint32Array(5); H_array[0] = H[0]; H_array[1] = H[1]; H_array[2] = H[2]; H_array[3] = H[3]; H_array[4] = H[4]; const nWordsReady = sha1Wasm(SHA1Algo.wasm).doCrypt(doFlush ? 1 : 0, H_array, dataWords, dataSigBytes, blockSize, this._minBufferSize); // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); H[0] = H_array[0]; H[1] = H_array[1]; H[2] = H_array[2]; H[3] = H_array[3]; H[4] = H_array[4]; let processedWords; if (nWordsReady) { processedWords = dataWords.splice(0, nWordsReady); data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } _doFinalize() { // Shortcuts const data = this._data; const dataWords = data.words; const nBitsTotal = this._nDataBytes * 8; const nBitsLeft = data.sigBytes * 8; // Add padding dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32; dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal; data.sigBytes = dataWords.length * 4; // Hash final blocks this._process(); // Return final computed hash return this._hash; } clone() { const clone = super.clone.call(this); clone._hash = this._hash.clone(); return clone; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.SHA1('message'); * const hash = CryptoJSW.SHA1(wordArray); */ _defineProperty(SHA1Algo, "wasm", null); _defineProperty(SHA1Algo, "outputSize", 160 / 8); const SHA1 = Hasher._createHelper(SHA1Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacSHA1(message, key); */ const HmacSHA1 = Hasher._createHmacHelper(SHA1Algo); const wasmBytes$9 = generateWasmBytes('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'); function sha256Wasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} doFlush * @param {Uint32Array} dataWords * @param {number} dataSigBytes * @param {number} blockSize * @param {Uint32Array} hash * @param {number} minBufferSize * @returns {number} */ function doCrypt(doFlush, dataWords, dataSigBytes, blockSize, hash, minBufferSize) { try { var ptr0 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(hash, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ret = wasm.doCrypt(doFlush, ptr0, len0, dataSigBytes, blockSize, ptr1, len1, minBufferSize); return ret >>> 0; } finally { hash.set(getUint32Memory0().subarray(ptr1 / 4, ptr1 / 4 + len1)); wasm.__wbindgen_free(ptr1, len1 * 4); } } return { doCrypt: doCrypt }; } const H = [1779033703, -1150833019, 1013904242, -1521486534, 1359893119, -1694144372, 528734635, 1541459225]; /** * SHA-256 hash algorithm. */ class SHA256Algo extends Hasher { static async loadWasm() { if (SHA256Algo.wasm) { return SHA256Algo.wasm; } SHA256Algo.wasm = await loadWasm(wasmBytes$9); return SHA256Algo.wasm; } async loadWasm() { return SHA256Algo.loadWasm(); } _doReset() { this._hash = new WordArray(H.slice(0)); } _process(doFlush) { if (!SHA256Algo.wasm) { throw new Error('WASM is not loaded yet. \'SHA256Algo.loadWasm\' should be called first'); } // Shortcuts const data = this._data; const dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const H = this._hash.words; const H_array = new Uint32Array(8); for (let i = 0; i < 8; i++) { H_array[i] = H[i]; } const nWordsReady = sha256Wasm(SHA256Algo.wasm).doCrypt(doFlush ? 1 : 0, dataWords, dataSigBytes, blockSize, H_array, this._minBufferSize); // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); for (let i = 0; i < 8; i++) { H[i] = H_array[i]; } let processedWords; if (nWordsReady) { processedWords = dataWords.splice(0, nWordsReady); data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } _doFinalize() { // Shortcuts const data = this._data; const dataWords = data.words; const nBitsTotal = this._nDataBytes * 8; const nBitsLeft = data.sigBytes * 8; // Add padding dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32; dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal; data.sigBytes = dataWords.length * 4; // Hash final blocks this._process(); // Return final computed hash return this._hash; } clone() { const clone = super.clone.call(this); clone._hash = this._hash.clone(); return clone; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.SHA256('message'); * const hash = CryptoJSW.SHA256(wordArray); */ _defineProperty(SHA256Algo, "wasm", null); _defineProperty(SHA256Algo, "outputSize", 256 / 8); const SHA256 = Hasher._createHelper(SHA256Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacSHA256(message, key); */ const HmacSHA256 = Hasher._createHmacHelper(SHA256Algo); /** * SHA-224 hash algorithm. */ class SHA224Algo extends SHA256Algo { static async loadWasm() { return SHA256Algo.loadWasm(); } async loadWasm() { return SHA224Algo.loadWasm(); } _doReset() { this._hash = new WordArray([0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]); } _doFinalize() { const hash = super._doFinalize.call(this); hash.sigBytes -= 4; return hash; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.SHA224('message'); * const hash = CryptoJSW.SHA224(wordArray); */ _defineProperty(SHA224Algo, "outputSize", 224 / 8); const SHA224 = SHA256Algo._createHelper(SHA224Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacSHA224(message, key); */ const HmacSHA224 = SHA256Algo._createHmacHelper(SHA224Algo); const wasmBytes$8 = generateWasmBytes('eJy1W32YVcV5nzlz7sfuuZc9IMrCosy9oRWagHc/7y61hLMpUEqJbZ+2T/8LK2wMdxHYZV31ycZd5EM0aIlBXQN+hKDyKEVUNBhRVoMNKCaKxBBFIbJEY1GJQsRKpe/vnTl3z8Ji2qctuufMOzNnPn7zzvs1c0XT4iulEEIG3mynq0vgIbtmSzxUl00LTgrkXjc73sX/xGzXvARVca6jiuovv+a4CSWlcKUsFW6JSCo3JmKxmFQqJoTrCJFwXRFzHCGFQ/9TwpHSwRuveDzuCjcmF8lhw2JKiqHxEuox6O7uFV5ikhu/svnKhW3XOiIxd+HX2q5d1C4yQ7/xjasvn7dg7hXNC75xZdP8+QvniIvKInnfbGtuFn9WMkKKQHpDG4PykhFfGnJexYTsVyfXVAdTSlct/to72vFpWl8Sgd+S9cYKZ4ozRYvghLzMnRII/9Ks1DJI+uOD4XgWAp9fLcHJ098uBFe3Bt8pZJ1AmOzAaW9Bfe3MrNBiVtqhhtwCSjJusG15rxjniKlpGQjttmQUenK6QATdzoy0GBWMoeTp06cTM4mgZJz+kh1XZEVLRyBbqS3Z3hJMLnjZGHUU7LyhVxSowaxwp2hXx/yL2zOJQGSk4hn4tVlHu9SsplcLpdVllKZi7WRVWlBFlVIeNTqcG3F0nCoKnQgu7AjcVpqnaXt6BQoqMnEqkdSBFmnh6Th1Gc+IlONpmXY89BpIHWv3vxxOszVLM1U0jEu+NXCwlOspGh+hhDFK7V5GSRphXKsZrVnqSlKPCn3i8z/NcodyKrrZuZLbzhJklxFuVE4fXlaRJsiR50/KxOiTFE1fmQWhNUQdv1LHtPLHUXa3gzxQHkavAtWRlYFqD7bTuAuZOC3IVjMDWlZqtz0rWzHZcU4yJT0uw/q21TlCxz0ea6zOSVIevVLUcNy8ZB1/oDFKt+CPpRTxkqLVp24D3zCGYZpvF7SYWWG4hHmCuALP4kAIHgxTdNCQVOtULHcIxax0QjvEURZ1wJs4G3Tp1zLHaQk83SmK+cOyBS27mpE1cGNqWIAQd68IbBzAhrDOSMcsrHHAWlwXWiWXdstASBPBHlOciZ0NLS2rTgBb5dGqOUHXYub0QpYWpj0rgp3L7RTiQdLyqTDtEmsSEEQCb2LyuugCBddpdXUrrZGHEVJT/lgd9y8llk9QP9S5CMYQhxK/ooX2VgIM2A7oUdke5cAeZdijjPQYToz6dWy/ivHBcxKxNhpnvCNoYd8KXthBwYpwIjaXoMGBExNRTqRRMCcmvAw9DCeKkBMT5kXDTXrcLHhTcPeAiziTEYmfwdUJcHXiDK5O9HP1WW0pSg3C6mnpWW4e8F90E88gEburn5yZdiGWtEf8jSZEC+HDQneA7KV1IZ3g+uP90drDp8mpaQ+pZCYV7MOIKO1mSzlN5YWsxFj3E8UP05sEeDMrUPLyyqJkPkDJjOD9UaWT0yDBqF3eC8SixcVxWPLQupjtQNNASSBCTFDHpDgPTEYc6DDetKkc3lIWPh4cQ8pVKYMElcPcYz4o9YJj4bCnalrgGW1pMDK1mYdI9+t1ajoSWWl2ip1P1pnldhH/U65bIJUUC4RHwpcb62+RGkxC/qDvpC4tZEIQsFiK+Z3qgfMtEhBgA/qeRisd9pkpKX6t+AuhS2a5Bs6SmSTD+/GkpaZtUoKibMKscLasJZhHy4W1B62JAyTtO231qy4pzKjIpgmVITqtyxhDMEqMhacyjWTipnLG4UFhftDi/L2kNaP96ANyMB6xdGkBAlDHCwXqqiUbAw6+jgXYWIYNlW11uG3VtC5Ry5+EbQMZ01IooP5RYNvd3Y1F5SFWMh7jCZmhegg4t8+QeSofoofSK3gXA0lhSIeQKkXqAI8cKdTXQygFPAPwDQQS7UeXNilJZ9IjM9MMZHoayX566ZIWggzATvL/hOoalQfaSyW9s0SOcw5B4wwmaBwIGkeXGEFTAqlQAmGCFwQNsyX4AMokafiZaJdgxoixEnEDI6SPWZUM1ohAbClkY7wxSPhY4UndtmD9ybwptGRcXdyr0+2WA4OJaaR10Akpx0BOT8es+RO3MyfFxeIpSBU1iJXsRp7z8J1zyfM4wWVFuktcgkGQKiHOS8UM10M2Gm4KZRlJwSzv5QRsNvARcYpRPobrjPAIRU//fmVlEUoB+2VUEsTN5mVg2XiLYBt2Tvv35eLeFpGdlBWwj8wAJNieslQ4Bs18T2ZRhO/tQlm+t7Iuw7WI74Xh/EH4PhSUBhgWgjvPBoaEnAGF5pEgaAXxqmtXjGjf6y92/w84NmE4lvVYwix5gjnWdkNG2XGM9PSYuj+6JXeBQzAURg/ETkvsjJbsB7HHEnui1Q6B2GeJfdFq74I4YIkD0WrHQPRZoi9a7SSIo5Y4Gq3WvYKI45Y4Hq22EiWnLIF3sdqyaMlqEMgBsSpK9IBYZYk1UeJeEGsssS5KbASxzhIbosQWEBsssSlKbAOxyRJbo0QviK2W2B4ldoHYbomXQey0xM5oyX4QeyyxJ1rtEIh9ltgXrfYuiAOWOBCtdgxEnyX6otVOgjhqiaPRat03AHhLHI9WW4mSU5Y4tSJSbTVKlt1gFytarQfEKluyKlrtXhBrLLEmWm0jiHWWWBettgXEBktsiFbbBmKTJTZFq/WC2GqJrdFq26MlX6BUoyo7KrhYLxvZpSC7WPaQyhYFI8T+j0QXjBIVNUlnpcX/SmSTXUqe9FgatfefcRnvIjH3FyyXyTuHKjc2MdF1aWEVJ5O5qezcqAKbmsr/86wI9d10uLtW26npaSdi0EPQSf9Pyjz+lDo2LroaXBG6RUUYm84+sQup6LLlP4giVEVFSCOU/kR2rbm/VGjph7Boo1kjI+43cAcqBMcY58bqLbMKVZylUCPVLMZFOKaxQUqf12bJlYVymFKcsDQTlsUJy4Ga3074HJq/f8KYKOmryBJEUIe6K1r6/X6Ax4zFYFyGkA8Y2rgzXxBJEmdFksgyh18ScVGKOp34euDuId53+h0qWk8sD22gQoFcgXSRaSMWfmijy9BGl4PZ6NbWNyiOSiHbT7dgVW1f4VRnURZvpy4CAFzIgS3J8Fn9etx+0WUtAerFT48q87g2qXnVr+blGbEYcs8V1LyMqnlidFbz0kN4w2h0FXHR8VLwWt9JOImuYYjzdZe2ZEtoS8ZgaGbidgvGhjgSq+YgN2C8VCZOSUUcFsQ4GYOn52YSYCqiUJDgggQK4mFBAgUlXFCCgmRYUIICjws8FJSGBR4K0lyQRkEqLEijoIwLylAwJCwoowLt1tJOoIdo1CuWZXwkU3gkmR6K5HA8fKaHITkaj3Kmz0NyLB6aaa76FTzGMX0+kjV45Ji+AMlL8ahneoQRXbzTnfYMuQBBt1vIILpX4idAxQr+UF1KUl5kYtrPpPXQTJkelinX52Uu1MMzI/X55MhdkBmlR2QuojoJ+nJUZrQeQjkjqaQ8U6HLqHY6U0YdJYIycGkcgcwYmeWygBQho71C0C3hxsUK2aRBQyfJL6Lksmw6rzg6gWrZJFdMjlekY4JdomASSbyz6cav3qjTjfU3LqdnYuXyzk4qOiZs2QSUKS6LUxk3i0ZLuI2LyJcbtbRT09gbu5ZTYkhj1Y30mEgfDGkccePyTp3u7MyO1OW6YrkuW4r3Uko0jr2RHhfdiORIqtVJGI3UF3YSNAmaILFiPCCZFtcVBNjozEW08EnykgjZ6fD5HJ2CghihR3dmRugL9KhOWqQh+vxOWrvhemQnLel5uqKTVnqYLu8kBijTQzuJL9La7yR2gReQLdViBkf6XD1iMpZXXzAZq67Pnwxm0MMng0f0eZPBOnrYZHCUHjqZBac/GfynRzTqlZOdenzKqRy+5tQ4NMApjTY4VY5mOOWjJU4l0RinBPimlDRmmQndreruFf4FiOPxggfrQhq7dFOxkIjtlngyJpNdwZdJpe80KpXwkq1ZhRg2a1Q36LseQpq+cVsrMgS0icWz2AtYNZCLpxP+SFYtYeCqqDdpsDOhL4Nkqw1YJWEcuORckQCaIDTVSJLYqGB/tAVyhX0106QLvxH7wSWvQ8K5kR3UBL0KSMWgrmnlSYYFo9FdJslOXoZd3PJMCQttBfmJYDK53eRVj3P8oZKUA4kvSUpUcnuY/zQWvnYu3ACbPpQYPc5JDVXC5I7OmMIMHws4XYoj5BoCblRxOFCU/R3xEGgDzDCz4CGW0JhzrJwJhEwpnN9JQhcHIAZgZS0Gi1gcfnY/YkI6/zOQ4gNASpwBEvzL+BeAJAaFRhhoHNOmwiGHjYgBGFgipKMQ84Tj2d829BD1TNCkOShaajAoYduUuFqVeZHuzPhNj96jcZkwoX8oeRfHP19oLrgDzAWFscysIGVOUNPuHnDCIO0Jg2ILlJomeylGFqgzMDpL+Wx6xiBbaYChzTAt7RBRNLnI0vIn4ugBYRaI3YRWM4imV0sGwhl6n3Ah+4vWivpCvIczeQ/SyHB+Q6mWYEl3ckYFCXTX2CwOm63Y+WNslJfMG4FlxKEQ9QSjJkY+QbCIbULIH+lPMgExmIXtBaIEwEb4N4wB2/iS8dSi8U8soAoDwQNCxNKcUXEJ4mYESUvWCQ9A0JniAye8x1CpY5/xlOsVDdcYYlpqVrG6Y6s7prnQZ9kVxtGNARw1K/tbmZGGbzBgGPbkbwzxpoP9wnsFHQFJPrXpH9042oZx+A3XkU3r2hBNbMCJAAxppyjlnPDIxRy0JGFMJQcctAweJov1n72dNWn7jJuBJvwx9Eqz+c5rbM70JDgmuCboBDdWYMldrJDvE+9i62IXUckoelzqfeZKr4usuhyhQkadE4wtBPu6e03YPVCTxDjtNHbjn5tXSXNgpKmEXuXm5VvWh12ZLZ3K9ow5FHWnGl8LcguyL4OzWrJPrynQbGn7ZxOZGAsa11Q3MSitFce6kB5rZYlrwqKMKZ/9EUESA+cLlEPt4rSJeolBZsVw2hDxWyBYqF6sPesFswtBrMOYBmZgkf7FgP5FtH/lMcuVQmaMLkwQgnGh2biF8TCYbgQ2blBuhSlPNhkgnG9PAiAaDCpGQDsSKlm1a7JHUuCqMvilKZZl1ALkIBso8ToyGBh00vbmUDnSYGpgg8I2GC82GLcNsmAt8UxLo00Euhy6BN+rdtrZ/ejSx4DWCTEFR2pCFSYTezSasXNnGOXAiAFLMrmoJZwrV/BJCleKgDgV5xxmWkEOPr3wXnKl28XOa1GSnsOXl7A85GC+vHOWLx+6urRp4cvL/09fHoLcnRL2xuZO0Ys3G/+/4cXL/54XL8/txaPxQZxoeIXs2EPVRhx7x8zeKc7+DFllZ38OWTXAsZcDHXvZvwTwSWUIN9UztOJT+MF8VBLm2mnPOl/kozqhj+qc4aNiqN4PSgmcxju23LV35yMr1h8VeXWSMGo8euKN1x478caRg5RxDBkPnrrt8C8ee2HHrynjXWQ8sfzTXx+948TbeyjjEDL2/KD30O6Tv77lp5SxHxnb//P+zT989uFfXJpXL4P+/u51K7Z++OCRqrzaBXrZZ9/r2fv5m++Py6te0Gtv+X3PK799bltFXm0DvXlt3ycvdv/2nqF5tQX0/Y+sv/31bQcfKc2rjaB/cvDN1Q+cuPNkPK/uBX1y/VMff/7hq89clVc9oO9+bemHR39yz/uFvFoN+oZlS2/5qGfzT/8ur1aCXvfTO1/54Ne/+P5f51U36Ifu3712891vbZtGGJCQbLztoztv/+zzd08900UYION3n910/Om71m7cQBnvImPj9lVr15/ecXA1ZRxCxtGPV7+65Nnew6soYz8yPnrtuX954fq7+5ZRxsvIOPTWgZ7j7+/fe5JQ2oWMU0ee+fDIm4d+dpwyepHxo9+/8PjTn6+9413K2IaMj//tX576ZPejP3+DMrYg48XbVvxg8+4Hj/6cMjYi4/DW+zZvv33pLQ2EBI/re++veuv2h/fXEBKg7/zVU6de+t1dGy4mJEC/+tqKm5YveWPtRYQE6F0/fPHf/n39lr0jCQnQ23704W1Lb9n4uE9IOFj83p1P/XLLzTe0ExCgV++9/aHndz67558IB9A9G57+8V1Lf7KbkD0EesupvY9u2brmiemEAujvPfz2DTd/8PZ9jQQC6CWHVr791O47b95IqOxCRt+Kne+sWfMfB9dTRi8ynnpv5YZXVn/3yVspYxsyfvvmEzv67nv0N0soYwsyNh556/Bjv7r+8T8ABGS89bOn39z13rrlRyjjXmQcfOe1o0+uX7ruVcroQcb7v1z92vM71t7+EmWsRsb9t679zfIHdt08kXAAfergrif2vfzcG4RTN+hjB558+dimF9YMJxxoEzV+uOyW7rvf6zlCHHcM9H0/f7Dn0419r/4j4QD6uXvWv//Y59cfIw46BLrvru2ffHby4KYdYAdk7Hju6M9u/HT3ki1gB2Ss7nv5/b0v/b6HkUDGQzvWfrz5wTX39AAJZDz+wPM9G9e+fQrz3IaMfZ/c8N6LTz24/wDYARlLd689cf9tP/zJC0ACGSeWbdp94uYXj08gIEAf2fbo0z97cuOKsYQDN/nQYwfe3fbOoTKCAfThF7c/d/jY9w4uJBhA773t+U/u3Pb6S3MJBtBrXtrw2Z7Np14K8uoafL5h3eaP9i35YC0NcRHRj/zr6/sP79j0YTfR3wJKt37w/V9svuPgRzSe2US//bvPH3562z0rfkn0PxO96sitn/T9+Dc9NJy/JfKZg88+tObQa88Oy6u/AobLVvXc9Op7S/85j0hhY8/1T7z65ut33PIQNV4PIXHPkZMv7Dt0DxgjB9a+944ta5/ZeRJyaRxY9731P9jx4paHaCtoyKAfP7Bq//E/vD4vr8qJfPgPW9/+/NNnDj1OX5Np1/jSi0/fc+utr6z9vYAxIhrXH1j/5M0ff/f55wRiLR85UnUV3RQZlOB+nrkVIGeaGLDwRcbl61UmPOqZkwat/ogbpQa4UQ7kNdyoFlzhg646x22trCreSOkskP3qwExz/L+AfcMuIPQSX9ciz5HVlXZhXsiWVqpUDNryVSwnMIcSogUuXAHOB42Ej7xD+8El21mwlyHYy5D2pF2YQLarOc5aYLUm/RwsV5wyWIxUYRZy2B4X/OZ22AnhpLJGOZScfylaGOW9DszNzUjY1sIabzS502JWeCNEhfbsNNaTpAX9YVyS4agHHHU+e4UFoMgRnSSE0d1QgE4XVKzPwXq4e6zcKfnV1qBbtk0SZUwN6wiOgeJj+iDeUSwewhmp/ox04LITE2miWOfQoE2kA2XWpv+LdFinl78IHI/vXPAk2c7KsrOqWrScYeasMWeXTT6vOFNYJ1Tgj4L7QhnG3OLjoEB4P3acmLl3Sp6LS1kX89EFSaGfi39gnkGkV8FKLingAEQRl+HEHxW6swm8rvvOA9lYcPo0WY99YkE2Hsj2YNtSsksuEeLPBbC/roAriVQ6v8XUO6OGQ40iwtF4+tlfXfJPOpExt/4SD1B3h8Vfs/13XQHHXDSKAudTq8Ue1Tlb9thaK/36mS2oM+oZVuiKVsgViEVg9tqZBxdrp8VHtAZWt7fBkTGyuRtFnlwKwRdoZf8FWtl/gZaWEAc+HVfQRuILtE7xAq3DTkTxjiSiIsW7l1OKlyljxqCLw6BTxgt0/Iv56kqtlrDdVcaBvMEHwJmtPD594OsZ+No4iOSBFK/VwrthYeHglhFVwIVc0yCgxyWGrD2aYkM2aQzZ8KBKs2VczuFRYW1YVcdRVVsZn3pPGJQQuXKNWwIixXuURCFE2vCCuTCmKozpjLOljBGkGAPHvVJZtk9laEpDyNAcyEUyniePHu5yVplZ8Ub2C6HDjL2Y5piAsCeH5FOLcDijiyuQdewlM/IRg+HYSjTCaRUF4wtJI9+dkBKMeLhOZNGjLbbo2V1yAQdl+VknvODjm4/L+y88s1ONkRev3aHYWyjTXXznKpxO9FoINW+OzuI0dwfoJWHRI/KojDvuhk47sR+f2pDjEmMIuB3KOD2GH/bCnbfecdyiGICQRdgOS8bNUvc9S+x9UEbfciGYn9gjLMzGjEsBL4j97WAcNpIP3550J9G6wN5wSGvFKQRAhkNQlRf8GG6cJwssoKjJOhPBGK+SeSO2yINWXMMWYp7mcqM73sQMcLvNFMHtRJyOTLPyIBW4/leyElAi2cBbmxouz3Mr1KWyTYpg2fUI3Lja+sDGz/ZusmpIG0EpM7FgC9Z/i92ncVYxOPs8aU8XJfF5cCokCgweFwbmlP9UGPvirREPxF/hzG9mWxqTVnV81EFcUx5sKJ4/dv0Nsd0GducQ+XH4WgRGsSl0/9yuYONye8+JAxEmXi7QpgsglQmBYL7DKTtsnPjDIwnItxgCSWraE16/0nWMh8j+YlJ4j0jpkhmkjbERqNaMy/IzUKw6g85WZk4ooKzDaicb43CPGTdzZJF2QDv9tAKtQjrOgaWsMnLJ5f1SvJFQMPtfO5HGOcjLYXmXrR/+TnjflHyiYE7xA64tg0QhTMWLqVgx5RZTqphyiilpU2B3WhlzGOY9KakfwyVqLFsp6JAwmMHRMxMio4/bOYTs4jca9DGHOWdWsO6VkPO0F5hJoNSxl/gGMMJX2H+K44WeuTRPS+kPZ+ZlftPhhXEEipAN263ByOfxjgtuV7SLcLIV9OIAamiwj17+KOE9ZIceFQEsUNypJpbAP9s4Y9MPsuXlGVteRre8HGzLqzO2vOrf8tHdqCK78QYMNvyNAv+CRSJAQ3sIStexcVOH41owOdPEEynXMwcolOCAvWt+OkLImUCn9L/isbTmSAifqpkr5Qjx046XXjgK2F8mPLPGoubzgoeCndVdlz2w40XHcZLiODOCf8HR7l62Olxz9iVgzLmI7FLao93E+hsvlwEJji3p5Z1MaPtlwvKArYbyAwPL50tplxKDYiaKVB5dCMzV++ArhWAIpxodLKsKNi7tNbcXkD8WxxK0hNBkChMfxxluAcFrs2ikIL1/MJ3pUFQYvnB5eQdygz8oN4D7cTecSvwY8wwt8NcJVm0jWsbmVUWbl/wTBzavYifE2rwAhU1jvpdlDF7ripChOxNCls387p18b7d4EFk8/MLhWVqO8vinLBx34xpwigYekE0vzpfBpRUPLLB9zKs+wSnzDLiEFGfcGUECxPI3cPtLTJH1tmN1apDsV1PJfjVl/CrLeGsGaCevgQYDkDum8A8CAmGtM55qJ8zNrmlZWWHinLwG7Rqk8L5VdKukcatSxtQAawZfDrYvMWLB+leRkj1hiTHITDCxOML+oDXY0T9feH/GplbQORMiEO3AvcNUvjODTC+arzlaKPNQ1dhkLixl2RY4bXaqBSgB4/xx1FZ4NWYVBlNQNMs+i1KYAqNcKLzRNqTNB6YxH/LTaedQrvS8i0T/dp1qo+d2bCjW1KE5n3fxGyMRBrtZJaFCxgSV1bnH/CUM1Ckef0Vj0FTdLOhILCjbjYjqy1goUjxvGC5mjcSBdgd+kzJmWoV3gRi0DV+Y/rusp+95gvUKz6MMI5f4lRElWtq8pAmZJ73zBmEvTHOCcAOHXKsOr9R8owW3yAWqdaqXikzcs8AxTgVviKFGqSkpQeuLr2rBH36pV2pX+prWYlKGydSAZIc30vRwb/gDM2zfCrJehJcwU7XvFn7Tupj3NQUaTuPxT+/+7Qc/evDTzwWNtPHJO++7reenqw5/G0U96185sff9PUe/2+UpIfnPuykmhfm5Z3dscducS+bPu3xi22LqS/iilJ4T6W+46KfJhSTp00/j78II7dHfaPpzhfnn2DT+lH3H6G9O0/z5zXP17MsWtc9buGDSpKsWXN3WtGjc+Nl64QLdpGd/feGC5tm6o2n+Vc1C2rZobG1Nbddesrh97iUY66KmBfPmtMxbcAWN+F7qH/0q6nAMvUMav4C9iN5xHqHpP0F/STu2pM0rsXPB+FM2L3VGnXRkDPzLVx5FW9PV3+honkNjmNO0qGnOvPZr9cKO5rZvzl94NdUfK804LnHMvH07F8wJSzpvwdzma/TCq9r1wm/qyxdetWDu4km6/VvNen7zAj1vsdaXUxFoU5FyhGiXYHkh1tB7GL1zuVxlripXnavJ1ebqcvlcfa6hMldZWVlVWV1ZU1lbWVeZr6yvbKjKVVVWVVVVV9VU1VbVVeWr6qsaqnPVldVV1dXVNdW11XXV+er66oaaXE1lTVVNdU1NTW1NXU2+pr6moTZXW1lbVVtdW1NbW1tXm6+tr22oy9VV1lXVVdfV1NXW1dXl6+rrGvK5fGW+Kl+dr8nX5uvy+Xx9vqE+V19ZX1VfXV9TX1tfV5+vr69vaKAhNlD3DdR0A33WQFni2yWL2hbOvWpOc9tiJzm/acEVVzVd0Szdv79qcbtIUdGc5sWLm+dOuPxaFWujvDkXVk6srZtYqcfVNjQ3z61vqmrSmOOEysoJucrx8aub5lO1eG5iZcPEXOrqpsVXTrC/Uh6Wm1g1sT6nx9XMaWpqqK+sqx3/Xzhg5zg='); function sha512Wasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} dataWords * @param {Uint32Array} hash */ function doCrypt(nWordsReady, blockSize, dataWords, hash) { try { var ptr0 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(hash, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; wasm.doCrypt(nWordsReady, blockSize, ptr0, len0, ptr1, len1); } finally { hash.set(getUint32Memory0().subarray(ptr1 / 4, ptr1 / 4 + len1)); wasm.__wbindgen_free(ptr1, len1 * 4); } } return { doCrypt: doCrypt }; } /** * SHA-512 hash algorithm. */ class SHA512Algo extends Hasher { static async loadWasm() { if (SHA512Algo.wasm) { return SHA512Algo.wasm; } SHA512Algo.wasm = await loadWasm(wasmBytes$8); return SHA512Algo.wasm; } async loadWasm() { return SHA512Algo.loadWasm(); } constructor() { super(); this.blockSize = 1024 / 32; } _doReset() { this._hash = new X64WordArray([new X64Word(0x6a09e667, 0xf3bcc908), new X64Word(0xbb67ae85, 0x84caa73b), new X64Word(0x3c6ef372, 0xfe94f82b), new X64Word(0xa54ff53a, 0x5f1d36f1), new X64Word(0x510e527f, 0xade682d1), new X64Word(0x9b05688c, 0x2b3e6c1f), new X64Word(0x1f83d9ab, 0xfb41bd6b), new X64Word(0x5be0cd19, 0x137e2179)]); } _process(doFlush) { if (!SHA512Algo.wasm) { throw new Error('WASM is not loaded yet. \'SHA512Algo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; const dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { const H = this._hash.words; const H_array = new Uint32Array(16); for (let i = 0; i < 8; i++) { H_array[i * 2] = H[i].high; H_array[i * 2 + 1] = H[i].low; } // Perform concrete-algorithm logic sha512Wasm(SHA512Algo.wasm).doCrypt(nWordsReady, blockSize, dataWords, H_array); for (let i = 0; i < 8; i++) { H[i].high = H_array[i * 2]; H[i].low = H_array[i * 2 + 1]; } // Remove processed words processedWords = dataWords.splice(0, nWordsReady); data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } _doFinalize() { // Shortcuts const data = this._data; const dataWords = data.words; const nBitsTotal = this._nDataBytes * 8; const nBitsLeft = data.sigBytes * 8; // Add padding dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32; dataWords[(nBitsLeft + 128 >>> 10 << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); dataWords[(nBitsLeft + 128 >>> 10 << 5) + 31] = nBitsTotal; data.sigBytes = dataWords.length * 4; // Hash final blocks this._process(); // Convert hash to 32-bit word array before returning const hash = this._hash.toX32(); // Return final computed hash return hash; } clone() { const clone = super.clone.call(this); clone._hash = this._hash.clone(); return clone; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.SHA512('message'); * const hash = CryptoJSW.SHA512(wordArray); */ _defineProperty(SHA512Algo, "wasm", null); _defineProperty(SHA512Algo, "outputSize", 512 / 8); const SHA512 = Hasher._createHelper(SHA512Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacSHA512(message, key); */ const HmacSHA512 = Hasher._createHmacHelper(SHA512Algo); /** * SHA-384 hash algorithm. */ class SHA384Algo extends SHA512Algo { static async loadWasm() { return SHA512Algo.loadWasm(); } async loadWasm() { return SHA384Algo.loadWasm(); } _doReset() { this._hash = new X64WordArray([new X64Word(0xcbbb9d5d, 0xc1059ed8), new X64Word(0x629a292a, 0x367cd507), new X64Word(0x9159015a, 0x3070dd17), new X64Word(0x152fecd8, 0xf70e5939), new X64Word(0x67332667, 0xffc00b31), new X64Word(0x8eb44a87, 0x68581511), new X64Word(0xdb0c2e0d, 0x64f98fa7), new X64Word(0x47b5481d, 0xbefa4fa4)]); } _doFinalize() { const hash = super._doFinalize.call(this); hash.sigBytes -= 16; return hash; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.SHA384('message'); * const hash = CryptoJSW.SHA384(wordArray); */ _defineProperty(SHA384Algo, "outputSize", 384 / 8); const SHA384 = SHA512Algo._createHelper(SHA384Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacSHA384(message, key); */ const HmacSHA384 = SHA512Algo._createHmacHelper(SHA384Algo); const wasmBytes$7 = generateWasmBytes('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'); function sha3Wasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} doFlush * @param {Uint32Array} dataWords * @param {number} dataSigBytes * @param {number} blockSize * @param {Uint32Array} stateData * @param {number} minBufferSize * @returns {number} */ function doCrypt(doFlush, dataWords, dataSigBytes, blockSize, stateData, minBufferSize) { try { var ptr0 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(stateData, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ret = wasm.doCrypt(doFlush, ptr0, len0, dataSigBytes, blockSize, ptr1, len1, minBufferSize); return ret >>> 0; } finally { stateData.set(getUint32Memory0().subarray(ptr1 / 4, ptr1 / 4 + len1)); wasm.__wbindgen_free(ptr1, len1 * 4); } } return { doCrypt: doCrypt }; } /** * SHA-3 hash algorithm. */ class SHA3Algo extends Hasher { static async loadWasm() { if (SHA3Algo.wasm) { return SHA3Algo.wasm; } SHA3Algo.wasm = await loadWasm(wasmBytes$7); return SHA3Algo.wasm; } async loadWasm() { return SHA3Algo.loadWasm(); } constructor(cfg) { /** * Configuration options. * * @property {number} outputLength * The desired number of bits in the output hash. * Only values permitted are: 224, 256, 384, 512. * Default: 512 */ super(Object.assign({ outputLength: 512 }, cfg)); } _doReset() { this._state = []; const state = this._state; for (let i = 0; i < 25; i++) { state[i] = new X64Word(); } this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; } _process(doFlush) { if (!SHA3Algo.wasm) { throw new Error('WASM is not loaded yet. \'SHA3Algo.loadWasm\' should be called first'); } // Shortcuts const data = this._data; const dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const stateData = new Uint32Array(50); for (let i = 0; i < 25; i++) { stateData[i * 2] = this._state[i].high; stateData[i * 2 + 1] = this._state[i].low; } for (let i = 0; i < dataWords.length; i++) { if (!dataWords[i]) { dataWords[i] = 0; } } const nWordsReady = sha3Wasm(SHA3Algo.wasm).doCrypt(doFlush ? 1 : 0, dataWords, dataSigBytes, blockSize, stateData, this._minBufferSize); // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); for (let i = 0; i < 25; i++) { this._state[i].high = stateData[i * 2]; this._state[i].low = stateData[i * 2 + 1]; } let processedWords; if (nWordsReady) { processedWords = dataWords.splice(0, nWordsReady); data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } _doFinalize() { // Shortcuts const data = this._data; const dataWords = data.words; const nBitsLeft = data.sigBytes * 8; const blockSizeBits = this.blockSize * 32; // Add padding dataWords[nBitsLeft >>> 5] |= 0x1 << 24 - nBitsLeft % 32; dataWords[(Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits >>> 5) - 1] |= 0x80; data.sigBytes = dataWords.length * 4; // Hash final blocks this._process(); // Shortcuts const state = this._state; const outputLengthBytes = this.cfg.outputLength / 8; const outputLengthLanes = outputLengthBytes / 8; // Squeeze const hashWords = []; for (let i = 0; i < outputLengthLanes; i++) { // Shortcuts const lane = state[i]; let laneMsw = lane.high; let laneLsw = lane.low; // Swap endian laneMsw = (laneMsw << 8 | laneMsw >>> 24) & 0x00ff00ff | (laneMsw << 24 | laneMsw >>> 8) & 0xff00ff00; laneLsw = (laneLsw << 8 | laneLsw >>> 24) & 0x00ff00ff | (laneLsw << 24 | laneLsw >>> 8) & 0xff00ff00; // Squeeze state to retrieve hash hashWords.push(laneLsw); hashWords.push(laneMsw); } // Return final computed hash return new WordArray(hashWords, outputLengthBytes); } clone() { const clone = super.clone.call(this); clone._state = this._state.slice(0); const state = clone._state; for (let i = 0; i < 25; i++) { state[i] = state[i].clone(); } return clone; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.SHA3('message'); * const hash = CryptoJSW.SHA3(wordArray); */ _defineProperty(SHA3Algo, "wasm", null); const SHA3 = Hasher._createHelper(SHA3Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacSHA3(message, key); */ const HmacSHA3 = Hasher._createHmacHelper(SHA3Algo); function ripemd160Wasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} dataWords * @param {Uint32Array} H */ function doProcess(nWordsReady, blockSize, dataWords, H) { try { var ptr0 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(H, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; wasm.doProcess(nWordsReady, blockSize, ptr0, len0, ptr1, len1); } finally { H.set(getUint32Memory0().subarray(ptr1 / 4, ptr1 / 4 + len1)); wasm.__wbindgen_free(ptr1, len1 * 4); } } return { doProcess: doProcess }; } const wasmBytes$6 = generateWasmBytes('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'); /** * RIPEMD160 hash algorithm. */ class RIPEMD160Algo extends Hasher { static async loadWasm() { if (RIPEMD160Algo.wasm) { return RIPEMD160Algo.wasm; } RIPEMD160Algo.wasm = await loadWasm(wasmBytes$6); return RIPEMD160Algo.wasm; } async loadWasm() { return RIPEMD160Algo.loadWasm(); } _doReset() { this._hash = new WordArray([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); } _process(doFlush) { if (!RIPEMD160Algo.wasm) { throw new Error('WASM is not loaded yet. \'RIPEMD160Algo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; let H = this._hash.words; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { if (dataWords.length < nWordsReady) { for (let i = dataWords.length; i < nWordsReady; i++) { dataWords[i] = 0; } } const H_Array = new Uint32Array(H); // Perform concrete-algorithm logic ripemd160Wasm(RIPEMD160Algo.wasm).doProcess(nWordsReady, blockSize, dataWords, H_Array); this._hash.words = Array.from(H_Array); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); // write data back to this._data this._data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } _doFinalize() { // Shortcuts const data = this._data; const dataWords = data.words; const nBitsTotal = this._nDataBytes * 8; const nBitsLeft = data.sigBytes * 8; // Add padding dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32; dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotal << 8 | nBitsTotal >>> 24) & 0x00ff00ff | (nBitsTotal << 24 | nBitsTotal >>> 8) & 0xff00ff00; data.sigBytes = (dataWords.length + 1) * 4; // Hash final blocks this._process(); // Shortcuts const hash = this._hash; const H = hash.words; // Swap endian for (let i = 0; i < 5; i++) { // Shortcut const H_i = H[i]; // Swap H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00; } // Return final computed hash return hash; } clone() { const clone = super.clone.call(this); clone._hash = this._hash.clone(); return clone; } } /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * const hash = CryptoJSW.RIPEMD160('message'); * const hash = CryptoJSW.RIPEMD160(wordArray); */ _defineProperty(RIPEMD160Algo, "wasm", null); _defineProperty(RIPEMD160Algo, "outputSize", 160 / 8); const RIPEMD160 = Hasher._createHelper(RIPEMD160Algo); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * const hmac = CryptoJSW.HmacRIPEMD160(message, key); */ const HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160Algo); /** * Password-Based Key Derivation Function 2 algorithm. */ class PBKDF2Algo extends Base { /** * Initializes a newly created key derivation function. * * @param {Object} cfg (Optional) The configuration options to use for the derivation. * * @example * * const kdf = new CryptoJSW.algo.PBKDF2(); * const kdf = new CryptoJSW.algo.PBKDF2({ keySize: 8 }); * const kdf = new CryptoJSW.algo.PBKDF2({ keySize: 8, iterations: 1000 }); */ constructor(cfg) { super(); /** * Configuration options. * * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) * @property {Hasher} hasher The hasher to use. Default: SHA256 * @property {number} iterations The number of iterations to perform. Default: 250000 */ this.cfg = Object.assign(new Base(), { keySize: 128 / 32, hasher: SHA256Algo, iterations: 250000 }, cfg); } /** * SHA256 is the default hasher of pbkdf2. * With another hasher configured, user should call the corresponding loadWasm of the configured hasher. * * @returns {Promise} */ static async loadWasm() { return SHA256Algo.loadWasm(); } async loadWasm() { return PBKDF2Algo.loadWasm(); } /** * Computes the Password-Based Key Derivation Function 2. * * @param {WordArray|string} password The password. * @param {WordArray|string} salt A salt. * * @return {WordArray} The derived key. * * @example * * const key = kdf.compute(password, salt); */ compute(password, salt) { // Shortcut const { cfg } = this; // Init HMAC const hmac = new HMAC(cfg.hasher, password); // Initial values const derivedKey = new WordArray(); const blockIndex = new WordArray([0x00000001]); // Shortcuts const derivedKeyWords = derivedKey.words; const blockIndexWords = blockIndex.words; const { keySize, iterations } = cfg; // Generate key while (derivedKeyWords.length < keySize) { const block = hmac.update(salt).finalize(blockIndex); hmac.reset(); // Shortcuts const blockWords = block.words; const blockWordsLength = blockWords.length; // Iterations let intermediate = block; for (let i = 1; i < iterations; i++) { intermediate = hmac.finalize(intermediate); hmac.reset(); // Shortcut const intermediateWords = intermediate.words; // XOR intermediate with block for (let j = 0; j < blockWordsLength; j++) { blockWords[j] ^= intermediateWords[j]; } } derivedKey.concat(block); blockIndexWords[0]++; } derivedKey.sigBytes = keySize * 4; return derivedKey; } } /** * Computes the Password-Based Key Derivation Function 2. * * @param {WordArray|string} password The password. * @param {WordArray|string} salt A salt. * @param {Object} cfg (Optional) The configuration options to use for this computation. * * @return {WordArray} The derived key. * * @static * * @example * * const key = CryptoJSW.PBKDF2(password, salt); * const key = CryptoJSW.PBKDF2(password, salt, { keySize: 8 }); * const key = CryptoJSW.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); */ const PBKDF2 = (password, salt, cfg) => new PBKDF2Algo(cfg).compute(password, salt); function aesWasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } let cachegetInt32Memory0 = null; function getInt32Memory0() { if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachegetInt32Memory0; } function getArrayU32FromWasm0(ptr, len) { return getUint32Memory0().subarray(ptr / 4, ptr / 4 + len); } /** * @param {number} keySize * @param {Uint32Array} keyWords * @returns {Uint32Array} */ function getKeySchedule(keySize, keyWords) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passArray32ToWasm0(keyWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; wasm.getKeySchedule(retptr, keySize, ptr0, len0); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v1 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v1; } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } /** * @param {number} keySize * @param {Uint32Array} keyWords * @returns {Uint32Array} */ function getInvKeySchedule(keySize, keyWords) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passArray32ToWasm0(keyWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; wasm.getInvKeySchedule(retptr, keySize, ptr0, len0); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v1 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v1; } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } let cachegetUint8Memory0 = null; function getUint8Memory0() { if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachegetUint8Memory0; } const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; let cachedTextEncoder = new lTextEncoder('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); getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); WASM_VECTOR_LEN = buf.length; return ptr; } let len = arg.length; let ptr = malloc(len); 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); const view = getUint8Memory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); offset += ret.written; } WASM_VECTOR_LEN = offset; return ptr; } /** * @param {string} mode * @param {number} nRounds * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} keySchedule * @returns {Uint32Array} */ function doEncrypt(mode, nRounds, nWordsReady, blockSize, iv, dataWords, keySchedule) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(keySchedule, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; wasm.doEncrypt(retptr, ptr0, len0, nRounds, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v4 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v4; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } /** * @param {string} mode * @param {number} nRounds * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} keySchedule * @param {Uint32Array} invKeySchedule * @returns {Uint32Array} */ function doDecrypt(mode, nRounds, nWordsReady, blockSize, iv, dataWords, keySchedule, invKeySchedule) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(keySchedule, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; var ptr4 = passArray32ToWasm0(invKeySchedule, wasm.__wbindgen_malloc); var len4 = WASM_VECTOR_LEN; wasm.doDecrypt(retptr, ptr0, len0, nRounds, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v5 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v5; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } return { getKeySchedule: getKeySchedule, getInvKeySchedule: getInvKeySchedule, doEncrypt: doEncrypt, doDecrypt: doDecrypt }; } const wasmBytes$5 = generateWasmBytes('eJy0fQd4XVl17rlFV7IlWbLHnjHjgblSJgkEkpDyZlII4ZJ4BscMQ0J6yGMITACZZo8zwIPgq95777J6s3rvvXfJalbvvVjVqm/9+5wtHdkzMHwJ8I11/nXP2WXttddae+0mfP3d7ykEQVC4Ki69rbx3T3EP/wpvK/CkoAfVPUbEH+Ft9b3TP+x3xc/fNrkn+5/w9oV7984SBOFtA+lRw2nGZ9+gpMRXkPvP6V/VLSuDc8rzmgsGJmqVuaFSdfI/NRVWqVQKiouCQmWmOH9OozFVKwwUCo2BgWCgon/UgiFBlVJJ/9DrBvQgGCroCyV9qFAas+9BpL9GRkYqhdpA8UPFlSsGKoVwUXOO6qTT6ysEY8NYxTnN99753g/u/EQpXPjWO3dvvvOTr3zj2+9887+++47w6YtEuPH99+S0T5z75g+uf/8bd37yw7vCb9PzX78jPv/Wy1/72o/+4zvf/+a33vn+177+zW9+7e4Pvvbu3a9/49bXfviD73z/7jt3hH+7KHvje1//7nd/8A3hc2Yy2n/eeecd4UuXZJQ774ivvX7uRYWgUxhf/s63//Rjf3L9N3//L/72r//znX/9l6/80Ue+/a3zvZMqq4yvKAzv/Yag03/8lqXqFUGr+nyxtV4/pnxNuWtIIINAxfnXlGsAD/R6/ZriNeUcQCUBr+deU44BVBHQm76m7AcoRwIvvabsAHAm0EHfNAC4EfC6/JqyAiARqV17TVkA0IbXKJ8MAEe89tHXlIkAoUhN9ZoyCsADxbn0mjIIYB4loAS8AILwDZXaCWCcgP7l15R6gHB6HqOC7moIOOC1q1QfgD4k8ALVB2CcQIeG6gOwjUyp1P0ADfTLp6k6eM7FDyZUHYA1pGxI1QFwpV+iLlJ1AJqRGKWcAbCJilINEgHmUFEqdBRADlKj0gQBhCE1Yo4XQByAAVUHoAjVMaPqAKQBUNF2DQhM03MU/bIGsIkSENvmAJaQADF0DKANFb1C1QFwRwlepPoA5KOg1HANALNI+iNUH4ApcIqSLgDwxjfE9wyAVORDPEgEqCKQQalFAcTS9xXGVB+ARpRAoPoAFKGgVGongDEkQKzWA7jSLxnEkF01gREwhBJYAyhAY1OTzgHUITWq3BiAFwpKvO4HiEbSxKoOgHaUgFJrABhDtc2pPgDByOcC1QdgCtWmfDIAjgCoGRMBaijpNWqFKAbQclSCIIBRAOKBF4Av8qHiOAG0oqBUOT3ABipHDNlVoaD4hgRxDWAQHFVTfQBKUNPnqT4ABSjBx6g+AD7gNclrB0AFEqCaNgB0ogroPgCR4AG1aQFAB4pDVcgAsME31HKJALXgAZUgCiAb+RBDggCqAc5RfQCS0Yz0mhNLDTygyukB+pEaCcWukkAT8qFv1gDKUB/KdA5gAWWj18YAMpEasbcfIArfUNIdANATHZR0A0A3ykasqgBIx2tUtgKAJKRGKiQDoBepEasSAbrwC2UaBTCI5IghQQChkBASZS+AVAgF9TknAGd8Q0nrAbLAXpKDXQWBRdSUmmQNQI+Wo0znAByRADX9GIA9ADVJP0AQ8iE56ACIQdLUgxsA7MAqAhUAmagpJVAAsI6CklhmAEyDb9TaiQA5eA3yBrADQSImBgHkITWqqReAL8SFCuoEkI8qQL0BPEbSlOmPoULwPSX2Q3QLVI3k49tQ3KATo9+m53q8T7n/Mz3voSTUTl9Gd0WiJDVfQDODE8Swz9FzCnImfv0JegrSpHQ+DWWBmlO3+zisBD3T61p6XEV9qDhXUTQ0HLWIOaqG1yl5I3qeRFPTM6zNZkFmdeyc/9CXqUXMoIad0kYc2x4E/wM1CnBYY3ete1ZGyhRpkjkQ1m2iWif3Ux2MqG2AXX3XK30Spx3uUfMAP3bYyai877xeQoQOEFLnvCo3XDs6P0+tBGw9W/5wyTEzp5BeqADBb2TryfJaXvQuZVEAwkLoaGRu88LRKBEyQHgS1l2xvtM6uUGERBAGyppnnsyGPXlIhCgQlps3nNoSlmL2iBAEwkp77NZQ/OOMfMrFCwSPpLF2f+9251vUiMBu1cO9SZ7VHa9ROwJnp1Y2lE14Ly5TCrsXINxFYaEpTZvLPpTCGggbc+E9q3Ed9j8lTgDb9ewvDKS415HmGQMuKM9wPkjvyaqjFPpBmFys2y60jc5tIUIHCD0hSdMHodbN3yRWALs/yM/qc17aqaYXKkDwiMo92qk9bCDTVQDclOHjdDySt10JToCQcb/absRmu/uPiBHA+btF0bM9WZU/Iz6w3xMDct36gzv/D7EBOH3ax913piHyd4gLrAS+Bz0rIZH9nyAuAA/kR/QtDrTmN1EGehCcIjbcJ8L2XH5AXDBFZxl6mLPS/uQ4GVwAwXplYcrj4UyCLRHmQHBeC55viahLXaEkxkBYqVuvKVtdCf83YgNwcVZW7UFOpBtJaAdw0qOeo7zeGp+3iAumTI9t7zWuxs7NgwsgjKzMrncdLY7bUBYFIFQl5OR4hqcteREhA4TQ4OOu+Bbv8h4IBAhTxQvjXZWxJR0QCBDiw0Yetm6u9v4lMQK43bY336U2vzQO8gDCUW3yzNyMzUIQEZxAqA+PKwoqyAn7F+IEcP/AZvZW+FSwJXHCBMYo+HF98qTnbhQ4AcKed6fbfbuBzXp0DRCWUluGfbLTCpLojTFGiAte0u/tju1AIkBoHtldyoxwG/gqsQLYe2pqZ/DBnN8bxArgw4bEZKfy9uG/I04AV9QMhVnH2k3agRMgNBXWF7pHj2dWQSBAmNvNzy9OLXlcQG8kgrDd5TbY8Gjd+yYxArh2Jyimpm708BF6BgiRrXYF7fmlhUPwDUAoLp7dHInsL48BJ0Cwz64pr52vLEongh6Ews7BZZvCZE9SbbvG6PMhsWsdW+u1d4gTwNUVruPdk7XupJXngF022/xGhlw6Pkd8AJ4PGO6ernJwJuXeD9zuYuuQ6Oe0Mo6OAULXg6KExeypVngOwJntSWNr409SfKEjQOhMWh5MqncNfYX4ADyVVd7hVZOUNgc+gBCRXLy8EdsW8CqxAXj/uHhu1aWtitRcFHDqeO3aeGPYgyWwAQRbd5sWfdK+/x8SF4AbS71q6GUnPNf7rbmGHNreP0CvAKEgb7qg7FHx1BMoh/NEKLW/7+i6PlFD9mENuMXRumm3bXZpFrIAQuz2ZMt61t7IPxILgFcTQ6PWyu0T4ZH1g5Ab2uUyEBU4sQ4egJDmuju/nJi+0UqEBhCe+Dusd9dXrgSACSA4lNVt+LvY5ZdCGkAo7PccitoqzqgAF0DIqkpJ7Vgp2o+FNIAQnlB43zbn4ZNoIkSBEFnT6fygs7z7r4kNwK3zi2m9g6s25A56Aa9NRwZF9uzmtFGSTiCkFJT0JvoslyRAGEAoeujuVdEc5fo9YsU5KHzPaOuYvPnR3yBWAIfs+Of1+1WFfoU4AezYkRpYXLE2+PvECeC+iKOgtOmF5BlwAoSY+PZHyUMVcY/BCfbFwJP4JwFHpV3gBAj9HfdtAmOOoz3BCRDCKhw22x+72P2EGAE8turt2tyxmFsMBcEIMzVFA3OjSRNQECAE+R1GxGe4ub9DfACe6bdpbOn1mD2EPICQF2m/sx+dUvNDYgTw4sFY00Dx0NBvEx+AF3xc0hzTI+rvEhuAk7qs22ucHk95UJa7sKoPHPbiSoucivopxTUQFrdy91OKA5L8oSlBmC0vDevwSWgkr2AMOCY9ZGGu4Gh+EZwAwWahNDjVpiTeGrYThKDwxHS/sIzjYXAChMac2q3DJYfh3yRGAOudH2Y+Xk/MzIVIgHCQHni8uZflf50YAey9nFnXb+dr/V/EB+CHm9XWE2WhxQ8gECCkZM7PFj2uWG8GI0Bo7nsw7FvW2UYOjhdwdeNIx3hXn++fESOAO9q6PHOTB6KO0DlAGOq/H73jkjYHnbT7Agxj4KrrTG/Lwho4AcLU/MRMcL9/FvT3HAjWHTPO+QG2dv+XOAHcuBs10J9VfQw71w9CdXG/V19NwQgNczqAcxrGxm3mEsfhEjSAsDGa7NEQNDj0WWIE8OreQXxmqHcJ/JACEFpX27vSco/TofcyQGhLGmvYmVkvLEffAGE0bqMlt+0gmUxEFPB0od1qxLZ36WeIEcAJXUXbEYX9j8iWegH7rc0+bpit2XKGngRhPG1xquH+XCicDj0IvVGxkRsNW3kY7T6P3tfW+jBuL68RgrwGwqbHQmTgXNXh7xEfgBdKt2I7HCb1aN8xECL77epCk4NjjsEIEHJj9sM8OkPiSTN2ALf2ZMXXUl/5GvEBuDd0YNFpe/8+tEYFCB0hxxtjZVOu1N0KgIOca/piQ/ejfkRsYL/ft3F03Z8PJiFMBC4J7yyOodaMh0CA4Ncc4jDZMhdCyjsIOKux7knRlKf/HxAbgJ3LkhNaPZf8SLM5AYe2L7Yuz4TGfYmYANz+xKFSX1q785/EhCtwB5JD0mcOyh9CXtZAyM/N8oza6K5MhDSAsNuS06aPCcinrjUGPFkQvZO307a8DyaAEDwQPdLt6eAEHdQBwoPk8ubk6MbZbCI0gKAvPtws9tnMgcauAGFno2B9ayujkuS+ANg3ZDDQLTCv4dvEBuCW8qRH8w2RyUxBgBC+lXE/zScikfzlKGCP1YW8x/mLkVClQSBYL4YeLj0a6fo48QE42j97s9w6t4UsjhNwm094SVhI25KO+ACcujdQ5f7YzRue1GXCbk9i4g4cSzD0XwNuSKzraE/diyH/Yg44YCZtPCBwqCcY3gMIXW55Y2Ula8XkmvcDp5dsk3SkrrxLTADOelzs7p3TNAmPtQGEWD//pb7ZtPkfEw+Ao9Pa9H5VmVVa4gHw0ORQ79Ba0H1yxDKADx49qg2IKByaBA9ASHJ4kDO72zBN7kkUcHGLd/LS6tGDPyYWAMfbDB0PjISlwbf3AmE4u2jUdWm087+JB8DBE6PJu1HDffB49SAkLuc1hj50dPkCMeE5wu4+Bf1ru9FPoH7WQBirXQvenHBwRtwEuCjBpS+KzCTp6THg5pX5pvhqOw8af/YD11rbHtjZ7WTAoHWAQK6Ff/jjGfcIiAIIs34ZTvsHDxvJmFcA9+Qtuy3XuvuQ/ioAHohMjJrxC8yxIC4APxzeXvdOcA0lRZ8IfBy+OeqZMO7YC1cShLXo3bHktoA8mMQgEBys44P6D12CG+BBgRDhNNFOmsoJzy679qWblV5l3yEOAD/KCqufDH9cQt7w7iXCVR3Vy8WZE7ZO4AAI1fq4qaXs7Ww4iXMg7GfORPmUpi8GQhBA6HH32u218cvAEAvYPak29ZHregGCLsD2B5vbg31P4jHwaADBpXq3cTUqv/kviAXAkZNPsvRVj0Y6McICYckxrWEjPCgKXn0GCOP+AV7Zw6VdWxAFELqHOuYHFko64e1GgTAxV3M0TgbVBf0BhM3cwMWlfGtbGil6XWJ+QItjeklIwn2oRxDCIlKGqvJGujGA0oOw4ODUkdJRuw3Pc/ciDH1nhffo5qp3FngBwr5LaI/zeOs8vPQ5EBJ7m0ujCpYDVcQKYM9yt/LcXP9sGs/0A3fPPgiPHvMp/A9iBfBSSXeJ03FEEoZ9DSDQ4LP6YXlnPcJqwFG2e7OZ9lUHfrATIOw01NqvbA0Ow8XOACE7ethue9UvsxasAKGpzLPau67uMYYjUSCkVsbmxddvlOWAFSC0V+3nPvKP3qVhmxdwWcb0UEDaiu+/EyeAne37ugPaY/YwwtWDMF+R0GRTmFVfA05geG572LXiYxeeSk7TGvDe4OFwRHNP078SH4BHIzwK2rqnXOBLjIEQ6J4bFnK8mfs6MQJ4a8QtQB/RjeBsB7BHT2CVc/9x2teJD8CDE3ttOdUrPnBQK0CoWQiyLujpH4RPVQBCX3P5RPlA08Q/ER+At4Ni3BobK/bI1UhkRRrXJz1sHe59j7gA3L+ZPVw0thsHHz0IhMXelYGhxFnP28QF4Nj0uaClRedw+K9OICTM19s8TPUq7wYbQFjy6py0D8y53wc2vIzevmMfkxifW5AHgQAhJ3MjdoV6GinVOeDEjRrXCmubVSj+MRBKOlJbesaPo8CYfhDCUxtCU8PSHajYHcCxaxn3s3vW0uEjN4CQ7u8Y5vkgLZI84Arg0rLu3TqniGrqoAXAOwlJq0PHfQ9Y3wDBL2Nq42B3aPQ1YgRwV+HM3oOyh5GIRkSBEFaVn37UEBGRCU6AkBReXO6ztBxygzgBvJtdGJs5sVdDnoUTcF9ullvApnsp6Qw9sFdXe+Z00SNnjCR3PwYdNrOwkPkoNonGgWvAjlvtMfnjZYHwj+ZAGCny6WjLrEgj32QMONVm8rCzpbMcPbwfhM5Sj/QU9253qJkOEJKDuxemfJ6sqokNwK1LuTmHhx3x0CoVjHBcqPd/XBtI7VsAbDeRUtVY2rFPIpgBTB3J/nCzxeWfiQ3AbXPD4ynUmH9DXACOc6++n5TjPga/PgiE2MkS//36piAaGHgBRz7sbtPnuSzCRjuxWm7NjDxp9ZklC6oHLqmO2h2aKN4gG737UcL+rYEb26PJ5eRJrAGHDDgW7M9H9YRAO4AQH5JQEdgcuneVuAAc1lkcmje7XYphQD8Iqd6rjc62Nd3w8jtAeDgat9w1tTFA3aQBeLhsz96pKKSMDTRBKBzaLSrvH9vD2LcABPdl1wjr0NhNDLAzQBjtWZ5a8vTPhLZNBKGo32vV2bPHAXouCoT83ND1/i3PLniaQSBstZZ5JKYn+ZG76wXcFLwX2BQSH2pMjABu9IjYtkvYHvtbYgTwYer4TFZdww785d2XYKk7fWacIhLdyVVdA/aLmav3O/T2ZlE5ELL7MrKt0xZaEFQbA8EhNCPQfzd87hvECeCI4tS96ICdJ5hIAX4yXOflO72eB23dAEKTy3ZMVl/OAWwGcGCC3mci6L4XplSAM9NSZkpbvJzswQcQlpejJ9vDVjKpuycCVwcMNmdNZa2QRooCnnHyH8k+DgiB3xcEgvXKcU60R+AIuWRewMHDq8uHq3NHGBI7gbCe7t/SuZIST4NqPXDeo6naBVv7KcRTdq9Bj4alzmV0HvS+QWwAjt51symrrvHAHBKwb21Kh6vf2mOyDmPAOzlxj2LJ3SWXqx+4wrosuaU4qJMcog5g8i3yCjcc2r3BBBBcgmpKtxemHL9FTAB+lFcXP+3gHE7+egGwp59Xc6vroBec5QwQ0vZ3E4drW33/lJgA7LG3ejy6ZpvyJ8QEYO+SDHvyLRIwtg0CQe/rllNQ6xZLo2cvYLv1hG3My+D5oCqiK8ppdBNTTcDBbZMD9oUjy9+n6r8IWza+7e+3bl3jCu0IQoVPVoTf/kAxfJ85EIKyvQZG+7aayfkYA3ZwKolxd+k/xtwTcE9073JDwZANxhsdIJQVFT8YK/GNQUihAYT7B1N9/Y+mIzTEAeD1kuDd+QeriZgZALYNnBr3cPN6SF5tBrCLa4PzSsR80S1iAHDa3GZY7khiB4vMgpATfew1Q9b058QA4MHm3PjRisqFMviQIDjOVAdGtnZ3kAl3Am73Txv3Xk1qhHXVsyzt5h7ORBenwf7ufgRGYKyhfHfHaQBewhoIte4LQzszm11GxAbgxemIiq7tZuvPExuAI+tG9/qbgv1ToBdA2Oj1CC5tDFtXEhuAR5IipvLaex6R59wATKPNqt65STfyayuArQ839C73y5o+SVwAnpqwKc9fTqtKgxyA0JlmE5rd1B+NcVsiCKP14x2xMYWVNGqKAo7yCZ1cKIwcJC80CHj8cPDQzvvAFY6wFwj9WWkbvjuNK4gHOYFQtZjUPOddWoKYkx6EMd+4xoCBmGj40gjvlyXlBzd49M6TI7sGvHyU1peQHLc8AKUAgqdj2HFcVm1TGJQCCHUhHqWFeyGTPyE2AKc7uCbWJ0U5/5DYALzgOr45Vt63RkO/BuDM0oSuuPzGbBp8VgDntuhjY1OX6xEpLABhOnK9/EHc+uJNYgNwi3ddTkLUoQ/8/0QQMip6ulbTUvYxRokCYW8grTb3oKuRHLog4JSd1JHejfpdeFteIATmuMXv1Xg0j4APIGzGVBaFNIwmTYMPIDTMrU84DHakQCPv/jYR9qu8h4ZCwh79ITECuL/QJ6HZbWoMHvwcCIUT9hUulTsDZG/HgBMD4ic2yjuaMGMOHDDlvlIZWO0DLxK4oL/jfvRuYBTq2QBCk23bcUif5wTCjRUgjCaVLNq2jy/DgSsAobsnv+x4MeAhSUwGcNDjwvjMldVQUlWJwGHZhwHDC+2Fd4gPwOOPAmfve7b3w+QHgdA2HNm4l9c6hZioFwgDYV0V5aXREc8RH4BDgh2KD+siHKCx9SDMz/bbdC7XxNBAfPe3YANytwriu/zmyZFZA96b7SwuGG2OIiszBxzunLjjH9UX4gZxAKFy/WhsYm40EZztByGivs+9dd6hZgHqAYSWpNyupoN8G7hwDSBshwyu5CT69lP3rwA+DqtYOJhw3YcGLQBh3X881muudPm7xAdg6kgOhfH2Sxi6J4KwubK2VUOtybxpEOrGO1IHHTKyMaILAiFzpCkuOa7Fm4ydF/BCUsJucG1uGTwVJxCKsldL0hqzQ1chESDc9yqZ2R8u3CQ1t/ubMD3NhSlJDyNpoLwGuGQ79LDQK7m1HfIAQqvvWPaEe6kbesoYCHPD7pOF+yPDf06MAG7YmZpymZgvI8eiA3i1Ky/p8EmqMzmVDcCRhzZL/u6jjTQ0rwBOKxluj8k47Psr4gLwtn37nJNP0RD5ShnAC3lZR7VNQTGwhYkgpDbs9Ngm2zZiRBAFwmBrQcm+4/wo9EEQCPGRjqmjfi6rCC55geB26PrQrbvV/u+JC8COnsVNfsVrc2Rq9MC9GdnzCVPFDX9ETHgFQu6cPeXZUxdJnXsN2HszJvpJg1MW2YY54JT+gaDQ3JkhROnGQHDvb87a9dhcJ1+7Hzg8oHS9cb8kCKOzDhDSYhoajwsedXyCuABsv+/dGRtyFAF3qwIEX71zYaNXgxO5AAXAff4bHjFONVUIMGSAkNe5vuqx07/7TWIDsOtyXHBOcP4kuYhRwDUuq5l5ru7lPyUmAO+UhzhXuK7uwXx6gbCys91WmFOeAT3rxLJwmXE69u+2xcBVD8KDx9G5zTaPez5GbPgNWOSAnIaossVJZjRBKHGwDoyOrnclpTYHPOE/F+5cUOiPke4YCINdD4rqq+0xm9EPrI/0dwhrSfTCpA0wORWbZdWzDaHoFCC4TUR0Zzyu3sAwpgKE0Jjuwdoaj0BybAuAXRqmj/QPnLox8M0AobSkZ3thpjHsd4kPwIc7xztrlf5hcK6iQIjor3KtbPUtHIR6AMHZIcQu0aFrmyyQF/Cu734UmTsnPN/3TBqrT99zRABWD8Ls+lKT92reDiyFJbTwvkvVkX6iFpHLNRCcgz1tNpfC2/+FeAAc3LBUP783vQk3YAwEu5HOPP3SsQvm0/pB8F7Mi/VPq0yjUVMH8PBwwFp3Y+cI+eYNwGWPU9wmsjxtachbATziduDWl+/nhFnBAhBcH2dEOjUs7MDbywDBfsquryFneIvGG4nAOUVtj6P95pKp10YBd5Y7xVSTRYWvFQTCdEh333JU7qgBsQB4Y7y5fCwpcR3zhk4guPSt7R70xA4yiwmCzWZyaEd4YOXzxAcL8GEqsiarZok55msgOOSupJQUJdnR0G4OOMszauBoWj+OcPoYCJPppQfjLU0P4c70g5BS3xKR0FZgjXB5Bwh+nlkbDxYeHCBY2QACjTerNzPrjmDRKkA4KtS7B0VO+1NzFQBnVo7G5AXe70PYPwOEwMpW57jUTjYuTmS5ZiTuDQ+NBWFdD3Bja6Z9l+eD8C8RJ4DLlstcPI5qezG48wIhuO9J5VbsTgHcfycQtnri/FoiRkowO6FnSXTF2q7QgIGGpLtYJ9DzyG3TdXHTaxNRWRDK+xYXe7u2UxGrngOBTN5ef3RcG4Y1YyC414/k5LSuH3yFWAFcbd+z79Nht8umt0GozSjqGEkpGCNXrwF4xHfe5dHUgHsR9AMI8Xqf5O7tyU4EXQtAaN8dTRvZ3Zomhz0D2ClmcHKozDme/LJE4Kjkecfuh4d521CTIKT2TXSVz09Z07AmCLg4IP3RXsxBdDg4AUKIg2/p/fq4dEzbAHdGhcetrvZkYeSs1yo/x/+vVeiUd3UvWVka6A6Oj49Vt7UGb5gKWgOiWip0whfoWWGq0KktNCZKY/N/Foy1CnOdpea6qcJYS6+9qjSiP5pXlQL9oaTee1Wp1hrQrzrBgn62UKg+p3zq/1pBp7p9Xf05rfLjSiNLNX31M6ubBA20wi16tFBTRoyoVety7CsE8z9GphZq8X1DreJN5E1AoBeUd63ogX4UdOq3dCiC+ua162Jqb5oqtRqtmspmYmisVdHbz7+nOzC8jS8sDXXHipv0AsgXTslGOr3yLVMVI2tOyecYWc3Ix4rbUraWaiLf4JlpKDOVTq+1OikW4FUr7TkZNLfSGsmgkZXWUILvvvuuVFKkqrNz4DWnN2I5G9AwNRwY4r0ejlBy3RRHKLBuU/6ZH09Q0CmsqG00OrWVhYYYds/KUmEqGJsowHW1+dv0ipJ+Q/2E6/S28u71O1JzCebnjFHsj1u9IhiXv6gwwYpNr4/fsjR5RUALWH1ewGoagS1NpdepQrKWvye1v/o6CZUJVUxprtGaoPmeIyo9GOlUJHvyd888nZWi53Q1NlSjP1PjcY49MqkjidOa6MytzM3oj5eRlbk5/hK+iL9Xrcwv4a/WytyUWtNIe47KcV5rzD4RPxBfF1+WXjWglwyITVr1DXDqsjG1uOFNU0Ni6/FJp1GIneYCOo2CFfECle0CsfTLlkpThclHjakXEWdJTNiL5uaffJF+Vr5noUCPeZGk1+CWxUWtkYWGqmBKJWP/3bx2y+KSVkNfChaGlIIZ/WiovfS66YtapdgLzCA96IFoNgul1gx/zLQXSUCobQ2Jpca/GkdMPwxHDLSmlLjW9IbpVSrPuZumL0nVM9KaQqS1rH4a7QVImaGlqcQ7dN0P4MBHfhEHqPZm4AAYSz+agQMKSsjQyvKy9jLYoKRnzglDsMCQWGAGFpgxFijNz/1a2fARsOFN1tD0qdktkxeNeetfN32JivcLGSPTpkqmTakGWgU0wnPGTNoXT6XdyxaPpGTpOZY9m14WJdLgjEQqRTabQiKVWlNTFbWQwkQtSa/mQ0svGQCTj0F6Fe8nvYZou+fOtt2H5TOlZ0Bffgg+P9Mf0NeVUn9QQhqeo06qONMfFJACxWl/UEIYlEwYWLMp0WxEhvReQVIfIL1KufQqPoADl0QOXPoVOQDN8uE4cCJLHz3LjMtUAQXKa3FR6iTKk05yGZ2E+puV5RXtFbGTXLR6Sl1ckneSi9RJTnlzCbyBSD8vifRzXKTNUAwzObfILzgnMYx4rnwfuTY7kWtDUa5FOVSfkUNBJocCpJBMDxNbBc9aQbpS1gxmVHGFaCW0BmomtmJLmP96W+Hls61wkbUCCqNhippagSnqi69Tp6S+b2V5SXtJbAHN0y1gLtfUGmKjEdhoJDYEF72LxlIX+3VUiwRfLLz50x3N6MTwaLjhUXHDozmph9Yc9dDgj+as4Xm/qpgbo5V+pXrohA9VDxPBWDD+dSTMGfQiy4EYZHgLEom/cLb89KJzxRxkUy6mHzmrLSwv0iMx5jK6DCkk0+umarFNr+gUJMOfg68sfW2oZsLDujWcNMVtdGTzc5SpybVfwZxrPqxckwY7Tx0aupP8QzTqSTUU2gskD+w/yMTzrFIo2CWmggWx6CQEz0PbKCDrL2hfgIAotJesnlLGV+Ra+BKTdVMSEKQCJ4cE5YKV5QUIisLEiLTHBa3yFj2YXGXaQpcIc/eqIAI/OVizkYEGCUg6WUUq5ISZvxbeqc/y6MoZVlLnYQqBOpOCMeoKOpFkrQxPGESKwUJ0aciiXJLzSeSRjDcCrLGhTLdePNGtpmwQJkC6zmkNSWLOiUyUi6mW3AVdge3p6EBMRHGSyAUxERMDiLhSp8errzG5P5sQUwkfjqHQIuhwlsoP3eUsFBgpQOpZp1NiVMObnIYLbBzxHIYk9AWGJGasQ+r6bU5Ka/h0aRUYyIiffMhCK0Rv8MMWWSmWlVxBsRwo6wVpWMX/mop/Z6kk9xQ/pyGU+S1L41cEaXC8pXgLJsz8GzTeUOiMzL+ou4x/rXTm7M8t3e7xT610P7qt+28rxktGJpVyC+9rlTeviSNftCN+sVDrEgcrMRpjo3Kt+paFShxYAWAAayq8qHsZA9vjYzLHwosY+tJ/Ru99y1K49R6pHgwZ797SfdbK2BK6TJczVCmI40PiJplv87+5ywScDfa1gvlXyXuAkFKLqW/Rs+otehaYV6Aypca3UJmoMA69zBKB3aDiUsN99D2d+jbVU0z7jWv44RqcZMqehEdg5pGy1FgILEZgqjRGrjqycnfN3+LVvE3DVupegvnff/tsYYkKEUBPQxlpNPcWPVIJadx+47YlZYXep0Ke+PyGJcuQZJCyyRlmaVsSyxBmoN/pw7euQd+BZv51CwP65DewU0VsEGpDvGP+j9RrVeY3MWpWvsVCBSpzS5RepVO9Z6nQqe7qUqncZDepQWLFGlCzUrp3LRW3UVkaF5PWZ7+hfe+gk2qMWVlZv1XgjwklrBH/UC/GB1qUUm1l/gY9kSypqPUpW525KBii0PzUSivcvCZKiXy4fVIQYg+KKbxHRRKDNmrOijdp+EvDWs51sNfwWaYrzL/KJI68wxsQFxWTD0ksqNlVNyxFdqNqaADOd+MTxmrAWM7WG+RNiWzVgK0n7aKAClY8xVJDXYn4s4XBs6ylZoXuNSJRpFYjZfsuk3QrS2qYu5aCLmdQqoJGZyTJqSCmS6IJLaIVwG82XJM1kO7nWtWPblMbGbNwkOqu+Rvk0n2DRN6Q8qHMBd3LJKEkr0jh7m1iGHh7JkeVlKPibI4KnqNCliOvGOWrlPJVMf7g36+TaCNxxm8Zt9BvBdaw78ssmSSicwlUOEiioVwSqRRMEg2NLegfbkEkSTQU/1BxjYxZsixCyLIXR7cqxhHNU1JtCKk2fEqqDU+l+pm0VLBRz4q6qcL4/UJG8k58g1RswSm8CU+MxBDBNyQh3CL+MKV7RvdSu+j0erX5F80/qzVm4cLrpsZ4MrIw0dWgRPSstjzPnul3K0uYVF0DIfaPmJsCzLt5Db9UDJ9o5hZ6tBBY//gnrREcBAHxTvQFEtGTxlEyzUPtInYHqgZ+0QmcJ3hHfGI0CBlJoJLx2xg2FF1KYh8rHGOpIAVwSVEpmfSIH5w31o3xYl8nKyjcuGMKQaY0/y9UuvnXtCYYspGciD1Fqo+l8k31PZJ/opIzobxJfpQxKV+W2GmKlKAR9A/yNtKeJ+dHYoI0fFWAA0zyJU5AgZ3Jm/xNY56nxbmTr1XsC4GGrmqRnTS+J417wk/EpskvwE+WhmILW5rd0n2HmgttD6wlCVBQv9NK9lV7zurGNUtT4soFjIQZDyEoBkx5qsREaOjHXianGIVC/WDF2fcKajPqj+ZgOQSPRPq8FRQgeX1WlNUtSwPwwZwcM3QsUQxVUqqXpVTF1BV4y/zrWjay16puWVnh/SHwFluymfNHRfxHxo9PEGcukudBktsjQkRoL2gv0h9dPwpigiJ14Ok8nlpYyfGE97UX6An81EFuoJAMEeE3hHYmO3LTlDHS9HXS/WzYeItYBsZ+3fwLCAMzkwdsST78MypH+QGKRvl+ikYJRUMuoKhozkErnIMywR8oGiaWkAMYEyNRngmric0oMVpCI7IR2kdsFQu0ETHxlpWlAesYpHwk5UnZ3kL7k3tjdYvNL0hy9obU5SBgwutkdZAJGUed4g1TA8n90Ug1J8PF1JPO5MSCSJpd1Oes+MoP0ucaYpek0tUYG6gx0wLJI7dcFDBDLk1cl5EWtGR92RA+2x02GSMZH1HqROXBVc9pf2XGgmsB6Uu5JtCInZcxljlvMt7yzKn/Vpz0bUHWkywF+EdiARQQeyKpeBm0TO7JLZLJvdRQktxLus6CvUVyL4iS/z5yzxWlyBimBHOeZQwpOZEpKvjpxFWSVbXUYoTNLU9/Vv8vSKyhKLHMjhmKTW7IJFbKhpyyKZT0+OVXf2mXLICEoCiMewA5EsiR/9IAUCKBEvlrHQA1EqiRv9YP0CKBFvlrYwA9EuiRvzYHMCSBIflrawBTEpiSv7YLsCSBJflrm/Jf9I8qRQrAwaAMOOGXAwnYyYEXACgAbnIQBOAmAT85iALwk0CYHCQChEkgVg4yAGIlkCoHBQCpEqgAyJFAjvyXBoASCZTIX+sAqJFAjfy1foAWCbTIXxsD6JFAj/y1OYAhCQzJX1sDmJLAlPy1XYAlCSzJX9MPoRUksCl/zQm/HEjg4JHsNS/8YjckNZb8tSAAN+kXN/lrUQB+EvCTv5YIECaBMPlrGQCxEoiVv5Yq/+UXGFW5yZYrLmaXRd2lgu4S4+mkw6xEJfa/pLrglKjkLumbpsL/SGWTX0ojaZykY5x0VWHMZ2ov/JKZWnF29oI0O3sBav0KwvBnZmefmdN93xnaK6cztFeenqHlU68mWlPz3zk7u/q8NC9w7v3mpy6K81OybLUXKf2LHzhPZYxZmouYpVFK6xLkszQGWjMrS3Ot2Q1TM3KqyE28oDWjcrH/EMd7jhI7z2aFzNg8B0tNLLuZWHYW1tKwOhlqn0OwX4rrnX8q8Hkef85rL52J9WsvImBubml2EtS7ZCKf3HhOXnpydplXrGSxRB6VEkshxsqkSJlYx8vP1NFErKOxxK5L102vna3u81Q8XlXK+pmankdtKcnzCPWqxNnXk1DvM7Ovl6nOVNXzrKri7NBFcXbopMImLxhT8mIs3Ux7/ky0jknQ4qkEnc56XuGzns//gllPE3HW0+TDzHqelaqnJOqlpyTK7KRN2LzflaclyhwTHeY3TK/AH75p+gKYLv7HJcqESZQ5YzObviL/nEUjL0jRyAtSNPKCFI28cBKNVJ6Z1MFn4kfiJ+IH0usGklgqIZYn4WaTp8TSBH9MzoabJbE0Jak5FcsX3lcsGQsuiyx4/hkWXBZZ8Lxc4C6dVB0S9uEq/qtU+iKfoLt2lvEvsAk6ytOCiktNIE7QmWhfECe0NFaWV7VXxQm6y09P0D1PbCLumDDuXCZJPiPNJ3yC6jLHfIUCf03Ohtw/eK7ThM91msjmOk347MtVGd81T811msjnOv/3WWlyOuN8Rk2Ic50ojOkvm+s0/YVznaZs/sdEnNsgLcW1wnOyuc7/9WqxqTwNm+s8Uyv5XKfpM3Odpk/NdZrij+nTc53PVuWSMVrpV6rHyfzIL64Hn+v8X0+YM0ia6zzVz+8z13kiplfOTsnzuc7n2FwndYbrphrJLBGLTWXznWIKl0iaL2G9zvvMd75g/OHrqPmwsk1qC+bQ/HS+0+R0vvPMHLg434mCGf7y+U7Dp+c7L8sVq+GJvMvmO/nEuMLkvLE4w0YP0hozXZCdbFbTSQ7m+EyYOaaaOCA3RgSv8ZlQ2zMzoWC+NBsqsvrXwln10ytU5Ix+Zjb08q88G2ry9JICWKj3nQ01kWZDTTAbekmcDX16ElP7HFUt0e6DZ0NNTmdDzbWmul2Jv0xHfGjL/fTk5y/rg09NfhIzxYxflZfx0kkZDU9C4c/8pGQhpAvShOkVzH5eOJkwvSjNSZqIf0suKc5jqJBhdMtSTUMF9ckxnAeGBPgxnJsA/BjOJQB+DOcUAD+GcwiAH8PZA8CP4WwB4Mdw1gDwYzhLAPgxnDkA/BjOVAB+DGcsAD+GMwyAH8PpB8CP4XQD4Mdw2gHwYzgPNAT4MZybAPwYziUAfgznFAA/hnMIQDqGswfP/BjOFgB+DGcNAD+GswSAH8OZA8CP4UwF4MdwxgLwYzjDAPgxnH4A/BhONwB+DKcdAD+G88CAAD+GcxOAH8O5BMCP4ZwC4MdwDgHwYzh7APgxnC0A/BjOGgB+DGcJAD+GMweAH8OZCsCP4YwF4MdwhgHwYzj9APgxnG4A/BhOOwB+DOeBmgA/hnMTgB/DuQTAj+GcAuDHcA4B8GM4ewD4MZwtAPwYzhoAfgxnCQA/hjMHgB/DmQrAj+GMZUA6hjMMgB/D6QfAj+F0A+DHcNoB8GM4D1QoqHQM5yYAP4ZzCYAfwzkFwI/hHALgx3D2APBjOFsA+DGcNQD8GM4SAH4MZw4AP4YzFYAfwxkLwI/hDAPgx3D6AfBjON1YatIxnHYA/BjOAyUBfgznJgA/hnMJgB/DOQXAj+EcAuDHcPYA8GM4WwD4MZw1APwYzhIAfgxnDgA/hjMVgB/DGQvAj+EMA+DHcPoB8GM43QD4MZx2APwYzgMFAX4M5yYAP4ZzCYAfwzkFwI/hHALgx3D2APBjOFsA+DGcNQD8GM4SAH4MZw4AP4YzFYAfwxkLwI/hDAPgx3D6AfBjON0A+DGcdgD8GM6fQYVIx3DeRbeQjuH8LhS3dAznN+mZH8P5VXrmx3D+PbqrdAznF9HM0jGcf03P/BjOz6CnSMdw/jGUhXQM56dgJcRjOF+hR34M50somnQM52VUTTqG04Se+TGc1F10r76qTDWSmJ8BNW8kiYzeiPgA4ARAjPQzkmQbB1q4GUnChGY1emp3i6UR9rdo+P4WDQZeGtANxf0thmx/iwHf32JorrM0kPa3aE6mtQW2QkXc34I1KAqM1e5ZsCmHb2qNblkgFqO4ZXGefImfwWVR6AxvWLCpxrNbYOBZYKZBQ8b5ntVNUwX7SwmdZ/PYb7FNK8KbpgoWRmGDD8n3MGST81oW7/u+pZFW8d1bljS2YKuS1G/cMQX/6AsD2Q4VTjnd4aIzv8uJp7thdFfv3uHU010vOqO7d+4QX9TYXGJ8gwpGf3Sbp46SRtdzClS6Gg6klIx+ZPk/yPnZyoBkZ3S6gYa+fdfCAHEiYpj2PNtEJGedofaclU7L2GDA9tZgDpjaiMptZy+rhN8JEHfGSOEracBKPixcT9M32KIUNXlGouNkKDlOSGFKqvnOOcXFD9qvQiNJtlUI4wsVZUSuq/ItFqxSvIkNRzqllaWxlu0yokHUm6YIK6usLE1Agu+twoIbtTjKUIEDlhhiv0tjKzVm4hTiSmzL5xjRFEQsojBmxMuMeAFE7LsxYcQrjAjRN8MuHxROQbU3tSAv18LExMRYFMyLVGc24sVOICyRt1Cx+K3BW+RRoyJ4Os/Kjye2sImebrDdA5r3aPjExs8XSBIsXqDRCbWnxVWRuZQRqB+hotOLWEyPH6/RjyZoB6U4WcpaQCbSCB+digqmomVChhXoMvF6l/5H9VaKNVAhUxXizmfTe16WmOnZxMyfSszShBhuLJbq6mkKirMlekGWgunTKRhT64jLE7TXTlN4Ufb5R2SfK57+HAPHi5DIi9dNTcnj5wzXbVpLYkySpquRxjYYbuh6+EAHazmn+C80yNZt8l+w58tOSkCnpP/78dRIAHWx/BfKSpdzmo+BruYEMEnQ9ZxiyINuypoHc1knMBMFw0ynuGOpgLhgd4byDikzA/QFM53qjqUhnsnVYLqb7e7T0IDJRNZkpATPkziespwa9TyTsBOCEmMsGeuIaZcoSTPOcHwvkwG8fFZTIcen1NR5JtBntCMbqj6HsTFk7C4VGS+qTn8jW3e64Q+5nMlUeCbTC89mavK+mV6hhA1PU7pwNmGTZxIWnk3Y+P0SNkMMwUBnZ3Oy/dBA58cBNZMulgPsfsuRwMI5hek9cSHr+Vf4TBKNdb+EuXEyrwo2z83Mq1KnMP8yW47IrIY4SjWywi4lPmK1vMDGrEgCI1aFVskMKukphYWGxV400NRqaP5PCVgvd+9v1Fh5CfVBkmOhoX6hvAcOvY4IKcmLIcbGmt8VFLq/vE2QzL+VsYWaPnn5toWx+CUlM6p4ky3RJM7cvfNsSlpDbO5ASmrkT8Ov3xUEStAYxos+QHprihtsUayxzgRJiJ9reEFUJwXBdwRREWNKyVh36a6OvCnhNlbfQobuUHn0+hrhdVMV7z0qXYzhG6yi+OENU4WJBtbPCEwy0rL1C0osHQOdxaWIObrye180NRChtPCXr65SvY6dXpQaKRMDKpGlmgRDd/W/LE10976I6DIVkQpPEvA6sw0qse4q3c+l98/pKkjo9GwxiwEUK3ETb5z7oA//28oSLCO34PRDsifEPrPbIqfIhX3qm59ZWarALsPbxBdw+i9v32Htw/7BFlyJFypjFILaxvwlRInU5h+9zqLqRrCsKvBIxXmEmmNBEvHghEeGIkTGFsbMwhm+jv3BaGms61F9itWYSdo5Jmlq5CcW24DLhwEvNoksWXBR4CBp4I2FifglJSNKmhqdmwnOsylJDDBA/sQhLmlMOijpc5KkIUoPSVOLn6u4pKlFSVNJkqZmFTGmlExOJY1JrVbNmcgkjdwXUUuZYpntS8Q29puFmhVHpzC2YBuU2eucy0Rvd1RSHhd4pNxSdYs8CnHFcbv9Mz8pbkq9X6c0/11GRcOZMrYxJYCXyaip/1xgTMDcqVZl/ntUtvNs0zhWItOTmnENTyZs2RdI5i+zBcIva09UjPnL0FxmtxBRNNJqSI1QfxQlxpjNx8NgTjmRJjNkCo/0FglNDyecZ9PoZqLmIo8v5JzCALpuTbhlafAKm9kXl6hiIbA4NYN2JE7ek4Yg1hA7RAt1ejKKAmZNsUJMEr2/MVW/qMV2dCvSBvSvjKrRHZ1iKIvDU6ikb6hvUJo/f4OtaRSnOBWvKi+LS2+xlHCTKvGq8qr4oyE+B78MkayxpUYciCCEraEO8aK4rktz0iNoIGJ8JrUadzE1AyK/dMa5VWoVNy1ZhPOmuFdcq8LIhtS3UvxVzEgJrquRy2nl0W3BOq1WKa65MmAtYnjtVeXHkadgpROXWeiG6NFcfOw5efy8CuNPA90SK9unMdZ5lQatmBJuEEiYPscer9LTP7Mnc3r6Mnv6OD19AasGyUs5TfmpTC6IjyiFWsxPLeaX6PHL8nv7JD8xZ5OTnI1YzhpjUXS0oqSqxEGC4oal8rpaUs8G0uJmamaw63PiNCH/XTQAWsMTgWHDGzYTpmaSyzS7CuMWHetgLE0a5Ii7qNlQlJJWQrFpRJUvYNErRgHoBQorts5dMppkYKDUMD0MVXaOCettUmRoaCxFgF7CIRHYiYCfXlW+YsI2aFDzY/eGltT9PXGMRUjUS9TWGFziU0FKUFRr5B0ztQb7q4MHSGM6fG7Iv9PAzJxoMgFJ3EGvYopJLAQVAHWldPWKG1RvpfhsjmfsPMbb6hvXsI+KNcTH8Yc656vKT0lNLi5N1C2dysRTknLxVFIuieJhIIrHwS8Vj2+fiMfbJ+IoCsorJ4KiZYJCTNQ7Vwi6T1KzfoaNOLGKRaPLcZc0lIHu06Qrzf9KME42Upy/B/VpfmrrxXXPJjqF6DooMGlFpKtM9Qm6l+D+kQK9qJb25aiwkpVtdFZaidtCTrbqaK6LtpntgxbHgeS6q19noQEF8y+0RhAnQ7KTiKwwO3mO2SW1aJfOa2GptEaSVJ1n5tmYOQ9jaCX5u8biu9yGGUs2zPDE+Blyqyn5Z2puNQ1Fq2nIraZMVM5DrkQP786J2SNuG92C9YfsUqfRsME+CsJ6HLP9RqxOLDOUQ8xPI7P3Gm7vmaNixKSZ14mkTfzAUPxAI3YDDS+gEZd9uHKMa0bMAUW97ukEg9OqGJ1WRSWvhLjnQWtwXTT/zHdg/g5zO+nRUv26aJAZxsErVpJSgUNLNVdYcO17TVpnQg9sKQLJjBg9ERcywwlnWohnhM1BzEnCLJ1OdUPyQERJ0THngX762e1bzI2H3KjFVpXcQCvG0acIyqcJqjME5tKw8TziNZaGrMUMyF95NnXJ+2GOJnxd9ip57zcl5miwwk6NWrFtIgK0k9YSHVD1+jW2tPvWBdzMJ2oiyemgIcB7aCFKGE8aY56H1KUsxJXhCNhRZ5O2JYgaGSEg+A1q6qcXBeE6zLfCzBijJMpTak5praBa7Jps4ZwYeNGwzmF2mt/ZlFgeWs0NM3ZagcrM+AM6u/GhRqEhXWH+TbZa+6uWSizw5yrD/N9NBWk5PYP/IFl1Fggil+o/LAW+Ch6rqBTSGniySUrZNh+sllCYfwG+E32KIIwgbn173+Xx6pPl8QZsRIGje0ywAP/9l8erTpbHw8ky/ztmNVh+Jnz/D18sqRXX28tKfLrt5ewycaW4ZUfcC2MmLbMX+ArQk2X2steklZcn7BA7GX3+VUsVNKiSDbHECivECitOKqw4ux9AqvAH7Ac4rTAqan5TK2sCGdcRkT7Z/3O6O8iYLTdlzHgL0oRlruImp1+wv1R4Zn+pcPMaVlHKNi6drPS3UDy1ppa6vfJ0mxW1J1s3JNyyIqcDy1v5zh3FMzt3FHznjuL9du5IO4BELmKVCpXhlVtoVSkvXtU3icQW2d4TIxtKtt1VwdhnKa66n5K+uCftD6BczF950cyYva16j+0GlBb/K57aoam6a6nC4n+FfPE/CTpb/K+ATVOI6/xVso17JmLQw8h4T6MwvKf7JOvurNI0KqShocE1mEitgRWcNLJb6tuinlUwoRYDIkzdauTqlrSqAVO1kpqFeTYgZhqJA8cTJWrwtJo1eFrNGjytZhHzUcMwGkPNGou6U1SzT6XOXlU8ZUMNEXcwhG4zOHFGRFcEcSqs8flz1mFOvRWpc9AY7SYbahvdZpvzDDBqu2WpIQuqEBW0EdlCmYJWKNn4hSeqxi4ZcXGugWRx32NFE/W1oTEvLNfXRqK+1oj6+hwTRtFeQF9jvZ/RM/raQKuR6euT+ogqF+abHl7iGpwBC4VkD3RsoyVbQ4IxP42/Tgok7pw7UegoBDHyhlgPVkgqq+7TTO0QI8gXJ6/6zwStrAjCKccU4nkw4uZT8E2DnUXPGDalJEPQaGCUQmKU8hlGacQySBUxfIpRhhhOvg+jFDxo8L7MEUTmqMQ00d4aaZGVhp3zJMXb4JPIOAM506JHo+HPiRwwYivxqfsacNPHsjpj+iZh+k6ilOegmklXm7+Ic7rwrbjO60PtwFec0ZA4D0px85pWBc1jzhyU063WKmmrtQEzugpmIrCfi2+9PpmzFK2tRoyPq7mahJetPrUy2N/7d5gSolQMsXyVet8NwkZY56VhsYYbmBIkk2PAzBGiTIwIPqJPYyM7Pd3SWeuNblzDynWx36mZpUZ492VpuysaBK2LOLeGrdTXam6R0v8hKfJX2eQTOQ/izkBMZ961IiSgHbAPlm+GhTN7S9SyZzeCYhGcAQ4uePXpvbJKZtHFLaJYuUX5k6PGd4IjMwO2QRx/Pw83Tvr3qona+MRWU4HpuzdPXldLr6vF5Ph+ywK+F020+WqZJT1N5Yapik03yorBDLfG/POim8sGrGJG4CTbUnhaupvUOwzhKv2czLj6me3MammSUi2pwHM4hUH0FFiklO96VL+/f2B46h9oTg8heKbS0r9XxYIamX8eJylg3GeuFHswNBA27H9V92PdzyCN16yY6Sf5Nf8kye455s+xdzj1RS07GlBpBkn7hxfpn28YR592MvnsNySKOX/0YMSMsS4667+sdBbwZ5q96en8TQzoj46Phdu6iLXzbwCNTNy10pmyHyIT6THiKnuecKXncWP2nDvwrpUu59EnGViz/ZMbt9lRkrolzwqB7Vw1eo8NrDQqMSrHIrSk9WjMZsnGERo8n/hiGsQ1VFihSX28zKsCThbzqLWsX6l00UrsPFCy36ykNaHq66zH3sOQA4kxLcoyp5zFMB0VSm38VMKYxaNXjsmsU7fwqWCHWlioEaUXh9UYFLPCKaUQvYFO+BKO6lDp/P0rSBuwsmOuBkwzunsH6pwNrJmzg77KdkPQaOVdFI199YZ4ohl7/p8yaNz/LINw9kG6AkckKtlvvxqDVMZPJXyGQV6BvxKDskPAIKMPwyDFKYPwFZ/yV9wWRzC6Fk9pZS1aX0RYWitGZ3RDwJ8Rnnk1XfGBr66ZkOGT33QuyG86F+Q3nQvym84F+U3ngvymc0F+07kgv+lckN90LshvOhfkN50L8pvOBflN54L8pnNBftO5IL/pXJDfdC7IbzoX5DedC/KbzgX5TeeC7KZzQX7TuSC/6VyQ33QuyG86F+Q3nQvym84F+U3ngvymc0F+07kgv+lckN90LshvOhfkN50L8pvOBflN54L8pnNBftO5IL/pXJDfdC7IbzoX5DedC/KbzgX5TeeC/KZzQX7TuSC/6VyQ33QuyG86F+Q3nQvym84F+U3ngvymc0F+07lwssSyAkB207kgv+lckN90LshvOhfkN50L8pvOBflN54L8pnNBftO5IL/pXJDfdC7IbzoX5DedC/KbzoWTJZYNALKbzgX5TeeC/KZzQX7TuSC/6VyQ33QuyG86F+Q3nQvym84F+U3ngvymc0F+07kgv+lckN90LshvOhfkN50L8pvOBflN54L8pnNBftO5IL/pXJDfdC7IbzoX5DedC/KbzgX5TeeC/KZzQX7TuSC/6VyQ33QuyG86F+Q3nQvym84F+U3ngvymc0F+07kgv+lckN90LshvOhfkN50L8pvOBdlN54LspnNBdtO5ILvpXJDddC7IbjoXZDedC7KbzgXZTeeC7KZzQXbTuXB607kgu+lckN10LshuOhdObzo3XmIWx00vZs0szkO92EuYxfHDVyaSxYFW9zKVLE6vxBBmcaAg1y5IFgetMGYmWZxAqZTM4gQjARPJ4tiicNziwOah/zCL04BfPipZnC10s+cliwPdC1XDLE6x1H+YxYnCay9JFidM6j/M4qDlvD4iWZw9tOlzksWBOe14SbI46Fkd3OJAV3U8L5mcY0l5M5PDVNp5yeQsIR9jyeQkSAtOmcmB3kHDMpOD3ghRZianHsXRSCbHCQkIkslJRLU1ksmJ1ItmipkcdLOKj0kmZxe/fEQyORVohZclkxNiLWpyZnKeoDhqyeTUSTqRmZwyNMk5yeQcWItmipmcMmmZLTM50Eh6lWRyJvSiPWYmByK29rxkcmpRn4uSyYGp9zKQTE4IwAXJ5EDq0eeYyRm1FjUFMzkwu9AHzOTAHOo/KpmcCWtRdTKTkyupTmZyYCg7rkgmB+Y9Si2ZnAAI0hXJ5MxYy0zOGn55XjI57SjBRySTEwjufEwyOUOSEQ/i1mzNRDI53qiCkWRyYE+9Lkkmx0XqZ8zkgG0ZSsnklFoz14VZnEpJITCL40lvaSWDg94ORcMMToTc4MAQVBhIBqdWsufM4BRIOjmDmwhcScEMDtNhL0kGp9taNPvM4MD7q3hBMjgpCsnYMFt+TTI24daiEWDGJgFcvigZG9j/tfOSsRmRdCszNoXI45pkbA6tRfvCjA0cN/15ydjAIdJfkIxNHr65JBmbYaRmIhmbIb2ogpmx6ZH0KTM2QZJfzIwN/Eg9NzbwFitMJGPD9PHLkrHpRHHUkrFZRstclIwN1LPXOcnYbOtFe8mMDZyoqOclYwMnGT4uMzb3ufMJgJXn8BCZsanGL+ckYwNnPOplydj4o6EUkrFZsRbNdxQ3XXB7mLGJB0OuSsbGT/LPmLHpkRQ3Mzbz1qKVh7GBpzR2TTQ28CUqjERjA4s2dlE0NscQLXPR2MCRXzMQjU2hXjQwMDYHkq2HsemT3BAYG2s8f0w0NjHWog8PY4PhBdbfw9rE4dlQtDYwQmMa0drAG4GPC2sDj8FLAWuTZg5r07uzshxfb+/6KcngNI9XDddH+ifj4mNmdHYGczr9J6odPybZnWpbex+nvJmWT0imp87eOdopMCTny5L1GTw+ehBQV7jxT5IB0vvGt6xFVzu8KNkgz+CsMH35XAfuNWJ2aLcjyjpudWcVN6UxW9QYVly2W/4wmV1uCYKPZ0Sqdeze5g3JJOXlryxF1zh6fkaySs7hRSVrfnFNfyQZpuLuOF/3tO0l3MnHjFN25sRQVnyNk6VknwqqHNtLbcoObkkmKqFos8O3L6H9tyUr5e0eUmKdsjaGa46ZpXqSPvzYpWhlCNe4MGsVU23ve5DSGoJbqJjFsl56VJ5eZev4kmS0+r3v2wyMVVhrJLtVs9jrnvAwOPuLkunyGq+0TWvwjGSXQbOxWGDaUkdHdK2ZZMGGAx9kNRavjuCuLWbFwuY7qyOm6j0/KxmymI6Y0Zb0nRXctSUas/mu8MCmzEncycsMWmzBWoXvSFJ3Hzdqq01+nbFtroG444cZtodbC4cO3hElP5Rs2/xwUamdrY2duWTe0pv9u5c6I0rvShbOca47crSmaOstycjlDGRWPxj1T0m9Jxm6rvDCCeeShZ5GQTJ2bqF5bhWpWwu4d5QZvIGVofXtvEd5/yrZvKy2yPRSp6wp3H3E7F5+g29kaeZIyR3J9CXG1LVU50w3/YFk/VYHssKneoIy/1oygMN2rkfzy5vzuBeIGcGlBq/KmrDANNy9xgzhI984n6RKa1sTyRa2bc7dn622sb8smcPiCtvR5Sa3YNxUyUxieEBqxvjK9jIuumJm8UnJflnyUGA6LpVmprF7fWK4ztHe5eOSdWxyD54Iqi3eeUMykCn3q4ayvaJrjCUbOVPjdH+q3cW/R5DsZGdk6eMnnvkr7Po2EKKogG7ZY9C2zFymZE15dT8eKvxPyWKmNnpXH5T0peGiGmY1bQ6fTB4ntkfg8i1mOfucfCOSjua72bWGILQ4e1cFzda6/p5kQMfLDx+nbE43/x/JhubGt2Q8ti/e/ivJjLaE5Hs02Ng6XJUsqcdM++poa848riJi1jQjqkIfPXl8/I5kULdyFo+KUhu8cKkTs6qjTx6HB/Q/eIR7opllbVgbs66POty7LVnXB3FNB9X5s20WfERnbW2TuD5ZbyDZ2I2YWp+F47lOXP7I7GxR+VFqVlhyTzO3tWv3K22anDwjcCsZs7cOdk5RXmuj5T+XTG67q3+XU/TRwXckq/twpiWzLmu86qJkeGsd3bN2i7rjcUMrM77TD5MPpyaODr8n2eDFqOqRlOn9neuSGZ7LHLdJmd+YxcVXzBSP+CdFN4b4xgfdk8zxwOFeaV5SWxiuAGMmuexhUszy3ONp93uSWW6YrGvtO+x9gEuDmWkeq9Bbb9qWH31DNhSsiNvf1kkGeiuhNcvlweYcbktiRnp9pGR9y+d+1XOSnd7vivWent1d/3fJVI+nPipbfLI0gGtkmbnejmuMHpxvC2f3EoGwkjsfXRyZ2PFIkMz2g7yljJje0PyvSpZ7sz+jcrrWwf2PJeMd6hPrNb4xVvlRyX63Tjcd7mQPF1lJJjy+N301bLnRF5eOMzMeam0z1FlfsP41yZI7e4StjdXZOb8iGXNPF7+Ojt741t/n9jxjTO/bE9f8mmTSp+vcMqcW18ZxUxIz625OXhVRC+uTuDmZmfbuiRrv7YRal9+RrLvvZK1vmUfeEm7NZBY+pynQ0/3+we5PJCM/NNdRWVc234VLh5mht1kZTT92zp6xvScZ+8Gl/vGAufZI3HvHDH5aQttSTKuzL+6MYka/anXkQX3M8dHXJbsfMN0YU+aaMYbL1WD7ywsfhz2OSOrC3Viw/4e1Lodxh4t9uF0LPsDSozz3TbfcBVwIDT+g0TP8cYF1ye5PRVfAf3PxuKy0NxV32MEdqPBJaNvNGC37f6JHUOuXctTfHVX5sugUzPSlLcd2hxd/V/QLgg/2y9OWthZxGxh8g6T28I2h1SZ/3CsJ/6CDbFAedVul6CJkjpZutCavT+AuRLgJ7lPNx6M7g7n/KHoKwavDGyPrI6Xvic5CXL17dotXZNmP4S/kMn+heCcve7nKPuDPeEh0fOVRC+m1n/Go6OBc0c64redFHhi1cQ4Ly55hF8OLwVE77xw395A5aGcxQHoc0L089GTxD3iM1Dde33/f1v0FHiYN9tgNyplL/TGPlHZUVO3s73RB74nR0vDIlp5k/3/g8VLPXq/g0r0pLQ+Z5udlLlY7RljyqGl4REODz3QwbnsUI6ddjSOhxds9bOzHoqeZacGh0Xbef8QDqNWzdbaRR1vP8Rhq0VzhRPesL/qmGEd1H3EKLlhr6Rd4LDWtsDUyfwVOkRhOrXKOGIx3zx3l7sL28qjnWKWtxyUeVSWTVTqmtzXgkdXFupilluAZ+EBidHXM2nG+3rOsivsLroF5GYmdE47QSmKUNWBgaTh/NeOrPNBKRu7JpGOkBY+1dqZHdBXvdMDjEOOt823FS/3rzegaYsy1YOz+RM98ym0edm1K3JupdU17zN2Foq2yFHdSvbjTTQy/Dkc0eVjbOF3lEdimpKNkMkm40k2Mws63l0cN783+Jg/E9o/HL5J0/j8eiw1b9wvPXYh9m4djQx3G+ou2+mGKxZDsSkHzwwehy/n3eFi2vS/ANvhxbbXAQ7ON7WW+6RFP4ECI4dmYmcrBrOmg2Hs8RDvgsZfWEjSBW/rEMK398VLu3uYILv4TQ7UNURN15Bd9k0drfRqHliusHc7zgO1mx0ZspY3Lx3jMtnJ1JKbOLauXewyuAf1zmfvbvVC2Yuy2NLJ1tjlw5D94+HY9LbTVxt7vMzyC65bZszS8P/kJHsS9vzLg4j1hD7UkBnJrvLLia12Sj7jH0B7xxK01dKcT10qKAV0qYEjGmBvMkBjUzWoYyFoJ24C2FAO7DfdnBlMCh7/FY7sH64H9CZ6l9dxlqHFuL9nanE++w0O85KUcTNgH/imP8pY9cT96PB2Ce0/FSG98UFJ1+P747/Ngb6jjVA05Lpd5vHd2ZydqcHMUd+mKMd8ovfXG8fHjF3nYN7f8QWCs0/1J7jKUPPHYX+5dLtbx6O9aRXVP2eGumgeA447mB7NnveB6SUFga7uD9Ukbl3s8EBztHF6+OZf2cx4LLg/odPVfiPsGDwdHWdu3O3qW1HCPwcbOK2NtNfLY+h4PC7skHYSVH22a88jwTFDKw4xxJ797PDrsEJw6lOTb+k88QPywLLns+Gj7eR4jvr86vH24P/E7PEycUVl79GSjqkngoWK/zk2YlL/n0eLDiObwBI/CZu4xLPR0bhc/eVyHG9vFqPHkTHXJYsCj7/HAcYXepi7yeP1M7Lh0f+xTPHwcH/wgsmhziF3/y0LII7su9V7jzhgOiGHkrobB/IPdlc/ySPKDUfe87aWyL/Fgcqx3bvmsR3Erdxho5Lfl4Tf34Kc8ppzXPz/RGroCQyXGlfvHohOqHUJ+j4eWfRr6M9fGPHDXtxhenj5aHEoL34q8x0PMffl5j6ecE+aFkzDzSn/S0O7qX/BIs0dBQ1SVnc+rPNjskrgb1T0TCPsmBpwzKionuqZDMewRg851Qcl5u2ttuIxZDDw7RY2t7a434ZZIMfg84RT6MNre/y95/HnCOdI5dPvhhsBj0M318b5lBwdGPAw9FzX5MGc+8S6PRK/2BVYEb1Ticl4xGr2U0b0161leyX0G34Tt9YUa5/gF7jPkr/b6DpUfr73EA9NT3vnOQWutcL5YcLrQ40mz33zSj6T4dO3RwvHWYrSVFKJ+5DDRFrI1MCtIYWqPwha3iINDYylSvVWe7p0SMHBLClb7Jtj1pEceOt6TAtb+5amxHWOecKNY0LovL2uFHEF4vCxwfRjZvr63NYgrLlnwuq2wrWjaJeVQ8hnIK7P1p36rkoLYI088HhWsN2DswgLZ08erGcshixhwsWD2SmF74WrEPpxdFtCuC05ropGt3T24Dcmi2/BoYGTRxjX8ee427DxwaCblhjRFvyFnePFxZb2TGfcb7Dw8/LJd+oNP/AankAA79xwm36Lf0Dx/tHiwFfSfJ36DvqW/ss7VlPsNjiVTQTkBBxAU0XGIGq9+XJxU+jXuN3jGPx5qWjjGeEn0HFIaSoJKs7y+wz2HR/3D87ae3h/jnoNn7GbD45ZuvxPPIXa1NaA4ueBfuOPQ11IbXNUQfJE7DtmTzh7He84/5o7DZtj8+EbjUMSJ45BekxNUEJ+q437D0Ey5f34I8/pFx8HO0723bjD9/3C/YdUxY9Xa0fkC9xvIbuVUVNqouN8w6Z226Jb9cEbgfkNFtd2sY+T9z3K3ITRoKHG9usrlxG1I3R7pyQ9aQWuKfgOZup3qdsR6Rb8h0LNypDix7N+52zAbHr+4O534Ovca1rzGxzcf7sK6im6DX2kK2ZDC3+New+jDXldSvxixiV6DZ9yOi7WdmxH3GvzKH8STVYJHJ3oNs5FR6YcbPlbca8jonp4h+YS5Fd2GgqZtv1yfNUR4RL/BNmOpvyg16x+42zA0XdTduv0Idkh0G1KaqcdN3P8C9xoSRu9HtB/U4h5e0WvYiHIfyHLr8j/xGhxLZ5PdMrvRS0SvoXzbp6QoPf8r3GnwyoypIu8I0RTRa4hdaZvS29pruNcwV9gVY23veZ57Dfmr1mkOwSl/yJ2GVBpxFacU/xv3GdpnNpZd09ehyUSnoa+1rtnGJeIydxpI000drvt9nzsNO6n2zutVlU4nToNTsC8puvLf4T5DSd1Rzf5c+VdP5oBt7QMyHFqsT1yGqdTGzLYnTVCFosvglR3X27yygQG46DPsum721Y/E/AV3GRJGog9y/J/AfRZ9BvJTNquaw17gPsOBw/FWlntn4InP0NITXHm4Fvhd7jPYZi20WDu4mHCfYb84KH1vNe/vuMtQUWG9Xl4IdSK6DKO93eE1HZkW3GOoP5xZ3B4ew1hadBnG7ld1l5XY/Bd3GY5z/AeynUbCT10GG4fNTOtazxOXoabNMzcn8BjRF9FnaJ47dN7qWkfYU3QaKqocax0joj/DfQanIK+19uOKYx7Zr/UrS/MrL3L6CfcZWh6GdGfYNdmf+AxuARE9jTOLMKei0xDp31dUXuz6U+407KTZHpZm+v+AOw1j0fVbhffj3uI+Q+JeL0wKxqGi09A+vR1aPxT3p9xnSNx/mFcYE3OTuwwb9z2Km5e3YWOkyWZr26rjXc+fnfEZMgK+x32Glt5I/6K0nL/lLkNJ7X7VWk2z3YnLELvcnFWSH/kN7jKsOmSX5kXOYiQr+gwNg4G59cPxf85dhrmiPvvN3kNcVC76DEs5A+Pu+QNwtUWfIaNzMtrWPfBF7jPELjVkZDi22574DMe5AY/a9tpxW7roM4SGDhzVdOf8NncZ8pfsEg92Iv6DuwxhsQVRNs6hl7jL4FeSGLXRPBhy4jKMRVWOP27tCDhxGdz8Q7MKEtL/insMXhlRawVxSW9wh6Gm1aW7qinyCncYatrdHPcXCv+Z+wsx3UkRZWV2t7m/0LEe3Z3jt4cQtugwLLoWtD8ZS/gi9xf657M26kej/pK7C/sF4fN2vrm/xb2FReeyR+UFHv/NvYWGR36OuzMPPic5C/UH042bPfsY0TBvoXwrcC/Xeyv9nuQu2GauNu0tZf+95C2ExZfZHR3Z/1DyFkb7OiKbl7YQcRfdBZumofajaph75i5EBnSlrtW32XB3ITR4dIHcQIxlmLvQPrt2XPQg858kbyEsoTSv9mHZJyVngayPL/VYheQsUO/sLYhNvi75Csf5XuWtWyO4R5z5CkOzJfnth3W4iZz5Cm6B4XU0qsWg9P8T9x5wUdzrHvfO7C5tQbF3XYlJjImKFTV1TWJiek7KOekaNYmaaFRiknOSSBOlSRFEivQO0qR3BKR3kCIdRECqICD1fZ5nZjbEc3Luufe9933zCbLfLfOd+c/Mf37zn2UekSyAskJPSF99ftYFCyErjF/KOGvhkBqkzAq1vdGdLd6Z54SsYHTunLn9WThdFrKCiZWFnYlzaJQyK9yOmp4cT7AcVGYFA7+CgNYsUyErGLtFtl22mCpRZoWSfs/0soqGPiErnLsYPxxyfzpImRUcfNySLjvlDAlZ4Wp3b11u9nlrISucs0sYimsPzFNmhbIRv/xLDnXdQlYIbm/JDGwrOC9khZoBE+uUSZMJISskFA11DPiEFiuzgqOXc9TlizebhKwQOtiY4GA1VKfMCtezTS38eqqchawwYlwdW5xhck7ICni4avNINxSywsD5qqv5NUHXlFkBulHj7GIbdyErWFmG1o16emYps8KlxLBae8uRBmVWwAPcHf8cayEr5Gd7ZLvZN/YKWWHwQrnveKR9q5AV4nL6mwaCksqVWSGvwSEQjh2OQlboC7pbaeHmlaTMCtlliffNjUxNhKyQ13gp+EaDd7IyKwxal/hPx5vdF7IC7GmtNypTgpVZwdU38Z692WiFMisYXo7pvnyppkvICr2R9fHe4z0xyqxQeds1NWXApk3ICuV9Nv6hUy1JyqwQX3LD0sm0M0+ZFTIart3Oqw6MUGYF90SzS3VVtzqFrJCD14Mc40OVWcEu1j8vM93IWMgKQ3h55/q5s0JWuDVicK6owMFJyAqXEkKqSyrre4Ss4D/4YLiwKi5MmRXu+rVmWZy1NheyAnZxQ3HmI0JWSLx53SS+2SNTmRUy8fJAnruDkBXcvFPHoobce4WsAPu18SXj9jRlVoi82ZbTnHQ7XpkVcmrsvP1GHoQqs8LE2bFB/75SNyErXAyz9avLmyhXZgWMJ22+RRZCVkjJmB6rvNGRr8wKcLS7HDFqMSxkBUOn6F5L47OmQlaYvFLgPh3r0ilkBY+mNIPSuj18Ugi723nzake1jZAUWlMGb4+Hht9SJgWIqukX3dLHhKSQWptn72TSV6RMCnDANKpIa8lWJgWvO9nmlfnTpcqk4Ds0NRHfGVehTApwVmF01trWTUgKJpbnbZpSm1KVScHc3THI/krmhJAU2oMKnS4a3b6uTAqmFtbOPoP3/ZRJoTgvuLK2PmtSSAqJVemm9dV5I0JSgEPo9cqSsjtCUoDAXQZHEz9lUrgTOX4/uLfMVUgKFZNB5TdLS28LSeGBTbbV3Zjxq8qkAB24YeTEuamZScHmcv6wkBT87hY7OzjWdghJoaEl+UFki+91ZVIoG/bNLbtVPCAkhdiMmpj64sEaZVKAJGF3O7T8ipAU4HyvLPpuSokyKcTUdlen3wqJVSaF6o6I5us3LKyEpGAX45NTknEnXZkUpp3zHYIn7yQok0JhYUhjb2DtRSEpuMQYmYwmWg8ISeGCnWtcWqaVmZAUzN3sA/p9rxYqk0J4SVPagF9AvjIp3Mizciorr2oWkgKkQI+SsopWISm0+GWZed8uNheSQov/DYvY+67dQlIo7bQPc3O/PiokhY64Us+L5pNlyqRw/2xdamr/xXYhKUBcimgNK3EXkkJyXZFrbq7zRSEp3DdpTHZxzZ4SkkLb1byLsYOXmvik4D11ry2+K7lMSAqNYxYOtTljVUJSSK+O7UkYdurik8KFi+4JUdNGo3xS6AvuqAobHgsRkoKZoW9RyHRzipAUrC0Cb054+6cLSaGwIKw+r94vUUgKd66NjjTerL7LJ4WicrfE9qBGBz4pQAoz9Ib9lU8KDa0p45fsKlv4pDDtkuPYl9AXLSSF3msNiXdSWpOFpHAj/4KLqbtnCpcUuIsRQ3ERGT4dDnXv8Emh+Xxow7miq04f8EHBNbc8yyoyPBhHkykpDBh5FLaOh5iq8UHB4uJAul3AbVPhWsQ905HwdE+zARpsxCdCOmzSBy1KSnfzQcHwTmpl97mIqHghKNg33H/Q0x/jNSpcjehyaXSPzu+aahSSwgPX8rSBkcJW7DYpKtSk5Lc/uOP6gK7T4hM9+YPni/y7vfGYRlmht9jnfp3fvXAc9KawcCGwqdjBttjsKB8WLDPqbwZaZ5To8WHhWkh6TkqL7V0adqUvqSW4ugTnDfXYneHTwmDHlYo+35Kz/+DDgknFeFdNsNUNhg8LcanhZhNhFZE4/khpofXujeF4Y69o7FMoLlQ4B96ecDHMP8inBaursZFVZt0jGcIViQse0VMjWZM5i/i0kBdud366IWY4XfgGQ7hnhkmD0XD5Fj4txI4meN2piEz/hU8L4QGXoi2rnUq38Wkh7Lad1cX2HPd1fFiouDhR0evsXv0EHxZqYt2q7tYUxuYJYeG826BVi+uY+XFhYKGuMqq3+MF0kHA5wrC3q+1CZbs/diGUFsz6nToL3G6E9AppoffGQGZKX++VT/iwkBgZmTUR5W6pzYeFwFsVUzE3M+3e5rNCiuHwWG6fT0encDmioffOQNnU3WYj4XLEdf+oKOsrod02QlhwcZou8yuwTa0QwkJbYldzWbpPUolwOcLPtaGycKjv5vN8WCg2vhlrnhWbjL0GpYWprKD2jnajLhz6577Rd8U34XJclOtHfFyorhm6dv9Km5MOHxcyne5lB7Vaj2JvS3FhzLbU0tOkZggvBVBe6A4pqLe7FhqHMYkCQ7evU7fB2GgTXsunwJDfMNod4WZZ8ykfGGzb2kZqr3bYv8IHhsmcgKDzqcX1f+HzQlpmnauhj0mriXA5Ii8+O97KqzniupAXOkZjYxNDku7htUAKDMNllrU5twZsX+fzQtbIZe/MG42TdMkan3AvNIkrjk2OxxxFgSEx8c5Qg3t1Kh6fKTGcvZaZmtWZnoA9HkWG+NLaHqP4IOv5fGSwcPbpL7k/kHWSDw0ZaRbN5a1ZVnP50GA+VGTfUGde8gKfGTov1Zffvm5qtpzPDMXmxqYB9ud78Ys5lBnKrib4373WVriMjwwRxYFN/c0Pgi8KkaE0sKc2MNvCZQ2fGNoiU0tsMgNDO4QLEm5BiT2DPkWXtvOJYXw6saPPvOj6bD4xhDRn9Tfnul7tFvGJwdjKqMAgcNxhMx8YcpNtMmfzYSHbvt/CedLYEztKSgtxMbfjUm4ltj0QLkYkn/U8ZzHQkqnKp4WCc4Z5o0V3uu8IFyN8hlsLBiLHGj7k40JfgItHf+rZgCYhLkS7lJnXeDi2DIj4vBBqMdrZExA2iBGGAsMDB9OB8uz0XjySUmIwTbkx6GBuEpssJIb4aus6j/uJ4XiPWIoMkdeDQ0p6E+gslyLDFf94T+Ooygd49Ykyg3tmqdnV0tTyl/jIUNh5N/RmbZ+RCp8Y+m+7X3avGI3CLyRQZAiOS7oZYNeT5C9EhoRKK5u0fA+L7/jEcM/ay9A7prPxET4xOI84xFTbX3d5TxhbKAlxTEzrr93IJ4Yqt6nLobe7gvCciRKDt1/xraC6NF+8RkqJ4VzNA78Hl6aSy4TLEdUlkPy9p70wUlJmcE0zHSq+Z27yM58ZmvpsLfJL7kYnnuFDQ1N7ZkJNR2MgnU3QAIb9pJtfuKXVIT40tFcb5RbcvHBnUnk9wv3syLhXcOb3fGq4O9GUV5NYV/c4nxq67MxDz4W5ZevzqSGwzLA48/y9NrxOi7HhqumYb3LC+QS8gI2x4e796PHgxEuBDnxsuJOa7Fpi55+7gIsN3mHOXR1xU514rMbcYNSV7BRilOSHpwqYGy5fCQizdw2frudzQ25U1v3JbtP6R7nYYGBWGXFvICAimr8eMRHmOD00FunwMhcbbHsiblSbXDT8gYsNlUMZhi0pLon4ZSzMDcERnXcS7qUN5POXI/KrrtZfTCktWsXlhozchpLmsqqLu7jYUFJUZh0dVOMxRbEhhGJDXbWn14h5aAf2Q5QbTBz7LNpvFnT1CyMMbZ0t7U7VDpHYZ1NwMCxpN4u9ZGzyOR8cckc9aqojM6bThRGGjMRqm6rMuAZNPjhE5TQ1G3UENGMMoOQw2Bh0Iedybd1zfHDoG5vwi3CxTcLsQcGhsK+4LDR6OuyWEByKAptyRtoH4vHrVxQcGn0HC6KLJoKe53PD7XiTPrdh2+Rn+NjgX5Yw7BZffWsbnxrs++/cy7mTed/sjHA9IvRuW45nhwsGDcoNNz183Adz7scIfxB2paiw0ncsJhc3XooNQxe63B07rk9u4GNDV/J9nxLTVgNcs5Qb3KtNbrgEOXlPC7kh2nvc9UKps98yPjYUVkT6ZcH+8QUfG2661Nw9PzzuWSjEhhLn6cGmlDaLjXxsuGyWWeXjMu7xI58aYPc5ZzHe6bSATw1JV0oTvWGF4hgCxQb7fGfT1oIO5xf42BCZe+NBQpu1wyY+NpilBPkXWnfbf8jHBpfiu4U97S6+b/GpofiBabpBctbIV3xq6A1yDmufSK2cEoYYYqMjrT0Gy9MDhNQwWhBVZOB9KVafDw2tcV4jMSNFPZhVKTU41Xg1lFubnsd+h2LD1aDU/CCvXBo4pdxgkDg5lGg3FDUh5IaRwbiB+/fD03/gY8NF51pHS8eYnG/41FCQGnirM8c9SDnEcOV+uGeonVuAFh8aLvR1xdyLveuO3SelBsO7LpPdtxrK1vKhwcvh2lCqYXTBdj4zFNldSXJ1LupW8JkhZKzmutU9S9vjfGawfODtO3EuCb85TJEhJ+BGSXHImLcOnxgutYc2X3Ksq3ASEkOZZUxTSlJ/4jt8YAhLGoatI6T3FB8YIu8lWtlG5bXSQAs+4WPv0F11J7TzJz4xeIUWGdhfj7gu5wNDXWvdzbr+y57awvjCrVtZl9zi6/DLA5QXAk2vRt0Zzbn9KZ8XEgtsg7r7pq5u5eOCn1HddE2Da2iSML5Qfy2h0aK7sfRXPi04tTQGjXrUV2HKpbQQ0BOT61J5zvxVPi1Y2cVV9496PbgqXI1oyup3GmoxNVvBx4UEf/MqDzg0HuLjQn5vZ55fhsmFhXxcyDI0njAxGQn3EoYYIE44XLnXbuUmDDHcsQ8/Pz5RmTubjwsVMT2WPVlWdrv4uFDjHuDRbu8YtZpPC5X1wwO2/hYuj/NpYfrKUKO1f/M5HPGiuNDvNdoUVHQppkiIC6aGfperJ82dcoQBBrfzLcWafF4wHz2bPJRuk3KYjwu3Il2zW6/cS/qETwvXSzJ6EiNajHHgiOJChoFvW/e14WsjQlwYj2j3sEsOu4ujOJQXKqxsRm8a0Xe+KC5YBWaF3LIYiJPyaeHsxNBwbdUDvxtCWjDPGM3t84jNf5YPC+6tDyINrt9qwK8mUVjoPheaM3jlsgd9J5y+7uhwyeZafXIZnvtTWCivK+ms6Uoq9RDCQktH5lQzHETNhQGGoWjHu92xhsYf8GnhnnXBubAkZ38c9KW04OoWXHc9pqHcTkgLXabnS4JLsobrhAGGc6Vpto1Dfbb4DQjKC+PmLhVmzYWdmMwpMATczE/2iOtxFAtfeUy1TI2Odri2js8L5XeuXvFqsov/ko8L3UnlSeen3QLp+000QmCTnlGZWpq9hE8LHsZjdyLOXp/AgWSKCyM5WWd779fWmwhx4ZpXvclwn31ElhAX8lKsM2xv3LhnJAwyhKT7xPhlD6ZEneHzQvH18ehbDl6ji/i8kBJ+u+5SaO/Fz/i8YHa2qvxSsfcYDcPSnzqk+ecZxUdm43doMDAYT5b12plcCXmPywtjtZP1bvkVeR9zcaHR7UJcUXmbOcYHzAuOVtGuztND0Xu4uHC/wfKSgVs5/ukypoULFY7XzaqnQ/dzYaG2ZawoKqPXDtMopoXMrsuGcRXVtdZ8WqjKT21Jrclr4QcZhi97W+bmpo09yqWFsWaDwMrC+punubBQPXStPqFp1BezOIaFuzd7a+oC7lif4MKCT1jH5e67ZlcwpWJa8O/MNqoMsUktn3E5otumtPWsY5RnlZAW8kfOegf4RcfhqCKlhaiIQZ9e2LsUfFgIGMy0SDM06rsmXI9IKgkpqGie9nAQxhmuhOS4hLiGmT7KpwWf/nDPaxX9YWlCWghzOOdqfTXU/SU+LSSnlI/eOO+W8QkfFkb8A/vqpquuKv9Gwj68bXBitK5Rj88KZfHtY1dTKt0HhUEG1+uxYVM5bm4RwgWJwCuJqXbdPc57+bQwei3eJ6JlLPMZPixURUdaXhqyStbks4JNWXHE7YRbZtnCGMOd9q6uiFs+gX/hs8K5+8Xesc0pjpiJKCw0JNiVFEWkhQoXJEKMWidLC0pTS4WsUJp8ISzYqtwKuxYKC0FO5V1tdg/6JHxYKOyOjpqcLPHDnoTCQuF0vIHDvSzH03xYMGkJvp6bXDL+sfCnfukZZyeHCsz/xoeFoo765mBYn6/xWcHXKsMzMMqqCfM79zcSrUkO49l5lx/hw4J7ZXmRQYz5XTwuU1q4c7+94UGh3Z3tfFpIyvAYrWtJHPyGTwsOhY6Dw41BqV/xYcG55lzceKdHhbMQFvyc/dMc813GFgvXI0oTXWLuDCcnCtcjQmz7cs2MM8sxzVNYqGz07SlrG6yZy2eF+pSxs+cTnFPohJKuP9SNJqRWN42FCWMMVj0WboYuPkNxwhhDY0VPW7e1Q8QNIS0kVNv0mVlXmGLf5sGFGpeB6vvWZalCXLhfmHIhICzQ/nM+LuQ5jTnmOfu5yPi4kHvBbdjEf7jpXT4uTIY0t0feyBnBjEx5YaLUrv28W4DV83xesPfuyLaftLVtE4YYrlWFXzMM7SqIFwKDqUu4o8PolY4DfGBwSwwZ87o08kCXDwwP6m/YXLw9EIM9NAWGPPNh78iqqIln+cDg6G9g13LZE//kkQJDRGhwe3KBzXkcWqfE0NPj1Vrs2htxgg8MGZdq8yPbInv38IGh/bxDw7XpS85TwgCDYe90lNcFx4Yf+MDgVN/XM9nXMYWnvpQYBsIcCkp7g/1U+cAQc6stq8v4bBuOm1BiMHMN6Qgvnbj5Ch8YvEYtjVIyMi8s4gPDxazgEgv7/nvr+MAwEuV7ywci7lI+MKQZpgQVJF4ulfN5AfJETPygabGtkBfML2cmD3e1nfuazwu3Ym743TY1u7KBzwvW9jb5hRa1NhiQKTCEjo8G1GcVXtzJB4YLY33Tjf3GwTv4vGCbFH4W8oT/PSEvGFy0jIrLsvT5jo8LJgP+w8JfKE5cdyvzON84NJuPC05FrTVn4xt6jvFxoaN52MF+wDDTQogLaXaRbvbjNYmYdyguXL5mU9NYdT//MJ8WTM8neVuZV08v4NNChdfNnpy4OqN6YXAhJSHxalPSRW8cOqC44DnRVlV967abivC3EUlOo51X+wKEP5g3dmxrvmBpU3mcDwvmFjlmvW6dCUf5rBDaMeQa3RBQQiOwdDHCa9qmHY6gv/FRoTY/2q8xLb0r5QyfFc61Zzi6F5aXfMlHhWKH0GbbvsDcKCEqGJt0VLZ7JYbiMZeiQkBTTuroyPkaXyEqZFl11Y20D5Wp8Unh7m23tLLhfMPdfFJwv9E4Vp3n5BAsXIwYvHnBKTnXdYDlo0JDoFtbTHHFrZ/4pABnmNdvdrRa/sonBcPJQQNzz5S8J/mg0NZilBrbE3o9VAgKpaFGLtfyqr2mhaDQmN1c4uMdn76Jzwkedi6tXfHutbv4mNA8WTtpYjthgeGXckJ1ZOjgxZHcXhz34f404m5gfodtMl0apaDQdNE391KNt9erXE5ICYx1yrlws3M1lxN6pkKr/IN8e/ACAwYF63Ou076RWXmufFC44XwhOX7MufVnLiiEmVoEZAd6mH3PBYUui+ahptSq/he4oBCR7F/mG5t7bRmXE6ILDHx8QnqyvfmccNt9IPWq78Dd17mcUGB7I8rfY9IOkz73vYWKsr7Q4HE8GcGkMFYTmhU9UZYr5oJC8EhIw83B7NEs/nKEY5Sl31jmhfwG/nLEkHd6gnNOY+BtSgrhlBRyOgZaTGtLgrEX5r65cN22rs7Z9dZmPihUx9v551u2Nd0UrkfEt5xNM08fqdHkg0LAJb+WwdSSPOHmMZfarHrTHTPsvuRzQlx1iafXqKMH/dUYPpFnXDTtXGXdQt/6pTGCwKS7xsXNPZnC9YjyitiU6buXKn/lg8Lle/F+Eb19Lq/wQcH12uSl+q7i+JN8Tmi+5XjH07q4Olu4GFFU7547FlPYhuOdFBRqXMvSUpO93ObxQcHZyTRx8oabKfbSlBQ671QblfZken/IB4Vr0ffj/MrsOz8R/u7/TmliXGO+h4zPCVfMAkYcPKqcLc/wQSF9YKqppaMx4LYQFNyyq6wKO00zu4SLEQWB0WV5E7FGGNwoKQw71/ZGBVysPs4HhWnXtK6JFotx7DUpKQw4NPvYdCT3fMsnBdh5TOP9znbjKTpFhaHe/vuZsEKNhHGFG80lIbWm4dfwzI2yQkRDnm+Qb4Ht83xW6Ar0H3XKik7BdMJ90/FaX1Jo7jWXPuGChKdNUvt4ffzQAj4stOfHBwdWup/is0K3cV1lvE1QIX6vmLJC4cWmay1WyZY1wuWIjnqr1vjxhvqn+ayQM9LWZt7SmbKYjwp9ZTGBkw9CzB7lo4L7pFG3g1Vj7jt8UghNqi/2Dp+sepEPCsNnizvO2yXU/Y3PCV0xkVNZeZe9p4ScEJIzUmEcZJw7KlyLqC2MSxo/19l4VcgJfu7nQhrtzftwEImCguWkRaVleeHZ9/mgcM46Mc8+sb9jBx8UboZf6/RvS8zZwueEALNrbdYVN9y/53OC7ZC314Oc85GH+ZgQXF1z2SW6vQ5H4ygmWFXnR45eGBpQ8DHhyqXkgdzxpMt4FkY5IdQ7J3c67lbJE3xMODtuW+rjPOWGEYtywkUDs/hcm5zze/icUOUweMH7fOb1VuFKREzpQN+FkerRg3xOsOjxdYpyim19RPiSo3lfRIyFVeo/+JgwkupslmbRN3ZPuA7ROzJcFB+VGj4t5IQq8/bz0w7lxveFkYWr97yi843uVazkc8KFS1E5Hil3Wy2EkYUkU0NHL69si2V8UGhx6LhiFhfvgGe0lBRqy64mZGecxSsVlBQM3B1MXQsCbD7lkwIEiaGUjDs5LkJSsGxxKw+/lzGIpy4UFVy8y2uzMi84buejgnnO7SmDq+fL64QrEclJFcNd7bmu6/moMDkyPdKf7uCKgYqyglv1dYv0wovxtUJWMDN1NgkwLRt+ks8KoxfHPdT4rOBpHdiUHTZ27rpwKeLOQHeebV/MyKt8WAgfN78+ZdCSZSaEBTMna6Oh7ivFH/FZwSmnO7tz7PZQsjC0YNJQGmPQPW1eIlyKsL0b4+MQmh76Eh8W6usv9ZfnljZ8xWeFlHvBli2R1safCd9csJywrIq1P98rDC1Y3At3P5/TNdIkXIc422ZSlRNVf/80nxaiEoruedl3BJ3iw0Jp6nnvDDiK+gkDC7edy6t6PKIbpXxYGGzOT20KDBjoFC5DmFf1j05U+NTSURKfMBoKcim54pi+kA8L4W3umZGZ3RTGKSyYRvcGJyUEmujxYSHS2qNm6rZBMw6ZU1poDUueaC7Iq6wULkQEZxe4+RfFGeYLFyLsrSMHr3ZdnRgXLkTAOWbGUMSNKTykUWCYijewuux+20GNDwwR6Y3eMY6eVTisT4HBMb3QzDeklE6HKTC0hgeM1dc1XV7KB4bcwoizZdZXr7zFB4aUnhTzC1NZN88LgcGp6kH6fZ+ROIz83PcXKnztC9wakvDKAwWG3DIf4144SdjLBYaKW5ZDFneHbIb4KxGpVXfv3iwbDinjEwMc78aqvXyL7PjEYJXdEBVVODDxHpcYMs5WjNuVmIziUR4jQ1Z4QklDcFzTb1xkaLjYaX6rrcYK/4gaM4OfgV1Q+XBrKQ6qYmYoHm0MbRi9f3sdlxnOe9e21qWY+bFcZPAI6jxXXjkZM8xHhpCqlrLUzjbDA1xkSLwUdmvMe8ILv0yEkcHZ9GKyZ7Zv2ONcYij1uOLb11cRmU6JYVTCFfPVPaojXoPVVtYc4aoaixXiXaK1cjF9BcdAoifm71Esh1ewwgf3S1u4QyrefVmDbgDO1wGgu/ixXFktFosNYKFBsb7ipyMK8WmsbafK35tPwt3OG++vuhamTiWepfh4DX/fV4mML/aiUDtCtZ8A5ohEWmK6FzgWosBf3C0DdSTcDQupPhxOF28CC++T6uvIFPuOKKSnuZvqczM2wy/6g1800y+mu/zLNY7oSBXL8cbH1C50e9QnWNFuuRm2DRZs4G58SwuLxbvVFXS/au6W+1yrcDfTZelWw2J9rAquibf6nI33R9eke8/CFPBeuFQ6TQUrq4iFyiraNP3fJ6j5xwmK+AmqKCeowk8Qb7C7Wl3GTWk5/FLH1QezjJ8X6x/RmdG68GFsWlZoU7y1oRxa9RW+QgiWnoMFlOzliqBTi1HtPlWcEpa3XKZDLYh3e5/RiFQAiFsshe4R2NBEskIJg7U+5Iz2fuHuw39yT3mqucT8q3vKs/90T3nhlutylu4pz/xf3lMeHNwd5clGN6hW3k2epboo/8Hd5Jn/7G7yzJ/fTR4n/i9u5o73o6QbzDN0Y03l0rPc0rPKpedrKOpwsywsPfsf3GCe+eMN5pnfVwHeG50Rmhvep0MsPq3D/ut7pYsV0Ib6Ouy/u1c63Rge75XOPnSvdJxVmZuElZ5hfsMCCSxNY7GORPE4SPmbOmvrSHHLFimG8MbNLJUx+O3hG89ST6D48cisVWpihmGZP/tPQpVA67i6ICLtZdgXaWu+rCUBPczkalYT9uJ7+FsqU/Tib+zE4JeYKoie/FrBnlaonrrK/SWEyITbHP/5edlq2K+4KWK9MQZriWB/KnQDNNcq2AmIJayIkc14VnW3/Lw/VQyBV6UiCcOKsT7s7mn4z3qfMUx4EnZnnDrWN1I+T2a5Cbw8Lrys8vDLuvjyfeFl6cMvp4nw9TrhdYlMoauowjWp6q+D9RpPK2afgFbW2LtMLqLu+2UsVLX7zC80ldnG8Bgn872xCbf02Gi4KnH9rRbj9GjaDN3v/iG3Nv8ZGd7Pmz7xMlemRXaPZcTKWw3DZoF39ObugIwFBKgeg0ib5W4HzJUmwHvlax/Qwbqr//7+3uI/3N+bpcpWy7CIrOhNLE2o0Kaj1u83+RZxN/nWEQtTU/xyRJvV4e7br30QVy58Cg9mchZv7S/nbu2P+yZ1sUdPwJuUBRSwMAfVI6PyHUflktfpXswimJOj9Crfh+KNr3H63L+L+fvEi6iQk4S/LbecaqvRDZq1uJuP8xroRrFmLnSn0FtTBSluOnIx5AZ6KOYmKaHbOx+gWzzLmlhGiuWcZPqrJYpVMMurcOcU85FBwZzGbg12RugRfNNEdDyT6WMRiLfpVtZSvJ05y5VSYekewHgQY45ylWe4laZ8hV+tK9+UcBWdwRiBBQfhKboxtiJcUCw4vVoso3vfUyOzXCUJmDksL/rHuZnGG0xz9YOxjEvI75PQwZsK053q8V7qeDfgCCn98zoVxqFyzXw5Flgve/Bu0PBygB9MABIEbDOwnrgCLpiFGDy+4mqmW+ufoM5ylaLOmS+jCfOmmPgdIqSKbp7+0MJyaGH5n7Wwpcv/UguvmtHC0SrUwqu4FrZx+S9aWK5sYeXcPNTCli7/poWjVeiff9vClq7/eQvLZ7awfGYLR6v86xaeBy08789aONPrf6mF585oYReWWngu18I5Xv9FC89TtrBybh5q4Uyvf9PCLiz9829b2Mb7P2/heTNbeN7MFnZhlS1ciz0zVxiWXcOnP64LnBZRjRc8txALyX8PJQrIC9rr6ZXVYq5KJHOE6rCv5apCMru4qpAsRiFNLBqqMNCmW90r+HvL45I+j0VJTu4SzSaae1rRj6RJpHJa+fIsekLz9ye0FHiY+MMklO9p+peT0FJwW8CMT2gJ70mjTyhYus84t5BcuVsJJaOjcr7aHd5vfz2V96Zl5pcUcxy88ORSrvIF13+zVI9SIZKV/qFt/08bde9DjfoftMhDbfg/WQ3/nzeqLIWloMmdM0uglR+n+k2i3TZFovfpYI1VVfE+9gr1I1gFCuvTykXcGwx0VPHXb7/6w8kk3qte0SY6pgMJTl8Rag771UaR6GmRiOrnUo3ENtG3R7n3PfQOFia6mv74JL1q44dy1dUirpSOP+haRa9RZ/Abdgw4F0foeSxhLBjFfzpl6icUGm89PAXxQ+/jNoQzM9+gewQ2ENztsaQoFg7hGgCiG3tUWwMQz/xkgfwmacBQ8/0eybiaSdonuFEE+QnsWrZh9NeWr6bipFzPgIVXqOoLhKFp0REuXIowU4opU4pxLmjWqCD9bDxFkZym9sHiTgxWrDLE+lYwoyGwPAqWmxa8grWRYE5XizTFf27T+1+XUfTcJhL+leCrdIrswx17dnPXfuB0SUQnVXu1REsVq3BXnp5WfR0rGMAmj2fsp7+GzHcaOl88oOgfVTx3RIbFV5ZzR4SoOjzrgn3+92oyigD+/EvKnX+pnOCGQbDiHav9Gh4FIFxirUcstoDRGD+AWyadlNGIAjUWfpqqSeG4yIrTCskJPO3GwQgR5loW6wPpY6kIHX6CuLHSoBFf0YzOO9W4806hvpmcTmQXz8aiLiL+lFOMYxcS4c34UVkM10pUFIgvWYpFfKhPg9SuTaUpaVRCR7yMO9OlUnlc5sd5YOkDOnQ6yQhnvpiHYRmwwCEV1aO5Z3BSYm6pqOPTxhbFSkxYBInlSjGJ+IJzEq64NFe3SLkGdHC8hDucayvmU1k+uWjPMn7YjeFORViBRNTiwnqCE3CcFp2A0+iGBJuDzm5ZrnoujhXRhxfLlCU5aQwM51wu4ocQ8GXZcUbrjKJCKKODJcSo2tn0KhxGwApHVHFNBbd+bD01PAGnesq0q1Je4Kqr4XmpUAAKm4Cmg2U0VtE/VJpHribzZ1mJsuPEIz2OvVGFdpws6PtN02in40pM8VshbvyweQgv6ki5EQCWKuTOh99rsevRxqE4PTHuivIjNJYlsFxMjxbTwKQiBKYCjxYf0V60lCrnUK8O091OxYfYJ8RqelxfL6d8ww2N0KqAheXKz0ueoHE+HCHjnmBwqAgL16mAR6GpkGi/o8Nge+LDfVy96CfEi/VYbqiSdjCujn3dOSwBK5Hz41Ys10NmMQzDH7RnQTPNknMFqCVyqtaFhXTlGnKZXFOupS2Wa8GGhYXYsbaOjHusgY9VuccqVHOH6grCg1k07AktDg8ksHyzaOunuLlalS9Sqo+tDr+ogrZCslqVag/j57mdAsviSrTfxGqa0D7cAtIYDC6GKi7GLO5AGf37YmjCYmj+68XQZv7r2dYUZluTm23N/5PZ1uRm25w/Psm5ozuzWqrwwF3Qg+8qVSgVwY6t6ODrAjJYbbNbgCNcmT18UUFDYfQSlY3ih2tEr2JNvddP4pxgh7ac6/YWK+yVlQPPvAF7vj0NgGG2xpqNhApXYcBMckZxuZYvmkVDt1w9OAanKcHNWKyNPQxtbfPhaWHiWE4ZDldcUWIGTuplItnv4ZvlxtRohE1NJItjuLbgkg43PVqL2iDBPU/CDXtzew9otfXEcspMOGysTdXb9WnMEdaiRFiLElyLVLYUIii3FlkuTuBBhD5DZYRhLbJy6R/WohRrMsNahG4GGlJYi2JuLVI9UT5l3GQYCaWMtUd1VCj5iumig5zdSyWOxVgMjQo9YtHqKAP+xARrEfkIwNDWCB/CGVenqnVq9IQav8hqOJQOM6I9D2v8qR3Rnk/Fo49oL8Df0MksxN/QELO4QWLl1k/v5t7LvZN/n1Suyg3JqMp/d9AveH0tLlcELhc7s8ijhC/xSCc1il+oNpOcq9pN2VVHSpcsuC1JqO7IMass7sixWFnbEVmFatPpiPkSR3QQUVZ3PcJXmmVnTJxOGqnerPJSDKwdWQhDI284zocdoOoJqqsEs6zKnTv8dIKuBNEsw3F5F1V8Uj0iPFJRPpIqH0mUj8TKR6zyEcM/ktCBQFgAajGac+66j/LNOKBKQRbfJrvKMCy/+4u5MybM8DDHe+lCEne1CD6mj6NzuOO+vgz2V9yI1PC0GT9AG9jiIwruOhruUXQZh1aoNtdd4SMqg0XHLu1NdEygjoTmmT9q0wUWHMLjN/MnWIkeXaqRw6YwW6b9N5Eslt8eIBcyOKI5oLGaxX8kYuX4BG4JCom+oi6YO/PXkcoZvuobntOzQn1mXHM4birGwQn49Tqdz+PxVzhAzZ7JilRYhTi+vHSvQqovx4sS9AbuoCrRh0bq4I3ChYsmZDwc41eV+HaemQUoWUhe5q4B0ED3Q0f/f3HsZx469jMzj/3Mnx77xQ8d+8W/H/tnHpbFMw7LNozyXJo6Q2VP+P9HJ0eHKitsQzioCOPaZxQMXu/BMmWQylj+MixLl8kw9GIRPwWOyGMNdBqaxw1Ygeo3qSAxHHQYvr6n9jsyypTcMRKHgWjEGLcDusohE1qHVjgd6Oz5VarNXUvm4yeF8jN8YT/afbCeKG5pWixeUVRkwnqhoWOu/KkIT9EleLkYHsuwLrecVoaYah9Cw+XA2qGLRNDia0X83sS/DV+P+uPrx7kDgZy2M/7yEJ5UrqbeSKjDjReMoCmW85GOpXNYDNfsbobbBEfpCTpFgSXWXsR3Bzgl3G9Y2inlYtm3XOoRLqhTg/0+cyBguUdPHVHMoke7WRSIFf1mnECMz6+Ri2k/pyvt2NBr6QnJEe4KPG682i+KZN8rZQztRAYMP5LPRVbBxihtDGeDs1FLzsZwNjxB5WwM7YsoZHDe5VzQdYWTVxT+j5euwPLPl4730XLOXLr/sczA6r8v+4iTyYUgxPU3Euox/tjLaP/LXgYPARJlL4NbCL9NyN6C3ULOX+bkRqLEypEo0VE+kdBVGX4kCjdqGrCitMUNQ/HXZhQi2W7YoBViPNTgURMLGvJ1DSXcKS/DfSdi5oGNG2WGPejoaimcocpexyh6hq+3C+eiCkaoAK8sgosFdLWYpXhSCx2KTCiUixnmj4VyX1G2G/cFkvn8LiTmdyFtWC2MHq04hvv+gUhYE4uP8F0vtv9L2Ep0gsnyJ38Ktd9PpdR+P5XitnC+7+n+wxmUbCfMDK6s0y+IaEBGxA8j0KL+guMiZ/boMMu46+e0LuHIheensm+UnTvDDUJrcufE2DspnlTYn+MLN3IDpzNe8RFe4UYOuJ1POYe/fxkCeyTtzSLZOhoTUPzyOnYgdADAtoVnft0LxwRYXu4rK7Mhl+vA0nDdpvZSHS4+aR/U/oCCmEj7KVDC1LjxBaxACcdgBXuSb40jmN240XT6woBItlV5OvZPSR8aIsQsjd/cudWGm+PzItlK0e/99sv8dzP4OYTDHcwBN4d4gGG4r9qoCW/FUzfu84zilze5LwLAkY2FI5uITjsgG67mgoH4z+f6EZxVVlkQVz7jCxDwdm6tL8G1TqMg+JUSRiocemSyuVidfgnuFKePwr+r9iyTLRT9y2loizj/Gf4Sq0xTJIR2bYiFIop1tMyzcSkh/+EGJDp6UqbGfXljqWzev9ggsUnWiyQK9gTMAkq4Yxy1mLaaTIObiFx0AhX0TvGJl3k31ywyvtXpI0dkc0SKyzi8OkcRcp7b8GZxry8Vv6ApglbF6fDDpvT4ERH0QY+IQMVtJz+dUD5khIeaf3h4WraE89vwJ5si7B+WwUmkSKbKNRP/+yj9hlXO/f7pCMzs7qEHbu293kEPpkSwHLvjnXwdLmdYtv4DX7rsVXq/rKeg2+KMTCxi6EcWksX0a2Cl3zSRrPlJiYj779TJAxu/PfzlhpOnRCI1kbZIA55zhB910e/sDz9zZnAA/KyYwYnwM/chfmwGJz30OvK6GZz80OvJD72e8tDrKQ+9foOfJ4FzHuK8h7jgIa6Cn8AZXPMQ33qI63k+8OUB5XPYHo/OeM9q/ucQvOmrL39/fv1D79vMv+84vEl4bgf/ngP6J5XPKeDnkRmfewV+Ns7gTx6a7mcP8bcP8bGH+KeH2PAh3zneh9vLD/qHvz0FW8wOVlukCc/Ngp8ncb5nsNYM1ua3H4GxrRbO4Mce+vxjD33+hYc+v/sh3vPQ+1+Fn00zeC/8zJvBrz3Erz/Er/LTE/YRln+MP2L+txTXz/5vvz10UL7v7e/1Dx8/tmvXD8d+PLn/+7VP7JMfPybfL9/31vFjh/bJT+//9odDIoafFuxrJ/ef/HnjKf2DG7Etv99/7PCBo4ePfQ3t+ZNYW7QcHSBcheuEZwnwSvitwrcl+lVp3XDzpsY/h/ssrisZ/Gjyz2k+9B6tGfMAs3/8AM3Fyf0/fnH60AGYhwP7v99/4LD+z/Ljpw+d/Orb4z/C+yf4+djIcsv9z58/pX8SPvuMRFu0GF63g4V9Bn4LfBFYF35v2CAS6cNz7H+z7ebxbYdtOB9+Dh87eOgn+fEf9OXHv5J/efyHYwdP7ZLrf3NI/u2hY/LDp+TyL+ElZO6N8Az0ORI88IhEdfAb+5J9wkIcOH7yEC3DV9/pbzz2w3ewHIxUW7QM3nOI9+n+pKuru0l3s+4W3a2623S36+rp7tDduUl306ZNmzdt2bR107ZN2zfpbdqxaedm3c2bNm/evGXz1s3bNm/frLd5x+adW3S3bNqyecuWLVu3bNuyfYvelh1bdm7V3bpp6+atW7Zu3bpt6/atelt3bN25TXfbpm2bt23ZtnXbtm3bt+lt27Ft53bd7Zu2b96+ZfvW7du2b9+ut33H9p16unqb9DbrbdHbqrdNb7uent4OvZ07dHds2rF5x5YdW3ds27F9h96OHTt27oRZ3An6nTDpnfCxnfDUyf3Hvj4kP6W//6Q+3zhCM3KvfHX8pPzUt4cPHMKnoDW/1v8GGm1YyrWZmoo2HKNEIu69h44d5KfxDDyvPeN1bgrca+Q6Jd+vz60V+BCB6FN4L/YBJ+H3zG1SuTpgk9oIq//wwf24gWB3I7KB92KfhAdI3P8/2bBhw2df/qwvuHBN/2GrwEf7RKJc+BzuExW8UwTLg9vSl4e+PnxM/syztChr8cET8h+/gW0IFwB2SfysRFWb+rO58Bv3n4Wq3LIK00DnseP6sMke+Gb/Sc4Ly/G0/LA+vnT42KnDBw/J5WtxNk/B9HGOhPl5FaaFfd0x+I3752n4rTJj2v/UJj9AX3H84KGN3588fEx//5ffHqLDtsgHPvcov+8vn8FL4Wc77ThiqVRFRayqoqamPkdjuWyJ5nwt7VlasyXa4rlz56kvZBZJF7NLxEtVl7MrmFUL5eInxU+x62UbGF3xJnYz488GskGSYLUxdlw6KZkST6tf/elnCysv3b/+zcLSZvmK+lmzX39jfGLDxuc//eyL6BYTqwu2doERCYlZN3LzGtpuT4skc+Y+sWmr3q6nn9372mcmF+DFqITEG3lFxW23RRKtWfTqrqdf3rP3tc8PHjKxdbmSW1SsNeeJl/f+9eAhK9tAeHNWbmPb7X6tOS/vPXjIwCQyKSW1sqp/wPishY9fSmpWdlFx7a1XLycX3igq3vvW23/96PMvzC5YR8TEpqbfyK6as3DRJ58Oj0xNG2h9d6KhcdbsVceOL1/xxa+/hYYlJo0tXLRy1Z5X3nr7bx9/+vlvZ6KzKirr+gfunzxlrf/DpY1fPLZho39YbGp2cVWj8wuOl3WtV6WlF02/9fbHn6iqzdZ+fGNv37Hjes8+v/tlG9up6fe+/iEnt6S0uubO1LRI/oWOUaPE6CW1ZRKVOYYhswyCt62VGTSJl6gxko2SrRJVMaOqojpH453Zc1U/UBVLlmuoi9XEqmJWLBZrSqRimQoza4F0l3iOqopUW/WvqqzqAq13JC+K14sZyRyV2Zq7JCse/UL+neTIowY5UqNw8VIVo0nxR6oLZIvU52vO1zyioqGyVOUj1SelezSekmhKGPEm2VOSpSoysUEIvLT6+Tck68X6as+IZ4ufUd2h9qTUaHrOYrWNc9aL5dqrZxtYSowcl8gWnLeXbpQ+rcrOWqxucG29vqbBzaWaUoNpqUGjZq+W2MRKrKdu+Ol8gzg1g/x1O8QaKjvU9qhpqujLVoo/lnykbmC8eLnGQvU3JAbmKsE+moskmzwlhrWPqWpKpQa+cwy/0/5p7ToVeNVKYpAiXiaerSVSYRhYPBY2U1ZDKmNnSbSZOexc6bw585kF7CJ2idZy6Qq1NcwR8VE2iS1lKzQr1W+yVWwt0yRtZjvYXnm/ZJR9wMKGymg+/vRzb71t7ebmrqKqvv3Z5z4cLCmVzF+8Xe/Dv54JCg1L3tY095zZBTfl5odb31tvHzz0aUzssuWqahqy+Yu279wVEFhdo65nYxugqvH0c18dtrY7/kVv38dfOrs8vvaDKx6e3j7+AVcTkjJVZJoLVux6/uV3/fwLCj1UlyzVefS557NuSOSPPPrY2i07dr362hvvvPfBh7iN7Ttw6Kujp3769Yy5T1BYeFpJaNjPBceOX/xc5x9SMaySr8TMxg0GRivEm2Yvl6xRXyl9UvqSZNY6gyCVNZI1krVqW2WMgY2hnvpCDTWDyzvFB9TUdRdKV4uXSZkXdkhel26UaKiqq74gf1yiqb5dvEu6VFWiqfrOXr0tWltUN6hpGD72l7fWqq37cPn8RepvSVbOfnHWElUNlVfVHlf/Qfa8Yp3K01INlXdV4PgnlhpYfLnyVTUNA7/PdV6WaahozdupqrH9KYm2QdozB9/TfFVdY8/Ly15Ve2/FTkPVPRorxK/s1RPPUtNQgXcZbl9iEMvM3qxl7PLVDzKDTPMkk43WpUaveMYb7VRdJ2H3PaaxR2OtdJ5R+CeHXpfsVJ3zAq5qx1E1k5vr1L1GDFdtEs+RqBlamkmOSrXE6qraF/cZDGucUju2aI+B83zNv6ovMThn+Ir47O7ZC86+86RB5XrxUglr+P0uKXNWZFD1xBsSDQlrPOelN541uP6MCiP5QLpsK2s46ynJQc0PNQxCd6zQekqiDpu0ioGzcbWallhLrK/5kSrsMpIdMP9r1XTeMnxfc4FYLFVVX6Kqqi7WUn3CIP9RDROVP+2O+d9fwKFqP/bIW7S0RWv5XIm/Bf6riMu9Av8Ffp6Dn3AIRJ/N82DnLpKvTl61b/UvT+3bKNX12LLAQ75t1Mdju6Zf0/aV43I90VTT7klm/4uMxupX1mg1vxI8a//ejYs99z69ZPWHuss9Pxxcufpj3a3Nn/UfWf3528f3f34lafUXX5eu3ieq9dwnamrer9u8/0B3i+fBko7mg+ODqw8xotBD/cz0occZFUbGPMIwzCuMBL91z7CsKE3CShh1lmHGVYsZKbNpPYNf1Ad+ipGpaMgYeL/GAm3mkBqjwUhWw4srl30i2yWDzzKLFz8p/lFXD6ekBh2PqgarxcxmdjESiRozn10KU98JO7mEha6OWcmKGRmylAHffHYhdAG7UAPvVWVl7ErmWUaT2Qzdwk6xFPoGfG4FvQM2U3Y+u5zdyXLTXcG8ykCnynzMsKoy9S8ZVl2dYVReY5fRXxLozYKFYKUyZo0685UEPsyy7BJWItaWaMFDFZi/zxkI9+IV4hXsSvYFllFVY1iZGD60XrKVUbA6zGmxhFVnVMS3WBb8jCpOlVVT0WCZxxm1Oc9LdBl4M/y/Vl2TlcPCMeId8AaYIfEuNZZ9QeUvYkaLUUW1mN38vBaj8wUjFcGrMjFug1qsplSN1cAmlm6SQpvCm7W1tqwWsSfEv8Lc7ZNvZETMGgkcyZnPVD6DM3qICsyXEnzncsk77Cydt5hF4u9YNexAmSWslHFkl87VYh5TWyLbINZlsLnnQCe6WwUWnNVk1GD9yZgt4GdZKTT3MmYW/T4oVRf/DHMhAdtFiDpiRlNbBzgQFljYSjYy69kXmQUwDy2Mg1QkhlmWrBVLGF8WIhLrJAtnts/eId4ERhbmfLN4jZRRe47RZLeqw57JfCEGDbS4ByNWWwBrT8w8qiqWZqhhUy1i3of1D29ieyUq8O8y9gM1fPcRhj7CHBLDRiIVqTP4t1gwjzbgkDByjbUqLGwD6iqseAOsThHOKvOXhawqNuffVehPTGB9vYoKBk4/1EVwUFOXiJjn58CaxmlJRGJ1bVZ1pcReLNKTbFZjZjELpcxsmNIcmooUQqBEpPqdGpwAMSv3GfRjrPKAIOgxr0nFYLlcbeEqD7WYNWnqoqfk817w2zdPN3jfAtH4vkWrp+WLRRLPxQaaq5d4LG5e8sKx/UtFFZ5L/W42LxV1Gq7SHdivYz4QqaNYqrJ0I+5KjHQRs4rJgJ2lhFmjyq6U7mPWYUvCjklHR4aZz7zHWKj5MY+pPyF6DLc49klWLPqQVRGpq8KjF9JeELEq7GPwo8b/Gc0qdhsuP+xuEDRYFYkW7Emq+rSFHcK9HbYhsVSF/5MbRgWekUilEmaOHM5Et4o2wgo/qyIRs5pkE22Yu9LkK1jduqz6OtjKRU8yWqrviOCoLoJlEL2zDw5U0MVtgdP2F0QfQJcCWwHNvyaDe40Cj+/wezkuKnhVYYUsYZbAMv/xR030Ek5PZSl30m0skYtspfuwnxTNXeSxUlPetLLvKfmT63Q9njzut+8pNqDpqZXjTetFUx7b3KabtkE/uZ3R8Ny+Rmu/XvCs5h0bF6/eqbt8/57BlZ6v9R/Z/9bbxz3fgv7x7UOlzW+Lale/A/3ju9A/vgf94/vQP74vF234oJ9J/UD0PZxqK/u+V2W62OepQtvCNvMI1+dBP7MYukpYN1Lo92Yz8pk9H/ZV8GHcOhmN/6jvw50PGkisAX3f0/BZTfjk2n/R/7EoZJGxD/zdgf2ghDoeNeZd6As11bAvlP03esJ/7gfVmfXiH/9tH6iLPaDqn/d/l2f0fjd2Yc+XsVoktoJ+TaRyGPoNRkPOvoPXK/+093qceVHZd22c0XOtg82pl++xRNraOLzwX/ZLL/8XfRIu10Jm1ox+6V3qf1jaDu7C/Pz73uk+rIf/F/0T9E7QN0nexcewnBKpmtq/7ZtUqW9SFfH9Eo4V7hcpuoPTRDIpDpZ9KVJMELyIIy8ihWUIwksAB0UKV4KXabxDEUKAA2pfiRRJBDjS+LVIUUCAQ2PfiBR1BDiudhg8BDiodgQ8BJh8joLnKsIbeCoLHoI3Ab4DD8FbePILHoK3AY6Dh+AdgO/BQ/AuwAnwEGBoOgkegvdwtAE8oQjvA+iDh+ADgB/AQ/AhnlyDhwBT2I/gIfgbDrOBh+AjgJ/BQ/AxwN/BQ5AG0ASeMIR0gGbwEFwHaAEPQQZAK3gIMgHawEOQBXAbPAQ4Xt0OHoJsgDvgIcCR6w7whCPkAnSChwDHsLvAQ5APcBc8BDia3Q0egkKAHvAQFAH0goegGKAPPAQlAP3giUAoBRgAD0EZwD3wEJQDDIKHoAJgCDwElQD3wUNwE2AYPATVAKPgIcCR9AfgiUSoBRgDDwGOqY+Dh6AOBxnBQ4Cj65PgIWgAmBIp6gkYEewN4EGA/Q+OC0ATRLDzi+B1heU1JBUgOK4oXInUgNSBQog08OoKUBKRJoNXX8FGNAsIuj9FHZE2Q0NNim6iuUDz0Ec0H2gB+qKQFgItQh/RYqAl6CNaCrQMfUTLgVagj2gl0Cr0EcmBVqOPSAfoEfQRrQF6FH3RSI8BPY4+orVAT6CPaB3Qk+gjegpoPfqINgBtRB/SQl0Gd19oKTE3vLoZeAsa6b1bgbahMQZpO5AeGol2Au1CI9HTONyLRqJngZ5DI9HzQC+gkUgBtBuXkOhFoJfQR/Qy0B70xSK9AvQq+oheA3odfURvAL2JPqK3gN5GH9E7QO+ij+gvQO+hj+h9oA/QR/Qh0F/RF4f0N6CP0Ef0MdAn6CP6FOgz9BHBaYLoC/QR7QPajz6iL4EOoI/oINAh9BF9BfQ1+uKRvsG2Rx/REaCj6CP6Fug79BEdAzqOPqLvgU6gj+gk0Cn0EekD/YA+otNAP6IvAXedn4CmQYeg8jPA31FH9A+gX1BH9CvQb6gjMsQGZEFHZARkjDoiE6CzqCMyBXof3mmZiHQO6DwuHpEZ0IfwWgiROTY8/gE9kQWQJfqILgDV4+IRWeNKgXd2E9ngSgGaILJl6DqDwjIJCa8w7IPXXInscTWgj+gSNjX6iByBvgEqILoM5IQ+IldsavQRXQE6iT4id2xcXL5kJA8gT1w+Ii8gb2xPIh8gX2xPIj8gA/QR+QMFoI8oENsTfUQhQFexPYlCsQXRl4IUBhSOPqIIIHNcPqJIIAtcPqJrQFHYnkTRQDHoI4rFNkMfURxQPPqIkoCSsT1TkTKBbqCPKIunEKJsoFxcPqIcngqI8oAK0EeUz1M3USFQEfqIioFK0JeGVApUhj6icqAK9BFVAt1EH1EVUDX6iGqAatFHdAuoDn1EDUCN6CNqAmpGXzpSC1Ar+ojagG6jj6gd6A76iDqAOtFH1AV0F31E3UA96CPqBepDH9EA0CD6riPd48mVaAjoPvqIhoEc0Ec0ApSKPqJRoAfoIxoDGkcf0QTQJPqIpnAHB7LKwN2dhSMl7g4IEJrpkqIihAgvJkpxcyFSAVLFzZNIDUgdd3ciDSAZbi5EmizerwR0RLOAZuPmmYmkDTQHfURzgeahj2g+0AL0ES0EWoQ+osVAS9BHtBRoGfqIlgOtQB/RSrwkir4sJDmQGzYnkQ7QI+gjWgP0KPqIHgN6HH1Ea4GeQB/ROqAn0Uf0FNB69BFtYOlyp8LyBpIu0CZcPqLNQFvQR7QL6NBT4CN6GugZ9BE9C+SMq4/oOaCv4J3dRAqg3egjehHIADeXbKSXgMzQR/QykCX6iPYAvYLLR/Qq0F70Eb0G9DouH9EbQG/i8hG9BfQ2+oi+h2P+CTH4cug4AnQKyJXoNNCPQCFEZ4AGgZKITIFCgAqIzgNdBaojMgMKBeomMgcKA5ogsgQqQF8udfNAhegjsgYqQh+RLVAE+ojsgCLRR3QR6Br6iOB0SBSFPiIHoGj0EV0CikFfHnX6QLHoI7oMFIc+IiegePQROQMloI/IBSgRfUSuQEnoI7oClIw+IjegFPTl08ECKBV9RB5Aaegj8gRKRx+RN1AG+oh8gDLRR+QLlIU+Ij+gG+gj8gfKRl8BUgBQDvqIAoFy0UcUBJSHPqJgoHz0ERUDVaGPqBqoBn1EtUC30EdUB1SPvkLqWoEa0UfUBNSMPqIWoFb0EbUB3UYfUTvQHfQRdQB1oo+oC+gu+oi6gXrQV0RdK1Af+oiGhPVHNAI0ij6iB0D30Ec0BjSOPqJJoH+gj2gK6Bf0EU0D/QpkVYzdp0QkekcCOgQVBuhdoBAiFugvQElEYqD3gAqIJEDvA9UR4VQ+AOomUgH6EGiCSBXor0CWJdTtAv0NfUTqQB+hj0gD6GP0EcmAPkEfkSbQp+gj0gL6DH1Es4A+Rx/RbKAv0FdK3TWQLvqI5gBtQh/RXKDN6COaB7QFfUTzgbaij2gB0Db0ES0E2o4+okVAeugro24eaAf6iJYA7UQf0VKgXegjWgb0NPqIlkvwOyTgI1oB9Cz6iFYCPYc+olVAz6OvnA4PQC+gj2g1kAJ9RDpAu9FH9AjQi+gjWgP0EvqIHgV6GX1EjwHtQR/R40CvoK+CDitAr6KP6AmgvegjWgf0GvqI8Gt3r6OP6CmgN9BHtB7oTfQRbQB6C31EG4HeRl8l0j6g/egj+hLoAPqIDgIdQh/RV0Bfo4/oG6DD6CM6AnQUfUTfAn2HPqJjQMfRd5MOFkAn0Ed0EugU+oj0gX5AH9FpoB/RR/QT0M/oI/o70D/QR/QL0K/oI/oN6Az6qpAMgAzRR2QOZIE+IksgK/QRXQCyRh+RDZAt+ojsgC6ij8geyAF9RJeAHNFXTQcEICf0ETkDuaCPyBXoCvqI3IDc0UfkAeSJPiIvIG/0EfkA+aKPyA/IH3011F0DBaKPKAgoGH1EIUBX0UcUChSGPqJwoAj0EUUCXUMfURRQNPqIYoBi0VeLFAcUjz6iBKBE9BElASWjjygFKBV9RGlAxegjSge6jj6iDKBM9BFlAd1A3y2kbKAc9BHlAuWhjygfqAB9RIVARegjKgEqRR9RGVA5+ogqgCrRR3QTqAp9dXTgAqpBH1Et0C30EdUB1aOPqAGoEX1ETUDN6CNqAWpFH1Eb0G30EbUD3UFfPR24gDrRR9QFdBd9RN1APegj6gXqQx9RP9AA+ojuAQ2ij2gI6D76iIaBRtDXgDQK9AB9RGNA4+gjmgCaRB/RFNA0UCGSVApnAVLQ0UsskBiom0gCBK8rJohUgFSBLBvpcASkDuRKpAEkAwoh0gTSAkoimgU0G6iASBtoDvqI5gLNQx/RfKAF6CNaCLQIfU10eABagj6ipUDL0Ee0HGgF+ohWAq1CH5EcaDX6iHSAHkEf0RqgR9FH9BjQ4+hrpu4a6An0Ea0DehJ9RE8BrUcf0Qagjegj2gS0H31Em4G+RB/RFqAD6CPaCnQQfS1I24AOoY9oO9BX6CPSA/oafUQ7gL5BH9FOoMPoI9oFdAR9RE8DHUUf0TNA36KvFelZoO/QR/Qc0DH0ET0PdBx9RC8AfY8+IgXQCfQR7QY6iT6iF4FOoY/oJSB99LUhvQz0A/qI9gCdRh/RK0A/oo/oVaCf0Ee0F+hn9BG9BvR39BG9DvQP9BG9AfQL+m4jvQn0K/qI3gL6DX1EbwOdQR/RO0AG6CN6F8gQfUR/ATJCH9F7QMboI3ofyAR97UgfAJ1FH9GHQKboI8JLwKL14CPyBGKACoi8gFigOiJvIDFQN5EPkARogsgXSApkeYcOFkAqQK5E/kCqQCFEAUBq6CMKBFJHH1EQkAb6iIKBZOgjCgHSRB/RVSAt9HXQQQZoFvqIwoBmo48oHEgbfUQRQHPQRxQJNBd9RNeA5qGPKApoPvqIooEWoK+TDk5AC9FHFAu0CH1EcUCL0UcUD7QEfUQJQEvRR5QItAx9RElAy9FHlAy0An1ddFADWok+olSgVegjSgOSo48oHWg1+oiuA+mgjygD6BH0EWUCrUEfURbQo+i7i5QN9Dj6iAqB1qOPyGMe7HHB4CPyBDoBVEDkBXQSqI7IG+gUUDeRD5A+0ASRL9APQJbdtL0AnQZyJfIH+hEohCgA6Cf0EQUC/Yw+oiCgv6OPKBjoH+gjCgH6BX1EV4F+RV8PbS9Av6GPKAzoDPqIwoEM0EcUAWSIPqJIICP0EV0DMkYfURSQCfqIooHOoq+XthcgU/QRxQKdQx9RHNB59BHFA5mhjygByBx9RIlAFugjSgKyRB9RMpAV+vpoewG6gD6iVCBr9BGlAdmgjygdyBZ9RNeB7NBHlAF0EX1EmUD26CPKAnJAXz/SDaBL6CPKBnJEH1EO0GX0EeUCOaGPKA/IGX1E+UAu6CMqAHJFH1Eh0BX0DSAVAbmhj6gYyB19RCVAHugjKgXyRB9RGZAX+ojKgbzRR1QB5IM+okogX/TdQ7oJ5Ic+oiogf/QRVQMFoI+oBigQfUS1QEHoI7oFFIw+ojqgEPQR1QNdRd8gUgNQKPqIGoHC0EfUBBSOPqJmoAj0EbUARaKPqBXoGvqI2oCi0Ed0GygafUNI7UAx6CO6AxSLPqIOoDj0EXUCxaOPqAsoAX1Ed4ES0UfUDZSEPqIeoGT03UfqBUpBH1EfUCr6iPqBRueBj2gA6AFQAdE9oDGgOqJBoHGgbqIhoAmgCaL7QJNAlsNINstFohJt8BHZApUChRDZAZUBJRFdBCoHKiCyB6oAqiNyAKoE6ia6BHQTaILIEagKyHIE6TJQNfqInIBq0EfkDFSLPiIXoFvoI3IFqkMf0RWgevQRuQE1oI/IHagRfaPUJwM1oY/IE6gZfUReQC3oI/IGakUfkQ9QG/qIfIFuo4/ID6gdfUT+QHfQ94D6ZKAO9BEFAnWijygIqAt9RMFAd9FHFALUjT6iq0A96CMKBepFH1EYUB/6xqhPBupHH1EE0AD6iCKB7qGP6BrQIPqIooCG0EcUDXQffUQxQMPoI4oFGkHfOPXJQKPoI4oHeoA+ogSgMfQRJQNNoo8oBWgKfUSpQNNAPUjSlRCsVoKOXmKBxECWE0gSIHhd4UqkAqQKFEKkBqQOlESkASQDKiDSBNICqiOaBTQbqJtIG2gO+ojmAs1D3yTSfKAF6CNaCLQIfUSLgZagj2gp0DL0ES0HWoE+opVAq9BHJAdajT4iHaBH0DeFtAboUfQRPQb0OPqI1gI9gT6idUBPoo/oKaD16CPaALQRfUS6QJvQR7QZaAv6ppG2Am1DH9F2ID30Ee0A2ok+ol1AT6OP6BmgZ9FH9BzQ8+gjegFIgT6i3UAvos8gHegloJfRR7QH6BX0Eb0KtBd9RK8BvY4+ojeA3kQf0VtAb6OP6B2gd9FH9Beg99BniPQ+0AfoI/oQ6K/oI/ob0EfoI/oY6BP0EX0K9Bn6iD4H+gJ9RPuA9qOP6EugA+gzQjoIdAh9RF8BfY0+om+ADqOP6AjQUfQRfQv0HfqIjgEdRx/R90An0Ed0EugU+oyR9IF+QB/RaaAf0Uf0E9DP6CP6O9A/0Ef0C9Cv6CP6DegM+ogMgAzRR2QEZIw+EyQToLPoIzIFOoc+ovNAZugjMgeyQB+RJZAV+oguAFmjj8gGyBZ9RHZAF9F3FskeyAF9SFI3oEbQ0UseAJ6oI/IC8kYdkQ+QL+qI/ID8UUcUABSIOqIgoGDUmSKFAF1FHVEoUBguHlE4UAT6iCKBrqGPKAooGn1EMUCx6COKA4pHH1ECUCL6ziElASWjjygFKBV9RGlA6egjug6UgT6iTKAs9BHdAMpGH1EOUC76iPKA8tF3HqkAqBB9REVAxegjKgEqRR9RGVA5+ogqgCrRR3QTqAp9RNVANegjqgW6hT4zpDqgevQRNeDqQx9RE1Az+ohagFrRR9QGdBt9RO1Ad9BH1AHUiT6iLqC76DNH6gbqQR9RL1Af+oj6gQbQR3QPaBB9RENA99FHNAw0gj6iUaAH6CMaAxpHnwXSBNAk+oimgKbRR6SGf9W7CnxE6kAMUAGRBhALVEckAxIDdRNpAkmAJoi0gKRAlpZIs4BUgFyJZgOpAoUQLQbSRh/REqA56CNaCjQXfUTLgOahj2g50Hz0Ea0AWoA+K6S1QHL0ET0BtBp9ROuAdNBH9CTQI+gjegpoDfqI1gM9ij6iDUCPoY9oI9Dj6LuAtANIF31EO4E2oY9oF9Bm9BE9DbQFfUTPAG1FH9GzQNvQR/Qc0Hb0ET0PpIc+azrkAL2APqK9QAr0Eb0GtBt9RK8DvYg+ojeAXkIf0ZtAL6OP6COgd9FH9AnQe+izQfoM6AP0EX0B9Ff0EX0DtA99RIeB9qOP6AjQl+gjOgp0AH1E3wIdRB/Rd0CH0GdLBxKgr9BHdBzoa/QRnQcyQB+RGZAh+ojMgYzQR2QBZIw+IksgE/QRWQGdRZ8ddexApugjsgY6hz6iy0A26CNyArJFH5EzkB36iFyALqKPyBXIHn1EV4Ac0HcRyQ3oEvqI3IEc0UcUAOSBPqJAIE/0EQUBeaGPKBjIG31EIUA+6CO6CuSLPns6IgD5oY8oDMgffURxQOHoI4oHikAfUQLQ9+gjSgQ6gT6iJKBr/08Jdx1ddd3AcZwYpVhYGCija4MBo0u6u0vGNnIMZIR0g8pAOkfDRoxuGDliwOiG0aIisx991Gfn8Hw+b//gnM+LcfY+v8vl3uvx9517KEUa7N5864wU4x46Kw1xD52ThrqHUqVk99At6ZJ76LZ02T10RxrmHrorDXdvAa+t0kP30DPpkXvoB2mke+i5NMo9lC49dQ/9JX3uHvpbGuEe+kca7d5C63/SGPdQhvS7e6hI4L93NiRZ2UoEcpN5KigZ+O8N1vy5skLzQNVQD2mQlIHCpM+k2EVWT2mwFIfCpRgpEUVIQ6QkFCkNlVJRL2mYlIZ6S8PdQ32kz91DfaUR7i3mX6000j3UXxrlHoqSRruHBkhj3EPR0lj30EBpnHtokjTZPbSnkP6eC6m3xNorXZbi0D7pipSI9ktXpSR0QLompaKD0nUpDSVJN6R0dEi6KWWgw9It95ZaR6Tb7qGj0h330DHprnvouJTmHkqW7rmHTkj33UMnpQfuoVPSQ/firNPSI/dQivTYPXRGeuIeOit94x46Jz11D6VK37qHzkvfuYcuSN+7t8y6KD2TllnZSumtqZRyfCmzFOIbwVAWqayUirJK5aQ0FCCV941gyN8lVMpA2aUKUuxyK4dUUYpDOaVK7qFcUmX30EtSFffQy1JV91BuqZp76BWpunvoVamGeyus16Sa7qHXpVruoTekT9xDeaTa7qE3pTruobekuu6ht6V67qF3pPrurbTelRq4h/JKDd1D70mN3EPvS43dQx9ITdxDH0pN3UP5pGbuoY+k5u6tsj6WWriH8kst3UOBUiv3UAGptXuooNTGPVRIauseKiy1cw8Vkdq7t9oqKnVwDxWTOrqHikud3EMlpM7uoZJSF/dQKamreyhI6uYeCpa6u7eGlzopzD3UU+rvGwdRuDQmn3oowvKNg6i31Mc91Ffq5x7qL0W5hwb4UfKNkWt5WZI+842KaKAfT/fQID+CvlERDZZifH1oqDTMPTTWzzrfqIjG+VnnGxXReGmCr2+dNVGa5OtDk6UpfjzRVGmaH0/0hfSle+grabp7KFaa4etDM6WvfX1oljTbvXhrjjTXPTRPmu8eWiAtdA8tkha7h5ZIS91DcdIy99ByaYV7aKW0yr0Ea7W0xj20VlrnHoqXEtxD66UN7qGN0ib3UKK02T20RdrqHtombXdvvbVD2uke2iXtdg/tkfa6h/ZJ+91DB6SD7qEk6ZB76LB0xD10VDrm3gZe9KVk99AJ6aR76JR02j2UIp1xD52VzrmHUqXz7qEL0kX30CXpsnsbrSvSVffQNem6e+iGdNM9dEu67R66I911D6VJ99xD96UH7qGH0iP3NlmPpSfuoedSunvoR+kn99Bv0u/uoVrxem2NVw/VlurE+wCfVVeqF+8TfFZ9qUG8j/BZDaVG8T7DZzWWmkiJqKnULN6n+KzmUgspFbWUWrmHWktt3ENtpXbuofZSB/c2Wx2lTu6hzlIX91BXqZt7qLv0qXuohxTmHuophbuHIqRI91Avqbd7W6w+Ul/3UD+pv3soShrgHhovTXAPTZQmuYcmS1PcQ1Olae6hL6Qv3dvK64Q03T0UK81wD82UvnYPzZJmu4fmSHPdQ/Ok+e6hBdJC99AiabF723idkJa6hwok6D+YE9RDhaTCCT7lx/uKVFRKRcWk4gk+58d7h1QywQf9eLeQghJ80o/3B6l0go/6WWWlcgk+62eVl0LdQxWkiu6hSlJl91AVqap7qJpU3T1UQ6rpHqolfeLeDp7JUh33UF2pnnuovtTAPdRQauQeaiw1cQ81lZq5h5pLLdxDLaVW7u3kmSy1cQ+1ldq5h9pLHdxDHaVO7qHOUhf3UFepm3uou/Spe6iHFObeLp7JUrh7KEKKdA/1knq7h/pIfd1D/aT+7qEoaYB7KFoa6B4aIY10b7c1ShrtHhojjdA7eiIaK41zD42XJriHJkqT3EOTpSnuoanSNPfQdCnWvT3WDF+R39/RLGm2rw/Nkea6hxZIC91Di6TF7qEl0lL3UJy0zD20XFrh3l5rpbTK14dWS2vcQ2ulde6heCnBPbRe2uAe2ij18ucJtEnq6s8TKNF/f/78ss/aLEX5+tAWqZ8/v6Bt0nJ/fkHb/Sj58xLa4WvwQQu00886/69btEva7etDe6S9vr791j5pv68PHZAO+vpQknTI14cOS0d8fei4lOzrQyekeX480Ulpoq8PnZJm5vOxP+u0lOIeOiOddQ/9If3pHgp8oX+3L9RDBaTaL3zuzyoo1Xnhc3+8Lkl1X/jcn1VYqvfC5/54lZLq+5whKio1kBJRManhC5/7s4pLjdxDJaTG7qGSUhP3UCmpqXsoSGrmXhKvblJz91BpqYV7qIzU0j0UIrVyD5WVWruHyklt3EPlpbbuoVCpnXuHeI2U2ruHKkod3EOVpI7uocpSJ/dQFamzdA8FZM5ULMDnuKwc/sEFxQM4+Gdm0Sxhxh42s2qWDODonxmgWcpMhNk0g8wk6O8cHMDpPzOHZukAjv+ZOTXL0IW5NEPowpc0y9I9Yr6sWY4uzK1Zni58RTOULnxVswJd+JpmRbrwdc1KdOEbmpXpwjyaVegeNd/UrEoXvqVZjS58W7M6XfiOZg268F3NmnRhXs1adOF7nnTh+5q16R4zP9CsQxd+qFmXLsynWY8u/EizPl34sWYDujC/ZkO6MFCzEV1YQLMx3eNmQc0mdGEhzaZ0YWHNZnRhEc3mdGFRzRZ04TbNW3Thds3bdOEOzTt0k82dmnfpwl2aaXThbs17dOEezft04V7NB3ThPs2HdOF+zUd04QHNx3RPmAc1n9CFSZrf0IWHNJ/ShYc1v6ULj2h+Rxce1fyeLjym+YwuPK75A92TZrLmc7rwhGY6XXhS80e68JTmT3Thac2f6cIUzV/owjOav9KFZzV/o3vKPKf5O12YqvkfuvC85h904QXNP+nCi5r/pQsvaf5FF17W/JsuvKL5D93T5lXN/9GF43NnznQ0t7twguYxMwlO1DxupsJJmslmGpysecJMh1M0T5oZcKrmKTM2xZymedqMg19optCFX2qeoQu/0jxLF07XPEcXxmqm0oUzNM/ThTM1L9A9Y36teZEunKV5iS6crXmZLpyjeYUunKt5lS6cp3mNLpyveZ0uXKB5g+5Zc6HmTbpwkeYtunCx5m26cInmHbpwqeZdujBOM40uXKZ5jy5crnmf7jlzheYDunCl5kO6cJXmI7pwteZjunCN5hO6cK3mN3ThOs2ndGG85rd0U80Eze/owvWa39OFGzSf0YUbNX+gCzdpPqcLEzXT6cLNmj/ShVs0f6J73tyq+TNduE3zF7pwu+avdOEOzd/owpV59eTP6y5cpXnMTIerNY+bGXCNZrIZe4EHR/OEGQfXaZ40E2G85ikzCSZonjZT4XrNFLpwg+YZunCj5lm6cJPmOboXeXA0U+nCzZrn6cItmhfowq2aF+nCbZqX6MLtmpfpwh2aV+jCnZpX6V7ijUDzGl24W/M6XbhH8wZduFfzJl24T/MWXbhf8zZdeEDzDl14UPMu3cu8EWim0YWHNO/RhYc179OFRzQf0IW1ojNn6hHtLvxEM8xMh7U1e5oZsI5muBl7xayrGWHGwXqakWYirK/Zy0yCDTR7m6mwoWYfurCRZl+6sLFmP7qwiWZ/ulfNpppRdGEzzQF0YXPNaLqwheZAurCl5iC6sJXmZ3Rha83BdGEbzRi618y2mkPownaaQ+nC9prD6MIOmsPpwo6an9OFnTRH0IWdNUfShV00R9G9bnbVHE0XdtMcQxd21xxLF36qOc48b2Z/ljlTAf8MhjS+mFmzoJkOs2gWMjNgVs3CZuwNM0CziBkHs2kWNROhv3MxMwnm0CzOD3uAOTVL0IW5NEvShS9plqILX9YMonvTzK0ZTBe+olmaLnxVswxd+JpmCF34umZZuvANzXJ0YR7N8nThm5qhdG+Zb2lWoAvf1qxIF76jWYkufFezMl2YV7MKXfieZlW68H3NanThB5rV6d42P9SsQRfm06xJF36kWYsu/NiTLsyvWZsuDNSso1+jcg0aPDBiaHjk4JgsOaPConsPDesdmTmg9dCYIZly60vhkTExkRFBPUdkzTZYvxeeLyQ4tEJwSP5ioZUjIyMqhZUNy+8fxx4UEhJUJqR49uFhUfpj2csEh1QOLpN7eFjMgKCefaMjekdG5ykTXDa4Upn8xcqHh4VVrhRSIbT4/wGFcb1b'); /** * AES block cipher algorithm. */ class AESAlgo extends BlockCipher { static get keySize() { return 256 / 32; } constructor(...args) { super(...args); this.keySize = 256 / 32; } static async loadWasm() { if (AESAlgo.wasm) { return AESAlgo.wasm; } AESAlgo.wasm = await loadWasm(wasmBytes$5); return AESAlgo.wasm; } async loadWasm() { return AESAlgo.loadWasm(); } _doReset() { // Skip reset of nRounds has been set before and key did not change if (this._nRounds && this._keyPriorReset === this._key) { return; } // Shortcuts const key = this._key; const keyWords = key.words; const keySize = key.sigBytes / 4; // Compute number of rounds this._nRounds = keySize + 6; this._keySchedule = aesWasm(AESAlgo.wasm).getKeySchedule(keySize, keyWords); this._invKeySchedule = aesWasm(AESAlgo.wasm).getInvKeySchedule(keySize, keyWords); } // eslint-disable-next-line no-dupe-class-members _process(doFlush) { if (!AESAlgo.wasm) { throw new Error('WASM is not loaded yet. \'AESAlgo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { if (dataWords.length < nWordsReady) { for (let i = dataWords.length; i < nWordsReady; i++) { dataWords[i] = 0; } } const dataArray = new Uint32Array(dataWords); const ivWords = this.cfg.iv ? this.cfg.iv.words : ''; // Perform concrete-algorithm logic if (this._xformMode == this._ENC_XFORM_MODE) { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = aesWasm(AESAlgo.wasm).doEncrypt(this.cfg.mode._name, this._nRounds, nWordsReady, blockSize, this.modeProcessBlock, dataArray, this._keySchedule); } else { this.modeProcessBlock = aesWasm(AESAlgo.wasm).doEncrypt(this.cfg.mode._name, this._nRounds, nWordsReady, blockSize, ivWords, dataArray, this._keySchedule); } } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = aesWasm(AESAlgo.wasm).doDecrypt(this.cfg.mode._name, this._nRounds, nWordsReady, blockSize, this.modeProcessBlock, dataArray, this._keySchedule, this._invKeySchedule); } else { this.modeProcessBlock = aesWasm(AESAlgo.wasm).doDecrypt(this.cfg.mode._name, this._nRounds, nWordsReady, blockSize, ivWords, dataArray, this._keySchedule, this._invKeySchedule); } } dataWords = Array.from(dataArray); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.AES.encrypt(message, key, cfg); * const plaintext = CryptoJSW.AES.decrypt(ciphertext, key, cfg); */ _defineProperty(AESAlgo, "wasm", null); const AES = BlockCipher._createHelper(AESAlgo); function blowfishWasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } let cachegetInt32Memory0 = null; function getInt32Memory0() { if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachegetInt32Memory0; } function getArrayU32FromWasm0(ptr, len) { return getUint32Memory0().subarray(ptr / 4, ptr / 4 + len); } /** * @param {Uint32Array} key * @param {number} keySize * @returns {Uint32Array} */ function blowfishInit(key, keySize) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passArray32ToWasm0(key, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; wasm.blowfishInit(retptr, ptr0, len0, keySize); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v1 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v1; } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } let cachegetUint8Memory0 = null; function getUint8Memory0() { if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachegetUint8Memory0; } const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; let cachedTextEncoder = new lTextEncoder('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); getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); WASM_VECTOR_LEN = buf.length; return ptr; } let len = arg.length; let ptr = malloc(len); 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); const view = getUint8Memory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); offset += ret.written; } WASM_VECTOR_LEN = offset; return ptr; } /** * @param {string} mode * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} P * @param {Uint32Array} S * @returns {Uint32Array} */ function doEncrypt(mode, nWordsReady, blockSize, iv, dataWords, P, S) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(P, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; var ptr4 = passArray32ToWasm0(S, wasm.__wbindgen_malloc); var len4 = WASM_VECTOR_LEN; wasm.doEncrypt(retptr, ptr0, len0, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v5 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v5; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } /** * @param {string} mode * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} P * @param {Uint32Array} S * @returns {Uint32Array} */ function doDecrypt(mode, nWordsReady, blockSize, iv, dataWords, P, S) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(P, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; var ptr4 = passArray32ToWasm0(S, wasm.__wbindgen_malloc); var len4 = WASM_VECTOR_LEN; wasm.doDecrypt(retptr, ptr0, len0, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v5 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v5; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } return { blowfishInit: blowfishInit, doEncrypt: doEncrypt, doDecrypt: doDecrypt }; } const wasmBytes$4 = generateWasmBytes('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'); /** * Blowfish block cipher algorithm. */ class BlowfishAlgo extends BlockCipher { static get keySize() { return 128 / 32; } static get ivSize() { return 64 / 32; } static get blockSize() { return 64 / 32; } constructor(...args) { super(...args); this.keySize = 128 / 32; this.ivSize = 64 / 32; this.blockSize = 64 / 32; } static async loadWasm() { if (BlowfishAlgo.wasm) { return BlowfishAlgo.wasm; } BlowfishAlgo.wasm = await loadWasm(wasmBytes$4); return BlowfishAlgo.wasm; } async loadWasm() { return BlowfishAlgo.loadWasm(); } _doReset() { // Skip reset of nRounds has been set before and key did not change if (this._keyPriorReset === this._key) { return; } // Shortcuts const key = this._keyPriorReset = this._key; const keyWords = key.words; const keySize = key.sigBytes / 4; //Initialization pbox and sbox const ctx = Array.from(blowfishWasm(BlowfishAlgo.wasm).blowfishInit(keyWords, keySize)); this.pbox = ctx.splice(0, 18); this.sbox = []; for (let i = 0; i < 4; i++) { this.sbox[i] = ctx.splice(0, 256); } } _process(doFlush) { if (!BlowfishAlgo.wasm) { throw new Error('WASM is not loaded yet. \'BlowfishAlgo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { if (dataWords.length < nWordsReady) { for (let i = dataWords.length; i < nWordsReady; i++) { dataWords[i] = 0; } } const dataArray = new Uint32Array(dataWords); const ivWords = this.cfg.iv ? this.cfg.iv.words : ''; let s = []; for (let i = 0; i < 4; i++) { s.push.apply(s, this.sbox[i]); } // Perform concrete-algorithm logic if (this._xformMode == this._ENC_XFORM_MODE) { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = blowfishWasm(BlowfishAlgo.wasm).doEncrypt(this.cfg.mode._name, nWordsReady, blockSize, this.modeProcessBlock, dataArray, this.pbox, s); } else { this.modeProcessBlock = blowfishWasm(BlowfishAlgo.wasm).doEncrypt(this.cfg.mode._name, nWordsReady, blockSize, ivWords, dataArray, this.pbox, s); } } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = blowfishWasm(BlowfishAlgo.wasm).doDecrypt(this.cfg.mode._name, nWordsReady, blockSize, this.modeProcessBlock, dataArray, this.pbox, s); } else { this.modeProcessBlock = blowfishWasm(BlowfishAlgo.wasm).doDecrypt(this.cfg.mode._name, nWordsReady, blockSize, ivWords, dataArray, this.pbox, s); } } dataWords = Array.from(dataArray); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.Blowfish.encrypt(message, key, cfg); * const plaintext = CryptoJSW.Blowfish.decrypt(ciphertext, key, cfg); */ _defineProperty(BlowfishAlgo, "wasm", null); const Blowfish = BlockCipher._createHelper(BlowfishAlgo); function desWasm(wasm) { let WASM_VECTOR_LEN = 0; let cachegetUint8Memory0 = null; function getUint8Memory0() { if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachegetUint8Memory0; } const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; let cachedTextEncoder = new lTextEncoder('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); getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); WASM_VECTOR_LEN = buf.length; return ptr; } let len = arg.length; let ptr = malloc(len); 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); const view = getUint8Memory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); offset += ret.written; } WASM_VECTOR_LEN = offset; return ptr; } let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } let cachegetInt32Memory0 = null; function getInt32Memory0() { if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachegetInt32Memory0; } function getArrayU32FromWasm0(ptr, len) { return getUint32Memory0().subarray(ptr / 4, ptr / 4 + len); } /** * @param {string} mode * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} keyWords * @returns {Uint32Array} */ function doEncrypt(mode, nWordsReady, blockSize, iv, dataWords, keyWords) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(keyWords, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; wasm.doEncrypt(retptr, ptr0, len0, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v4 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v4; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } /** * @param {string} mode * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} keyWords * @returns {Uint32Array} */ function doDecrypt(mode, nWordsReady, blockSize, iv, dataWords, keyWords) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(keyWords, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; wasm.doDecrypt(retptr, ptr0, len0, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v4 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v4; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } /** * @param {string} mode * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} keyWords1 * @param {Uint32Array} keyWords2 * @param {Uint32Array} keyWords3 * @returns {Uint32Array} */ function tripleEncrypt(mode, nWordsReady, blockSize, iv, dataWords, keyWords1, keyWords2, keyWords3) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(keyWords1, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; var ptr4 = passArray32ToWasm0(keyWords2, wasm.__wbindgen_malloc); var len4 = WASM_VECTOR_LEN; var ptr5 = passArray32ToWasm0(keyWords3, wasm.__wbindgen_malloc); var len5 = WASM_VECTOR_LEN; wasm.tripleEncrypt(retptr, ptr0, len0, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v6 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v6; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } /** * @param {string} mode * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} iv * @param {Uint32Array} dataWords * @param {Uint32Array} keyWords1 * @param {Uint32Array} keyWords2 * @param {Uint32Array} keyWords3 * @returns {Uint32Array} */ function tripleDecrypt(mode, nWordsReady, blockSize, iv, dataWords, keyWords1, keyWords2, keyWords3) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); var ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(iv, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ptr3 = passArray32ToWasm0(keyWords1, wasm.__wbindgen_malloc); var len3 = WASM_VECTOR_LEN; var ptr4 = passArray32ToWasm0(keyWords2, wasm.__wbindgen_malloc); var len4 = WASM_VECTOR_LEN; var ptr5 = passArray32ToWasm0(keyWords3, wasm.__wbindgen_malloc); var len5 = WASM_VECTOR_LEN; wasm.tripleDecrypt(retptr, ptr0, len0, nWordsReady, blockSize, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v6 = getArrayU32FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 4); return v6; } finally { wasm.__wbindgen_add_to_stack_pointer(16); dataWords.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } return { doEncrypt: doEncrypt, doDecrypt: doDecrypt, tripleEncrypt: tripleEncrypt, tripleDecrypt: tripleDecrypt }; } const wasmBytes$3 = generateWasmBytes('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'); const PC1 = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4]; // Permuted Choice 2 constants const PC2 = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32]; // Cumulative bit shift constants const BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; /** * DES block cipher algorithm. */ class DESAlgo extends BlockCipher { static get keySize() { return 64 / 32; } static get ivSize() { return 64 / 32; } static get blockSize() { return 64 / 32; } constructor(...args) { super(...args); this.keySize = 64 / 32; this.ivSize = 64 / 32; this.blockSize = 64 / 32; } static async loadWasm() { if (DESAlgo.wasm) { return DESAlgo.wasm; } DESAlgo.wasm = await loadWasm(wasmBytes$3); return DESAlgo.wasm; } async loadWasm() { return DESAlgo.loadWasm(); } _doReset() { // Shortcuts const key = this._key; const keyWords = key.words; // Select 56 bits according to PC1 const keyBits = []; for (let i = 0; i < 56; i++) { const keyBitPos = PC1[i] - 1; keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1; } // Assemble 16 subkeys this._subKeys = []; const subKeys = this._subKeys; for (let nSubKey = 0; nSubKey < 16; nSubKey++) { // Create subkey subKeys[nSubKey] = []; const subKey = subKeys[nSubKey]; // Shortcut const bitShift = BIT_SHIFTS[nSubKey]; // Select 48 bits according to PC2 for (let i = 0; i < 24; i++) { // Select from the left 28 key bits subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6; // Select from the right 28 key bits subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6; } // Since each subkey is applied to an expanded 32-bit input, // the subkey can be broken into 8 values scaled to 32-bits, // which allows the key to be used without expansion subKey[0] = subKey[0] << 1 | subKey[0] >>> 31; for (let i = 1; i < 7; i++) { subKey[i] >>>= (i - 1) * 4 + 3; } subKey[7] = subKey[7] << 5 | subKey[7] >>> 27; } // Compute inverse subkeys this._invSubKeys = []; const invSubKeys = this._invSubKeys; for (let i = 0; i < 16; i++) { invSubKeys[i] = subKeys[15 - i]; } } _process(doFlush) { if (!DESAlgo.wasm) { throw new Error('WASM is not loaded yet. \'DESAlgo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { if (dataWords.length < nWordsReady) { for (let i = dataWords.length; i < nWordsReady; i++) { dataWords[i] = 0; } } const dataArray = new Uint32Array(dataWords); const ivWords = this.cfg.iv ? this.cfg.iv.words : ''; // Perform concrete-algorithm logic if (this._xformMode == this._ENC_XFORM_MODE) { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = desWasm(DESAlgo.wasm).doEncrypt(this.cfg.mode._name, nWordsReady, blockSize, this.modeProcessBlock, dataArray, this._key.words); } else { this.modeProcessBlock = desWasm(DESAlgo.wasm).doEncrypt(this.cfg.mode._name, nWordsReady, blockSize, ivWords, dataArray, this._key.words); } } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = desWasm(DESAlgo.wasm).doDecrypt(this.cfg.mode._name, nWordsReady, blockSize, this.modeProcessBlock, dataArray, this._key.words); } else { this.modeProcessBlock = desWasm(DESAlgo.wasm).doDecrypt(this.cfg.mode._name, nWordsReady, blockSize, ivWords, dataArray, this._key.words); } } dataWords = Array.from(dataArray); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); // write data back to this._data this._data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.DES.encrypt(message, key, cfg); * const plaintext = CryptoJSW.DES.decrypt(ciphertext, key, cfg); */ _defineProperty(DESAlgo, "wasm", null); const DES = BlockCipher._createHelper(DESAlgo); /** * Triple-DES block cipher algorithm. */ class TripleDESAlgo extends BlockCipher { static get keySize() { return 192 / 32; } static get ivSize() { return 64 / 32; } static get blockSize() { return 64 / 32; } static async loadWasm() { return DESAlgo.loadWasm(); } async loadWasm() { return TripleDESAlgo.loadWasm(); } constructor(...args) { super(...args); this.keySize = 192 / 32; this.ivSize = 64 / 32; this.blockSize = 64 / 32; } /** * do nothing * @private */ _doReset() {} _process(doFlush) { if (!DESAlgo.wasm) { throw new Error('WASM is not loaded yet. \'TripleDESAlgo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; const key = this._key; const keyWords = key.words; // Make sure the key length is valid (64, 128 or >= 192 bit) if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'); } // Extend the key according to the keying options defined in 3DES standard const key1 = keyWords.slice(0, 2); const key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); const key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { const dataArray = new Uint32Array(dataWords); const ivWords = this.cfg.iv ? this.cfg.iv.words : ''; // Perform concrete-algorithm logic if (this._xformMode == this._ENC_XFORM_MODE) { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = desWasm(DESAlgo.wasm).tripleEncrypt(this.cfg.mode._name, nWordsReady, blockSize, this.modeProcessBlock, dataArray, key1, key2, key3); } else { this.modeProcessBlock = desWasm(DESAlgo.wasm).tripleEncrypt(this.cfg.mode._name, nWordsReady, blockSize, ivWords, dataArray, key1, key2, key3); } } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { if (this.modeProcessBlock != undefined) { this.modeProcessBlock = desWasm(DESAlgo.wasm).tripleDecrypt(this.cfg.mode._name, nWordsReady, blockSize, this.modeProcessBlock, dataArray, key1, key2, key3); } else { this.modeProcessBlock = desWasm(DESAlgo.wasm).tripleDecrypt(this.cfg.mode._name, nWordsReady, blockSize, ivWords, dataArray, key1, key2, key3); } } dataWords = Array.from(dataArray); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); // write data back to this._data this._data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.TripleDES.encrypt(message, key, cfg); * const plaintext = CryptoJSW.TripleDES.decrypt(ciphertext, key, cfg); */ const TripleDES = BlockCipher._createHelper(TripleDESAlgo); function rabbitWasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} dataWords * @param {Uint32Array} X * @param {Uint32Array} C * @param {number} b * @returns {number} */ function doProcess(nWordsReady, blockSize, dataWords, X, C, b) { try { var ptr0 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(X, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; var ptr2 = passArray32ToWasm0(C, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; var ret = wasm.doProcess(nWordsReady, blockSize, ptr0, len0, ptr1, len1, ptr2, len2, b); return ret >>> 0; } finally { dataWords.set(getUint32Memory0().subarray(ptr0 / 4, ptr0 / 4 + len0)); wasm.__wbindgen_free(ptr0, len0 * 4); X.set(getUint32Memory0().subarray(ptr1 / 4, ptr1 / 4 + len1)); wasm.__wbindgen_free(ptr1, len1 * 4); C.set(getUint32Memory0().subarray(ptr2 / 4, ptr2 / 4 + len2)); wasm.__wbindgen_free(ptr2, len2 * 4); } } return { doProcess: doProcess }; } const wasmBytes$2 = generateWasmBytes('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'); const C_$1 = []; const G$1 = []; function nextState$1() { // Shortcuts const X = this._X; const C = this._C; // Save old counter values for (let i = 0; i < 8; i++) { C_$1[i] = C[i]; } // Calculate new counter values C[0] = C[0] + 0x4d34d34d + this._b | 0; C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_$1[0] >>> 0 ? 1 : 0) | 0; C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_$1[1] >>> 0 ? 1 : 0) | 0; C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_$1[2] >>> 0 ? 1 : 0) | 0; C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_$1[3] >>> 0 ? 1 : 0) | 0; C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_$1[4] >>> 0 ? 1 : 0) | 0; C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_$1[5] >>> 0 ? 1 : 0) | 0; C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_$1[6] >>> 0 ? 1 : 0) | 0; this._b = C[7] >>> 0 < C_$1[7] >>> 0 ? 1 : 0; // Calculate the g-values for (let i = 0; i < 8; i++) { const gx = X[i] + C[i]; // Construct high and low argument for squaring const ga = gx & 0xffff; const gb = gx >>> 16; // Calculate high and low result of squaring const gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb; const gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0); // High XOR low G$1[i] = gh ^ gl; } // Calculate new state values X[0] = G$1[0] + (G$1[7] << 16 | G$1[7] >>> 16) + (G$1[6] << 16 | G$1[6] >>> 16) | 0; X[1] = G$1[1] + (G$1[0] << 8 | G$1[0] >>> 24) + G$1[7] | 0; X[2] = G$1[2] + (G$1[1] << 16 | G$1[1] >>> 16) + (G$1[0] << 16 | G$1[0] >>> 16) | 0; X[3] = G$1[3] + (G$1[2] << 8 | G$1[2] >>> 24) + G$1[1] | 0; X[4] = G$1[4] + (G$1[3] << 16 | G$1[3] >>> 16) + (G$1[2] << 16 | G$1[2] >>> 16) | 0; X[5] = G$1[5] + (G$1[4] << 8 | G$1[4] >>> 24) + G$1[3] | 0; X[6] = G$1[6] + (G$1[5] << 16 | G$1[5] >>> 16) + (G$1[4] << 16 | G$1[4] >>> 16) | 0; X[7] = G$1[7] + (G$1[6] << 8 | G$1[6] >>> 24) + G$1[5] | 0; } /** * Rabbit stream cipher algorithm */ class RabbitAlgo extends StreamCipher { static get blockSize() { return 128 / 32; } static get ivSize() { return 64 / 32; } constructor(...args) { super(...args); this.blockSize = 128 / 32; this.ivSize = 64 / 32; } static async loadWasm() { if (RabbitAlgo.wasm) { return RabbitAlgo.wasm; } RabbitAlgo.wasm = await loadWasm(wasmBytes$2); return RabbitAlgo.wasm; } async loadWasm() { return RabbitAlgo.loadWasm(); } _doReset() { // Shortcuts const K = this._key.words; const { iv } = this.cfg; // Swap endian for (let i = 0; i < 4; i++) { K[i] = (K[i] << 8 | K[i] >>> 24) & 0x00ff00ff | (K[i] << 24 | K[i] >>> 8) & 0xff00ff00; } // Generate initial state values this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16]; const X = this._X; // Generate initial counter values this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff]; const C = this._C; // Carry bit this._b = 0; // Iterate the system four times for (let i = 0; i < 4; i++) { nextState$1.call(this); } // Modify the counters for (let i = 0; i < 8; i++) { C[i] ^= X[i + 4 & 7]; } // IV setup if (iv) { // Shortcuts const IV = iv.words; const IV_0 = IV[0]; const IV_1 = IV[1]; // Generate four subvectors const i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00; const i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00; const i1 = i0 >>> 16 | i2 & 0xffff0000; const i3 = i2 << 16 | i0 & 0x0000ffff; // Modify counter values C[0] ^= i0; C[1] ^= i1; C[2] ^= i2; C[3] ^= i3; C[4] ^= i0; C[5] ^= i1; C[6] ^= i2; C[7] ^= i3; // Iterate the system four times for (let i = 0; i < 4; i++) { nextState$1.call(this); } } } _process(doFlush) { if (!RabbitAlgo.wasm) { throw new Error('WASM is not loaded yet. \'RabbitAlgo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; const X = this._X; const C = this._C; const b = this._b; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { if (dataWords.length < nWordsReady) { for (let i = dataWords.length; i < nWordsReady; i++) { dataWords[i] = 0; } } const dataArray = new Uint32Array(dataWords); const X_Array = new Uint32Array(X); const C_Array = new Uint32Array(C); // Perform concrete-algorithm logic this._b = rabbitWasm(RabbitAlgo.wasm).doProcess(nWordsReady, blockSize, dataArray, X_Array, C_Array, b); dataWords = Array.from(dataArray); this._X = Array.from(X_Array); this._C = Array.from(C_Array); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); // write data back to this._data this._data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.Rabbit.encrypt(message, key, cfg); * const plaintext = CryptoJSW.Rabbit.decrypt(ciphertext, key, cfg); */ _defineProperty(RabbitAlgo, "wasm", null); const Rabbit = StreamCipher._createHelper(RabbitAlgo); const C_ = []; const G = []; function nextState() { // Shortcuts const X = this._X; const C = this._C; // Save old counter values for (let i = 0; i < 8; i++) { C_[i] = C[i]; } // Calculate new counter values C[0] = C[0] + 0x4d34d34d + this._b | 0; C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0; C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0; C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0; C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0; C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0; C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0; C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0; this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0; // Calculate the g-values for (let i = 0; i < 8; i++) { const gx = X[i] + C[i]; // Construct high and low argument for squaring const ga = gx & 0xffff; const gb = gx >>> 16; // Calculate high and low result of squaring const gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb; const gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0); // High XOR low G[i] = gh ^ gl; } // Calculate new state values X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0; X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0; X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0; X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0; X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0; X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0; X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0; X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0; } /** * Rabbit stream cipher algorithm. * * This is a legacy version that neglected to convert the key to little-endian. * This error doesn't affect the cipher's security, * but it does affect its compatibility with other implementations. */ class RabbitLegacyAlgo extends StreamCipher { static get blockSize() { return 128 / 32; } static get ivSize() { return 64 / 32; } constructor(...args) { super(...args); this.blockSize = 128 / 32; this.ivSize = 64 / 32; } static async loadWasm() { if (RabbitLegacyAlgo.wasm) { return RabbitLegacyAlgo.wasm; } RabbitLegacyAlgo.wasm = await loadWasm(wasmBytes$2); return RabbitLegacyAlgo.wasm; } async loadWasm() { return RabbitLegacyAlgo.loadWasm(); } _doReset() { // Shortcuts const K = this._key.words; const { iv } = this.cfg; // Generate initial state values this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16]; const X = this._X; // Generate initial counter values this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff]; const C = this._C; // Carry bit this._b = 0; // Iterate the system four times for (let i = 0; i < 4; i++) { nextState.call(this); } // Modify the counters for (let i = 0; i < 8; i++) { C[i] ^= X[i + 4 & 7]; } // IV setup if (iv) { // Shortcuts const IV = iv.words; const IV_0 = IV[0]; const IV_1 = IV[1]; // Generate four subvectors const i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00; const i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00; const i1 = i0 >>> 16 | i2 & 0xffff0000; const i3 = i2 << 16 | i0 & 0x0000ffff; // Modify counter values C[0] ^= i0; C[1] ^= i1; C[2] ^= i2; C[3] ^= i3; C[4] ^= i0; C[5] ^= i1; C[6] ^= i2; C[7] ^= i3; // Iterate the system four times for (let i = 0; i < 4; i++) { nextState.call(this); } } } _process(doFlush) { if (!RabbitLegacyAlgo.wasm) { throw new Error('WASM is not loaded yet. \'RabbitLegacyAlgo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; const X = this._X; const C = this._C; const b = this._b; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { if (dataWords.length < nWordsReady) { for (let i = dataWords.length; i < nWordsReady; i++) { dataWords[i] = 0; } } const dataArray = new Uint32Array(dataWords); const X_Array = new Uint32Array(X); const C_Array = new Uint32Array(C); // Perform concrete-algorithm logic this._b = rabbitWasm(RabbitLegacyAlgo.wasm).doProcess(nWordsReady, blockSize, dataArray, X_Array, C_Array, b); dataWords = Array.from(dataArray); this._X = Array.from(X_Array); this._C = Array.from(C_Array); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); // write data back to this._data this._data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.RabbitLegacy.encrypt(message, key, cfg); * const plaintext = CryptoJSW.RabbitLegacy.decrypt(ciphertext, key, cfg); */ _defineProperty(RabbitLegacyAlgo, "wasm", null); const RabbitLegacy = StreamCipher._createHelper(RabbitLegacyAlgo); function rc4Wasm(wasm) { let cachegetUint32Memory0 = null; function getUint32Memory0() { if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachegetUint32Memory0; } let WASM_VECTOR_LEN = 0; function passArray32ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 4); getUint32Memory0().set(arg, ptr / 4); WASM_VECTOR_LEN = arg.length; return ptr; } /** * @param {number} nWordsReady * @param {number} blockSize * @param {Uint32Array} dataWords * @param {Uint32Array} S */ function doProcess(nWordsReady, blockSize, dataWords, S) { try { var ptr0 = passArray32ToWasm0(dataWords, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; var ptr1 = passArray32ToWasm0(S, wasm.__wbindgen_malloc); var len1 = WASM_VECTOR_LEN; wasm.doProcess(nWordsReady, blockSize, ptr0, len0, ptr1, len1); } finally { dataWords.set(getUint32Memory0().subarray(ptr0 / 4, ptr0 / 4 + len0)); wasm.__wbindgen_free(ptr0, len0 * 4); S.set(getUint32Memory0().subarray(ptr1 / 4, ptr1 / 4 + len1)); wasm.__wbindgen_free(ptr1, len1 * 4); } } return { doProcess: doProcess }; } const wasmBytes$1 = generateWasmBytes('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'); function generateKeystreamWord() { // Shortcuts const S = this._S; let i = this._i; let j = this._j; // Generate keystream word let keystreamWord = 0; for (let n = 0; n < 4; n++) { i = (i + 1) % 256; j = (j + S[i]) % 256; // Swap const t = S[i]; S[i] = S[j]; S[j] = t; keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n * 8; } // Update counters this._i = i; this._j = j; return keystreamWord; } /** * RC4 stream cipher algorithm. */ class RC4Algo extends StreamCipher { static get keySize() { return 256 / 32; } static get ivSize() { return 0; } constructor(...args) { super(...args); this.keySize = 256 / 32; this.ivSize = 0; } static async loadWasm() { if (RC4Algo.wasm) { return RC4Algo.wasm; } RC4Algo.wasm = await loadWasm(wasmBytes$1); return RC4Algo.wasm; } async loadWasm() { return RC4Algo.loadWasm(); } _doReset() { // Shortcuts const key = this._key; const keyWords = key.words; const keySigBytes = key.sigBytes; // Init sbox this._S = []; const S = this._S; for (let i = 0; i < 256; i++) { S[i] = i; } // Key setup for (let i = 0, j = 0; i < 256; i++) { const keyByteIndex = i % keySigBytes; const keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 0xff; j = (j + S[i] + keyByte) % 256; // Swap const t = S[i]; S[i] = S[j]; S[j] = t; } // Counters this._j = 0; this._i = this._j; } _process(doFlush) { if (!RC4Algo.wasm) { throw new Error('WASM is not loaded yet. \'RC4Algo.loadWasm\' should be called first'); } let processedWords; // Shortcuts const data = this._data; let dataWords = data.words; const dataSigBytes = data.sigBytes; const blockSize = this.blockSize; const blockSizeBytes = blockSize * 4; // Count blocks ready let nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) { // Round up to include partial blocks nBlocksReady = Math.ceil(nBlocksReady); } else { // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); } // Count words ready const nWordsReady = nBlocksReady * blockSize; // Count bytes ready const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { if (dataWords.length < nWordsReady) { for (let i = dataWords.length; i < nWordsReady; i++) { dataWords[i] = 0; } } const dataArray = new Uint32Array(dataWords); let S = this._S; S[256] = this._i; S[257] = this._j; const S_Array = new Uint32Array(S); // Perform concrete-algorithm logic rc4Wasm(RC4Algo.wasm).doProcess(nWordsReady, blockSize, dataArray, S_Array); dataWords = Array.from(dataArray); S = Array.from(S_Array); this._S = S.slice(0, 256); this._i = S[256]; this._j = S[257]; // Remove processed words processedWords = dataWords.splice(0, nWordsReady); // write data back to this._data this._data.words = dataWords; data.sigBytes -= nBytesReady; } // Return processed words return new WordArray(processedWords, nBytesReady); } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.RC4.encrypt(message, key, cfg); * const plaintext = CryptoJSW.RC4.decrypt(ciphertext, key, cfg); */ _defineProperty(RC4Algo, "wasm", null); const RC4 = StreamCipher._createHelper(RC4Algo); /** * Modified RC4 stream cipher algorithm. */ class RC4DropAlgo extends RC4Algo { constructor(...args) { super(...args); /** * Configuration options. * * @property {number} drop The number of keystream words to drop. Default 192 */ if (!this.cfg.drop) { Object.assign(this.cfg, { drop: 192 }); } } _doReset() { super._doReset.call(this); // Drop for (let i = this.cfg.drop; i > 0; i--) { generateKeystreamWord.call(this); } } } /** * Shortcut functions to the cipher's object interface. * * @example * * const ciphertext = CryptoJSW.RC4Drop.encrypt(message, key, cfg); * const plaintext = CryptoJSW.RC4Drop.decrypt(ciphertext, key, cfg); */ const RC4Drop = StreamCipher._createHelper(RC4DropAlgo); const wasmBytes = generateWasmBytes('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'); let wasm; let globalThis$1; const heap = new Array(32).fill(undefined); heap.push(undefined, null, true, false); function getObject(idx) { return heap[idx]; } let heap_next = heap.length; function dropObject(idx) { if (idx < 36) return; heap[idx] = heap_next; heap_next = idx; } function takeObject(idx) { const ret = getObject(idx); dropObject(idx); return ret; } const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, //fatal: true }); cachedTextDecoder.decode(); let cachedUint8Memory0 = new Uint8Array(); function getUint8Memory0() { if (cachedUint8Memory0.byteLength === 0) { cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachedUint8Memory0; } function getStringFromWasm0(ptr, len) { return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); } 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 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; } let WASM_VECTOR_LEN = 0; const 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); getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); WASM_VECTOR_LEN = buf.length; return ptr; } let len = arg.length; let ptr = malloc(len); 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); const view = getUint8Memory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); offset += ret.written; } WASM_VECTOR_LEN = offset; return ptr; } let cachedInt32Memory0 = new Int32Array(); function getInt32Memory0() { if (cachedInt32Memory0.byteLength === 0) { cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachedInt32Memory0; } function isLikeNone(x) { return x === undefined || x === null; } function passArray8ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 1); getUint8Memory0().set(arg, ptr / 1); WASM_VECTOR_LEN = arg.length; return ptr; } function getArrayU8FromWasm0(ptr, len) { return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); } function handleError(f, args) { try { return f.apply(this, args); } catch (e) { wasm.__wbindgen_exn_store(addHeapObject(e)); } } /** */ class RsaPrivate { static __wrap(ptr) { const obj = Object.create(RsaPrivate.prototype); obj.ptr = ptr; return obj; } __destroy_into_raw() { const ptr = this.ptr; this.ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_rsaprivate_free(ptr); } /** * @param {number | undefined} bits * @param {string | undefined} input_key_pem */ constructor(bits, input_key_pem) { var ptr0 = isLikeNone(input_key_pem) ? 0 : passStringToWasm0(input_key_pem, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; const ret = wasm.rsaprivate_new(!isLikeNone(bits), isLikeNone(bits) ? 0 : bits, ptr0, len0); return RsaPrivate.__wrap(ret); } /** * @param {Uint8Array} ciphertext * @param {string} padding_scheme * @param {string} hash_function * @returns {Uint8Array} */ decrypt(ciphertext, padding_scheme, hash_function) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); const ptr0 = passArray8ToWasm0(ciphertext, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(padding_scheme, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ptr2 = passStringToWasm0(hash_function, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; wasm.rsaprivate_decrypt(retptr, this.ptr, ptr0, len0, ptr1, len1, ptr2, len2); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v3 = getArrayU8FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 1); return v3; } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } /** * @param {Uint8Array} digest * @param {string} padding_scheme * @param {string} hash_function * @returns {Uint8Array} */ sign(digest, padding_scheme, hash_function) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); const ptr0 = passArray8ToWasm0(digest, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(padding_scheme, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ptr2 = passStringToWasm0(hash_function, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; wasm.rsaprivate_sign(retptr, this.ptr, ptr0, len0, ptr1, len1, ptr2, len2); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v3 = getArrayU8FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 1); return v3; } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } /** * @param {string} fmt * @returns {any} */ getPrivateKeyContent(fmt) { const ptr0 = passStringToWasm0(fmt, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.rsaprivate_getPrivateKeyContent(this.ptr, ptr0, len0); return takeObject(ret); } /** * @returns {string} */ getPublicKeyPem() { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.rsaprivate_getPublicKeyPem(retptr, this.ptr); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; return getStringFromWasm0(r0, r1); } finally { wasm.__wbindgen_add_to_stack_pointer(16); wasm.__wbindgen_free(r0, r1); } } } /** */ class RsaPublic { static __wrap(ptr) { const obj = Object.create(RsaPublic.prototype); obj.ptr = ptr; return obj; } __destroy_into_raw() { const ptr = this.ptr; this.ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_rsapublic_free(ptr); } /** * @param {string} input_key_pem */ constructor(input_key_pem) { const ptr0 = passStringToWasm0(input_key_pem, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.rsapublic_new(ptr0, len0); return RsaPublic.__wrap(ret); } /** * @param {Uint8Array} msg * @param {string} padding_scheme * @param {string} hash_function * @returns {Uint8Array} */ encrypt(msg, padding_scheme, hash_function) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); const ptr0 = passArray8ToWasm0(msg, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(padding_scheme, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ptr2 = passStringToWasm0(hash_function, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; wasm.rsapublic_encrypt(retptr, this.ptr, ptr0, len0, ptr1, len1, ptr2, len2); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var v3 = getArrayU8FromWasm0(r0, r1).slice(); wasm.__wbindgen_free(r0, r1 * 1); return v3; } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } /** * @param {Uint8Array} digest * @param {Uint8Array} sig * @param {string} padding_scheme * @param {string} hash_function * @returns {boolean} */ verify(digest, sig, padding_scheme, hash_function) { const ptr0 = passArray8ToWasm0(digest, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passArray8ToWasm0(sig, wasm.__wbindgen_malloc); const len1 = WASM_VECTOR_LEN; const ptr2 = passStringToWasm0(padding_scheme, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; const ptr3 = passStringToWasm0(hash_function, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len3 = WASM_VECTOR_LEN; const ret = wasm.rsapublic_verify(this.ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3); return ret !== 0; } /** * @returns {number} */ getKeySize() { const ret = wasm.rsapublic_getKeySize(this.ptr); return ret >>> 0; } /** * @param {string} fmt * @returns {any} */ getPublicKeyContent(fmt) { const ptr0 = passStringToWasm0(fmt, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.rsapublic_getPublicKeyContent(this.ptr, ptr0, len0); return takeObject(ret); } } function getImports() { const imports = {}; imports.wbg = {}; imports.wbg.__wbindgen_object_drop_ref = function (arg0) { takeObject(arg0); }; imports.wbg.__wbindgen_string_new = function (arg0, arg1) { const ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); }; imports.wbg.__wbg_new_693216e109162396 = function () { const ret = new Error(); return addHeapObject(ret); }; imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function (arg0, arg1) { const ret = getObject(arg1).stack; const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; imports.wbg.__wbg_error_09919627ac0992f5 = function (arg0, arg1) { try { console.error(getStringFromWasm0(arg0, arg1)); } finally { wasm.__wbindgen_free(arg0, arg1); } }; imports.wbg.__wbindgen_number_new = function (arg0) { const ret = arg0; return addHeapObject(ret); }; imports.wbg.__wbindgen_object_clone_ref = function (arg0) { const ret = getObject(arg0); return addHeapObject(ret); }; imports.wbg.__wbindgen_is_undefined = function (arg0) { const ret = getObject(arg0) === undefined; return ret; }; imports.wbg.__wbindgen_is_object = function (arg0) { const val = getObject(arg0); const ret = typeof val === 'object' && val !== null; return ret; }; imports.wbg.__wbg_randomFillSync_91e2b39becca6147 = function () { return handleError(function (arg0, arg1, arg2) { getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2)); }, arguments); }; imports.wbg.__wbg_getRandomValues_b14734aa289bc356 = function () { return handleError(function (arg0, arg1) { getObject(arg0).getRandomValues(getObject(arg1)); }, arguments); }; imports.wbg.__wbg_process_e56fd54cf6319b6c = function (arg0) { const ret = getObject(arg0).process; return addHeapObject(ret); }; imports.wbg.__wbg_versions_77e21455908dad33 = function (arg0) { const ret = getObject(arg0).versions; return addHeapObject(ret); }; imports.wbg.__wbg_node_0dd25d832e4785d5 = function (arg0) { const ret = getObject(arg0).node; return addHeapObject(ret); }; imports.wbg.__wbindgen_is_string = function (arg0) { const ret = typeof getObject(arg0) === 'string'; return ret; }; imports.wbg.__wbg_static_accessor_NODE_MODULE_26b231378c1be7dd = function () { const ret = module; return addHeapObject(ret); }; imports.wbg.__wbg_require_0db1598d9ccecb30 = function () { return handleError(function (arg0, arg1, arg2) { const ret = getObject(arg0).require(getStringFromWasm0(arg1, arg2)); return addHeapObject(ret); }, arguments); }; imports.wbg.__wbg_crypto_b95d7173266618a9 = function (arg0) { const ret = getObject(arg0).crypto; return addHeapObject(ret); }; imports.wbg.__wbg_msCrypto_5a86d77a66230f81 = function (arg0) { const ret = getObject(arg0).msCrypto; return addHeapObject(ret); }; imports.wbg.__wbg_new_ee1a3da85465d621 = function () { const ret = new Array(); return addHeapObject(ret); }; imports.wbg.__wbg_newnoargs_971e9a5abe185139 = function (arg0, arg1) { const ret = new Function(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }; imports.wbg.__wbg_call_33d7bcddbbfa394a = function () { return handleError(function (arg0, arg1) { const ret = getObject(arg0).call(getObject(arg1)); return addHeapObject(ret); }, arguments); }; imports.wbg.__wbg_self_fd00a1ef86d1b2ed = function () { return handleError(function () { const ret = self.self; return addHeapObject(ret); }, arguments); }; imports.wbg.__wbg_window_6f6e346d8bbd61d7 = function () { return handleError(function () { const ret = window.window; return addHeapObject(ret); }, arguments); }; imports.wbg.__wbg_globalThis_3348936ac49df00a = function () { return handleError(function () { const ret = globalThis$1.globalThis; return addHeapObject(ret); }, arguments); }; imports.wbg.__wbg_global_67175caf56f55ca9 = function () { return handleError(function () { const ret = global.global; return addHeapObject(ret); }, arguments); }; imports.wbg.__wbg_set_64cc39858b2ec3f1 = function (arg0, arg1, arg2) { getObject(arg0)[arg1 >>> 0] = takeObject(arg2); }; imports.wbg.__wbg_buffer_34f5ec9f8a838ba0 = function (arg0) { const ret = getObject(arg0).buffer; return addHeapObject(ret); }; imports.wbg.__wbg_new_cda198d9dbc6d7ea = function (arg0) { const ret = new Uint8Array(getObject(arg0)); return addHeapObject(ret); }; imports.wbg.__wbg_set_1a930cfcda1a8067 = function (arg0, arg1, arg2) { getObject(arg0).set(getObject(arg1), arg2 >>> 0); }; imports.wbg.__wbg_length_51f19f73d6d9eff3 = function (arg0) { const ret = getObject(arg0).length; return ret; }; imports.wbg.__wbg_newwithlength_66e5530e7079ea1b = function (arg0) { const ret = new Uint8Array(arg0 >>> 0); return addHeapObject(ret); }; imports.wbg.__wbg_subarray_270ff8dd5582c1ac = function (arg0, arg1, arg2) { const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; imports.wbg.__wbindgen_debug_string = function (arg0, arg1) { const ret = debugString(getObject(arg1)); const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; imports.wbg.__wbindgen_throw = function (arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }; imports.wbg.__wbindgen_memory = function () { const ret = wasm.memory; return addHeapObject(ret); }; return imports; } async function init() { await WebAssembly.instantiate(wasmBytes, getImports()).then(wasmInstance => { wasm = wasmInstance.instance.exports; }); cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); } const RSA_PADDING_OAEP = 'OAEP'; const RSA_PADDING_PSS = 'PSS'; const RSA_PADDING_PKCS1V15 = 'PKCS1V15'; const RSA_PRIVATE_KEY_START = '-----BEGIN PRIVATE KEY-----'; const RSA_PUBLIC_KEY_START = '-----BEGIN PUBLIC KEY-----'; const DEFAULT_RSA_KEY_SIZE = 2048; const DEFAULT_IS_PUBLIC_KEY = false; const DEFAULT_RSA_ENCRYPT_PADDING = RSA_PADDING_OAEP; const DEFAULT_RSA_SIGN_PADDING = RSA_PADDING_PSS; const DEFAULT_RSA_HASH_ALGO = 'SHA256'; // TODO: what if a new hasher is added? const RSA_HASH_ALGOS = new Map([['MD5', MD5], ['SHA1', SHA1], ['SHA224', SHA224], ['SHA256', SHA256], ['SHA384', SHA384], ['SHA512', SHA512], ['RIPEMD160', RIPEMD160]]); // TODO: should extend AsymmetricCipher(class not created yet) class RSAAlgo { /** * Update the key of RSA. The input can be a path to the private/public key file, or the key size in bits * * @param keyFilePathOrKeySize {string | number} the key file path or key size in bytes, set as 2048 bits as default * @param isPublicKey true if the input key file is a public key file */ updateRsaKey(keyFilePathOrKeySize = DEFAULT_RSA_KEY_SIZE, isPublicKey = DEFAULT_IS_PUBLIC_KEY) { parameterCheck(keyFilePathOrKeySize, 'RSA keyFilePathOrKeySize', ['number', 'string']); if (keyFilePathOrKeySize === RSAAlgo.keyFilePathOrKeySize && isPublicKey == RSAAlgo.isPublicKey) { // do not update keys if nothing changed return; } RSAAlgo.keyFilePathOrKeySize = keyFilePathOrKeySize; RSAAlgo.isPublicKey = isPublicKey; RSAAlgo.keyChanged = true; } static async loadWasm() { if (RSAAlgo.wasm) { return RSAAlgo.wasm; } // load wasm of available hashers [...RSA_HASH_ALGOS.values()].map(async hash => await hash.loadWasm()); await init(); RSAAlgo.wasm = true; return RSAAlgo.wasm; } async loadWasm() { return RSAAlgo.loadWasm(); } /** * Constructor of RSAAlgo * * @param keyFilePathOrKeySize {string | number} the key file path or key size in bytes, set as 2048 bits as default * @param cfg {object} the config for rsa */ constructor(keyFilePathOrKeySize, cfg) { this.resetConfig(); this.updateRsaKey(keyFilePathOrKeySize); this.updateConfig(cfg); } /** * Reset configs to default values */ resetConfig() { this.updateRsaKey(DEFAULT_RSA_KEY_SIZE, DEFAULT_IS_PUBLIC_KEY); this.updateEncryptPadding(DEFAULT_RSA_ENCRYPT_PADDING); this.updateSignPadding(DEFAULT_RSA_SIGN_PADDING); this.updateHashAlgo(DEFAULT_RSA_HASH_ALGO); } /** * Update the config for rsa. The configs of RSA are: * encryptPadding: encrypt padding mode, values may be 'OAEP'(default)/'PKCS1V15' * signPadding: sign padding mode, values may be 'PSS'(default)/'PKCS1V15' * hashAlgo: hasher for encryption and sign, values may be 'sha256'(default)/'md5'/'sha1'/'sha224'/'sha384'/'sha512'/'ripemd160' * key: can be path to the RSA key file(string), the content of RSA key(string), or the size of the RSA key(number) * isPublicKey: true if the cfg.key is the RSA public key * * @param cfg {object} the config for rsa */ updateConfig(cfg) { if (cfg !== undefined) { if (cfg.encryptPadding !== undefined && typeof cfg.encryptPadding === 'string') { this.updateEncryptPadding(cfg.encryptPadding.toUpperCase()); } if (cfg.signPadding !== undefined && typeof cfg.signPadding === 'string') { this.updateSignPadding(cfg.signPadding.toUpperCase()); } if (cfg.hashAlgo !== undefined && typeof cfg.hashAlgo === 'string') { this.updateHashAlgo(cfg.hashAlgo.toUpperCase()); } if (cfg.key !== undefined) { this.updateRsaKey(cfg.key, cfg.isPublicKey); } } } /** * init keys from key file or key size */ initKeys() { if (!RSAAlgo.wasm) { throw new Error('WASM is not loaded yet. \'RSAAlgo.loadWasm\' should be called first'); } // only update keys if key has been changed, and private/public key is specified if (!RSAAlgo.keyChanged && (this.RsaPrivate !== undefined || this.RsaPublic != undefined)) { return; } if (RSAAlgo.keyFilePathOrKeySize === undefined) { this.initFromKeySize(DEFAULT_RSA_KEY_SIZE); RSAAlgo.keyChanged = false; return; } if (typeof RSAAlgo.keyFilePathOrKeySize === 'number') { this.initFromKeySize(RSAAlgo.keyFilePathOrKeySize); RSAAlgo.keyChanged = false; return; } if (typeof RSAAlgo.keyFilePathOrKeySize === 'string') { if (this.isRsaKeyContent(RSAAlgo.keyFilePathOrKeySize)) { this.initFromKeyContent(RSAAlgo.keyFilePathOrKeySize, RSAAlgo.isPublicKey); } else { this.initFromKeyFile(RSAAlgo.keyFilePathOrKeySize, RSAAlgo.isPublicKey); } RSAAlgo.keyChanged = false; return; } // set the key size to default value this.initFromKeySize(DEFAULT_RSA_KEY_SIZE); RSAAlgo.keyChanged = false; } /** * Return true if the given string is a rsa key content * * @param content the input content * @returns {boolean} true if the given string is a rsa key content */ isRsaKeyContent(content) { if (content.startsWith(RSA_PRIVATE_KEY_START) || content.startsWith(RSA_PUBLIC_KEY_START)) { return true; } return false; } /** * Init rsa keys with given key content * * @param keyContent the input key content * @param isPublicKey true if the input content is a public content */ initFromKeyContent(keyContent, isPublicKey = DEFAULT_IS_PUBLIC_KEY) { isPublicKey ? this.initWithPublicKey(new RsaPublic(keyContent)) : this.initWithPrivateKey(new RsaPrivate(null, keyContent)); } /** * Init rsa keys with given key file * @param path the input key file path * @param isPublicKey true if the input key file is a public key file */ initFromKeyFile(path, isPublicKey = DEFAULT_IS_PUBLIC_KEY) { this.errorIfInBrowser(); if (!RSAAlgo.wasm) { throw new Error('WASM is not loaded yet. \'RSAAlgo.loadWasm\' should be called first'); } const fs = require('fs'); if (!fs.existsSync(path)) { throw new Error('Can not find the key file in path :\n' + path); } const keyContent = fs.readFileSync(path, { encoding: 'utf-8', flag: 'r' }); this.initFromKeyContent(keyContent, isPublicKey); } /** * Init rsa keys with given key size * @param bits key size in bytes */ initFromKeySize(bits) { if (!RSAAlgo.wasm) { throw new Error('WASM is not loaded yet. \'RSAAlgo.loadWasm\' should be called first'); } this.initWithPrivateKey(new RsaPrivate(bits)); } /** * Update encrypt padding of RSA. * Valid values are 'OAEP', 'PKCS1V15' * * @param encryptPadding new padding mode of RSA encrypt */ updateEncryptPadding(encryptPadding) { parameterCheck(encryptPadding, 'RSA encryption padding mode', 'string', RSA_PADDING_OAEP, RSA_PADDING_PKCS1V15); this.encryptPadding = encryptPadding; } /** * Update sign padding of RSA. * Valid values are 'PSS', 'PKCS1V15' * * @param signPadding new padding mode of RSA sign */ updateSignPadding(signPadding) { parameterCheck(signPadding, 'RSA sign padding mode', 'string', RSA_PADDING_PSS, RSA_PADDING_PKCS1V15); this.signPadding = signPadding; } /** * Update hash algorithm of RSA. * Valid values are 'MD5', 'SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512', 'RIPEMD160' * * @param hashAlgo new hash algorithm of RSA */ updateHashAlgo(hashAlgo) { parameterCheck(hashAlgo, 'RSA hasher', 'string', 'MD5', 'SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512', 'RIPEMD160'); this.hashAlgo = hashAlgo; } /** * Initial RSA keys using public key * * @param publicKey the pointer to the new RSA public key */ initWithPublicKey(publicKey) { if (!RSAAlgo.wasm) { throw new Error('WASM is not loaded yet. \'RSAAlgo.loadWasm\' should be called first'); } this.RsaPublic = publicKey; this.RsaPrivate = null; } /** * Initial RSA keys using private key * * @param publicKey the pointer to the new RSA private key */ initWithPrivateKey(privateKey) { if (!RSAAlgo.wasm) { throw new Error('WASM is not loaded yet. \'RSAAlgo.loadWasm\' should be called first'); } if (privateKey === undefined) { // create a new DEFAULT_RSA_KEY_SIZE bit RSA key pair if no parameter is specified privateKey = new RsaPrivate(DEFAULT_RSA_KEY_SIZE); } const publicKey = new RsaPublic(privateKey.getPublicKeyPem()); this.RsaPrivate = privateKey; this.RsaPublic = publicKey; } /** * Encrypt the given message * * @param {string | Uint8Array} msg the original message * @param {object} cfg RSA configurations * @returns {Uint8Array} the encrypted message */ encrypt(msg, cfg) { this.updateConfig(cfg); this.initKeys(); const msgInBytes = this.strToBytes(msg); this.errorIfExceedSizeLimit(msgInBytes, 'encrypt'); return this.RsaPublic.encrypt(msgInBytes, this.encryptPadding, this.hashAlgo); } /** * Decrypt the given message * * @param {Uint8Array} msgEncrypted the encrypted message * @param {object} cfg RSA configurations * @returns {Uint8Array} the decrypted message */ decrypt(msgEncrypted, cfg) { this.updateConfig(cfg); this.errorIfNoPrivateInstance(); this.initKeys(); let result; try { result = this.RsaPrivate.decrypt(msgEncrypted, this.encryptPadding, this.hashAlgo); } catch (e) { console.error('Error occurred when decrypting: ', e); return null; } return result; } /** * Generate the digest of the input message according to the specified hash algorithm * * @param {string} msg input message * @param {object} cfg RSA configurations * @returns {Uint8Array} the digest of input message */ digest(msg, cfg) { this.updateConfig(cfg); let digestAlgo = RSA_HASH_ALGOS.get(this.hashAlgo); const digestWords = digestAlgo(msg); const digestUint32Array = new Uint32Array(digestWords.words).slice(0, digestWords.sigBytes / 4); const digest = new Uint8Array(digestUint32Array.buffer); return digest; } /** * RSA sign * * @param {string | Uint8Array} digest the digest of the message * @param {object} cfg RSA configurations * @returns {Uint8Array} the rsa signature */ sign(digest, cfg) { this.updateConfig(cfg); this.initKeys(); const digestInBytes = this.strToBytes(digest); this.errorIfNoPrivateInstance(digestInBytes, 'sign'); return this.RsaPrivate.sign(digestInBytes, this.signPadding, this.hashAlgo); } /** * Verify the given RSA signature * * @param {Uint8Array} digest the digest of the message * @param {Uint8Array} signature the signature signed using private key * @param {object} cfg RSA configurations * @returns {boolean} true if signature is valid */ verify(digest, signature, cfg) { this.updateConfig(cfg); this.initKeys(); return this.RsaPublic.verify(digest, signature, this.signPadding, this.hashAlgo); } /** * generate the key file in specific directory * * @param {string} keyType valid values are 'pairs', 'private', 'public'. Default to be 'pairs' * @param {string} fileFmt file type of the generated key file. Valid values are 'pem', 'der'. Default to be 'pem' * @param {string} fileName the name of the generated key file * @param {string} dir the dir of the generated key file */ generateKeyFile(keyType = 'pairs', fileFmt = 'pem', fileName = 'key', dir = './keys') { this.initKeys(); this.errorIfInBrowser(); // key type and file fmt should be case insensitive keyType = keyType.toLowerCase(); fileFmt = fileFmt.toLowerCase(); switch (keyType) { case 'pairs': this.generateKeyFile('private', fileFmt, fileName + '_private', dir); this.generateKeyFile('public', fileFmt, fileName + '_public', dir); return; case 'private': this.errorIfNoPrivateInstance(); break; case 'public': // no operations break; default: throw TypeError('wrong key type provided. Should be \'pairs\', \'private\' or \'public\''); } let keyPath = `${dir}/${fileName}.${fileFmt}`; // get key content based on fileFmt let keyContent = this.getKeyContent(keyType, fileFmt); // TODO: .der file cannot be verified by openssl // TODO: .der file key content is not TypedArray now const fs = require('fs'); // create dir if not existed if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } // write key file fs.writeFileSync(keyPath, keyContent); } /** * Get current key type * @returns {string} key type, may be 'public' or 'private' */ getKeyType() { this.initKeys(); return this.RsaPrivate ? 'private' : 'public'; } /** * Get current key size * * @returns {number} key size in bytes, e.g. 128 for key pair of 1024 bits */ getKeySize() { this.initKeys(); return this.RsaPublic.getKeySize(); } /** * Get key content based on key type * * @param keyType the type of key files. Should be "private" or "public" * @param keyFmt the encoding scheme. Should be "pem" or "der" * @returns {string} the key content */ getKeyContent(keyType, keyFmt = 'pem') { this.initKeys(); if (keyType == 'private') { this.errorIfNoPrivateInstance(); return this.RsaPrivate.getPrivateKeyContent(keyFmt); } if (keyType == 'public') { return this.RsaPublic.getPublicKeyContent(keyFmt); } throw TypeError('Key type should be private or public'); } // TODO: should be moved to utils /** * String to Uint8Array * @param val * @returns {Uint8Array|*} */ strToBytes(val) { if (typeof val === 'string') { let encoder = new TextEncoder(); return encoder.encode(val); } return val; } /** * Throws if the input (message/digest) length exceed the limit decided by key size and padding scheme * * @param input the input message/digest * @param op the operation mode. Should be 'encrypt' or 'sign' */ errorIfExceedSizeLimit(input, op = 'encrypt') { const keySize = this.getKeySize(); // 256 by default const hashAlgoOutputSize = RSA_HASH_ALGOS.get(this.hashAlgo).outputSize; // 32 by default let inputLimit; switch (op) { case 'encrypt': if (this.encryptPadding === RSA_PADDING_OAEP) { inputLimit = keySize - 2 * hashAlgoOutputSize - 2; // 190 by default } else { // PKCS1V15 inputLimit = keySize - 11; } if (input.length > inputLimit) { throw new Error(`The input message is too long (${input.length} bytes). The maximum length is ${inputLimit}`); } break; case 'sign': if (this.signPadding === RSA_PADDING_PSS) { inputLimit = Math.floor((keySize * 8 - 9) / 2 / 8); // 127 by default } else { // PKCS1V15 inputLimit = keySize - 11; } if (input.length > inputLimit) { throw new Error(`The input message is too long (${input.length} bytes). The maximum length is ${inputLimit}`); } break; default: throw new Error('op should be \'encrypt\' or \'sign\''); } } /** * Throws if private key is not instantiated */ errorIfNoPrivateInstance() { if (this.getKeyType() === 'public') { throw TypeError('Private key or public key has not been instantiated'); } } /** * Throws if node-only function is called in browser */ errorIfInBrowser() { if (typeof window !== 'undefined' && typeof window.document !== 'undefined') { throw Error('This function is not supported in browser'); } } } /** * Shortcut of RSAAlgo with an instantiated 2048 bits key pair * @name RSA * @type {RSAAlgo} * * @example * // encrypt/decrypt * const msg = "Secret"; * const msgEnc = C.RSA.encrypt(msg); * const msgDec = C.RSA.decrypt(msgEnc); * * // sign/verify * const digest = C.RSA.digest(msg); * const signature = RSA.sign(dig); * const isVerified = RSA.verify(digest, signature); */ _defineProperty(RSAAlgo, "wasm", null); _defineProperty(RSAAlgo, "keyFilePathOrKeySize", null); _defineProperty(RSAAlgo, "isPublicKey", false); _defineProperty(RSAAlgo, "keyChanged", false); const RSA = { // TODO: extract this into a helper class rsa: new RSAAlgo(), async loadWasm() { await RSAAlgo.loadWasm(); }, resetConfig() { this.rsa.resetConfig(); }, updateConfig(cfg) { this.rsa.updateConfig(cfg); }, updateRsaKey(keyFilePathOrKeySize, isPublicKey) { this.rsa.updateRsaKey(keyFilePathOrKeySize, isPublicKey); }, encrypt(message, cfg) { return this.rsa.encrypt(message, cfg); }, decrypt(ciphertext, cfg) { return this.rsa.decrypt(ciphertext, cfg); }, digest(message, cfg) { return this.rsa.digest(message, cfg); }, sign(digest, cfg) { return this.rsa.sign(digest, cfg); }, verify(digest, signature, cfg) { return this.rsa.verify(digest, signature, cfg); }, generateKeyFile(keyType, fileFmt, fileName, dir) { return this.rsa.generateKeyFile(keyType, fileFmt, fileName, dir); }, getKeyType() { return this.rsa.getKeyType(); }, getKeySize() { return this.rsa.getKeySize(); }, getKeyContent(keyType, keyFmt) { return this.rsa.getKeyContent(keyType, keyFmt); } }; function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { const _words = words; let keystream; // Shortcut const iv = this._iv; // Generate keystream if (iv) { keystream = iv.slice(0); // Remove IV for subsequent blocks this._iv = undefined; } else { keystream = this._prevBlock; } cipher.encryptBlock(keystream, 0); // Encrypt for (let i = 0; i < blockSize; i++) { _words[offset + i] ^= keystream[i]; } } /** * Cipher Feedback block mode. */ class CFB extends BlockCipherMode { static Encryptor() {} } _defineProperty(CFB, "_name", 'CFB'); CFB.Encryptor = class extends CFB { processBlock(words, offset) { // Shortcuts const cipher = this._cipher; const { blockSize } = cipher; generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); // Remember this block to use with next block this._prevBlock = words.slice(offset, offset + blockSize); } }; CFB.Decryptor = class extends CFB { processBlock(words, offset) { // Shortcuts const cipher = this._cipher; const { blockSize } = cipher; // Remember this block to use with next block const thisBlock = words.slice(offset, offset + blockSize); generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); // This block becomes the previous block this._prevBlock = thisBlock; } }; class CTR extends BlockCipherMode {} _defineProperty(CTR, "_name", 'CTR'); CTR.Encryptor = class extends CTR { processBlock(words, offset) { const _words = words; // Shortcuts const cipher = this._cipher; const { blockSize } = cipher; const iv = this._iv; let counter = this._counter; // Generate keystream if (iv) { this._counter = iv.slice(0); counter = this._counter; // Remove IV for subsequent blocks this._iv = undefined; } const keystream = counter.slice(0); cipher.encryptBlock(keystream, 0); // Increment counter counter[blockSize - 1] = counter[blockSize - 1] + 1 | 0; // Encrypt for (let i = 0; i < blockSize; i++) { _words[offset + i] ^= keystream[i]; } } }; CTR.Decryptor = CTR.Encryptor; const incWord = word => { let _word = word; if ((word >> 24 & 0xff) === 0xff) { // overflow let b1 = word >> 16 & 0xff; let b2 = word >> 8 & 0xff; let b3 = word & 0xff; if (b1 === 0xff) { // overflow b1 b1 = 0; if (b2 === 0xff) { b2 = 0; if (b3 === 0xff) { b3 = 0; } else { b3++; } } else { b2++; } } else { b1++; } _word = 0; _word += b1 << 16; _word += b2 << 8; _word += b3; } else { _word += 0x01 << 24; } return _word; }; const incCounter = counter => { const _counter = counter; _counter[0] = incWord(_counter[0]); if (_counter[0] === 0) { // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 _counter[1] = incWord(_counter[1]); } return _counter; }; /** @preserve * Counter block mode compatible with Dr Brian Gladman fileenc.c * derived from CryptoJS.mode.CTR * Jan Hruby jhruby.web@gmail.com */ class CTRGladman extends BlockCipherMode {} _defineProperty(CTRGladman, "_name", 'CTRGladman'); CTRGladman.Encryptor = class extends CTRGladman { processBlock(words, offset) { const _words = words; // Shortcuts const cipher = this._cipher; const { blockSize } = cipher; const iv = this._iv; let counter = this._counter; // Generate keystream if (iv) { this._counter = iv.slice(0); counter = this._counter; // Remove IV for subsequent blocks this._iv = undefined; } incCounter(counter); const keystream = counter.slice(0); cipher.encryptBlock(keystream, 0); // Encrypt for (let i = 0; i < blockSize; i++) { _words[offset + i] ^= keystream[i]; } } }; CTRGladman.Decryptor = CTRGladman.Encryptor; class ECB extends BlockCipherMode {} _defineProperty(ECB, "_name", 'ECB'); ECB.Encryptor = class extends ECB { processBlock(words, offset) { this._cipher.encryptBlock(words, offset); } }; ECB.Decryptor = class extends ECB { processBlock(words, offset) { this._cipher.decryptBlock(words, offset); } }; class OFB extends BlockCipherMode {} _defineProperty(OFB, "_name", 'OFB'); OFB.Encryptor = class extends OFB { processBlock(words, offset) { const _words = words; // Shortcuts const cipher = this._cipher; const { blockSize } = cipher; const iv = this._iv; let keystream = this._keystream; // Generate keystream if (iv) { this._keystream = iv.slice(0); keystream = this._keystream; // Remove IV for subsequent blocks this._iv = undefined; } cipher.encryptBlock(keystream, 0); // Encrypt for (let i = 0; i < blockSize; i++) { _words[offset + i] ^= keystream[i]; } } }; OFB.Decryptor = OFB.Encryptor; /** * ANSI X.923 padding strategy. */ const AnsiX923 = { pad(data, blockSize) { const _data = data; // Shortcuts const dataSigBytes = _data.sigBytes; const blockSizeBytes = blockSize * 4; // Count padding bytes const nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; // Compute last byte position const lastBytePos = dataSigBytes + nPaddingBytes - 1; // Pad _data.clamp(); _data.words[lastBytePos >>> 2] |= nPaddingBytes << 24 - lastBytePos % 4 * 8; _data.sigBytes += nPaddingBytes; }, unpad(data) { const _data = data; // Get number of padding bytes from last byte const nPaddingBytes = _data.words[_data.sigBytes - 1 >>> 2] & 0xff; // Remove padding _data.sigBytes -= nPaddingBytes; } }; /** * ISO 10126 padding strategy. */ const Iso10126 = { pad(data, blockSize) { // Shortcut const blockSizeBytes = blockSize * 4; // Count padding bytes const nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; // Pad data.concat(WordArray.random(nPaddingBytes - 1)).concat(new WordArray([nPaddingBytes << 24], 1)); }, unpad(data) { const _data = data; // Get number of padding bytes from last byte const nPaddingBytes = _data.words[_data.sigBytes - 1 >>> 2] & 0xff; // Remove padding _data.sigBytes -= nPaddingBytes; } }; /** * Zero padding strategy. */ const ZeroPadding = { pad(data, blockSize) { const _data = data; // Shortcut const blockSizeBytes = blockSize * 4; // Pad _data.clamp(); _data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes); }, unpad(data) { const _data = data; // Shortcut const dataWords = _data.words; // Unpad for (let i = _data.sigBytes - 1; i >= 0; i--) { if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff) { _data.sigBytes = i + 1; break; } } } }; /** * ISO/IEC 9797-1 Padding Method 2. */ const Iso97971 = { pad(data, blockSize) { // Add 0x80 byte data.concat(new WordArray([0x80000000], 1)); // Zero pad the rest ZeroPadding.pad(data, blockSize); }, unpad(data) { const _data = data; // Remove zero padding ZeroPadding.unpad(_data); // Remove one more byte -- the 0x80 byte _data.sigBytes--; } }; /** * A noop padding strategy. */ const NoPadding = { pad() {}, unpad() {} }; const HexFormatter = { /** * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. * * @param {CipherParams} cipherParams The cipher params object. * * @return {string} The hexadecimally encoded string. * * @static * * @example * * const hexString = CryptoJSW.format.Hex.stringify(cipherParams); */ stringify(cipherParams) { return cipherParams.ciphertext.toString(Hex); }, /** * Converts a hexadecimally encoded ciphertext string to a cipher params object. * * @param {string} input The hexadecimally encoded string. * * @return {CipherParams} The cipher params object. * * @static * * @example * * const cipherParams = CryptoJSW.format.Hex.parse(hexString); */ parse(input) { const ciphertext = Hex.parse(input); return new CipherParams({ ciphertext }); } }; var index = { lib: { Base, WordArray, BufferedBlockAlgorithm, Hasher, Cipher, StreamCipher, BlockCipherMode, BlockCipher, CipherParams, SerializableCipher, PasswordBasedCipher }, x64: { Word: X64Word, WordArray: X64WordArray }, enc: { Hex, Latin1, Utf8, Utf16, Utf16BE, Utf16LE, Base64 }, algo: { HMAC, MD5: MD5Algo, SHA1: SHA1Algo, SHA224: SHA224Algo, SHA256: SHA256Algo, SHA384: SHA384Algo, SHA512: SHA512Algo, SHA3: SHA3Algo, RIPEMD160: RIPEMD160Algo, PBKDF2: PBKDF2Algo, EvpKDF: EvpKDFAlgo, AES: AESAlgo, Blowfish: BlowfishAlgo, DES: DESAlgo, TripleDES: TripleDESAlgo, Rabbit: RabbitAlgo, RabbitLegacy: RabbitLegacyAlgo, RC4: RC4Algo, RC4Drop: RC4DropAlgo, RSA: RSAAlgo }, mode: { CBC, CFB, CTR, CTRGladman, ECB, OFB }, pad: { Pkcs7, AnsiX923, Iso10126, Iso97971, NoPadding, ZeroPadding }, format: { OpenSSL: OpenSSLFormatter, Hex: HexFormatter }, kdf: { OpenSSL: OpenSSLKdf }, loadAllWasm, MD5, HmacMD5, SHA1, HmacSHA1, SHA224, HmacSHA224, SHA256, HmacSHA256, SHA384, HmacSHA384, SHA512, HmacSHA512, SHA3, HmacSHA3, RIPEMD160, HmacRIPEMD160, PBKDF2, EvpKDF, AES, Blowfish, DES, TripleDES, Rabbit, RabbitLegacy, RC4, RC4Drop, RSA }; return index; }));