diff --git a/.releaserc.json b/.releaserc.json index 1648574..e9e134e 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -6,6 +6,9 @@ "releaseRules": { "patch": { "include": [":bento:", ":recycle:"] + }, + "minor": { + "include": [":pushpin:"] } } } diff --git a/.vscode/settings.json b/.vscode/settings.json index b943dbc..d07f4a7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "deno.enable": true + "deno.enable": true, + "deno.suggest.imports.hosts": { + "https://deno.land": false + } } \ No newline at end of file diff --git a/lib/_wasm/build.ts b/lib/_wasm/build.ts index 30d67ce..c12e1d2 100644 --- a/lib/_wasm/build.ts +++ b/lib/_wasm/build.ts @@ -1,43 +1,44 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -// adopted from https://deno.land/std/hash/_wasm/build.ts -import { encode as base64Encode } from "https://deno.land/std/encoding/base64.ts"; +// adopted from https://deno.land/std@0.103.0/hash/_wasm/build.ts +import { encode as base64Encode } from "https://deno.land/std@0.103.0/encoding/base64.ts"; // 1. build wasm async function buildWasm(path: string): Promise { - const cmd = [ - "wasm-pack", - "build", - "--target", - "web", - "--release", - "-d", - path, - ]; - const builder = Deno.run({ cmd }); - const status = await builder.status(); + const cmd = [ + "wasm-pack", + "build", + "--target", + "web", + "--release", + "-d", + path, + ]; + const builder = Deno.run({ cmd }); + const status = await builder.status(); - if (!status.success) { - console.error(`Failed to build wasm: ${status.code}`); - Deno.exit(1); - } + if (!status.success) { + console.error(`Failed to build wasm: ${status.code}`); + Deno.exit(1); + } } // 2. encode wasm async function encodeWasm(wasmPath: string): Promise { - const wasm = await Deno.readFile(`${wasmPath}/scrypt_wasm_bg.wasm`); - return base64Encode(wasm); + const wasm = await Deno.readFile(`${wasmPath}/scrypt_wasm_bg.wasm`); + return base64Encode(wasm); } // 3. generate script async function generate(wasm: string, output: string): Promise { - const initScript = await Deno.readTextFile(`${output}/scrypt_wasm.js`); - const denoHashScript = "/* eslint-disable */\n" + - "//deno-fmt-ignore-file\n" + - `import * as base64 from "https://deno.land/std/encoding/base64.ts";` + - `export const source = base64.decode("${wasm}");` + - initScript; + const initScript = await Deno.readTextFile(`${output}/scrypt_wasm.js`); + const denoHashScript = + "/* eslint-disable */\n" + + "//deno-fmt-ignore-file\n" + + `import * as base64 from "https://deno.land/std@0.103.0/encoding/base64.ts";` + + `export const source = base64.decode("${wasm}");` + + initScript; - await Deno.writeFile("wasm.js", new TextEncoder().encode(denoHashScript)); + await Deno.writeFile("wasm.js", new TextEncoder().encode(denoHashScript)); } const OUTPUT_DIR = "./out"; diff --git a/lib/_wasm/wasm.js b/lib/_wasm/wasm.js index a86c7f1..5489975 100644 --- a/lib/_wasm/wasm.js +++ b/lib/_wasm/wasm.js @@ -1,11 +1,17 @@ /* eslint-disable */ //deno-fmt-ignore-file -import * as base64 from "https://deno.land/std/encoding/base64.ts";export const source = base64.decode("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IgVxBEAgAigCACICQQRqKAIAQXhxIAFHDQEgAiEDDAILQZyawAAgBCAFcjYCACACIAA2AgAMAwsgAUEAQRkgA0EBdmtBH3EgA0EfRht0IQQDQCACIARBHXZBBHFqQRBqIgUoAgAiA0UNAiAEQQF0IQQgAyICQQRqKAIAQXhxIAFHDQALCyADKAIIIgEgADYCDCADIAA2AgggAEEYakEANgIAIAAgAzYCDCAAIAE2AggPCyAFIAA2AgALIABBGGogAjYCACAAIAA2AgwgACAANgIIDwsgAUEDdiICQQN0QaCawABqIQECf0GYmsAAKAIAIgNBASACQR9xdCICcQRAIAEoAggMAQtBmJrAACACIANyNgIAIAELIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIICwuKBgEKfyMAQTBrIgMkACADQSRqIAE2AgAgA0EDOgAoIANCgICAgIAENwMIIAMgADYCICADQQA2AhggA0EANgIQAkACQAJAIAIoAggiBARAIAIoAgAhByACKAIEIgggAkEMaigCACIGIAYgCEsbIgtFDQEgAkEUaigCACEGIAIoAhAhCSAAIAcoAgAgBygCBCABKAIMEQIADQIgB0EMaiECQQEhBQJAAkADQCADIARBBGooAgA2AgwgAyAEQRxqLQAAOgAoIAMgBEEIaigCADYCCCAEQRhqKAIAIQBBACEKQQAhAQJAAkACQCAEQRRqKAIAQQFrDgIAAgELIAAgBk8NAyAAQQN0IAlqIgwoAgRBE0cNASAMKAIAKAIAIQALQQEhAQsgAyAANgIUIAMgATYCECAEQRBqKAIAIQACQAJAAkAgBEEMaigCAEEBaw4CAAIBCyAAIAZPDQQgAEEDdCAJaiIBKAIEQRNHDQEgASgCACgCACEAC0EBIQoLIAMgADYCHCADIAo2AhggBCgCACIAIAZJBEAgCSAAQQN0aiIAKAIAIANBCGogACgCBBEAAA0GIAUgC08NBSACQXxqIQAgAigCACEBIAJBCGohAiAEQSBqIQQgBUEBaiEFIAMoAiAgACgCACABIAMoAiQoAgwRAgBFDQEMBgsLIAAgBkHYmMAAECIACyAAIAZB6JjAABAiAAsgACAGQeiYwAAQIgALIAIoAgAhByACKAIEIgggAkEUaigCACIEIAQgCEsbIgZFDQAgAigCECEEIAAg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A0YNASADRQRAIAJBARA4IQEMAgsgASADIAIQNiEBDAELIAJBARA4IQELIAFFDQIgACABNgIAIABBBGogAjYCAAsPCxA6AAsgAkEBED0AC6EBAQJ/IABBBGooAgAiAyABSQRAAkACQAJAAkAgAUEASQ0AIANBAXQiAiABIAIgAUsbIgFBCCABQQhLGyICQQBIDQAgACgCAEEAIAMbIgEEQCACIANGDQQgAw0CIAJBARA4IgENBAwDCyACQQEQOCIBRQ0CDAMLEDoACyABIAMgAhA2IgENAQsgAkEBED0ACyAAIAE2AgAgAEEEaiACNgIACwuLAQEDfyMAQYABayIDJAAgACgCACECQQAhAANAIAAgA2pB/wBqIAJBD3EiBEEwciAEQdcAaiAEQQpJGzoAACAAQX9qIQAgAkEEdiICDQALIABBgAFqIgJBgQFPBEAgAkGAAUHolsAAECQACyABQfiWwABBAiAAIANqQYABakEAIABrEA0gA0GAAWokAAuKAQEDfyMAQYABayIDJAAgACgCACECQQAhAANAIAAgA2pB/wBqIAJBD3EiBEEwciAEQTdqIARBCkkbOgAAIABBf2ohACACQQR2IgINAAsgAEGAAWoiAkGBAU8EQCACQYABQeiWwAAQJAALIAFB+JbAAEECIAAgA2pBgAFqQQAgAGsQDSADQYABaiQAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakESNgIAIANCAjcCDCADQcCWwAA2AgggA0ESNgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhAxAAtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBEjYCACADQgI3AgwgA0GgmcAANgIIIANBEjYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQMQALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQRI2AgAgA0ICNwIMIANB1JnAADYCCCADQRI2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEDEAC1YBAn8jAEEgayICJAAgAUEcaigCACEDIAEoAhggAkEYaiAAQRBqKQIANwMAIAJBEGogAEEIaikCADcDACACIAApAgA3AwggAyACQQhqEAwgAkEgaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBjJTAACACQQhqEAwgAkEgaiQAC1sBAX8jAEEwayIDJAAgAyABNgIMIAMgADYCCCADQSRqQQE2AgAgA0IBNwIUIANB9JXAADYCECADQRQ2AiwgAyADQShqNgIgIAMgA0EIajYCKCADQRBqIAIQMQALVAECfyABKAIAIQIgAUEANgIAAkAgAgRAIAEoAgQhA0EIQQQQOCIBRQ0BIAEgAzYCBCABIAI2AgAgAEGMiMAANgIEIAAgATYCAA8LAAtBCEEEED0AC0oAAn8gAUGAgMQARwRAQQEgACgCGCABIABBHGooAgAoAhARAAANARoLIAJFBEBBAA8LIAAoAhggAiADIABBHGooAgAoAgwRAgALC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9JXAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEDEAC2ABA38jAEEQayIBJAAgACgCDCICRQRAQbSUwABBK0H4lMAAECoACyAAKAIIIgNFBEBBtJTAAEErQYiVwAAQKgALIAFBADYCBCABIAM2AgAgAUGYlcAAIAAoAgggAhAcAAszAQF/IAIEQCAAIQMDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAALLAACQCAAQXxNBEAgAEUEQEEEIQAMAgsgACAAQX1JQQJ0EDgiAA0BCwALIAALNAECfyAAKAIAIgAgAhAeIABBCGoiAygCACIEIAAoAgBqIAEgAhAsGiADIAIgBGo2AgBBAAs7ACAAKAIAIQAgAS0AAEEQcUEEdkUEQCABLQAAQSBxQQV2RQRAIAAgARA8DwsgACABECEPCyAAIAEQIAssAQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakH4h8AAQQAgAhAcAAs0AQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkH8lcAANgIEIAJB9JXAADYCACACECsACyEAIAEEQANAIABBADoAACAAQQFqIQAgAUF/aiIBDQALCwsgAQF/AkAgACgCACIBRQ0AIABBBGooAgBFDQAgARAGCwsgAQF/AkAgACgCBCIBRQ0AIABBCGooAgBFDQAgARAGCwsdACABKAIARQRAAAsgAEGMiMAANgIEIAAgATYCAAsIACAAIAIQDgsLACABBEAgABAGCwsZAAJ/QQggAUkEQCABIAAQEAwBCyAAEAELCxAAIAEgACgCACAAKAIEEAkLEQBB05XAAEERQeSVwAAQKgALDgAgACgCABoDQAwACwALCwAgADUCACABEBULGQAgACABQYiawAAoAgAiAEEHIAAbEQEAAAsMAELkrsKFl5uliBELDABCz8m0sfOY6Mk+Cw0AQqmAic2l69Dprn8LAwABCwMAAQsL6xkBAEGAgMAAC+EZVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5QzpcVXNlcnNcb3BsaWtcLnJ1c3R1cFx0b29sY2hhaW5zXG5pZ2h0bHkteDg2XzY0LXBjLXdpbmRvd3MtbXN2Y1xsaWIvcnVzdGxpYi9zcmMvcnVzdFxzcmMvbGliY29yZS9tYWNyb3MvbW9kLnJzACQAEABvAAAACgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBjID4gMEM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXHBia2RmMi5ycwAAuwAQAGMAAABUAAAABQAAAFBCS0RGMiBzaXplIGxpbWl0IGV4Y2VlZGVkLgC7ABAAYwAAAGIAAAAPAAAAuwAQAGMAAABqAAAAGgAAAEM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXGNyeXB0b3V0aWwucnNOdW1lcmljIG92ZXJmbG93IG9jY3VyZWQubAEQAGcAAAAWAQAABQAAAGwBEABnAAAAzQEAAAEAAABhc3NlcnRpb24gZmFpbGVkOiBpZHggPj0gc2VsZi5idWZmZXJfaWR4YXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5idWZmZXJfaWR4ID09IDY0AEAAAABhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBgAABgAhAALQAAAI0CEAAMAAAAmQIQAAEAAABDOlxVc2Vyc1xvcGxpa1wuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xydXN0LWNyeXB0by13YXNtLTAuMy4xXHNyY1xzaGEyLnJzAAAAtAIQAGEAAABgAQAABQAAAGFzc2VydGlvbiBmYWlsZWQ6ICFzZWxmLmZpbmlzaGVktAIQAGEAAAAqBAAACQAAALQCEABhAAAAWgQAABsAAAC0AhAAYQAAAFsEAAAbAAAAtAIQAGEAAABcBAAAGwAAALQCEABhAAAAXQQAABsAAAC0AhAAYQAAAF4EAAAbAAAAtAIQAGEAAABfBAAAGwAAALQCEABhAAAAYAQAABsAAAC0AhAAYQAAAGEEAAAbAAAAZ+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FsCAAAACAAAAAQAAAADAAAABAAAAAIAAAAIAAAABAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhc2VsZi5maW5pc2hlZGFzc2VydGlvbiBmYWlsZWQ6IGRzdC5sZW4oKSA+PSBzcmMubGVuKClDOlxVc2Vyc1xvcGxpa1wuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xydXN0LWNyeXB0by13YXNtLTAuMy4xXHNyY1xjcnlwdG91dGlsLnJzAGQEEABnAAAAwgAAAAUAAABDOlxVc2Vyc1xvcGxpa1wuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xydXN0LWNyeXB0by13YXNtLTAuMy4xXHNyY1xobWFjLnJzAAAA3AQQAGEAAAAtAAAAHAAAANwEEABhAAAAVAAAAAkAAABDOlxVc2Vyc1xvcGxpa1wucnVzdHVwXHRvb2xjaGFpbnNcbmlnaHRseS14ODZfNjQtcGMtd2luZG93cy1tc3ZjXGxpYi9ydXN0bGliL3NyYy9ydXN0XHNyYy9saWJjb3JlL21hY3Jvcy9tb2QucnNhc3NlcnRpb24gZmFpbGVkOiBjaHVua19zaXplICE9IDBgBRAAbwAAAAoAAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogZHN0LmxlbigpID49IHNyYy5sZW4oKUM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXGNyeXB0b3V0aWwucnMAKAYQAGcAAADCAAAABQAAAEM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXHNjcnlwdC5ycwCgBhAAYwAAAGMAAAASAAAAoAYQAGMAAABrAAAAHgAAAKAGEABjAAAAiAAAABEAAACgBhAAYwAAAHsAAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogciA+IDAAoAYQAGMAAACjAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHAgPiAwAKAGEABjAAAApAAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBsb2dfbiA+IDAAoAYQAGMAAAClAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IChsb2dfbiBhcyB1c2l6ZSkgPCBzaXplX29mOjo8dXNpemU+KCkgKiA4AKAGEABjAAAApgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiAobG9nX24gYXMgdXNpemUpIDwgciAqIDE2AKAGEABjAAAAwwAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiByICogcCA8IDB4NDAwMDAwMDCgBhAAYwAAAMkAAAAJAAAASW52YWxpZCBTY3J5cHQgcGFyYW1ldGVycy4AAKAGEABjAAAAvQAAABUAAACgBhAAYwAAALcAAAAVAAAAoAYQAGMAAACxAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dHB1dC5sZW4oKSA+IDAAAKAGEABjAAAA4QAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBDOlxVc2Vyc1xvcGxpa1wucnVzdHVwXHRvb2xjaGFpbnNcbmlnaHRseS14ODZfNjQtcGMtd2luZG93cy1tc3ZjXGxpYi9ydXN0bGliL3NyYy9ydXN0XHNyYy9saWJjb3JlL21hY3Jvcy9tb2QucnM1CRAAbwAAABAAAAAJAAAAYDogAPwIEAAtAAAAKQkQAAwAAAC0CRAAAwAAAGRlc3RpbmF0aW9uIGFuZCBzb3VyY2Ugc2xpY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHPQCRAANAAAAAgAAAAEAAAABAAAAAkAAAAKAAAACwAAAAgAAAAAAAAAAQAAAAwAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnMAAF8KEAAXAAAAggEAAA8AAABfChAAFwAAAIMBAAAPAAAADQAAABAAAAAEAAAADgAAAA8AAAAQAAAADAAAAAQAAAARAAAAc3JjL2xpYmFsbG9jL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvd7wKEAAXAAAARAIAAAUAAAD0ChAAAAAAABUAAAAAAAAAAQAAABYAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAADAsQACAAAAAsCxAAEgAAAHNyYy9saWJjb3JlL2ZtdC9udW0ucnMAAFALEAAWAAAAVAAAABQAAAAweDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5c3JjL2xpYmNvcmUvZm10L21vZC5yc0IMEAAWAAAATAQAABEAAABCDBAAFgAAAFYEAAAkAAAAaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHgMEAAGAAAAfgwQACIAAABzbGljZSBpbmRleCBzdGFydHMgYXQgIGJ1dCBlbmRzIGF0IACwDBAAFgAAAMYMEAANAIMBCXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMlMS40NS4wLW5pZ2h0bHkgKDBhYTY3NTFjMSAyMDIwLTA1LTIwKQZ3YWxydXMGMC4xNy4wDHdhc20tYmluZGdlbhIwLjIuNjMgKGRmODA5ZGY5YSk="); +import * as base64 from "https://deno.land/std@0.103.0/encoding/base64.ts"; +export const source = base64.decode( + "AGFzbQEAAAABbxBgAn9/AX9gAn9/AGADf39/AX9gA39/fwBgAX8AYAR/f39/AGABfwF+YAF/AX9gAABgBX9/f39/AGAGf39/f39/AGAHf39/f39/fwBgCX9/f39/f39/fwBgBH9/f38Bf2AFf39/f38Bf2ACfn8BfwNEQwEHBQUKBQQBCwIBAQIOAAMACQEABA8BDAMFAQUFAQEBAAADAwMAAAMBDQMEAgcCAAMBAQQEAQIBAAAIAAABBgYGBAEEBQFwARcXBQMBABEGCQF/AUGAgMAACwc5BAZtZW1vcnkCAAZzY3J5cHQAFxFfX3diaW5kZ2VuX21hbGxvYwAtD19fd2JpbmRnZW5fZnJlZQA3CRwBAEEBCxYvQSg1PiVCQS4TJkA0FhozPzw7OUFACur8AUOzOgFGfyAAIAEoAjgiAiABKAI8IgNBGXcgA0EDdnMgA0EOd3NqIAEoAiQiGyABKAIAIg0gASgCBCIKQRl3IApBA3ZzIApBDndzamogAkEPdyACQQ13cyACQQp2c2oiBCABKAIcIhMgASgCICIUQRl3IBRBA3ZzIBRBDndzamogASgCFCIXIAEoAhgiMkEZdyAyQQN2cyAyQQ53c2ogAmogASgCMCIcIAEoAgwiCyABKAIQIhhBGXcgGEEDdnMgGEEOd3NqaiABKAIoIi8gASgCCCIMQRl3IAxBA3ZzIAxBDndzIApqaiADQQ93IANBDXdzIANBCnZzaiIFQQ93IAVBDXdzIAVBCnZzaiIHQQ93IAdBDXdzIAdBCnZzaiIGQQ93IAZBDXdzIAZBCnZzaiIJaiABKAI0IjNBGXcgM0EDdnMgM0EOd3MgHGogBmogASgCLCIwQRl3IDBBA3ZzIDBBDndzIC9qIAdqIBtBA3YgG0EZd3MgG0EOd3MgFGogBWogE0EDdiATQRl3cyATQQ53cyAyaiADaiAXQQN2IBdBGXdzIBdBDndzIBhqIDNqIAtBA3YgC0EZd3MgC0EOd3MgDGogMGogBEEPdyAEQQ13cyAEQQp2c2oiCEEPdyAIQQ13cyAIQQp2c2oiDkEPdyAOQQ13cyAOQQp2c2oiEEEPdyAQQQ13cyAQQQp2c2oiEUEPdyARQQ13cyARQQp2c2oiEkEPdyASQQ13cyASQQp2c2oiFUEPdyAVQQ13cyAVQQp2c2oiFkEZdyAWQQN2cyAWQQ53cyACQQN2IAJBGXdzIAJBDndzIDNqIBBqIBxBA3YgHEEZd3MgHEEOd3MgMGogDmogL0EDdiAvQRl3cyAvQQ53cyAbaiAIaiAJQQ93IAlBDXdzIAlBCnZzaiIZQQ93IBlBDXdzIBlBCnZzaiIaQQ93IBpBDXdzIBpBCnZzaiIdaiAEQQN2IARBGXdzIARBDndzIANqIBFqIB1BD3cgHUENd3MgHUEKdnNqIh4gCUEDdiAJQRl3cyAJQQ53cyAQamogBkEDdiAGQRl3cyAGQQ53cyAOaiAdaiAHQQN2IAdBGXdzIAdBDndzIAhqIBpqIAVBA3YgBUEZd3MgBUEOd3MgBGogGWogFkEPdyAWQQ13cyAWQQp2c2oiH0EPdyAfQQ13cyAfQQp2c2oiIEEPdyAgQQ13cyAgQQp2c2oiIUEPdyAhQQ13cyAhQQp2c2oiImogFUEDdiAVQRl3cyAVQQ53cyAaaiAhaiASQQN2IBJBGXdzIBJBDndzIBlqICBqIBFBA3YgEUEZd3MgEUEOd3MgCWogH2ogEEEDdiAQQRl3cyAQQQ53cyAGaiAWaiAOQQN2IA5BGXdzIA5BDndzIAdqIBVqIAhBA3YgCEEZd3MgCEEOd3MgBWogEmogHkEPdyAeQQ13cyAeQQp2c2oiI0EPdyAjQQ13cyAjQQp2c2oiJEEPdyAkQQ13cyAkQQp2c2oiJUEPdyAlQQ13cyAlQQp2c2oiJkEPdyAmQQ13cyAmQQp2c2oiJ0EPdyAnQQ13cyAnQQp2c2oiKEEPdyAoQQ13cyAoQQp2c2oiKUEZdyApQQN2cyApQQ53cyAdQQN2IB1BGXdzIB1BDndzIBVqICVqIBpBA3YgGkEZd3MgGkEOd3MgEmogJGogGUEDdiAZQRl3cyAZQQ53cyARaiAjaiAiQQ93ICJBDXdzICJBCnZzaiIqQQ93ICpBDXdzICpBCnZzaiIrQQ93ICtBDXdzICtBCnZzaiIsaiAeQQN2IB5BGXdzIB5BDndzIBZqICZqICxBD3cgLEENd3MgLEEKdnNqIi0gIkEDdiAiQRl3cyAiQQ53cyAlamogIUEDdiAhQRl3cyAhQQ53cyAkaiAsaiAgQQN2ICBBGXdzICBBDndzICNqICtqIB9BA3YgH0EZd3MgH0EOd3MgHmogKmogKUEPdyApQQ13cyApQQp2c2oiLkEPdyAuQQ13cyAuQQp2c2oiNEEPdyA0QQ13cyA0QQp2c2oiNUEPdyA1QQ13cyA1QQp2c2oiNmogKEEDdiAoQRl3cyAoQQ53cyAraiA1aiAnQQN2ICdBGXdzICdBDndzICpqIDRqICZBA3YgJkEZd3MgJkEOd3MgImogLmogJUEDdiAlQRl3cyAlQQ53cyAhaiApaiAkQQN2ICRBGXdzICRBDndzICBqIChqICNBA3YgI0EZd3MgI0EOd3MgH2ogJ2ogLUEPdyAtQQ13cyAtQQp2c2oiMUEPdyAxQQ13cyAxQQp2c2oiN0EPdyA3QQ13cyA3QQp2c2oiOEEPdyA4QQ13cyA4QQp2c2oiOUEPdyA5QQ13cyA5QQp2c2oiOkEPdyA6QQ13cyA6QQp2c2oiPUEPdyA9QQ13cyA9QQp2c2oiPiA6IDggMSAsICogISAfIBUgESAOIAQgHCAUIBggACgCHCJFIAAoAhAiGEEadyAYQRV3cyAYQQd3c2ogACgCGCI/IAAoAhQiO3MgGHEgP3NqIA1qQZjfqJQEaiINIAAoAgwiRmoiAWogCyAYaiAMIDtqIAogP2ogASAYIDtzcSA7c2ogAUEadyABQRV3cyABQQd3c2pBkYndiQdqIkAgACgCCCJBaiIKIAEgGHNxIBhzaiAKQRp3IApBFXdzIApBB3dzakHP94Oue2oiQiAAKAIEIjxqIgsgASAKc3EgAXNqIAtBGncgC0EVd3MgC0EHd3NqQaW3181+aiJDIAAoAgAiAWoiDCAKIAtzcSAKc2ogDEEadyAMQRV3cyAMQQd3c2pB24TbygNqIkQgPCBBcSABIDxxIkcgASBBcXNzIAFBHncgAUETd3MgAUEKd3NqIA1qIg1qIg9qIAwgE2ogCyAyaiAKIBdqIA8gCyAMc3EgC3NqIA9BGncgD0EVd3MgD0EHd3NqQfGjxM8FaiIyIA1BHncgDUETd3MgDUEKd3MgDSABIDxzcSBHc2ogQGoiCmoiEyAMIA9zcSAMc2ogE0EadyATQRV3cyATQQd3c2pBpIX+kXlqIkAgASAKcSAKIA1xIgsgASANcXNzIApBHncgCkETd3MgCkEKd3NqIEJqIgxqIhQgDyATc3EgD3NqIBRBGncgFEEVd3MgFEEHd3NqQdW98dh6aiJCIAxBHncgDEETd3MgDEEKd3MgDCAKIA1zcSALc2ogQ2oiC2oiDSATIBRzcSATc2ogDUEadyANQRV3cyANQQd3c2pBmNWewH1qIkMgRCAKIAtxIAsgDHEiRCAKIAxxc3MgC0EedyALQRN3cyALQQp3c2pqIg9qIhdqIA0gMGogFCAvaiATIBtqIBcgDSAUc3EgFHNqIBdBGncgF0EVd3MgF0EHd3NqQYG2jZQBaiIbIA9BHncgD0ETd3MgD0EKd3MgDyALIAxzcSBEc2ogMmoiCmoiDCANIBdzcSANc2ogDEEadyAMQRV3cyAMQQd3c2pBvovGoQJqIhwgCiALcSAKIA9xIhQgCyAPcXNzIApBHncgCkETd3MgCkEKd3NqIEBqIg1qIhMgDCAXc3EgF3NqIBNBGncgE0EVd3MgE0EHd3NqQcP7sagFaiIXIA1BHncgDUETd3MgDUEKd3MgDSAKIA9zcSAUc2ogQmoiC2oiDyAMIBNzcSAMc2ogD0EadyAPQRV3cyAPQQd3c2pB9Lr5lQdqIi8gCiALcSALIA1xIjAgCiANcXNzIAtBHncgC0ETd3MgC0EKd3NqIENqIgpqIhRqIAMgD2ogAiATaiAMIDNqIBQgDyATc3EgE3NqIBRBGncgFEEVd3MgFEEHd3NqQf7j+oZ4aiITIApBHncgCkETd3MgCkEKd3MgCiALIA1zcSAwc2ogG2oiAmoiBCAPIBRzcSAPc2ogBEEadyAEQRV3cyAEQQd3c2pBp43w3nlqIhsgAiALcSACIApxIgMgCiALcXNzIAJBHncgAkETd3MgAkEKd3NqIBxqIgtqIgwgBCAUc3EgFHNqIAxBGncgDEEVd3MgDEEHd3NqQfTi74x8aiIUIAtBHncgC0ETd3MgC0EKd3MgCyACIApzcSADc2ogF2oiA2oiCiAEIAxzcSAEc2ogCkEadyAKQRV3cyAKQQd3c2pBwdPtpH5qIhcgAiADcSADIAtxIhwgAiALcXNzIANBHncgA0ETd3MgA0EKd3NqIC9qIg1qIg9qIAcgCmogCCAMaiAEIAVqIA8gCiAMc3EgDHNqIA9BGncgD0EVd3MgD0EHd3NqQYaP+f1+aiIMIA1BHncgDUETd3MgDUEKd3MgDSADIAtzcSAcc2ogE2oiAmoiBCAKIA9zcSAKc2ogBEEadyAEQRV3cyAEQQd3c2pBxruG/gBqIgsgAiADcSACIA1xIgggAyANcXNzIAJBHncgAkETd3MgAkEKd3NqIBtqIgVqIgcgBCAPc3EgD3NqIAdBGncgB0EVd3MgB0EHd3NqQczDsqACaiIPIAVBHncgBUETd3MgBUEKd3MgBSACIA1zcSAIc2ogFGoiA2oiCCAEIAdzcSAEc2ogCEEadyAIQRV3cyAIQQd3c2pB79ik7wJqIg0gAiADcSADIAVxIhMgAiAFcXNzIANBHncgA0ETd3MgA0EKd3NqIBdqIg5qIgpqIAggCWogByAQaiAEIAZqIAogByAIc3EgB3NqIApBGncgCkEVd3MgCkEHd3NqQaqJ0tMEaiIQIA5BHncgDkETd3MgDkEKd3MgDiADIAVzcSATc2ogDGoiAmoiBCAIIApzcSAIc2ogBEEadyAEQRV3cyAEQQd3c2pB3NPC5QVqIhEgAiADcSACIA5xIgYgAyAOcXNzIAJBHncgAkETd3MgAkEKd3NqIAtqIgVqIgcgBCAKc3EgCnNqIAdBGncgB0EVd3MgB0EHd3NqQdqR5rcHaiIKIAVBHncgBUETd3MgBUEKd3MgBSACIA5zcSAGc2ogD2oiA2oiBiAEIAdzcSAEc2ogBkEadyAGQRV3cyAGQQd3c2pB0qL5wXlqIg4gAiADcSADIAVxIgsgAiAFcXNzIANBHncgA0ETd3MgA0EKd3NqIA1qIglqIghqIAYgGmogByASaiAEIBlqIAggBiAHc3EgB3NqIAhBGncgCEEVd3MgCEEHd3NqQe2Mx8F6aiISIAlBHncgCUETd3MgCUEKd3MgCSADIAVzcSALc2ogEGoiAmoiBCAGIAhzcSAGc2ogBEEadyAEQRV3cyAEQQd3c2pByM+MgHtqIhAgAiADcSACIAlxIgYgAyAJcXNzIAJBHncgAkETd3MgAkEKd3NqIBFqIgVqIgcgBCAIc3EgCHNqIAdBGncgB0EVd3MgB0EHd3NqQcf/5fp7aiIRIAVBHncgBUETd3MgBUEKd3MgBSACIAlzcSAGc2ogCmoiA2oiBiAEIAdzcSAEc2ogBkEadyAGQRV3cyAGQQd3c2pB85eAt3xqIhUgDiACIANxIAMgBXEiDiACIAVxc3MgA0EedyADQRN3cyADQQp3c2pqIglqIghqIAYgHmogByAWaiAEIB1qIAggBiAHc3EgB3NqIAhBGncgCEEVd3MgCEEHd3NqQceinq19aiIWIAlBHncgCUETd3MgCUEKd3MgCSADIAVzcSAOc2ogEmoiAmoiBCAGIAhzcSAGc2ogBEEadyAEQRV3cyAEQQd3c2pB0capNmoiDiACIANxIAIgCXEiBiADIAlxc3MgAkEedyACQRN3cyACQQp3c2ogEGoiBWoiByAEIAhzcSAIc2ogB0EadyAHQRV3cyAHQQd3c2pB59KkoQFqIhAgBUEedyAFQRN3cyAFQQp3cyAFIAIgCXNxIAZzaiARaiIDaiIGIAQgB3NxIARzaiAGQRp3IAZBFXdzIAZBB3dzakGFldy9AmoiESACIANxIAMgBXEiEiACIAVxc3MgA0EedyADQRN3cyADQQp3c2ogFWoiCWoiCGogBiAkaiAHICBqIAQgI2ogCCAGIAdzcSAHc2ogCEEadyAIQRV3cyAIQQd3c2pBuMLs8AJqIhUgCUEedyAJQRN3cyAJQQp3cyAJIAMgBXNxIBJzaiAWaiICaiIEIAYgCHNxIAZzaiAEQRp3IARBFXdzIARBB3dzakH827HpBGoiEiACIANxIAIgCXEiBiADIAlxc3MgAkEedyACQRN3cyACQQp3c2ogDmoiBWoiByAEIAhzcSAIc2ogB0EadyAHQRV3cyAHQQd3c2pBk5rgmQVqIg4gBUEedyAFQRN3cyAFQQp3cyAFIAIgCXNxIAZzaiAQaiIDaiIGIAQgB3NxIARzaiAGQRp3IAZBFXdzIAZBB3dzakHU5qmoBmoiECARIAIgA3EgAyAFcSIRIAIgBXFzcyADQR53IANBE3dzIANBCndzamoiCWoiCGogBiAmaiAHICJqIAQgJWogCCAGIAdzcSAHc2ogCEEadyAIQRV3cyAIQQd3c2pBu5WoswdqIhYgCUEedyAJQRN3cyAJQQp3cyAJIAMgBXNxIBFzaiAVaiICaiIEIAYgCHNxIAZzaiAEQRp3IARBFXdzIARBB3dzakGukouOeGoiESACIANxIAIgCXEiBiADIAlxc3MgAkEedyACQRN3cyACQQp3c2ogEmoiBWoiByAEIAhzcSAIc2ogB0EadyAHQRV3cyAHQQd3c2pBhdnIk3lqIhIgBUEedyAFQRN3cyAFQQp3cyAFIAIgCXNxIAZzaiAOaiIDaiIGIAQgB3NxIARzaiAGQRp3IAZBFXdzIAZBB3dzakGh0f+VemoiDiAQIAIgA3EgAyAFcSIQIAIgBXFzcyADQR53IANBE3dzIANBCndzamoiCWoiCGogBiAoaiAHICtqIAQgJ2ogCCAGIAdzcSAHc2ogCEEadyAIQRV3cyAIQQd3c2pBy8zpwHpqIhUgCUEedyAJQRN3cyAJQQp3cyAJIAMgBXNxIBBzaiAWaiICaiIEIAYgCHNxIAZzaiAEQRp3IARBFXdzIARBB3dzakHwlq6SfGoiECACIANxIAIgCXEiBiADIAlxc3MgAkEedyACQRN3cyACQQp3c2ogEWoiBWoiByAEIAhzcSAIc2ogB0EadyAHQRV3cyAHQQd3c2pBo6Oxu3xqIhEgBUEedyAFQRN3cyAFQQp3cyAFIAIgCXNxIAZzaiASaiIDaiIGIAQgB3NxIARzaiAGQRp3IAZBFXdzIAZBB3dzakGZ0MuMfWoiEiAOIAIgA3EgAyAFcSIOIAIgBXFzcyADQR53IANBE3dzIANBCndzamoiCWoiCGogBiAuaiAHIC1qIAQgKWogCCAGIAdzcSAHc2ogCEEadyAIQRV3cyAIQQd3c2pBpIzktH1qIhYgCUEedyAJQRN3cyAJQQp3cyAJIAMgBXNxIA5zaiAVaiICaiIEIAYgCHNxIAZzaiAEQRp3IARBFXdzIARBB3dzakGF67igf2oiDiACIANxIAIgCXEiBiADIAlxc3MgAkEedyACQRN3cyACQQp3c2ogEGoiBWoiByAEIAhzcSAIc2ogB0EadyAHQRV3cyAHQQd3c2pB8MCqgwFqIhAgBUEedyAFQRN3cyAFQQp3cyAFIAIgCXNxIAZzaiARaiIDaiIGIAQgB3NxIARzaiAGQRp3IAZBFXdzIAZBB3dzakGWgpPNAWoiESASIAIgA3EgAyAFcSISIAIgBXFzcyADQR53IANBE3dzIANBCndzamoiCWoiCGogBiA1aiAHIDdqIAQgNGogCCAGIAdzcSAHc2ogCEEadyAIQRV3cyAIQQd3c2pBiNjd8QFqIhUgCUEedyAJQRN3cyAJQQp3cyAJIAMgBXNxIBJzaiAWaiICaiIEIAYgCHNxIAZzaiAEQRp3IARBFXdzIARBB3dzakHM7qG6AmoiEiACIANxIAIgCXEiBiADIAlxc3MgAkEedyACQRN3cyACQQp3c2ogDmoiBWoiByAEIAhzcSAIc2ogB0EadyAHQRV3cyAHQQd3c2pBtfnCpQNqIhYgBUEedyAFQRN3cyAFQQp3cyAFIAIgCXNxIAZzaiAQaiIDaiIGIAQgB3NxIARzaiAGQRp3IAZBFXdzIAZBB3dzakGzmfDIA2oiECARIAIgA3EgAyAFcSIRIAIgBXFzcyADQR53IANBE3dzIANBCndzamoiCWoiCGogKkEDdiAqQRl3cyAqQQ53cyAmaiAxaiA2QQ93IDZBDXdzIDZBCnZzaiIOIAZqIAcgOWogBCA2aiAIIAYgB3NxIAdzaiAIQRp3IAhBFXdzIAhBB3dzakHK1OL2BGoiGSAJQR53IAlBE3dzIAlBCndzIAkgAyAFc3EgEXNqIBVqIgJqIgQgBiAIc3EgBnNqIARBGncgBEEVd3MgBEEHd3NqQc+U89wFaiIRIAIgA3EgAiAJcSIGIAMgCXFzcyACQR53IAJBE3dzIAJBCndzaiASaiIFaiIHIAQgCHNxIAhzaiAHQRp3IAdBFXdzIAdBB3dzakHz37nBBmoiEiAFQR53IAVBE3dzIAVBCndzIAUgAiAJc3EgBnNqIBZqIgNqIgYgBCAHc3EgBHNqIAZBGncgBkEVd3MgBkEHd3NqQe6FvqQHaiIVIAIgA3EgAyAFcSIWIAIgBXFzcyADQR53IANBE3dzIANBCndzaiAQaiIJaiIIaiAsQQN2ICxBGXdzICxBDndzIChqIDhqICtBA3YgK0EZd3MgK0EOd3MgJ2ogN2ogDkEPdyAOQQ13cyAOQQp2c2oiAkEPdyACQQ13cyACQQp2c2oiECAGaiAHID1qIAIgBGogCCAGIAdzcSAHc2ogCEEadyAIQRV3cyAIQQd3c2pB78aVxQdqIhogCUEedyAJQRN3cyAJQQp3cyAJIAMgBXNxIBZzaiAZaiICaiIEIAYgCHNxIAZzaiAEQRp3IARBFXdzIARBB3dzakGU8KGmeGoiFiACIANxIAIgCXEiBiADIAlxc3MgAkEedyACQRN3cyACQQp3c2ogEWoiBWoiByAEIAhzcSAIc2ogB0EadyAHQRV3cyAHQQd3c2pBiISc5nhqIhEgBUEedyAFQRN3cyAFQQp3cyAFIAIgCXNxIAZzaiASaiIDaiIGIAQgB3NxIARzaiAGQRp3IAZBFXdzIAZBB3dzakH6//uFeWoiEiAVIAIgA3EgAyAFcSIVIAIgBXFzcyADQR53IANBE3dzIANBCndzamoiCWoiCCBFajYCHCAAIEYgESAJQR53IAlBE3dzIAlBCndzIAkgAyAFc3EgFXNqIBpqIgIgCXEiESADIAlxcyACIANxcyACQR53IAJBE3dzIAJBCndzaiAWaiIFQR53IAVBE3dzIAVBCndzIAUgAiAJc3EgEXNqaiIDIAVxIhEgAiAFcXMgAiADcXMgA0EedyADQRN3cyADQQp3c2ogEmoiCWo2AgwgACA/IAIgLUEDdiAtQRl3cyAtQQ53cyApaiA5aiAQQQ93IBBBDXdzIBBBCnZzaiIQIARqIAggBiAHc3EgB3NqIAhBGncgCEEVd3MgCEEHd3NqQevZwaJ6aiICaiIEajYCGCAAIEEgCUEedyAJQRN3cyAJQQp3cyAJIAMgBXNxIBFzaiACaiICajYCCCAAIDsgLSAuQQN2IC5BGXdzIC5BDndzaiAOaiA+QQ93ID5BDXdzID5BCnZzaiAHaiAEIAYgCHNxIAZzaiAEQRp3IARBFXdzIARBB3dzakH3x+b3e2oiByAFaiIFajYCFCAAIDwgAiADcSACIAlxIg4gAyAJcXNzIAJBHncgAkETd3MgAkEKd3NqIAdqIgdqNgIEIAAgLiAxQQN2IDFBGXdzIDFBDndzaiA6aiAQQQ93IBBBDXdzIBBBCnZzaiAGaiAFIAQgCHNxIAhzaiAFQRp3IAVBFXdzIAVBB3dzakHy8cWzfGoiBCADIBhqajYCECAAIAEgByACIAlzcSAOc2ogB0EedyAHQRN3cyAHQQp3c2ogBGo2AgAL4SoCCH8BfgJAAkACQAJAIABB9QFPBEAgAEHN/3tPDQIgAEELaiIAQXhxIQZBnJrAACgCACIIRQ0BQQAgBmshAwJAAkACf0EAIABBCHYiAEUNABpBHyAGQf///wdLDQAaIAZBBiAAZyIAa0EfcXZBAXEgAEEBdGtBPmoLIgdBAnRBqJzAAGooAgAiAARAIAZBAEEZIAdBAXZrQR9xIAdBH0YbdCECA0ACQCAAQQRqKAIAQXhxIgUgBkkNACAFIAZrIgUgA08NACAAIQQgBSIDDQBBACEDDAMLIABBFGooAgAiBSABIAUgACACQR12QQRxakEQaigCACIARxsgASAFGyEBIAJBAXQhAiAADQALIAEEQCABIQAMAgsgBA0CC0EAIQRBAiAHQR9xdCIAQQAgAGtyIAhxIgBFDQMgAEEAIABrcWhBAnRBqJzAAGooAgAiAEUNAwsDQCAAIAQgAEEEaigCAEF4cSICIAZPIAIgBmsiAiADSXEiARshBCACIAMgARshAyAAKAIQIgIEfyACBSAAQRRqKAIACyIADQALIARFDQILQaidwAAoAgAiACAGT0EAIAMgACAGa08bDQEgBCgCGCEHAkACQCAEIAQoAgwiAUYEQCAEQRRBECAEQRRqIgIoAgAiARtqKAIAIgANAUEAIQEMAgsgBCgCCCIAIAE2AgwgASAANgIIDAELIAIgBEEQaiABGyECA0AgAiEFIAAiAUEUaiICKAIAIgBFBEAgAUEQaiECIAEoAhAhAAsgAA0ACyAFQQA2AgALAkAgB0UNAAJAIAQgBCgCHEECdEGonMAAaiIAKAIARwRAIAdBEEEUIAcoAhAgBEYbaiABNgIAIAFFDQIMAQsgACABNgIAIAENAEGcmsAAQZyawAAoAgBBfiAEKAIcd3E2AgAMAQsgASAHNgIYIAQoAhAiAARAIAEgADYCECAAIAE2AhgLIARBFGooAgAiAEUNACABQRRqIAA2AgAgACABNgIYCwJAIANBEE8EQCAEIAZBA3I2AgQgBCAGaiIFIANBAXI2AgQgAyAFaiADNgIAIANBgAJPBEAgBUIANwIQIAUCf0EAIANBCHYiAEUNABpBHyADQf///wdLDQAaIANBBiAAZyIAa0EfcXZBAXEgAEEBdGtBPmoLIgA2AhwgAEECdEGonMAAaiECAkACQAJAAkBBnJrAACgCACIBQQEgAEEfcXQiBnEEQCACKAIAIgJBBGooAgBBeHEgA0cNASACIQAMAgtBnJrAACABIAZyNgIAIAIgBTYCAAwDCyADQQBBGSAAQQF2a0EfcSAAQR9GG3QhAQNAIAIgAUEddkEEcWpBEGoiBigCACIARQ0CIAFBAXQhASAAIQIgAEEEaigCAEF4cSADRw0ACwsgACgCCCICIAU2AgwgACAFNgIIIAVBADYCGCAFIAA2AgwgBSACNgIIDAQLIAYgBTYCAAsgBSACNgIYIAUgBTYCDCAFIAU2AggMAgsgA0EDdiICQQN0QaCawABqIQACf0GYmsAAKAIAIgFBASACQR9xdCICcQRAIAAoAggMAQtBmJrAACABIAJyNgIAIAALIQIgACAFNgIIIAIgBTYCDCAFIAA2AgwgBSACNgIIDAELIAQgAyAGaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIECyAEQQhqDwsCQAJAQZiawAAoAgAiAkEQIABBC2pBeHEgAEELSRsiBkEDdiIDQR9xIgF2IgBBA3FFBEAgBkGoncAAKAIATQ0DIAANAUGcmsAAKAIAIgBFDQMgAEEAIABrcWhBAnRBqJzAAGooAgAiAUEEaigCAEF4cSAGayEDIAEhAgNAIAEoAhAiAEUEQCABQRRqKAIAIgBFDQQLIABBBGooAgBBeHEgBmsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAAsACwJAIABBf3NBAXEgA2oiAEEDdEGYmsAAaiIEQRBqKAIAIgFBCGoiBSgCACIDIARBCGoiBEcEQCADIAQ2AgwgBCADNgIIDAELQZiawAAgAkF+IAB3cTYCAAsgASAAQQN0IgBBA3I2AgQgACABaiIAIAAoAgRBAXI2AgQgBQ8LAkBBAiABdCIDQQAgA2tyIAAgAXRxIgBBACAAa3FoIgFBA3RBmJrAAGoiBEEQaigCACIAQQhqIgUoAgAiAyAEQQhqIgRHBEAgAyAENgIMIAQgAzYCCAwBC0GYmsAAIAJBfiABd3E2AgALIAAgBkEDcjYCBCAAIAZqIgQgAUEDdCICIAZrIgFBAXI2AgQgACACaiABNgIAQaidwAAoAgAiAARAIABBA3YiA0EDdEGgmsAAaiEAQbCdwAAoAgAhAgJ/QZiawAAoAgAiBkEBIANBH3F0IgNxBEAgACgCCAwBC0GYmsAAIAMgBnI2AgAgAAshAyAAIAI2AgggAyACNgIMIAIgADYCDCACIAM2AggLQbCdwAAgBDYCAEGoncAAIAE2AgAgBQ8LIAIoAhghBwJAAkAgAiACKAIMIgFGBEAgAkEUQRAgAkEUaiIBKAIAIgQbaigCACIADQFBACEBDAILIAIoAggiACABNgIMIAEgADYCCAwBCyABIAJBEGogBBshBANAIAQhBSAAIgFBFGoiBCgCACIARQRAIAFBEGohBCABKAIQIQALIAANAAsgBUEANgIACyAHRQ0DIAIgAigCHEECdEGonMAAaiIAKAIARwRAIAdBEEEUIAcoAhAgAkYbaiABNgIAIAFFDQQMAwsgACABNgIAIAENAkGcmsAAQZyawAAoAgBBfiACKAIcd3E2AgAMAwsCQAJAAkACQAJAQaidwAAoAgAiACAGSQRAQaydwAAoAgAiACAGSw0DQQAhAiAGQa+ABGoiAEEQdkAAIgFBf0YNBiABQRB0IgVFDQZBuJ3AACAAQYCAfHEiA0G4ncAAKAIAaiIANgIAQbydwABBvJ3AACgCACIBIAAgASAASxs2AgBBtJ3AACgCACIERQ0BQcCdwAAhAANAIAAoAgAiASAAKAIEIgdqIAVGDQMgACgCCCIADQALDAQLQbCdwAAoAgAhAgJ/IAAgBmsiAUEPTQRAQbCdwABBADYCAEGoncAAQQA2AgAgAiAAQQNyNgIEIAAgAmoiAUEEaiEAIAEoAgRBAXIMAQtBqJ3AACABNgIAQbCdwAAgAiAGaiIDNgIAIAMgAUEBcjYCBCAAIAJqIAE2AgAgAkEEaiEAIAZBA3ILIQEgACABNgIAIAJBCGoPC0HUncAAKAIAIgBBACAAIAVNG0UEQEHUncAAIAU2AgALQdidwABB/x82AgBBwJ3AACAFNgIAQcydwABBADYCAEHEncAAIAM2AgBBrJrAAEGgmsAANgIAQbSawABBqJrAADYCAEGomsAAQaCawAA2AgBBvJrAAEGwmsAANgIAQbCawABBqJrAADYCAEHEmsAAQbiawAA2AgBBuJrAAEGwmsAANgIAQcyawABBwJrAADYCAEHAmsAAQbiawAA2AgBB1JrAAEHImsAANgIAQciawABBwJrAADYCAEHcmsAAQdCawAA2AgBB0JrAAEHImsAANgIAQeSawABB2JrAADYCAEHYmsAAQdCawAA2AgBB7JrAAEHgmsAANgIAQeCawABB2JrAADYCAEHomsAAQeCawAA2AgBB9JrAAEHomsAANgIAQfCawABB6JrAADYCAEH8msAAQfCawAA2AgBB+JrAAEHwmsAANgIAQYSbwABB+JrAADYCAEGAm8AAQfiawAA2AgBBjJvAAEGAm8AANgIAQYibwABBgJvAADYCAEGUm8AAQYibwAA2AgBBkJvAAEGIm8AANgIAQZybwABBkJvAADYCAEGYm8AAQZCbwAA2AgBBpJvAAEGYm8AANgIAQaCbwABBmJvAADYCAEGsm8AAQaCbwAA2AgBBtJvAAEGom8AANgIAQaibwABBoJvAADYCAEG8m8AAQbCbwAA2AgBBsJvAAEGom8AANgIAQcSbwABBuJvAADYCAEG4m8AAQbCbwAA2AgBBzJvAAEHAm8AANgIAQcCbwABBuJvAADYCAEHUm8AAQcibwAA2AgBByJvAAEHAm8AANgIAQdybwABB0JvAADYCAEHQm8AAQcibwAA2AgBB5JvAAEHYm8AANgIAQdibwABB0JvAADYCAEHsm8AAQeCbwAA2AgBB4JvAAEHYm8AANgIAQfSbwABB6JvAADYCAEHom8AAQeCbwAA2AgBB/JvAAEHwm8AANgIAQfCbwABB6JvAADYCAEGEnMAAQfibwAA2AgBB+JvAAEHwm8AANgIAQYycwABBgJzAADYCAEGAnMAAQfibwAA2AgBBlJzAAEGInMAANgIAQYicwABBgJzAADYCAEGcnMAAQZCcwAA2AgBBkJzAAEGInMAANgIAQaScwABBmJzAADYCAEGYnMAAQZCcwAA2AgBBtJ3AACAFNgIAQaCcwABBmJzAADYCAEGsncAAIANBWGoiADYCACAFIABBAXI2AgQgACAFakEoNgIEQdCdwABBgICAATYCAAwDCyAAQQxqKAIAIAUgBE1yIAEgBEtyDQEgACADIAdqNgIEQbSdwABBtJ3AACgCACIAQQ9qQXhxIgFBeGo2AgBBrJ3AAEGsncAAKAIAIANqIgMgACABa2pBCGoiBDYCACABQXxqIARBAXI2AgAgACADakEoNgIEQdCdwABBgICAATYCAAwCC0GsncAAIAAgBmsiAjYCAEG0ncAAQbSdwAAoAgAiACAGaiIBNgIAIAEgAkEBcjYCBCAAIAZBA3I2AgQgAEEIaiECDAILQdSdwABB1J3AACgCACIAIAUgACAFSRs2AgAgAyAFaiEBQcCdwAAhAAJAA0AgASAAKAIARwRAIAAoAggiAA0BDAILCyAAQQxqKAIADQAgACAFNgIAIAAgACgCBCADajYCBCAFIAZBA3I2AgQgBSAGaiEAIAEgBWsgBmshBgJAAkAgAUG0ncAAKAIARwRAQbCdwAAoAgAgAUYNASABQQRqKAIAIgJBA3FBAUYEQCABIAJBeHEiAhASIAIgBmohBiABIAJqIQELIAEgASgCBEF+cTYCBCAAIAZBAXI2AgQgACAGaiAGNgIAIAZBgAJPBEAgAEIANwIQIAACf0EAIAZBCHYiAkUNABpBHyAGQf///wdLDQAaIAZBBiACZyICa0EfcXZBAXEgAkEBdGtBPmoLIgE2AhwgAUECdEGonMAAaiECAkACQAJAAkBBnJrAACgCACIDQQEgAUEfcXQiBHEEQCACKAIAIgJBBGooAgBBeHEgBkcNASACIQMMAgtBnJrAACADIARyNgIAIAIgADYCAAwDCyAGQQBBGSABQQF2a0EfcSABQR9GG3QhAQNAIAIgAUEddkEEcWpBEGoiBCgCACIDRQ0CIAFBAXQhASADIgJBBGooAgBBeHEgBkcNAAsLIAMoAggiAiAANgIMIAMgADYCCCAAQQA2AhggACADNgIMIAAgAjYCCAwFCyAEIAA2AgALIAAgAjYCGCAAIAA2AgwgACAANgIIDAMLIAZBA3YiAUEDdEGgmsAAaiECAn9BmJrAACgCACIDQQEgAUEfcXQiAXEEQCACKAIIDAELQZiawAAgASADcjYCACACCyEBIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCAwCC0G0ncAAIAA2AgBBrJ3AAEGsncAAKAIAIAZqIgI2AgAgACACQQFyNgIEDAELQbCdwAAgADYCAEGoncAAQaidwAAoAgAgBmoiAjYCACAAIAJBAXI2AgQgACACaiACNgIACyAFQQhqDwtBwJ3AACEAA0ACQCAAKAIAIgEgBE0EQCABIAAoAgRqIgcgBEsNAQsgACgCCCEADAELC0G0ncAAIAU2AgBBrJ3AACADQVhqIgA2AgAgBSAAQQFyNgIEIAAgBWpBKDYCBEHQncAAQYCAgAE2AgAgBCAHQWBqQXhxQXhqIgAgACAEQRBqSRsiAUEbNgIEQcCdwAApAgAhCSABQRBqQcidwAApAgA3AgAgASAJNwIIQcydwABBADYCAEHEncAAIAM2AgBBwJ3AACAFNgIAQcidwAAgAUEIajYCACABQRxqIQADQCAAQQc2AgAgByAAQQRqIgBLDQALIAEgBEYNACABIAEoAgRBfnE2AgQgBCABIARrIgVBAXI2AgQgASAFNgIAIAVBgAJPBEAgBEIANwIQIARBHGoCf0EAIAVBCHYiAEUNABpBHyAFQf///wdLDQAaIAVBBiAAZyIAa0EfcXZBAXEgAEEBdGtBPmoLIgA2AgAgAEECdEGonMAAaiEBAkACQAJAAkBBnJrAACgCACIDQQEgAEEfcXQiB3EEQCABKAIAIgNBBGooAgBBeHEgBUcNASADIQAMAgtBnJrAACADIAdyNgIAIAEgBDYCACAEQRhqIAE2AgAMAwsgBUEAQRkgAEEBdmtBH3EgAEEfRht0IQEDQCADIAFBHXZBBHFqQRBqIgcoAgAiAEUNAiABQQF0IQEgACEDIABBBGooAgBBeHEgBUcNAAsLIAAoAggiASAENgIMIAAgBDYCCCAEQRhqQQA2AgAgBCAANgIMIAQgATYCCAwDCyAHIAQ2AgAgBEEYaiADNgIACyAEIAQ2AgwgBCAENgIIDAELIAVBA3YiAUEDdEGgmsAAaiEAAn9BmJrAACgCACIDQQEgAUEfcXQiAXEEQCAAKAIIDAELQZiawAAgASADcjYCACAACyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAtBrJ3AACgCACIAIAZNDQBBrJ3AACAAIAZrIgI2AgBBtJ3AAEG0ncAAKAIAIgAgBmoiATYCACABIAJBAXI2AgQgACAGQQNyNgIEIABBCGoPCyACDwsgASAHNgIYIAIoAhAiAARAIAEgADYCECAAIAE2AhgLIAJBFGooAgAiAEUNACABQRRqIAA2AgAgACABNgIYCwJAIANBEE8EQCACIAZBA3I2AgQgAiAGaiIEIANBAXI2AgQgAyAEaiADNgIAQaidwAAoAgAiAARAIABBA3YiBUEDdEGgmsAAaiEAQbCdwAAoAgAhAQJ/QZiawAAoAgAiBkEBIAVBH3F0IgVxBEAgACgCCAwBC0GYmsAAIAUgBnI2AgAgAAshBSAAIAE2AgggBSABNgIMIAEgADYCDCABIAU2AggLQbCdwAAgBDYCAEGoncAAIAM2AgAMAQsgAiADIAZqIgBBA3I2AgQgACACaiIAIAAoAgRBAXI2AgQLIAJBCGoLsg4BBn8jAEFAaiIGJAACQAJAAkACQAJAAkACQAJAIAAoAgAiBEUEQAwBC0HAACAEayIHIAJLBEAgAiAEaiIDIARJDQIgA0HAAEsNAyAAIARqQQRqIAEgAhAsGgwICyAEQcEATw0DIABBBGogBGogASAHECwaIABBADYCACADKAIAIAYgACgCBCIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnI2AgAgBiAAQQhqKAIAIgRBGHQgBEEIdEGAgPwHcXIgBEEIdkGA/gNxIARBGHZycjYCBCAGIABBDGooAgAiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyNgIIIAYgAEEQaigCACIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnI2AgwgBiAAQRRqKAIAIgRBGHQgBEEIdEGAgPwHcXIgBEEIdkGA/gNxIARBGHZycjYCECAGIABBGGooAgAiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyNgIUIAYgAEEcaigCACIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnI2AhggBiAAQSBqKAIAIgRBGHQgBEEIdEGAgPwHcXIgBEEIdkGA/gNxIARBGHZycjYCHCAGIABBJGooAgAiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyNgIgIAYgAEEoaigCACIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnI2AiQgBiAAQSxqKAIAIgRBGHQgBEEIdEGAgPwHcXIgBEEIdkGA/gNxIARBGHZycjYCKCAGIABBMGooAgAiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyNgIsIAYgAEE0aigCACIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnI2AjAgBiAAQThqKAIAIgRBGHQgBEEIdEGAgPwHcXIgBEEIdkGA/gNxIARBGHZycjYCNCAGIABBPGooAgAiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyNgI4IAYgAEFAaygCACIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnI2AjwgBhAACyACIAdrIghBwABJBEAgByEEDAYLA0AgB0G/f0sNBCAHQUBrIgQgAksNBSADKAIAIAYgASAHaiIHKAAAIgVBGHQgBUEIdEGAgPwHcXIgBUEIdkGA/gNxIAVBGHZycjYCACAGIAdBBGooAAAiBUEYdCAFQQh0QYCA/AdxciAFQQh2QYD+A3EgBUEYdnJyNgIEIAYgB0EIaigAACIFQRh0IAVBCHRBgID8B3FyIAVBCHZBgP4DcSAFQRh2cnI2AgggBiAHQQxqKAAAIgVBGHQgBUEIdEGAgPwHcXIgBUEIdkGA/gNxIAVBGHZycjYCDCAGIAdBEGooAAAiBUEYdCAFQQh0QYCA/AdxciAFQQh2QYD+A3EgBUEYdnJyNgIQIAYgB0EUaigAACIFQRh0IAVBCHRBgID8B3FyIAVBCHZBgP4DcSAFQRh2cnI2AhQgBiAHQRhqKAAAIgVBGHQgBUEIdEGAgPwHcXIgBUEIdkGA/gNxIAVBGHZycjYCGCAGIAdBHGooAAAiBUEYdCAFQQh0QYCA/AdxciAFQQh2QYD+A3EgBUEYdnJyNgIcIAYgB0EgaigAACIFQRh0IAVBCHRBgID8B3FyIAVBCHZBgP4DcSAFQRh2cnI2AiAgBiAHQSRqKAAAIgVBGHQgBUEIdEGAgPwHcXIgBUEIdkGA/gNxIAVBGHZycjYCJCAGIAdBKGooAAAiBUEYdCAFQQh0QYCA/AdxciAFQQh2QYD+A3EgBUEYdnJyNgIoIAYgB0EsaigAACIFQRh0IAVBCHRBgID8B3FyIAVBCHZBgP4DcSAFQRh2cnI2AiwgBiAHQTBqKAAAIgVBGHQgBUEIdEGAgPwHcXIgBUEIdkGA/gNxIAVBGHZycjYCMCAGIAdBNGooAAAiBUEYdCAFQQh0QYCA/AdxciAFQQh2QYD+A3EgBUEYdnJyNgI0IAYgB0E4aigAACIFQRh0IAVBCHRBgID8B3FyIAVBCHZBgP4DcSAFQRh2cnI2AjggBiAHQTxqKAAAIgdBGHQgB0EIdEGAgPwHcXIgB0EIdkGA/gNxIAdBGHZycjYCPCAGEAAgBCEHIAhBQGoiCEE/Sw0ACwwFCyAEIANB/IPAABAkAAsgA0HAAEH8g8AAECMACyAEQcAAQfyDwAAQJAALIAcgB0FAa0H8g8AAECQACyAHQUBrIAJB/IPAABAjAAsgBCACTQRAIABBBGogASAEaiAIECwaIAghAgwBCyAEIAJB/IPAABAkAAsgACAAKAIAIAJqNgIAIAZBQGskAAuFDAIffwJ+IwBBwAFrIgQkACAEQThqIhdCADcDACAEQTBqIhhCADcDACAEQShqIhlCADcDACAEQSBqIhpCADcDACAEQRhqIhtCADcDACAEQRBqIhxCADcDACAEQQhqIh1CADcDACAEQgA3AwAgAUFAaiEHIAFBP0sEQCAXIAAgB2oiB0E4aikAADcDACAYIAdBMGopAAA3AwAgGSAHQShqKQAANwMAIBogB0EgaikAADcDACAbIAdBGGopAAA3AwAgHCAHQRBqKQAANwMAIB0gB0EIaikAADcDACAEIAcpAAA3AwAgBEH4AGpCADcDACAEQfAAakIANwMAIARB6ABqQgA3AwAgBEHgAGpCADcDACAEQdgAakIANwMAIARB0ABqQgA3AwAgBEHIAGpCADcDACAEQgA3A0AgAUEBdiEhA0AgAARAIAEgAUHAACABQcAASRsiBmshASAAIAZqQQAhBQNAIARBQGsgBWogBCAFai0AACAAIAVqLQAAczoAACAFQQFqIgUgBkkNAAsgBCkDUCEjIAQpA0AhJCAEIAQpA0g3AogBIAQgJDcCgAEgBCAjNwKQASAEIAQoAlgiBTYCmAEgBCAEKAJcIgs2ApwBIAQgBCgCYCIPNgKgASAEIAQoAmQiFTYCpAEgBCAEKAJoIgA2AqgBIAQgBCgCbCIGNgKsASAEIAQoAnAiEDYCsAEgBCAEKAJ0IhI2ArQBIAQgBCgCeCIWNgK4ASAEIAQoAnwiCTYCvAFBBCEeIAQoAowBIQwgBCgCiAEhDSAEKAKEASEKIAQoApQBIREgBCgCkAEhDiAEKAKAASEIA0AgCiARakEHdyAVcyITIBFqQQl3IBJzIh8gCCAQakEHdyAOcyIOIAhqQQl3IA9zIiAgDmpBDXcgEHMiIiAGIAlqQQd3IAxzIgwgCWpBCXcgC3MiCyAMakENdyAGcyIPIAtqQRJ3IAlzIgkgACAFakEHdyAWcyIGakEHd3MiECAJakEJd3MiEiAQakENdyAGcyIWIBJqQRJ3IAlzIQkgBiAAIAZqQQl3IA1zIg1qQQ13IAVzIgUgDWpBEncgAHMiACATakEHdyAPcyIGIABqQQl3ICBzIg8gBmpBDXcgE3MiFSAPakESdyAAcyEAIB8gEyAfakENdyAKcyITakESdyARcyIKIA5qQQd3IAVzIgUgCmpBCXcgC3MiCyAFakENdyAOcyIOIAtqQRJ3IApzIREgICAiakESdyAIcyIIIAxqQQd3IBNzIgogCGpBCXcgDXMiDSAKakENdyAMcyIMIA1qQRJ3IAhzIQggHkF/aiIeDQALIAQgCDYCgAEgBCAEKAJAIAhqNgIAIAQgCjYChAEgBCgCRCEIIAQgCTYCvAEgBCAWNgK4ASAEIBI2ArQBIAQgEDYCsAEgBCAGNgKsASAEIAA2AqgBIAQgFTYCpAEgBCAPNgKgASAEIAs2ApwBIAQgBTYCmAEgBCARNgKUASAEIA42ApABIAQgDDYCjAEgBCANNgKIASAEIAggCmo2AgQgBCAEKAJIIA1qNgIIIAQgBCgCTCAMajYCDCAEIAQoAlAgDmo2AhAgBCAEKAJUIBFqNgIUIAQgBCgCWCAFajYCGCAEIAQoAlwgC2o2AhwgBCAEKAJgIA9qNgIgIAQgBCgCZCAVajYCJCAEIAQoAmggAGo2AiggBCAEKAJsIAZqNgIsIAQgBCgCcCAQajYCMCAEIAQoAnQgEmo2AjQgBCAEKAJ4IBZqNgI4IAQgBCgCfCAJajYCPEEAIBRBAXFrICFxIBRBBXRBQHFqIgBBQGshBSAAQb9/SwRAIAAgBUGUjsAAECQACyAFIANLBEAgBSADQZSOwAAQIwALIAAgAmoiACAEKQMANwAAIABBOGogFykDADcAACAAQTBqIBgpAwA3AAAgAEEoaiAZKQMANwAAIABBIGogGikDADcAACAAQRhqIBspAwA3AAAgAEEQaiAcKQMANwAAIABBCGogHSkDADcAACEAIBRBAWohFCABDQELCyAEQcABaiQADwsgByABQYSOwAAQJAALnwMCA38CfiMAQRBrIgYkAAJAAkACQAJAIAAtAIgBRQRAIAAtAGwNBCAAKQMAIgkgAq1CA4Z8IgogCVoNAQwCCwwCCyAAIAo3AwAgBiAAQcwAaiIHNgIMIABBCGoiCCABIAIgBkEMahACIAYgA0EIdEGAgPwHcSADQRh0ciADQQh2QYD+A3EgA0EYdnJyNgIIAkAgAC0AiAFFBEAgAC0AbA0EIAApAwAiCUIgfCIKIAlaDQEMAgsMAgsgACAKNwMAIAYgBzYCDCAIIAZBCGpBBCAGQQxqEAIgACAEIAUQGCAAQgA3AwAgAEEANgIIIABBADoAbCAHQdiHwAApAgA3AgAgB0EIakHgh8AAKQIANwIAIAdBEGpB6IfAACkCADcCACAHQRhqQfCHwAApAgA3AgAgACAAQfgAaigCACIBrUIDhjcDACAAKAJwIQIgBiAHNgIMIAggAiABIAZBDGoQAiAAQQA6AIgBIAZBEGokAA8LQdODwABBGUHsg8AAECcAC0GciMAAQSBB0IrAABAwAAtBqIbAAEEgQciGwAAQMAALiQkCB38CfiMAQRBrIgUkACAFQQA2AgggBUIBNwMAIAVBwAAQHSAFKAIAIgYgBSgCCCIHaiIEQgA3AAAgBEEIakIANwAAIARBEGpCADcAACAEQRhqQgA3AAAgBEEgakIANwAAIARBKGpCADcAACAEQTBqQgA3AAAgBEE4akIANwAAIAdBQGshBCAFKAIEIQkCQAJAAkACQAJAAkACQAJAAkAgA0HBAE8EQCABLQBsDQIgASkDACILIAOtQgOGfCIMIAtUDQMgASAMNwMAIAUgAUHMAGoiBzYCACABQQhqIAIgAyAFEAIgBEEfTQ0EIAEQFCAGIAEoAkwiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAAIAYgAUHQAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAEIAYgAUHUAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAIIAYgAUHYAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAMIAYgAUHcAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAQIAYgAUHgAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAUIAYgAUHkAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAYIAYgAUHoAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgAcIAFBADYCCCABQgA3AwAgB0HYh8AAKQIANwIAIAdBCGpB4IfAACkCADcCACAHQRBqQeiHwAApAgA3AgAgAUEAOgBsIAdBGGpB8IfAACkCADcCAAwBCyAEIANJDQQgBiACIAMQLBoLIARBf0wNBAJ/IARFBEBBASECQQAMAQsgBEEBEDgiAkUNBiAECyEDIAVBADYCCCAFIAI2AgAgBSADNgIEIAUgBBAdIAUoAgAiByAFKAIIIghqIAQgBiAEEBsgBSgCBCEKIAQEQCAEIQMgBiECA0AgAiACLQAAQTZzOgAAIAJBAWohAiADQX9qIgMNAAsLIAQgCGoiCARAIAghAyAHIQIDQCACIAItAABB3ABzOgAAIAJBAWohAiADQX9qIgMNAAsLIAEtAGwNBiABKQMAIgsgBK1CA4Z8IgwgC1QNByABIAw3AwAgBSABQcwAajYCACABQQhqIAYgBCAFEAIgACABQfAAECwiAEEAOgCIASAAQYQBaiAINgIAIABBgAFqIAo2AgAgACAHNgJ8IABB+ABqIAQ2AgAgAEH0AGogCTYCACAAIAY2AnAgBUEQaiQADwtBqIbAAEEgQciGwAAQMAALQdODwABBGUHsg8AAECcAC0EgIARBwIrAABAjAAtBvIjAAEEoQcyJwAAQMAALEDoACyAEQQEQPQALQaiGwABBIEHIhsAAEDAAC0HTg8AAQRlB7IPAABAnAAvVCAEFfyAAQXhqIgEgAEF8aigCACIDQXhxIgBqIQICQAJAIANBAXENACADQQNxRQ0BIAEoAgAiAyAAaiEAIAEgA2siAUGwncAAKAIARgRAIAIoAgRBA3FBA0cNAUGoncAAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgAPCyABIAMQEgsCQCACQQRqIgQoAgAiA0ECcQRAIAQgA0F+cTYCACABIABBAXI2AgQgACABaiAANgIADAELAkAgAkG0ncAAKAIARwRAQbCdwAAoAgAgAkYNASACIANBeHEiAhASIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQbCdwAAoAgBHDQJBqJ3AACAANgIADwtBtJ3AACABNgIAQaydwABBrJ3AACgCACAAaiIANgIAIAEgAEEBcjYCBEGwncAAKAIAIAFGBEBBqJ3AAEEANgIAQbCdwABBADYCAAtB0J3AACgCACICIABPDQJBtJ3AACgCACIARQ0CAkBBrJ3AACgCACIDQSlJDQBBwJ3AACEBA0AgASgCACIEIABNBEAgBCABKAIEaiAASw0CCyABKAIIIgENAAsLQdidwAACf0H/H0HIncAAKAIAIgBFDQAaQQAhAQNAIAFBAWohASAAKAIIIgANAAsgAUH/HyABQf8fSxsLNgIAIAMgAk0NAkHQncAAQX82AgAPC0GwncAAIAE2AgBBqJ3AAEGoncAAKAIAIABqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAA8LQdidwAACfwJAIABBgAJPBEAgAUIANwIQIAFBHGoCf0EAIABBCHYiAkUNABpBHyAAQf///wdLDQAaIABBBiACZyICa0EfcXZBAXEgAkEBdGtBPmoLIgM2AgAgA0ECdEGonMAAaiECAkACQAJAAkACQEGcmsAAKAIAIgRBASADQR9xdCIFcQRAIAIoAgAiAkEEaigCAEF4cSAARw0BIAIhAwwCC0GcmsAAIAQgBXI2AgAgAiABNgIADAMLIABBAEEZIANBAXZrQR9xIANBH0YbdCEEA0AgAiAEQR12QQRxakEQaiIFKAIAIgNFDQIgBEEBdCEEIAMiAkEEaigCAEF4cSAARw0ACwsgAygCCCIAIAE2AgwgAyABNgIIIAFBGGpBADYCACABIAM2AgwgASAANgIIDAILIAUgATYCAAsgAUEYaiACNgIAIAEgATYCDCABIAE2AggLQdidwABB2J3AACgCAEF/aiIANgIAIAANA0HIncAAKAIAIgANAUH/HwwCCyAAQQN2IgJBA3RBoJrAAGohAAJ/QZiawAAoAgAiA0EBIAJBH3F0IgJxBEAgACgCCAwBC0GYmsAAIAIgA3I2AgAgAAshAiAAIAE2AgggAiABNgIMIAEgADYCDCABIAI2AggPC0EAIQEDQCABQQFqIQEgACgCCCIADQALIAFB/x8gAUH/H0sbCzYCAAsLygcBA38jAEFAaiICJAAgACAAKAIAIgRBAWoiAzYCAAJAAkAgAyAETwRAIANBwABLDQEgACAEakEEakGAAToAAEHAACAAKAIAIgNrIgRBCEkEQCADQcEATw0DIABBBGogA2ogBBAyIABBADYCACABKAIAIAIgACgCBCIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AgAgAiAAQQhqKAIAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCBCACIABBDGooAgAiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgIIIAIgAEEQaigCACIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AgwgAiAAQRRqKAIAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCECACIABBGGooAgAiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgIUIAIgAEEcaigCACIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AhggAiAAQSBqKAIAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCHCACIABBJGooAgAiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgIgIAIgAEEoaigCACIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AiQgAiAAQSxqKAIAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCKCACIABBMGooAgAiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgIsIAIgAEE0aigCACIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AjAgAiAAQThqKAIAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCNCACIABBPGooAgAiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgI4IAIgAEFAaygCACIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AjwgAhAAIAAoAgAhAwtBOCADSQRAQYyEwABBKEH8g8AAEDAACyAAIANqQQRqQTggA2sQMiAAQTg2AgAgAkFAayQADwtBfyADQfyDwAAQJAALIANBwABB/IPAABAjAAtBjITAAEEoQfyDwAAQMAAL8gcBEX8jAEGAAmsiByQAAkAgBgRAIAQtAAghCSAEKAIEIQwgBCgCACEEIAdBkAFqQcwAEDIgB0H0AWpB8IfAACkCADcCACAHQewBakHoh8AAKQIANwIAIAdB5AFqQeCHwAApAgA3AgAgB0EAOgD8ASAHQdiHwAApAgA3AtwBIAcgB0GQAWogACABEAUgB0EANgKYASAHQgE3A5ABIAdBkAFqIAwgBEEHdCIKbCIBEB0gCiAJQR9xIgR0IQAgBygCmAEhCyABBEAgBygCkAEgC2ogARAyIAcgASALaiILNgKYAQsgBygClAEgByACIAMgBygCkAEiDCALEBEgB0EANgKYASAHQgE3A5ABIAdBkAFqIAAQHSAHKAKYASEJIAAEQCAHKAKQASAJaiAAEDIgByAAIAlqIgk2ApgBCyAHKAKUASAHKAKQASEQIAdBADYCmAEgB0IBNwOQASAHQZABaiAKEB0CQCAKBEAgBygCmAEiACAHKAKQAWogChAyIAcoApABIQ4gBygClAEhFiALRQ0BIAAgCmohD0EBIAR0IhFBf2ohEiALIAogCyALIApLGyIIayENIAggDGohBCAMIQADQCAEIQECQAJAIAgEQCAJRQ0CIBAhAiAJIQQDQCACRQ0DIAggBEsNAiACIAAgCBAsIAggBCAEIAhLGyIDIAAgCBADIAIgA2ohAiAEIANrIgQNAAsMAgtBz4vAAEEhQfCLwAAQKgALQYCMwABBKEGQjcAAEDAACwJAAkACQAJAIAhBRGoiAiAIQUBqIgNPBEAgCEE8SQ0BIAAgA2ohEyAIIA8gDyAISxsiF0UNAkEAIQMDQCATKAAAIBJxIgJBAWogCGwiBCACIAhsIgJJDQQgBCAJSw0KIANBAWohAyACIBBqIQJBACEEA0AgBCAOaiAAIARqLQAAIAIgBGotAABzOgAAIARBAWoiBCAXSQ0ACyAOIA8gACAIEAMgAyARRw0ACwwECyADIAJBtI7AABAkAAsgAiAIQbSOwAAQIwALIBEhAwNAIBMoAAAgEnEiAkEBaiAIbCIEIAIgCGwiAkkNASAEIAlLDQcgDiAPIAAgCBADIANBf2oiAw0ACwwBCyACIARBpI7AABAkAAsgDUUNAiANIAogDSANIApLGyIIayENIAEgCGohBCABIgANAAsMAQtBz4vAAEEhQfCLwAAQKgALIAcgDCALIAUgBhARIBYEQCAOEAYLBEAgEBAGCwRAIAwQBgsgB0H0AGooAgAEQCAHKAJwEAYLIAdBgAFqKAIABEAgBygCfBAGCyAHQYACaiQADwtByJHAAEEiQeyRwAAQMAALIAQgCUGkjsAAECMAC6oGAQx/IABBEGooAgAhAwJAAkACQCAAQQhqKAIAIg1BAUcEQCADQQFGDQEMAwsgA0EBRw0BCwJAIAJFBEBBACECDAELIAEgAmohByAAQRRqKAIAQQFqIQogASIDIQsDQCADQQFqIQUCQAJ/IAMsAAAiBEF/TARAAn8gBSAHRgRAQQAhCCAHDAELIAMtAAFBP3EhCCADQQJqIgULIQMgBEEfcSEJIAggCUEGdHIgBEH/AXEiDkHfAU0NARoCfyADIAdGBEBBACEMIAcMAQsgAy0AAEE/cSEMIANBAWoiBQshBCAMIAhBBnRyIQggCCAJQQx0ciAOQfABSQ0BGgJ/IAQgB0YEQCAFIQNBAAwBCyAEQQFqIQMgBC0AAEE/cQsgCUESdEGAgPAAcSAIQQZ0cnIiBEGAgMQARw0CDAQLIARB/wFxCyEEIAUhAwsgCkF/aiIKBEAgBiALayADaiEGIAMhCyADIAdHDQEMAgsLIARBgIDEAEYNAAJAIAZFIAIgBkZyRQRAQQAhAyAGIAJPDQEgASAGaiwAAEFASA0BCyABIQMLIAYgAiADGyECIAMgASADGyEBCyANQQFGDQAMAQtBACEFIAIEQCACIQQgASEDA0AgBSADLQAAQcABcUGAAUZqIQUgA0EBaiEDIARBf2oiBA0ACwsgAiAFayAAKAIMIgdPDQBBACEGQQAhBSACBEAgAiEEIAEhAwNAIAUgAy0AAEHAAXFBgAFGaiEFIANBAWohAyAEQX9qIgQNAAsLIAUgAmsgB2oiAyEEAkACQAJAQQAgAC0AICIFIAVBA0YbQQFrDgMBAAECCyADQQF2IQYgA0EBakEBdiEEDAELQQAhBCADIQYLIAZBAWohAwJ/AkADQCADQX9qIgMEQCAAKAIYIAAoAgQgACgCHCgCEBEAAEUNAQwCCwsgACgCBCEFQQEgACgCGCABIAIgACgCHCgCDBECAA0BGiAEQQFqIQMgACgCHCEBIAAoAhghAANAIANBf2oiA0UEQEEADwsgACAFIAEoAhARAABFDQALC0EBCw8LIAAoAhggASACIABBHGooAgAoAgwRAgAL5wUBAn8jAEHgAGsiAyQAIANBwAA2AgQgAyABKAAAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCICADIAEoAAQiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIkIAMgASgACCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AiggAyABKAAMIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCLCADIAEoABAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIwIAMgASgAFCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AjQgAyABKAAYIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCOCADIAEoABwiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgI8IAMgASgAICICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AkAgAyABKAAkIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCRCADIAEoACgiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgJIIAMgASgALCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AkwgAyABKAAwIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCUCADIAEoADQiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgJUIAMgASgAOCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AlggAyABKAA8IgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCXCAAIANBIGoQACADQeAAaiQAC74GAQR/IAAgAWohAgJAAkAgAEEEaigCACIDQQFxDQAgA0EDcUUNASAAKAIAIgMgAWohASAAIANrIgBBsJ3AACgCAEYEQCACKAIEQQNxQQNHDQFBqJ3AACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADwsgACADEBILAkAgAkEEaigCACIDQQJxBEAgAkEEaiADQX5xNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAMAQsCQCACQbSdwAAoAgBHBEBBsJ3AACgCACACRg0BIAIgA0F4cSICEBIgACABIAJqIgFBAXI2AgQgACABaiABNgIAIABBsJ3AACgCAEcNAkGoncAAIAE2AgAPC0G0ncAAIAA2AgBBrJ3AAEGsncAAKAIAIAFqIgE2AgAgACABQQFyNgIEIABBsJ3AACgCAEcNAkGoncAAQQA2AgBBsJ3AAEEANgIADwtBsJ3AACAANgIAQaidwABBqJ3AACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyABQYACTwRAIABCADcCECAAQRxqAn9BACABQQh2IgJFDQAaQR8gAUH///8HSw0AGiABQQYgAmciAmtBH3F2QQFxIAJBAXRrQT5qCyIDNgIAIANBAnRBqJzAAGohAgJAAkACQAJAQZyawAAoAgAiBEEBIANBH3F0IgVxBEAgAigCACICQQRqKAIAQXhxIAFHDQEgAiEDDAILQZyawAAgBCAFcjYCACACIAA2AgAMAwsgAUEAQRkgA0EBdmtBH3EgA0EfRht0IQQDQCACIARBHXZBBHFqQRBqIgUoAgAiA0UNAiAEQQF0IQQgAyICQQRqKAIAQXhxIAFHDQALCyADKAIIIgEgADYCDCADIAA2AgggAEEYakEANgIAIAAgAzYCDCAAIAE2AggPCyAFIAA2AgALIABBGGogAjYCACAAIAA2AgwgACAANgIIDwsgAUEDdiICQQN0QaCawABqIQECf0GYmsAAKAIAIgNBASACQR9xdCICcQRAIAEoAggMAQtBmJrAACACIANyNgIAIAELIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIICwuKBgEKfyMAQTBrIgMkACADQSRqIAE2AgAgA0EDOgAoIANCgICAgIAENwMIIAMgADYCICADQQA2AhggA0EANgIQAkACQAJAIAIoAggiBARAIAIoAgAhByACKAIEIgggAkEMaigCACIGIAYgCEsbIgtFDQEgAkEUaigCACEGIAIoAhAhCSAAIAcoAgAgBygCBCABKAIMEQIADQIgB0EMaiECQQEhBQJAAkADQCADIARBBGooAgA2AgwgAyAEQRxqLQAAOgAoIAMgBEEIaigCADYCCCAEQRhqKAIAIQBBACEKQQAhAQJAAkACQCAEQRRqKAIAQQFrDgIAAgELIAAgBk8NAyAAQQN0IAlqIgwoAgRBE0cNASAMKAIAKAIAIQALQQEhAQsgAyAANgIUIAMgATYCECAEQRBqKAIAIQACQAJAAkAgBEEMaigCAEEBaw4CAAIBCyAAIAZPDQQgAEEDdCAJaiIBKAIEQRNHDQEgASgCACgCACEAC0EBIQoLIAMgADYCHCADIAo2AhggBCgCACIAIAZJBEAgCSAAQQN0aiIAKAIAIANBCGogACgCBBEAAA0GIAUgC08NBSACQXxqIQAgAigCACEBIAJBCGohAiAEQSBqIQQgBUEBaiEFIAMoAiAgACgCACABIAMoAiQoAgwRAgBFDQEMBgsLIAAgBkHYmMAAECIACyAAIAZB6JjAABAiAAsgACAGQeiYwAAQIgALIAIoAgAhByACKAIEIgggAkEUaigCACIEIAQgCEsbIgZFDQAgAigCECEEIAAg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A0YNASADRQRAIAJBARA4IQEMAgsgASADIAIQNiEBDAELIAJBARA4IQELIAFFDQIgACABNgIAIABBBGogAjYCAAsPCxA6AAsgAkEBED0AC6EBAQJ/IABBBGooAgAiAyABSQRAAkACQAJAAkAgAUEASQ0AIANBAXQiAiABIAIgAUsbIgFBCCABQQhLGyICQQBIDQAgACgCAEEAIAMbIgEEQCACIANGDQQgAw0CIAJBARA4IgENBAwDCyACQQEQOCIBRQ0CDAMLEDoACyABIAMgAhA2IgENAQsgAkEBED0ACyAAIAE2AgAgAEEEaiACNgIACwuLAQEDfyMAQYABayIDJAAgACgCACECQQAhAANAIAAgA2pB/wBqIAJBD3EiBEEwciAEQdcAaiAEQQpJGzoAACAAQX9qIQAgAkEEdiICDQALIABBgAFqIgJBgQFPBEAgAkGAAUHolsAAECQACyABQfiWwABBAiAAIANqQYABakEAIABrEA0gA0GAAWokAAuKAQEDfyMAQYABayIDJAAgACgCACECQQAhAANAIAAgA2pB/wBqIAJBD3EiBEEwciAEQTdqIARBCkkbOgAAIABBf2ohACACQQR2IgINAAsgAEGAAWoiAkGBAU8EQCACQYABQeiWwAAQJAALIAFB+JbAAEECIAAgA2pBgAFqQQAgAGsQDSADQYABaiQAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakESNgIAIANCAjcCDCADQcCWwAA2AgggA0ESNgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhAxAAtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBEjYCACADQgI3AgwgA0GgmcAANgIIIANBEjYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQMQALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQRI2AgAgA0ICNwIMIANB1JnAADYCCCADQRI2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEDEAC1YBAn8jAEEgayICJAAgAUEcaigCACEDIAEoAhggAkEYaiAAQRBqKQIANwMAIAJBEGogAEEIaikCADcDACACIAApAgA3AwggAyACQQhqEAwgAkEgaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBjJTAACACQQhqEAwgAkEgaiQAC1sBAX8jAEEwayIDJAAgAyABNgIMIAMgADYCCCADQSRqQQE2AgAgA0IBNwIUIANB9JXAADYCECADQRQ2AiwgAyADQShqNgIgIAMgA0EIajYCKCADQRBqIAIQMQALVAECfyABKAIAIQIgAUEANgIAAkAgAgRAIAEoAgQhA0EIQQQQOCIBRQ0BIAEgAzYCBCABIAI2AgAgAEGMiMAANgIEIAAgATYCAA8LAAtBCEEEED0AC0oAAn8gAUGAgMQARwRAQQEgACgCGCABIABBHGooAgAoAhARAAANARoLIAJFBEBBAA8LIAAoAhggAiADIABBHGooAgAoAgwRAgALC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9JXAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEDEAC2ABA38jAEEQayIBJAAgACgCDCICRQRAQbSUwABBK0H4lMAAECoACyAAKAIIIgNFBEBBtJTAAEErQYiVwAAQKgALIAFBADYCBCABIAM2AgAgAUGYlcAAIAAoAgggAhAcAAszAQF/IAIEQCAAIQMDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAALLAACQCAAQXxNBEAgAEUEQEEEIQAMAgsgACAAQX1JQQJ0EDgiAA0BCwALIAALNAECfyAAKAIAIgAgAhAeIABBCGoiAygCACIEIAAoAgBqIAEgAhAsGiADIAIgBGo2AgBBAAs7ACAAKAIAIQAgAS0AAEEQcUEEdkUEQCABLQAAQSBxQQV2RQRAIAAgARA8DwsgACABECEPCyAAIAEQIAssAQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakH4h8AAQQAgAhAcAAs0AQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkH8lcAANgIEIAJB9JXAADYCACACECsACyEAIAEEQANAIABBADoAACAAQQFqIQAgAUF/aiIBDQALCwsgAQF/AkAgACgCACIBRQ0AIABBBGooAgBFDQAgARAGCwsgAQF/AkAgACgCBCIBRQ0AIABBCGooAgBFDQAgARAGCwsdACABKAIARQRAAAsgAEGMiMAANgIEIAAgATYCAAsIACAAIAIQDgsLACABBEAgABAGCwsZAAJ/QQggAUkEQCABIAAQEAwBCyAAEAELCxAAIAEgACgCACAAKAIEEAkLEQBB05XAAEERQeSVwAAQKgALDgAgACgCABoDQAwACwALCwAgADUCACABEBULGQAgACABQYiawAAoAgAiAEEHIAAbEQEAAAsMAELkrsKFl5uliBELDABCz8m0sfOY6Mk+Cw0AQqmAic2l69Dprn8LAwABCwMAAQsL6xkBAEGAgMAAC+EZVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5QzpcVXNlcnNcb3BsaWtcLnJ1c3R1cFx0b29sY2hhaW5zXG5pZ2h0bHkteDg2XzY0LXBjLXdpbmRvd3MtbXN2Y1xsaWIvcnVzdGxpYi9zcmMvcnVzdFxzcmMvbGliY29yZS9tYWNyb3MvbW9kLnJzACQAEABvAAAACgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBjID4gMEM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXHBia2RmMi5ycwAAuwAQAGMAAABUAAAABQAAAFBCS0RGMiBzaXplIGxpbWl0IGV4Y2VlZGVkLgC7ABAAYwAAAGIAAAAPAAAAuwAQAGMAAABqAAAAGgAAAEM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXGNyeXB0b3V0aWwucnNOdW1lcmljIG92ZXJmbG93IG9jY3VyZWQubAEQAGcAAAAWAQAABQAAAGwBEABnAAAAzQEAAAEAAABhc3NlcnRpb24gZmFpbGVkOiBpZHggPj0gc2VsZi5idWZmZXJfaWR4YXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5idWZmZXJfaWR4ID09IDY0AEAAAABhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBgAABgAhAALQAAAI0CEAAMAAAAmQIQAAEAAABDOlxVc2Vyc1xvcGxpa1wuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xydXN0LWNyeXB0by13YXNtLTAuMy4xXHNyY1xzaGEyLnJzAAAAtAIQAGEAAABgAQAABQAAAGFzc2VydGlvbiBmYWlsZWQ6ICFzZWxmLmZpbmlzaGVktAIQAGEAAAAqBAAACQAAALQCEABhAAAAWgQAABsAAAC0AhAAYQAAAFsEAAAbAAAAtAIQAGEAAABcBAAAGwAAALQCEABhAAAAXQQAABsAAAC0AhAAYQAAAF4EAAAbAAAAtAIQAGEAAABfBAAAGwAAALQCEABhAAAAYAQAABsAAAC0AhAAYQAAAGEEAAAbAAAAZ+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FsCAAAACAAAAAQAAAADAAAABAAAAAIAAAAIAAAABAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhc2VsZi5maW5pc2hlZGFzc2VydGlvbiBmYWlsZWQ6IGRzdC5sZW4oKSA+PSBzcmMubGVuKClDOlxVc2Vyc1xvcGxpa1wuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xydXN0LWNyeXB0by13YXNtLTAuMy4xXHNyY1xjcnlwdG91dGlsLnJzAGQEEABnAAAAwgAAAAUAAABDOlxVc2Vyc1xvcGxpa1wuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xydXN0LWNyeXB0by13YXNtLTAuMy4xXHNyY1xobWFjLnJzAAAA3AQQAGEAAAAtAAAAHAAAANwEEABhAAAAVAAAAAkAAABDOlxVc2Vyc1xvcGxpa1wucnVzdHVwXHRvb2xjaGFpbnNcbmlnaHRseS14ODZfNjQtcGMtd2luZG93cy1tc3ZjXGxpYi9ydXN0bGliL3NyYy9ydXN0XHNyYy9saWJjb3JlL21hY3Jvcy9tb2QucnNhc3NlcnRpb24gZmFpbGVkOiBjaHVua19zaXplICE9IDBgBRAAbwAAAAoAAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogZHN0LmxlbigpID49IHNyYy5sZW4oKUM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXGNyeXB0b3V0aWwucnMAKAYQAGcAAADCAAAABQAAAEM6XFVzZXJzXG9wbGlrXC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXHJ1c3QtY3J5cHRvLXdhc20tMC4zLjFcc3JjXHNjcnlwdC5ycwCgBhAAYwAAAGMAAAASAAAAoAYQAGMAAABrAAAAHgAAAKAGEABjAAAAiAAAABEAAACgBhAAYwAAAHsAAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogciA+IDAAoAYQAGMAAACjAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHAgPiAwAKAGEABjAAAApAAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBsb2dfbiA+IDAAoAYQAGMAAAClAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IChsb2dfbiBhcyB1c2l6ZSkgPCBzaXplX29mOjo8dXNpemU+KCkgKiA4AKAGEABjAAAApgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiAobG9nX24gYXMgdXNpemUpIDwgciAqIDE2AKAGEABjAAAAwwAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiByICogcCA8IDB4NDAwMDAwMDCgBhAAYwAAAMkAAAAJAAAASW52YWxpZCBTY3J5cHQgcGFyYW1ldGVycy4AAKAGEABjAAAAvQAAABUAAACgBhAAYwAAALcAAAAVAAAAoAYQAGMAAACxAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dHB1dC5sZW4oKSA+IDAAAKAGEABjAAAA4QAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBDOlxVc2Vyc1xvcGxpa1wucnVzdHVwXHRvb2xjaGFpbnNcbmlnaHRseS14ODZfNjQtcGMtd2luZG93cy1tc3ZjXGxpYi9ydXN0bGliL3NyYy9ydXN0XHNyYy9saWJjb3JlL21hY3Jvcy9tb2QucnM1CRAAbwAAABAAAAAJAAAAYDogAPwIEAAtAAAAKQkQAAwAAAC0CRAAAwAAAGRlc3RpbmF0aW9uIGFuZCBzb3VyY2Ugc2xpY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHPQCRAANAAAAAgAAAAEAAAABAAAAAkAAAAKAAAACwAAAAgAAAAAAAAAAQAAAAwAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnMAAF8KEAAXAAAAggEAAA8AAABfChAAFwAAAIMBAAAPAAAADQAAABAAAAAEAAAADgAAAA8AAAAQAAAADAAAAAQAAAARAAAAc3JjL2xpYmFsbG9jL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvd7wKEAAXAAAARAIAAAUAAAD0ChAAAAAAABUAAAAAAAAAAQAAABYAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAADAsQACAAAAAsCxAAEgAAAHNyYy9saWJjb3JlL2ZtdC9udW0ucnMAAFALEAAWAAAAVAAAABQAAAAweDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5c3JjL2xpYmNvcmUvZm10L21vZC5yc0IMEAAWAAAATAQAABEAAABCDBAAFgAAAFYEAAAkAAAAaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHgMEAAGAAAAfgwQACIAAABzbGljZSBpbmRleCBzdGFydHMgYXQgIGJ1dCBlbmRzIGF0IACwDBAAFgAAAMYMEAANAIMBCXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMlMS40NS4wLW5pZ2h0bHkgKDBhYTY3NTFjMSAyMDIwLTA1LTIwKQZ3YWxydXMGMC4xNy4wDHdhc20tYmluZGdlbhIwLjIuNjMgKGRmODA5ZGY5YSk=" +); let wasm; let cachegetUint8Memory0 = null; function getUint8Memory0() { - if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + if ( + cachegetUint8Memory0 === null || + cachegetUint8Memory0.buffer !== wasm.memory.buffer + ) { cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachegetUint8Memory0; @@ -22,7 +28,10 @@ function passArray8ToWasm0(arg, malloc) { let cachegetInt32Memory0 = null; function getInt32Memory0() { - if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + if ( + cachegetInt32Memory0 === null || + cachegetInt32Memory0.buffer !== wasm.memory.buffer + ) { cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachegetInt32Memory0; @@ -32,14 +41,14 @@ function getArrayU8FromWasm0(ptr, len) { return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); } /** -* @param {Uint8Array} password -* @param {Uint8Array} salt -* @param {number} n -* @param {number} r -* @param {number} p -* @param {number} dklen -* @returns {Uint8Array} -*/ + * @param {Uint8Array} password + * @param {Uint8Array} salt + * @param {number} n + * @param {number} r + * @param {number} p + * @param {number} dklen + * @returns {Uint8Array} + */ export function scrypt(password, salt, n, r, p, dklen) { var ptr0 = passArray8ToWasm0(password, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; @@ -54,16 +63,16 @@ export function scrypt(password, salt, n, r, p, dklen) { } async function load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - - if (typeof WebAssembly.instantiateStreaming === 'function') { + if (typeof Response === "function" && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { try { return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - if (module.headers.get('Content-Type') != 'application/wasm') { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - + if (module.headers.get("Content-Type") != "application/wasm") { + console.warn( + "`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", + e + ); } else { throw e; } @@ -72,14 +81,11 @@ async function load(module, imports) { const bytes = await module.arrayBuffer(); return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module, imports); if (instance instanceof WebAssembly.Instance) { return { instance, module }; - } else { return instance; } @@ -87,13 +93,16 @@ async function load(module, imports) { } async function init(input) { - if (typeof input === 'undefined') { - input = import.meta.url.replace(/\.js$/, '_bg.wasm'); + if (typeof input === "undefined") { + input = import.meta.url.replace(/\.js$/, "_bg.wasm"); } const imports = {}; - - if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + if ( + typeof input === "string" || + (typeof Request === "function" && input instanceof Request) || + (typeof URL === "function" && input instanceof URL) + ) { input = fetch(input); } @@ -105,12 +114,13 @@ async function init(input) { return wasm; } -export default init; /** -* @param {Uint8Array} password -* @param {Uint8Array} salt -* @param {number} n -* @param {number} r -* @param {number} p -* @param {number} dklen -* @returns {Uint8Array} -*/ +export default init; +/** + * @param {Uint8Array} password + * @param {Uint8Array} salt + * @param {number} n + * @param {number} r + * @param {number} p + * @param {number} dklen + * @returns {Uint8Array} + */ diff --git a/lib/helpers.ts b/lib/helpers.ts index a528edb..84826fe 100644 --- a/lib/helpers.ts +++ b/lib/helpers.ts @@ -1,11 +1,11 @@ /** * @todo document this module */ -import { Sha256, HmacSha256 } from "https://deno.land/std/hash/sha256.ts"; +import { Sha256, HmacSha256 } from "https://deno.land/std@0.103.0/hash/sha256.ts"; import { encode, decode, -} from "https://deno.land/std/encoding/base64.ts"; +} from "https://deno.land/std@0.103.0/encoding/base64.ts"; // deno-fmt-ignore export type logN = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | diff --git a/lib/helpers_test.ts b/lib/helpers_test.ts index 0a1ac7a..6c10076 100644 --- a/lib/helpers_test.ts +++ b/lib/helpers_test.ts @@ -1,6 +1,6 @@ import { assertEquals, -} from "https://deno.land/std/testing/asserts.ts"; +} from "https://deno.land/std@0.103.0/testing/asserts.ts"; import { decomposeFormat } from "./helpers.ts"; diff --git a/lib/scrypt.ts b/lib/scrypt.ts index de593f7..d2a0d92 100644 --- a/lib/scrypt.ts +++ b/lib/scrypt.ts @@ -1,14 +1,14 @@ import init, { source, scrypt as scryptWASM } from "./_wasm/wasm.js"; -import { encode as base64encode } from "https://deno.land/std/encoding/base64.ts"; -import { encode as hexencode } from "https://deno.land/std/encoding/hex.ts"; +import { encode as base64encode } from "https://deno.land/std@0.103.0/encoding/base64.ts"; +import { encode as hexencode } from "https://deno.land/std@0.103.0/encoding/hex.ts"; const encoder: TextEncoder = new TextEncoder(); const decoder: TextDecoder = new TextDecoder("utf-8"); await init(source); -export type encoding = ("utf-8" | "base64" | "hex"); +export type encoding = "utf-8" | "base64" | "hex"; /** * Scrypt implementation using web assembly * @param {string|Uint8Array} password - string to hash - * @param {string|Uint8Array} salt - + * @param {string|Uint8Array} salt - * @param {number} N - CPU/Memory cost parameter. Must be a power of 2 smaller than 2^(128*r/8) * @param {number} r - block size * @param {number} p - parallelism factor @@ -17,26 +17,27 @@ export type encoding = ("utf-8" | "base64" | "hex"); * @returns {Promise} - the resulting hash encoded according to outputEncoding */ export async function scrypt( - password: (string | Uint8Array), - salt: (string | Uint8Array), - N: number, - r: number, - p: number, - dklen?: number, - outputEncoding?: encoding, -): Promise<(Uint8Array | string)> { - dklen = dklen ?? 64; - password = typeof password === "string" ? encoder.encode(password) : password; - salt = typeof salt === "string" ? encoder.encode(salt) : salt; - const result: Uint8Array = scryptWASM(password, salt, N, r, p, dklen); - switch (outputEncoding) { - case "base64": - return base64encode(result); - case "hex": - return hexencode(result); - case "utf-8": - return decoder.decode(result); - default: - return result; - } + password: string | Uint8Array, + salt: string | Uint8Array, + N: number, + r: number, + p: number, + dklen?: number, + outputEncoding?: encoding +): Promise { + dklen = dklen ?? 64; + password = + typeof password === "string" ? encoder.encode(password) : password; + salt = typeof salt === "string" ? encoder.encode(salt) : salt; + const result: Uint8Array = scryptWASM(password, salt, N, r, p, dklen); + switch (outputEncoding) { + case "base64": + return base64encode(result); + case "hex": + return hexencode(result); + case "utf-8": + return decoder.decode(result); + default: + return result; + } } diff --git a/lib/scrypt_bench.ts b/lib/scrypt_bench.ts index 2f41b15..7e03a6d 100644 --- a/lib/scrypt_bench.ts +++ b/lib/scrypt_bench.ts @@ -2,102 +2,96 @@ * Just a few simple benchmarks * @todo document the benchmarks better */ -import { runBenchmarks, bench } from "https://deno.land/std/testing/bench.ts"; +import { + runBenchmarks, + bench, +} from "https://deno.land/std@0.103.0/testing/bench.ts"; import { scrypt } from "./scrypt.ts"; -const extremeSalt: string = - `IkjpewCbNm4A7cuY1VL9KC3y92blEthtLf9Cet6uEoTxz5cyF660da2zeci42fYwVCVwsKogETMCXupSZZAUh6a80ZnnBTk17B3UTCSVQPpYfL8GktJ2BDokE7ox2hV8OwwUT1hFvCuJqwHZpRvZw1RNCO6HfukPdgMHhq9rWLTXXUNwrIjlmkeydKGFJz2mS1xFcvLQtle4olJVK0SXXXYHAigBfpYxxSC2acvoxuacWcXhzSSRZAMysU2J7zDfXdxnYoqz50rvmvi36g7t2WDSAdzZ44JpxVcc3bYD7xYI3UgfVMPOfeblzwJi455QIurHzDuXEUNS0tZX1kWwZ0XcNSCwGzPs7WSVHxHc0KVUNhwSz16wDYFK4pYeA29ThXgFiFICSLVshiRrCfuzRthW7IZtRa9efcf4nFJsVBk51jpHY0b8CLhARrQU92mlBULwmJKe8DgST3Vn9rva98E9jk4y7NfSb4i9g74OjuFQ8yRO3BHksBZoVtBl4wUppM2hsLt72LZKA0ZsaWW7dG9a1bgWUkBBRG5OwzARenDqQIA2Gp5V4JsXuUUYNDylCelkLUVfS7hB1AZHtnIgwVqTaGDxl7nNZGKpAx6MrOd40laTUhrtZo4prwFZROHPNVJGQk2PQDgwqxX5SWoBTK8cCCzrbGBfHq9r8BwBvSVdeQ7bgjUW2j7NCapHHZ6filzxZaVsLsEITGZNcK0t5DdSnaDLRxyOn21ncKVIyZfOdlvpytvqpQaH5RWu4G50IPkEevue8KenXpGLP0pmEseBf6eX02rlN9arqZ4HJWmD7RbAChs7OJwfKlNIawb0V3G3N0eJeXiRsYOk10GIb91pyZRLSr2AJDtiWCcMuOWZfgLVHIrUVftfh9iXmRk2RAT1sigivbNtdqcF2cVvbTVMUCe7MIPRt4dGqwOQqdReGjPy9p1CNfKfJBIgW0xhYsOGMkcUqSurHxPl4wTOnMBx8vEZQsqJCZomENA1`; -const extremePassword: string = - `TFImeWrtF2kOIvDjG4P0ybmMrNOq0bQ0aERcC69iHflECWrwuSMO4JPD3Ng5HwNXZrCpHyEwviW8zly3WLsQ6zJ60lnfwhVRdkEQCsFiH4NvGl0tCAuty9Rruf47WHeE3GK7qAJwhcXHx3FCJgWN8KHdoy3vn2zUKJlhhjSFGANJdVYQGSaQTmtoJdhcemmYT5hprkALp7Q9vMwCk9hDvV5vB0evXfxqG0dFV3MPJmywwWAUJEi5MyM2Pio7fL50M5ohPWFmUllpa6G5pVBhi26GtOy6sM3GDGHmnohavtsMvTeRcMX1ds4HWA9U3vH7urQ3XGkCUzulB6WxuxHn8Z3fRz3BL6MZI0EReep2qUVaqJn8onzsI6da6pU6iDtRbufWxi0q8XN1S3BCtFGjzaTU12nvfg5js53PiSw1KUnZj2thKxWtnKcpwzbXdTuuZ9GVhZHIMcOXXrDR0rj539ZLAVyJmqwDOMjTsqPN7BY522PcJHoTElSRNRAsAsFx2m7h9brhcZXOgV1PZohJsdQS7RWhAl9EYBkgF8WCgGw9DXidVduIIHDlEd7mAVJfo9HYX85kFcwrLEpuPiFxfNhubeDpeBu2FAbAo6DNHFlqXUUnyKvMbzptcgisSr2V1pwykB6uLVrwx3AceRnyqg5flldmfsSKw0AFZ4PagGMJuFDMGrV29Vmqhv61SRL9in0ngZx0gJ2vKv26qS3jGN72UUsbkysuGNz6ul0D5jIapvIcCTncIiXSY24pPctxFsawcXvSNw4jEKccsHCTZF0gri6iFS7JqqQd87FNowbrug6sIWSwiWHYGN1VfSwuE5plQHVvNCHNZnMBBIoaMWh45lhtlfCWdUwVpjjK5dAUcOtKftJ2hcl4mIlxs7Fy8ASWhYvWAbpp3fRgmAeTRYAFEwMohN9b03iXyDSNFIeZtQoaL7HYFVWoXV4BfBVlR3CvNIwp6OPBAFFSDlSn9CZU06UziY1tSwqBzkCD`; +const extremeSalt: string = `IkjpewCbNm4A7cuY1VL9KC3y92blEthtLf9Cet6uEoTxz5cyF660da2zeci42fYwVCVwsKogETMCXupSZZAUh6a80ZnnBTk17B3UTCSVQPpYfL8GktJ2BDokE7ox2hV8OwwUT1hFvCuJqwHZpRvZw1RNCO6HfukPdgMHhq9rWLTXXUNwrIjlmkeydKGFJz2mS1xFcvLQtle4olJVK0SXXXYHAigBfpYxxSC2acvoxuacWcXhzSSRZAMysU2J7zDfXdxnYoqz50rvmvi36g7t2WDSAdzZ44JpxVcc3bYD7xYI3UgfVMPOfeblzwJi455QIurHzDuXEUNS0tZX1kWwZ0XcNSCwGzPs7WSVHxHc0KVUNhwSz16wDYFK4pYeA29ThXgFiFICSLVshiRrCfuzRthW7IZtRa9efcf4nFJsVBk51jpHY0b8CLhARrQU92mlBULwmJKe8DgST3Vn9rva98E9jk4y7NfSb4i9g74OjuFQ8yRO3BHksBZoVtBl4wUppM2hsLt72LZKA0ZsaWW7dG9a1bgWUkBBRG5OwzARenDqQIA2Gp5V4JsXuUUYNDylCelkLUVfS7hB1AZHtnIgwVqTaGDxl7nNZGKpAx6MrOd40laTUhrtZo4prwFZROHPNVJGQk2PQDgwqxX5SWoBTK8cCCzrbGBfHq9r8BwBvSVdeQ7bgjUW2j7NCapHHZ6filzxZaVsLsEITGZNcK0t5DdSnaDLRxyOn21ncKVIyZfOdlvpytvqpQaH5RWu4G50IPkEevue8KenXpGLP0pmEseBf6eX02rlN9arqZ4HJWmD7RbAChs7OJwfKlNIawb0V3G3N0eJeXiRsYOk10GIb91pyZRLSr2AJDtiWCcMuOWZfgLVHIrUVftfh9iXmRk2RAT1sigivbNtdqcF2cVvbTVMUCe7MIPRt4dGqwOQqdReGjPy9p1CNfKfJBIgW0xhYsOGMkcUqSurHxPl4wTOnMBx8vEZQsqJCZomENA1`; +const extremePassword: string = `TFImeWrtF2kOIvDjG4P0ybmMrNOq0bQ0aERcC69iHflECWrwuSMO4JPD3Ng5HwNXZrCpHyEwviW8zly3WLsQ6zJ60lnfwhVRdkEQCsFiH4NvGl0tCAuty9Rruf47WHeE3GK7qAJwhcXHx3FCJgWN8KHdoy3vn2zUKJlhhjSFGANJdVYQGSaQTmtoJdhcemmYT5hprkALp7Q9vMwCk9hDvV5vB0evXfxqG0dFV3MPJmywwWAUJEi5MyM2Pio7fL50M5ohPWFmUllpa6G5pVBhi26GtOy6sM3GDGHmnohavtsMvTeRcMX1ds4HWA9U3vH7urQ3XGkCUzulB6WxuxHn8Z3fRz3BL6MZI0EReep2qUVaqJn8onzsI6da6pU6iDtRbufWxi0q8XN1S3BCtFGjzaTU12nvfg5js53PiSw1KUnZj2thKxWtnKcpwzbXdTuuZ9GVhZHIMcOXXrDR0rj539ZLAVyJmqwDOMjTsqPN7BY522PcJHoTElSRNRAsAsFx2m7h9brhcZXOgV1PZohJsdQS7RWhAl9EYBkgF8WCgGw9DXidVduIIHDlEd7mAVJfo9HYX85kFcwrLEpuPiFxfNhubeDpeBu2FAbAo6DNHFlqXUUnyKvMbzptcgisSr2V1pwykB6uLVrwx3AceRnyqg5flldmfsSKw0AFZ4PagGMJuFDMGrV29Vmqhv61SRL9in0ngZx0gJ2vKv26qS3jGN72UUsbkysuGNz6ul0D5jIapvIcCTncIiXSY24pPctxFsawcXvSNw4jEKccsHCTZF0gri6iFS7JqqQd87FNowbrug6sIWSwiWHYGN1VfSwuE5plQHVvNCHNZnMBBIoaMWh45lhtlfCWdUwVpjjK5dAUcOtKftJ2hcl4mIlxs7Fy8ASWhYvWAbpp3fRgmAeTRYAFEwMohN9b03iXyDSNFIeZtQoaL7HYFVWoXV4BfBVlR3CvNIwp6OPBAFFSDlSn9CZU06UziY1tSwqBzkCD`; bench({ - name: "small scrypt", - runs: 10, - async func(b): Promise { - b.start(); - await scrypt("password", "salt", 1024, 8, 1, 64); - b.stop(); - }, + name: "small scrypt", + runs: 10, + async func(b): Promise { + b.start(); + await scrypt("password", "salt", 1024, 8, 1, 64); + b.stop(); + }, }); bench({ - name: "small scrypt (longer password)", - runs: 10, - async func(b): Promise { - b.start(); - await scrypt( - "long password to test that", - "salt", - 1024, - 8, - 1, - 64, - ); - b.stop(); - }, + name: "small scrypt (longer password)", + runs: 10, + async func(b): Promise { + b.start(); + await scrypt("long password to test that", "salt", 1024, 8, 1, 64); + b.stop(); + }, }); bench({ - name: "small scrypt (longer salt)", - runs: 100, - async func(b): Promise { - b.start(); - await scrypt("password", "long salt to test that", 1024, 8, 1, 64); - b.stop(); - }, + name: "small scrypt (longer salt)", + runs: 100, + async func(b): Promise { + b.start(); + await scrypt("password", "long salt to test that", 1024, 8, 1, 64); + b.stop(); + }, }); bench({ - name: "small scrypt (longer password and salt)", - runs: 100, - async func(b): Promise { - b.start(); - await scrypt( - "long password to test that", - "long salt to test that", - 1024, - 8, - 1, - 64, - ); - b.stop(); - }, + name: "small scrypt (longer password and salt)", + runs: 100, + async func(b): Promise { + b.start(); + await scrypt( + "long password to test that", + "long salt to test that", + 1024, + 8, + 1, + 64 + ); + b.stop(); + }, }); bench({ - name: "small scrypt (extremely long salt)", - runs: 100, - async func(b): Promise { - b.start(); - await scrypt("password", extremeSalt, 1024, 8, 1, 64); - b.stop(); - }, + name: "small scrypt (extremely long salt)", + runs: 100, + async func(b): Promise { + b.start(); + await scrypt("password", extremeSalt, 1024, 8, 1, 64); + b.stop(); + }, }); bench({ - name: "small scrypt (extremely long password)", - runs: 100, - async func(b): Promise { - b.start(); - await scrypt(extremePassword, "NaCl", 1024, 8, 1, 64); - b.stop(); - }, + name: "small scrypt (extremely long password)", + runs: 100, + async func(b): Promise { + b.start(); + await scrypt(extremePassword, "NaCl", 1024, 8, 1, 64); + b.stop(); + }, }); bench({ - name: "small scrypt (extremely long password and salt)", - runs: 100, - async func(b): Promise { - b.start(); - await scrypt(extremePassword, extremeSalt, 1024, 8, 1, 64); - b.stop(); - }, + name: "small scrypt (extremely long password and salt)", + runs: 100, + async func(b): Promise { + b.start(); + await scrypt(extremePassword, extremeSalt, 1024, 8, 1, 64); + b.stop(); + }, }); bench({ - name: "standard scrypt", - runs: 20, - async func(b): Promise { - b.start(); - await scrypt("password", "NaCl", 16384, 8, 1, 64); - b.stop(); - }, + name: "standard scrypt", + runs: 20, + async func(b): Promise { + b.start(); + await scrypt("password", "NaCl", 16384, 8, 1, 64); + b.stop(); + }, }); runBenchmarks(); diff --git a/lib/scrypt_test.ts b/lib/scrypt_test.ts index fba535f..55212ff 100644 --- a/lib/scrypt_test.ts +++ b/lib/scrypt_test.ts @@ -1,80 +1,80 @@ -import { assertEquals } from "https://deno.land/std/testing/asserts.ts"; +import { assertEquals } from "https://deno.land/std@0.103.0/testing/asserts.ts"; import { scrypt } from "./scrypt.ts"; Deno.test("scrypt #1", async (): Promise => { - // deno-fmt-ignore - const expectedOutput: Uint8Array = new Uint8Array([ - 0x77, 0xd6, 0x57, 0x62, 0x38, 0x65, 0x7b, 0x20, 0x3b, 0x19, 0xca, - 0x42, 0xc1, 0x8a, 0x04, 0x97, 0xf1, 0x6b, 0x48, 0x44, 0xe3, 0x07, - 0x4a, 0xe8, 0xdf, 0xdf, 0xfa, 0x3f, 0xed, 0xe2, 0x14, 0x42, 0xfc, - 0xd0, 0x06, 0x9d, 0xed, 0x09, 0x48, 0xf8, 0x32, 0x6a, 0x75, 0x3a, - 0x0f, 0xc8, 0x1f, 0x17, 0xe8, 0xd3, 0xe0, 0xfb, 0x2e, 0x0d, 0x36, - 0x28, 0xcf, 0x35, 0xe2, 0x0c, 0x38, 0xd1, 0x89, 0x06 + // deno-fmt-ignore + const expectedOutput: Uint8Array = new Uint8Array([ + 0x77, 0xd6, 0x57, 0x62, 0x38, 0x65, 0x7b, 0x20, 0x3b, 0x19, 0xca, 0x42, + 0xc1, 0x8a, 0x04, 0x97, 0xf1, 0x6b, 0x48, 0x44, 0xe3, 0x07, 0x4a, 0xe8, + 0xdf, 0xdf, 0xfa, 0x3f, 0xed, 0xe2, 0x14, 0x42, 0xfc, 0xd0, 0x06, 0x9d, + 0xed, 0x09, 0x48, 0xf8, 0x32, 0x6a, 0x75, 0x3a, 0x0f, 0xc8, 0x1f, 0x17, + 0xe8, 0xd3, 0xe0, 0xfb, 0x2e, 0x0d, 0x36, 0x28, 0xcf, 0x35, 0xe2, 0x0c, + 0x38, 0xd1, 0x89, 0x06, ]); - assertEquals( - (await scrypt("", "", 16, 1, 1, 64)) as Uint8Array, - expectedOutput, - ); + assertEquals( + (await scrypt("", "", 16, 1, 1, 64)) as Uint8Array, + expectedOutput + ); }); // deno-fmt-ignore Deno.test("scrypt #2", async (): Promise => { - // deno-fmt-ignore - const expectedOutput: Uint8Array = new Uint8Array([ - 0xfd, 0xba, 0xbe, 0x1c, 0x9d, 0x34, 0x72, 0x00, 0x78, 0x56, 0xe7, - 0x19, 0x0d, 0x01, 0xe9, 0xfe, 0x7c, 0x6a, 0xd7, 0xcb, 0xc8, 0x23, - 0x78, 0x30, 0xe7, 0x73, 0x76, 0x63, 0x4b, 0x37, 0x31, 0x62, 0x2e, - 0xaf, 0x30, 0xd9, 0x2e, 0x22, 0xa3, 0x88, 0x6f, 0xf1, 0x09, 0x27, - 0x9d, 0x98, 0x30, 0xda, 0xc7, 0x27, 0xaf, 0xb9, 0x4a, 0x83, 0xee, - 0x6d, 0x83, 0x60, 0xcb, 0xdf, 0xa2, 0xcc, 0x06, 0x40 + // deno-fmt-ignore + const expectedOutput: Uint8Array = new Uint8Array([ + 0xfd, 0xba, 0xbe, 0x1c, 0x9d, 0x34, 0x72, 0x00, 0x78, 0x56, 0xe7, 0x19, + 0x0d, 0x01, 0xe9, 0xfe, 0x7c, 0x6a, 0xd7, 0xcb, 0xc8, 0x23, 0x78, 0x30, + 0xe7, 0x73, 0x76, 0x63, 0x4b, 0x37, 0x31, 0x62, 0x2e, 0xaf, 0x30, 0xd9, + 0x2e, 0x22, 0xa3, 0x88, 0x6f, 0xf1, 0x09, 0x27, 0x9d, 0x98, 0x30, 0xda, + 0xc7, 0x27, 0xaf, 0xb9, 0x4a, 0x83, 0xee, 0x6d, 0x83, 0x60, 0xcb, 0xdf, + 0xa2, 0xcc, 0x06, 0x40, ]); - assertEquals( - (await scrypt("password", "NaCl", 1024, 8, 16, 64)) as Uint8Array, - expectedOutput, - ); + assertEquals( + (await scrypt("password", "NaCl", 1024, 8, 16, 64)) as Uint8Array, + expectedOutput + ); }); Deno.test("scrypt #3", async (): Promise => { - // deno-fmt-ignore - const expectedOutput: Uint8Array = new Uint8Array([ - 0x70, 0x23, 0xbd, 0xcb, 0x3a, 0xfd, 0x73, 0x48, 0x46, 0x1c, 0x06, - 0xcd, 0x81, 0xfd, 0x38, 0xeb, 0xfd, 0xa8, 0xfb, 0xba, 0x90, 0x4f, - 0x8e, 0x3e, 0xa9, 0xb5, 0x43, 0xf6, 0x54, 0x5d, 0xa1, 0xf2, 0xd5, - 0x43, 0x29, 0x55, 0x61, 0x3f, 0x0f, 0xcf, 0x62, 0xd4, 0x97, 0x05, - 0x24, 0x2a, 0x9a, 0xf9, 0xe6, 0x1e, 0x85, 0xdc, 0x0d, 0x65, 0x1e, - 0x40, 0xdf, 0xcf, 0x01, 0x7b, 0x45, 0x57, 0x58, 0x87 + // deno-fmt-ignore + const expectedOutput: Uint8Array = new Uint8Array([ + 0x70, 0x23, 0xbd, 0xcb, 0x3a, 0xfd, 0x73, 0x48, 0x46, 0x1c, 0x06, 0xcd, + 0x81, 0xfd, 0x38, 0xeb, 0xfd, 0xa8, 0xfb, 0xba, 0x90, 0x4f, 0x8e, 0x3e, + 0xa9, 0xb5, 0x43, 0xf6, 0x54, 0x5d, 0xa1, 0xf2, 0xd5, 0x43, 0x29, 0x55, + 0x61, 0x3f, 0x0f, 0xcf, 0x62, 0xd4, 0x97, 0x05, 0x24, 0x2a, 0x9a, 0xf9, + 0xe6, 0x1e, 0x85, 0xdc, 0x0d, 0x65, 0x1e, 0x40, 0xdf, 0xcf, 0x01, 0x7b, + 0x45, 0x57, 0x58, 0x87, ]); - assertEquals( - (await scrypt( - "pleaseletmein", - "SodiumChloride", - 16384, - 8, - 1, - 64, - )) as Uint8Array, - expectedOutput, - ); + assertEquals( + (await scrypt( + "pleaseletmein", + "SodiumChloride", + 16384, + 8, + 1, + 64 + )) as Uint8Array, + expectedOutput + ); }); Deno.test("scrypt #4", async (): Promise => { - // deno-fmt-ignore - const expectedOutput: Uint8Array = new Uint8Array([ - 0x21, 0x01, 0xcb, 0x9b, 0x6a, 0x51, 0x1a, 0xae, 0xad, 0xdb, 0xbe, - 0x09, 0xcf, 0x70, 0xf8, 0x81, 0xec, 0x56, 0x8d, 0x57, 0x4a, 0x2f, - 0xfd, 0x4d, 0xab, 0xe5, 0xee, 0x98, 0x20, 0xad, 0xaa, 0x47, 0x8e, - 0x56, 0xfd, 0x8f, 0x4b, 0xa5, 0xd0, 0x9f, 0xfa, 0x1c, 0x6d, 0x92, - 0x7c, 0x40, 0xf4, 0xc3, 0x37, 0x30, 0x40, 0x49, 0xe8, 0xa9, 0x52, - 0xfb, 0xcb, 0xf4, 0x5c, 0x6f, 0xa7, 0x7a, 0x41, 0xa4 + // deno-fmt-ignore + const expectedOutput: Uint8Array = new Uint8Array([ + 0x21, 0x01, 0xcb, 0x9b, 0x6a, 0x51, 0x1a, 0xae, 0xad, 0xdb, 0xbe, 0x09, + 0xcf, 0x70, 0xf8, 0x81, 0xec, 0x56, 0x8d, 0x57, 0x4a, 0x2f, 0xfd, 0x4d, + 0xab, 0xe5, 0xee, 0x98, 0x20, 0xad, 0xaa, 0x47, 0x8e, 0x56, 0xfd, 0x8f, + 0x4b, 0xa5, 0xd0, 0x9f, 0xfa, 0x1c, 0x6d, 0x92, 0x7c, 0x40, 0xf4, 0xc3, + 0x37, 0x30, 0x40, 0x49, 0xe8, 0xa9, 0x52, 0xfb, 0xcb, 0xf4, 0x5c, 0x6f, + 0xa7, 0x7a, 0x41, 0xa4, ]); - assertEquals( - (await scrypt( - "pleaseletmein", - "SodiumChloride", - 1048576, - 8, - 1, - 64, - )) as Uint8Array, - expectedOutput, - ); + assertEquals( + (await scrypt( + "pleaseletmein", + "SodiumChloride", + 1048576, + 8, + 1, + 64 + )) as Uint8Array, + expectedOutput + ); }); diff --git a/mod_test.ts b/mod_test.ts index 0203063..1b6d648 100644 --- a/mod_test.ts +++ b/mod_test.ts @@ -1,60 +1,60 @@ import { - assertEquals, - assert, -} from "https://deno.land/std/testing/asserts.ts"; + assertEquals, + assert, +} from "https://deno.land/std@0.103.0/testing/asserts.ts "; import { hash, verify } from "./mod.ts"; Deno.test("basic hashing - scrypt format", async (): Promise => { - const hashedPassword = await hash("test-password"); - assert(await verify("test-password", hashedPassword)); + const hashedPassword = await hash("test-password"); + assert(await verify("test-password", hashedPassword)); }); Deno.test("basic hashing - PHC format", async (): Promise => { - const hashedPassword = await hash("test-password", undefined, "phc"); - assert(await verify("test-password", hashedPassword)); + const hashedPassword = await hash("test-password", undefined, "phc"); + assert(await verify("test-password", hashedPassword)); }); Deno.test("basic hashing raw", async (): Promise => { - const hashedPassword = await hash("test-password", { salt: "test" }, "raw"); - assertEquals( - hashedPassword, - "zu8gd0RTeX6r0dbNzBv5ZzXOAQo0UnFUw49uRXrPwAlDocpJSA43WEgAcKNlsBhLyA+zVDluz/0GFa1ShAcr6g==", - ); + const hashedPassword = await hash("test-password", { salt: "test" }, "raw"); + assertEquals( + hashedPassword, + "zu8gd0RTeX6r0dbNzBv5ZzXOAQo0UnFUw49uRXrPwAlDocpJSA43WEgAcKNlsBhLyA+zVDluz/0GFa1ShAcr6g==" + ); }); // source of this test string: https://github.com/barrysteyn/node-scrypt#what-are-the-essential-properties-for-storing-passwords Deno.test("verify scrypt string", async (): Promise => { - assert( - await verify( - "password1", - "c2NyeXB0AAwAAAAIAAAAATpP+fdQAryDiRmCmcoOrZa2mZ049KdbA/ofTTrATQQ+m0L/gR811d0WQyip6p2skXVEMz2+8U+xGryFu2p0yzfCxYLUrAaIzaZELkN2M6k0", - ), - ); + assert( + await verify( + "password1", + "c2NyeXB0AAwAAAAIAAAAATpP+fdQAryDiRmCmcoOrZa2mZ049KdbA/ofTTrATQQ+m0L/gR811d0WQyip6p2skXVEMz2+8U+xGryFu2p0yzfCxYLUrAaIzaZELkN2M6k0" + ) + ); }); // source of this test string: https://passlib.readthedocs.io/en/stable/lib/passlib.hash.scrypt.html Deno.test("verify PHC string", async (): Promise => { - assert( - await verify( - "password", - "$scrypt$ln=16,r=8,p=1$aM15713r3Xsvxbi31lqr1Q$nFNh2CVHVjNldFVKDHDlm4CbdRSCdEBsjjJxD+iCs5E", - ), - ); + assert( + await verify( + "password", + "$scrypt$ln=16,r=8,p=1$aM15713r3Xsvxbi31lqr1Q$nFNh2CVHVjNldFVKDHDlm4CbdRSCdEBsjjJxD+iCs5E" + ) + ); }); Deno.test("reject invalid password (PHC)", async (): Promise => { - assertEquals( - await verify( - "invalid-password", - "$scrypt$ln=16,r=8,p=1$aM15713r3Xsvxbi31lqr1Q$nFNh2CVHVjNldFVKDHDlm4CbdRSCdEBsjjJxD+iCs5E", - ), - false, - ); + assertEquals( + await verify( + "invalid-password", + "$scrypt$ln=16,r=8,p=1$aM15713r3Xsvxbi31lqr1Q$nFNh2CVHVjNldFVKDHDlm4CbdRSCdEBsjjJxD+iCs5E" + ), + false + ); }); Deno.test("reject invalid password (scrypt)", async (): Promise => { - assertEquals( - await verify( - "invalid-password", - "c2NyeXB0AAwAAAAIAAAAATpP+fdQAryDiRmCmcoOrZa2mZ049KdbA/ofTTrATQQ+m0L/gR811d0WQyip6p2skXVEMz2+8U+xGryFu2p0yzfCxYLUrAaIzaZELkN2M6k0", - ), - false, - ); + assertEquals( + await verify( + "invalid-password", + "c2NyeXB0AAwAAAAIAAAAATpP+fdQAryDiRmCmcoOrZa2mZ049KdbA/ofTTrATQQ+m0L/gR811d0WQyip6p2skXVEMz2+8U+xGryFu2p0yzfCxYLUrAaIzaZELkN2M6k0" + ), + false + ); });