react-native-audio-api 0.4.12-beta.3 → 0.4.12-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/RNAudioAPI.podspec +5 -23
  2. package/lib/module/api.js +31 -0
  3. package/lib/module/api.js.map +1 -0
  4. package/lib/module/{index.web.js → api.web.js} +3 -1
  5. package/lib/module/api.web.js.map +1 -0
  6. package/lib/module/index.js +1 -28
  7. package/lib/module/index.js.map +1 -1
  8. package/lib/module/web-core/AudioBuffer.js +1 -1
  9. package/lib/module/web-core/AudioBuffer.js.map +1 -1
  10. package/lib/module/web-core/AudioContext.js +7 -0
  11. package/lib/module/web-core/AudioContext.js.map +1 -1
  12. package/lib/module/web-core/StretcherNode.js +64 -0
  13. package/lib/module/web-core/StretcherNode.js.map +1 -0
  14. package/lib/module/web-core/custom/LoadCustomWasm.js +33 -0
  15. package/lib/module/web-core/custom/LoadCustomWasm.js.map +1 -0
  16. package/lib/module/web-core/custom/index.js +4 -0
  17. package/lib/module/web-core/custom/index.js.map +1 -0
  18. package/lib/module/web-core/custom/signalsmithStretch/LICENSE.txt +21 -0
  19. package/lib/module/web-core/custom/signalsmithStretch/README.md +46 -0
  20. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js +822 -0
  21. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js.map +1 -0
  22. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +826 -0
  23. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs.map +1 -0
  24. package/lib/typescript/api.d.ts +21 -0
  25. package/lib/typescript/api.d.ts.map +1 -0
  26. package/lib/typescript/{index.web.d.ts → api.web.d.ts} +3 -1
  27. package/lib/typescript/api.web.d.ts.map +1 -0
  28. package/lib/typescript/index.d.ts +1 -20
  29. package/lib/typescript/index.d.ts.map +1 -1
  30. package/lib/typescript/web-core/AudioBuffer.d.ts +1 -1
  31. package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -1
  32. package/lib/typescript/web-core/AudioContext.d.ts +2 -0
  33. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  34. package/lib/typescript/web-core/StretcherNode.d.ts +45 -0
  35. package/lib/typescript/web-core/StretcherNode.d.ts.map +1 -0
  36. package/lib/typescript/web-core/custom/LoadCustomWasm.d.ts +5 -0
  37. package/lib/typescript/web-core/custom/LoadCustomWasm.d.ts.map +1 -0
  38. package/lib/typescript/web-core/custom/index.d.ts +2 -0
  39. package/lib/typescript/web-core/custom/index.d.ts.map +1 -0
  40. package/package.json +8 -4
  41. package/scripts/setup-custom-wasm.js +104 -0
  42. package/src/api.ts +51 -0
  43. package/src/{index.web.ts → api.web.ts} +3 -0
  44. package/src/index.ts +1 -51
  45. package/src/web-core/AudioBuffer.tsx +2 -2
  46. package/src/web-core/AudioContext.tsx +11 -0
  47. package/src/web-core/StretcherNode.tsx +125 -0
  48. package/src/web-core/custom/LoadCustomWasm.ts +39 -0
  49. package/src/web-core/custom/index.ts +1 -0
  50. package/src/web-core/custom/signalsmithStretch/LICENSE.txt +21 -0
  51. package/src/web-core/custom/signalsmithStretch/README.md +46 -0
  52. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.js +945 -0
  53. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +949 -0
  54. package/lib/module/index.web.js.map +0 -1
  55. package/lib/typescript/index.web.d.ts.map +0 -1
  56. package/scripts/audioapi_utils.rb +0 -56
@@ -0,0 +1,949 @@
1
+ let module = {},
2
+ exports = {};
3
+ var SignalsmithStretch = (() => {
4
+ var _scriptName =
5
+ typeof document != 'undefined' ? document.currentScript?.src : undefined;
6
+
7
+ return async function (moduleArg = {}) {
8
+ var moduleRtn;
9
+
10
+ var Module = moduleArg;
11
+ var readyPromiseResolve, readyPromiseReject;
12
+ var readyPromise = new Promise((resolve, reject) => {
13
+ readyPromiseResolve = resolve;
14
+ readyPromiseReject = reject;
15
+ });
16
+ var ENVIRONMENT_IS_WEB = typeof window == 'object';
17
+ var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != 'undefined';
18
+ var ENVIRONMENT_IS_NODE =
19
+ typeof process == 'object' &&
20
+ typeof process.versions == 'object' &&
21
+ typeof process.versions.node == 'string' &&
22
+ process.type != 'renderer';
23
+ var ENVIRONMENT_IS_SHELL =
24
+ !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
25
+ var crypto = globalThis?.crypto || {
26
+ getRandomValues: (array) => {
27
+ for (var i = 0; i < array.length; i++)
28
+ array[i] = (Math.random() * 256) | 0;
29
+ },
30
+ };
31
+ var performance = globalThis?.performance || { now: (_) => Date.now() };
32
+ var moduleOverrides = Object.assign({}, Module);
33
+ var arguments_ = [];
34
+ var quit_ = (status, toThrow) => {
35
+ throw toThrow;
36
+ };
37
+ var scriptDirectory = '';
38
+ var readAsync, readBinary;
39
+ if (ENVIRONMENT_IS_SHELL) {
40
+ readBinary = (f) => {
41
+ if (typeof readbuffer == 'function') {
42
+ return new Uint8Array(readbuffer(f));
43
+ }
44
+ let data = read(f, 'binary');
45
+ assert(typeof data == 'object');
46
+ return data;
47
+ };
48
+ readAsync = async (f) => readBinary(f);
49
+ globalThis.clearTimeout ??= (id) => {};
50
+ globalThis.setTimeout ??= (f) => f();
51
+ arguments_ = globalThis.arguments || globalThis.scriptArgs;
52
+ if (typeof quit == 'function') {
53
+ quit_ = (status, toThrow) => {
54
+ setTimeout(() => {
55
+ if (!(toThrow instanceof ExitStatus)) {
56
+ let toLog = toThrow;
57
+ if (toThrow && typeof toThrow == 'object' && toThrow.stack) {
58
+ toLog = [toThrow, toThrow.stack];
59
+ }
60
+ err(`exiting due to exception: ${toLog}`);
61
+ }
62
+ quit(status);
63
+ });
64
+ throw toThrow;
65
+ };
66
+ }
67
+ if (typeof print != 'undefined') {
68
+ globalThis.console ??= {};
69
+ console.log = print;
70
+ console.warn = console.error = globalThis.printErr ?? print;
71
+ }
72
+ } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
73
+ if (ENVIRONMENT_IS_WORKER) {
74
+ scriptDirectory = self.location.href;
75
+ } else if (typeof document != 'undefined' && document.currentScript) {
76
+ scriptDirectory = document.currentScript.src;
77
+ }
78
+ if (_scriptName) {
79
+ scriptDirectory = _scriptName;
80
+ }
81
+ if (scriptDirectory.startsWith('blob:')) {
82
+ scriptDirectory = '';
83
+ } else {
84
+ scriptDirectory = scriptDirectory.slice(
85
+ 0,
86
+ scriptDirectory.replace(/[?#].*/, '').lastIndexOf('/') + 1
87
+ );
88
+ }
89
+ {
90
+ if (ENVIRONMENT_IS_WORKER) {
91
+ readBinary = (url) => {
92
+ var xhr = new XMLHttpRequest();
93
+ xhr.open('GET', url, false);
94
+ xhr.responseType = 'arraybuffer';
95
+ xhr.send(null);
96
+ return new Uint8Array(xhr.response);
97
+ };
98
+ }
99
+ readAsync = async (url) => {
100
+ var response = await fetch(url, { credentials: 'same-origin' });
101
+ if (response.ok) {
102
+ return response.arrayBuffer();
103
+ }
104
+ throw new Error(response.status + ' : ' + response.url);
105
+ };
106
+ }
107
+ } else {
108
+ }
109
+ var out = console.log.bind(console);
110
+ var err = console.error.bind(console);
111
+ Object.assign(Module, moduleOverrides);
112
+ moduleOverrides = null;
113
+ var wasmBinary;
114
+ var wasmMemory;
115
+ var ABORT = false;
116
+ var EXITSTATUS;
117
+ var HEAP8,
118
+ HEAPU8,
119
+ HEAP16,
120
+ HEAPU16,
121
+ HEAP32,
122
+ HEAPU32,
123
+ HEAPF32,
124
+ HEAP64,
125
+ HEAPU64,
126
+ HEAPF64;
127
+ var runtimeInitialized = false;
128
+ function updateMemoryViews() {
129
+ var b = wasmMemory.buffer;
130
+ Module['HEAP8'] = HEAP8 = new Int8Array(b);
131
+ HEAP16 = new Int16Array(b);
132
+ HEAPU8 = new Uint8Array(b);
133
+ HEAPU16 = new Uint16Array(b);
134
+ HEAP32 = new Int32Array(b);
135
+ HEAPU32 = new Uint32Array(b);
136
+ HEAPF32 = new Float32Array(b);
137
+ HEAPF64 = new Float64Array(b);
138
+ HEAP64 = new BigInt64Array(b);
139
+ HEAPU64 = new BigUint64Array(b);
140
+ }
141
+ function preRun() {}
142
+ function initRuntime() {
143
+ runtimeInitialized = true;
144
+ wasmExports['e']();
145
+ }
146
+ function preMain() {}
147
+ function postRun() {}
148
+ var runDependencies = 0;
149
+ var dependenciesFulfilled = null;
150
+ function addRunDependency(id) {
151
+ runDependencies++;
152
+ }
153
+ function removeRunDependency(id) {
154
+ runDependencies--;
155
+ if (runDependencies == 0) {
156
+ if (dependenciesFulfilled) {
157
+ var callback = dependenciesFulfilled;
158
+ dependenciesFulfilled = null;
159
+ callback();
160
+ }
161
+ }
162
+ }
163
+ function abort(what) {
164
+ what = 'Aborted(' + what + ')';
165
+ err(what);
166
+ ABORT = true;
167
+ what += '. Build with -sASSERTIONS for more info.';
168
+ var e = new WebAssembly.RuntimeError(what);
169
+ readyPromiseReject(e);
170
+ throw e;
171
+ }
172
+ var wasmBinaryFile =
173
+ 'data:application/octet-stream;base64,AGFzbQEAAAABdhVgAX8AYAAAYAJ/fwBgAX8Bf2ADf39/AGAAAX9gAn9/AX9gAX0BfWABfAF8YAF8AX1gAn19AGACf30AYAN8fH8BfGACfHwBfGACfH8BfGAFf39/f38AYAJ9fwF/YAJ8fwF/YAV/f39/fwF/YAJ/fwF9YAJ/fAACEwMBYQFhAAYBYQFiAAMBYQFjAAEDNjUAAwEJCQEEAwcIBwICDA0OCAgPBAEDBxAREgQEAgACAgYAAAEAAwAGAAIUCgoECwsBBQUFBQQFAXABBQUFBgEBCICAAgYIAX8BQdC3BAsHSRIBZAIAAWUAFwFmAQABZwAjAWgANwFpADYBagA1AWsANAFsADMBbQAyAW4AMQFvADABcAAvAXEALgFyAC0BcwAsAXQAKwF1ACoJCgEAQQELBCknJSQMAQUK/tcCNdwLAQh/AkAgAEUNACAAQQhrIgMgAEEEaygCACICQXhxIgBqIQUCQCACQQFxDQAgAkECcUUNASADIAMoAgAiBGsiA0HoMygCAEkNASAAIARqIQACQAJAAkBB7DMoAgAgA0cEQCADKAIMIQEgBEH/AU0EQCABIAMoAggiAkcNAkHYM0HYMygCAEF+IARBA3Z3cTYCAAwFCyADKAIYIQcgASADRwRAIAMoAggiAiABNgIMIAEgAjYCCAwECyADKAIUIgIEfyADQRRqBSADKAIQIgJFDQMgA0EQagshBANAIAQhBiACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAZBADYCAAwDCyAFKAIEIgJBA3FBA0cNA0HgMyAANgIAIAUgAkF+cTYCBCADIABBAXI2AgQgBSAANgIADwsgAiABNgIMIAEgAjYCCAwCC0EAIQELIAdFDQACQCADKAIcIgRBAnRBiDZqIgIoAgAgA0YEQCACIAE2AgAgAQ0BQdwzQdwzKAIAQX4gBHdxNgIADAILAkAgAyAHKAIQRgRAIAcgATYCEAwBCyAHIAE2AhQLIAFFDQELIAEgBzYCGCADKAIQIgIEQCABIAI2AhAgAiABNgIYCyADKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAFTw0AIAUoAgQiBEEBcUUNAAJAAkACQAJAIARBAnFFBEBB8DMoAgAgBUYEQEHwMyADNgIAQeQzQeQzKAIAIABqIgA2AgAgAyAAQQFyNgIEIANB7DMoAgBHDQZB4DNBADYCAEHsM0EANgIADwtB7DMoAgAiByAFRgRAQewzIAM2AgBB4DNB4DMoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgBEF4cSAAaiEAIAUoAgwhASAEQf8BTQRAIAUoAggiAiABRgRAQdgzQdgzKAIAQX4gBEEDdndxNgIADAULIAIgATYCDCABIAI2AggMBAsgBSgCGCEIIAEgBUcEQCAFKAIIIgIgATYCDCABIAI2AggMAwsgBSgCFCICBH8gBUEUagUgBSgCECICRQ0CIAVBEGoLIQQDQCAEIQYgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAGQQA2AgAMAgsgBSAEQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgAMAwtBACEBCyAIRQ0AAkAgBSgCHCIEQQJ0QYg2aiICKAIAIAVGBEAgAiABNgIAIAENAUHcM0HcMygCAEF+IAR3cTYCAAwCCwJAIAUgCCgCEEYEQCAIIAE2AhAMAQsgCCABNgIUCyABRQ0BCyABIAg2AhggBSgCECICBEAgASACNgIQIAIgATYCGAsgBSgCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAMgAEEBcjYCBCAAIANqIAA2AgAgAyAHRw0AQeAzIAA2AgAPCyAAQf8BTQRAIABBeHFBgDRqIQICf0HYMygCACIEQQEgAEEDdnQiAHFFBEBB2DMgACAEcjYCACACDAELIAIoAggLIQAgAiADNgIIIAAgAzYCDCADIAI2AgwgAyAANgIIDwtBHyEBIABB////B00EQCAAQSYgAEEIdmciAmt2QQFxIAJBAXRrQT5qIQELIAMgATYCHCADQgA3AhAgAUECdEGINmohBAJ/AkACf0HcMygCACIGQQEgAXQiAnFFBEBB3DMgAiAGcjYCACAEIAM2AgBBGCEBQQgMAQsgAEEZIAFBAXZrQQAgAUEfRxt0IQEgBCgCACEEA0AgBCICKAIEQXhxIABGDQIgAUEddiEEIAFBAXQhASACIARBBHFqIgYoAhAiBA0ACyAGIAM2AhBBGCEBIAIhBEEICyEAIAMiAgwBCyACKAIIIgQgAzYCDCACIAM2AghBGCEAQQghAUEACyEGIAEgA2ogBDYCACADIAI2AgwgACADaiAGNgIAQfgzQfgzKAIAQQFrIgBBfyAAGzYCAAsLOgECf0EBIAAgAEEBTRshAQNAAkAgARAoIgANAEHINygCACICRQ0AIAIRAQAMAQsLIABFBEAQJgsgAAsFABACAAtLAQJ8IAAgACAAoiIBoiICIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiABRLL7bokQEYE/okR3rMtUVVXFv6CiIACgoLYLTwEBfCAAIACiIgAgACAAoiIBoiAARGlQ7uBCk/k+okQnHg/oh8BWv6CiIAFEQjoF4VNVpT+iIABEgV4M/f//37+iRAAAAAAAAPA/oKCgtgsFABAFAAumBAIIfwF9IAAoAggiAyAAKAIAIgRrQQJ1IAFPBEACQCAAKAIEIgUgBGtBAnUiByABIAEgB0sbIghFDQAgAioCACELIAQhAyAIIgZBB3EiCQRAA0AgAyALOAIAIAZBAWshBiADQQRqIQMgCkEBaiIKIAlHDQALCyAIQQhJDQADQCADIAs4AhwgAyALOAIYIAMgCzgCFCADIAs4AhAgAyALOAIMIAMgCzgCCCADIAs4AgQgAyALOAIAIANBIGohAyAGQQhrIgYNAAsLIAEgB0sEQCAFIAEgB2tBAnRqIQEgAioCACELA0AgBSALOAIAIAVBBGoiBSABRw0ACyAAIAE2AgQPCyAAIAQgAUECdGo2AgQPCyAEBEAgACAENgIEIAQQAyAAQQA2AgggAEIANwIAQQAhAwsCQCABQYCAgIAETw0AQf////8DIANBAXUiBCABIAEgBEkbIANB/P///wdPGyIDQYCAgIAETw0AIAAgA0ECdCIDEAQiBDYCACAAIAMgBGo2AgggAioCACELIAQhAyABQQdxIgIEQANAIAMgCzgCACADQQRqIQMgBUEBaiIFIAJHDQALCyABQQJ0IARqIQIgAUEBa0H/////A3FBB08EQANAIAMgCzgCHCADIAs4AhggAyALOAIUIAMgCzgCECADIAs4AgwgAyALOAIIIAMgCzgCBCADIAs4AgAgA0EgaiIDIAJHDQALCyAAIAI2AgQPCxAFAAtPAQJ/QZAwKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA/AEEQdE0NASAAEAENAQtB1DNBMDYCAEF/DwtBkDAgADYCACABC4ADAgF8A38jAEEQayIEJAACQCAAvCIDQf////8HcSICQdqfpPoDTQRAIAJBgICAzANJDQEgALsQBiEADAELIAJB0aftgwRNBEAgALshASACQeOX24AETQRAIANBAEgEQCABRBgtRFT7Ifk/oBAHjCEADAMLIAFEGC1EVPsh+b+gEAchAAwCC0QYLURU+yEJwEQYLURU+yEJQCADQQBOGyABoJoQBiEADAELIAJB1eOIhwRNBEAgAkHf27+FBE0EQCAAuyEBIANBAEgEQCABRNIhM3982RJAoBAHIQAMAwsgAUTSITN/fNkSwKAQB4whAAwCC0QYLURU+yEZQEQYLURU+yEZwCADQQBIGyAAu6AQBiEADAELIAJBgICA/AdPBEAgACAAkyEADAELIAAgBEEIahAaIQIgBCsDCCEBAkACQAJAAkAgAkEDcUEBaw4DAQIDAAsgARAGIQAMAwsgARAHIQAMAgsgAZoQBiEADAELIAEQB4whAAsgBEEQaiQAIAALuQQDA3wDfwJ+AnwCQCAAvUI0iKdB/w9xIgVByQdrQT9JBEAgBSEEDAELIAVByQdJBEAgAEQAAAAAAADwP6APCyAFQYkISQ0ARAAAAAAAAAAAIAC9IgdCgICAgICAgHhRDQEaIAVB/w9PBEAgAEQAAAAAAADwP6APCyAHQgBTBEAjAEEQayIERAAAAAAAAAAQOQMIIAQrAwhEAAAAAAAAABCiDwsjAEEQayIERAAAAAAAAABwOQMIIAQrAwhEAAAAAAAAAHCiDwsgAEGgHysDAKJBqB8rAwAiAaAiAiABoSIBQbgfKwMAoiABQbAfKwMAoiAAoKAiASABoiIAIACiIAFB2B8rAwCiQdAfKwMAoKIgACABQcgfKwMAokHAHysDAKCiIAK9IgenQQR0QfAPcSIFQZAgaisDACABoKCgIQEgBUGYIGopAwAgB0IthnwhCCAERQRAAnwgB0KAgICACINQBEAgCEKAgICAgICAiD99vyIAIAGiIACgRAAAAAAAAAB/ogwBCyAIQoCAgICAgIDwP3y/IgIgAaIiASACoCIDRAAAAAAAAPA/YwR8IwBBEGsiBCAEQoCAgICAgIAINwMIIAQrAwhEAAAAAAAAEACiOQMIRAAAAAAAAAAAIANEAAAAAAAA8D+gIgAgASACIAOhoCADRAAAAAAAAPA/IAChoKCgRAAAAAAAAPC/oCIAIABEAAAAAAAAAABhGwUgAwtEAAAAAAAAEACiCw8LIAi/IgAgAaIgAKALC+YCAgN/AXwjAEEQayIDJAACfSAAvCICQf////8HcSIBQdqfpPoDTQRAQwAAgD8gAUGAgIDMA0kNARogALsQBwwBCyABQdGn7YMETQRAIAFB5JfbgARPBEBEGC1EVPshCUBEGC1EVPshCcAgAkEASBsgALugEAeMDAILIAC7IQQgAkEASARAIAREGC1EVPsh+T+gEAYMAgtEGC1EVPsh+T8gBKEQBgwBCyABQdXjiIcETQRAIAFB4Nu/hQRPBEBEGC1EVPshGUBEGC1EVPshGcAgAkEASBsgALugEAcMAgsgAkEASARARNIhM3982RLAIAC7oRAGDAILIAC7RNIhM3982RLAoBAGDAELIAAgAJMgAUGAgID8B08NABogACADQQhqEBohASADKwMIIQQCQAJAAkACQCABQQNxQQFrDgMBAgMACyAEEAcMAwsgBJoQBgwCCyAEEAeMDAELIAQQBgsgA0EQaiQAC4MCAQd/IAEgACgCCCIDIAAoAgQiAmtBA3VNBEAgACABBH8gAUEDdCIABEAgAkEAIAD8CwALIAAgAmoFIAILNgIEDwsCQCACIAAoAgAiAmsiBkEDdSIFIAFqIgRBgICAgAJJBEBB/////wEgAyACayIDQQJ1IgggBCAEIAhJGyADQfj///8HTxsiBARAIARBgICAgAJPDQIgBEEDdBAEIQcLIAYgB2ohAyABQQN0IgEEQCADQQAgAfwLAAsgAyAFQQN0ayEFIAYEQCAFIAIgBvwKAAALIAAgByAEQQN0ajYCCCAAIAEgA2o2AgQgACAFNgIAIAIEQCACEAMLDwsQBQALEAgAC4MCAQd/IAEgACgCCCIDIAAoAgQiAmtBAnVNBEAgACABBH8gAUECdCIABEAgAkEAIAD8CwALIAAgAmoFIAILNgIEDwsCQCACIAAoAgAiAmsiBkECdSIFIAFqIgRBgICAgARJBEBB/////wMgAyACayIDQQF1IgggBCAEIAhJGyADQfz///8HTxsiBARAIARBgICAgARPDQIgBEECdBAEIQcLIAYgB2ohAyABQQJ0IgEEQCADQQAgAfwLAAsgAyAFQQJ0ayEFIAYEQCAFIAIgBvwKAAALIAAgByAEQQJ0ajYCCCAAIAEgA2o2AgQgACAFNgIAIAIEQCACEAMLDwsQBQALEAgAC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgACADoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBCAFoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC6gBAAJAIAFBgAhOBEAgAEQAAAAAAADgf6IhACABQf8PSQRAIAFB/wdrIQEMAgsgAEQAAAAAAADgf6IhAEH9FyABIAFB/RdPG0H+D2shAQwBCyABQYF4Sg0AIABEAAAAAAAAYAOiIQAgAUG4cEsEQCABQckHaiEBDAELIABEAAAAAAAAYAOiIQBB8GggASABQfBoTRtBkg9qIQELIAAgAUH/B2qtQjSGv6ILxAECAn8BfCMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAwPIDSQ0BIABEAAAAAAAAAABBABAQIQAMAQsgAkGAgMD/B08EQCAAIAChIQAMAQsgACABEBshAiABKwMIIQAgASsDACEDAkACQAJAAkAgAkEDcUEBaw4DAQIDAAsgAyAAQQEQECEADAMLIAMgABARIQAMAgsgAyAAQQEQEJohAAwBCyADIAAQEZohAAsgAUEQaiQAIAALvAECAXwCfyMAQRBrIgIkAAJ8IAC9QiCIp0H/////B3EiA0H7w6T/A00EQEQAAAAAAADwPyADQZ7BmvIDSQ0BGiAARAAAAAAAAAAAEBEMAQsgACAAoSADQYCAwP8HTw0AGiAAIAIQGyEDIAIrAwghACACKwMAIQECQAJAAkACQCADQQNxQQFrDgMBAgMACyABIAAQEQwDCyABIABBARAQmgwCCyABIAAQEZoMAQsgASAAQQEQEAsgAkEQaiQAC44IAw5/An0DfAJAAkAgACgCFCAAKAIQIgdrQQJ1IgUgAUsEQCAHIAFBAnRqKAIAIQgCQAJAIAUgAUEBaiIGTQ0AIAhBAkcNACAAQSxqIRAgAEEoaiERIAAoAiwiBSAAKAIoayEJIAcgBkECdGooAgBBAkcEQEEBIQsgA0EBdiEHQQIhCAwCCyADQQJ2IQdBAyELQQQhCCAGIQEMAQsgAEEsaiEQIABBKGohESADIAhuIQcgACgCLCIFIAAoAihrIQkCQAJAAkAgCEECaw4DAAECAwtBASELDAILQQIhCwwBC0EDIQsLAkACQAJAIAAoAhwiBiAAKAIgIg1HBEADQAJAIAYoAgQgCEcNACAGKAIMIAdHDQAgBigCFCENDAMLIAZBGGoiBiANRw0ACwsgCUEDdSENIAdFDQFBASAIIAhBAU0bIRJEAAAAAAAA8D8gA7ijIRVBACEJA0AgCbhEGC1EVPshGUCiIRZBACEGA0AgACgCMCEKIBYgBriiIBWiIhcQFLYhEyAXEBO2jCEUAkAgBSAKSQRAIAUgFDgCBCAFIBM4AgAgBUEIaiEFDAELIAUgESgCACIDayIFQQN1Ig5BAWoiDEGAgICAAk8NByAFQf////8BIAogA2siCkECdSIPIAwgDCAPSRsgCkH4////B08bIgoEfyAKQYCAgIACTw0JIApBA3QQBAVBAAsiD2oiDCAUOAIEIAwgEzgCACAMIA5BA3RrIQ4gBQRAIA4gAyAF/AoAAAsgACAPIApBA3RqNgIwIAAgDEEIaiIFNgIsIAAgDjYCKCADRQ0AIAMQAwsgECAFNgIAIAZBAWoiBiASRw0ACyAJQQFqIgkgB0cNAAsLIARBAUcNACAHQQN0QYGABEkNAEEBIAggCEEBTRshAyABQQFqIQFBACEFA0AgACABIAUgB2wgAmogB0EBEBUgBUEBaiIFIANHDQALDAELIAAgAUEBaiACIAcgBCAIbBAVCwJAIAAoAiAiASAAKAIkIgVJBEAgASANNgIUIAEgBDYCECABIAc2AgwgASACNgIIIAEgCDYCBCABIAs2AgAgAUEYaiEFDAELIAEgACgCHCIDayIGQRhtQQFqIgFBq9Wq1QBPDQIgBkGq1arVACAFIANrQRhtIgVBAXQiCSABIAEgCUkbIAVB1arVKk8bIgUEfyAFQavVqtUATw0EIAVBGGwQBAVBAAsiCWoiASANNgIUIAEgBDYCECABIAc2AgwgASACNgIIIAEgCDYCBCABIAs2AgAgASAGQWhtQRhsaiECIAYEQCACIAMgBvwKAAALIAAgCSAFQRhsajYCJCAAIAFBGGoiBTYCICAAIAI2AhwgA0UNACADEAMLIAAgBTYCIAsPCxAFAAsQCAALpAcBBX8jAEEgayIDJABBwDIgADYCAEEAQQEQH0HAMigCACABIAIQHkGoMiABIAJqQQFqIgA2AgBBpDJBwDIoAgAiATYCAEHEMkHkMCgCAEECbTYCACADQQA2AgAgACABbCECQQEhAQNAIAEiAEEBdCEBIAAgAkgNAAtBtDIgACADEAlBrDJBADYCAEGwMiAAQQFrNgIAQeQwKAIAIQAgA0EANgIAQcwyIAAgAxAJQcAyKAIAQcQyKAIAIANBADYCGCADQgA3AxAgA0IANwMIIANCADcDAGwgAxAhAkACQEHEMigCACICQQJtIgFB9DIoAgBB7DIoAgAiAGtBA3VNDQAgAUGAgICAAk8NAUHwMigCACABQQN0IgUQBCEBIABrIgQEQCABIAAgBPwKAAALQfQyIAEgBWo2AgBB8DIgASAEajYCAEHsMiABNgIAIABFDQAgABADQcQyKAIAIQILAkBB/DIoAgBB+DIoAgAiAWtBAnUiACACSQRAQfgyIAIgAGsQD0HEMigCACECDAELIAAgAk0NAEH8MiABIAJBAnRqNgIACwJAQYgzKAIAQYQzKAIAIgFrQQJ1IgAgAkkEQEGEMyACIABrEA9BxDIoAgAhAgwBCyAAIAJNDQBBiDMgASACQQJ0ajYCAAsCQEGUMygCAEGQMygCACIBa0EDdSIAIAJJBEBBkDMgAiAAaxAOQcQyKAIAIQIMAQsgACACTQ0AQZQzIAEgAkEDdGo2AgALAkAgAkHAMigCAGwiAUGgMygCACIAQZwzKAIAIgRrQQxtIgJLBEBBACEEIAEgAmsiAUGkMygCACIGIABrQQxtTQRAQaAzIAEEfyABQQxsQQxrIgEgAUEMcGtBDGoiAQRAIABBACAB/AsACyAAIAFqBSAACzYCAAwCCwJAIABBnDMoAgAiAGsiAkEMbSABaiIFQdaq1aoBSQRAQdWq1aoBIAYgAGtBDG0iBkEBdCIHIAUgBSAHSRsgBkGq1arVAE8bIgUEQCAFQdaq1aoBTw0CIAVBDGwQBCEECyACIARqIQYgAUEMbEEMayIBIAFBDHBrQQxqIgEEQCAGQQAgAfwLAAsgBiACQXRtQQxsaiEHIAIEQCAHIAAgAvwKAAALQaQzIAQgBUEMbGo2AgBBoDMgASAGajYCAEGcMyAHNgIAIAAEQCAAEAMLDAMLEAUACxAIAAsgASACTw0AQaAzIAQgAUEMbGo2AgALIANBIGokAA8LEAUAC+ALAgt/AX4jAEEQayIEJABB2DBBADYCAEHQMEIANwMAQcAwQgA3AwBBuDBBADYCAEGgMEKAgID8g4CAgD83AwBBnDBBAToAAEGYMEEANgIAIARBADYCBEHQMEEBIARBBGoiAhAJQcgwQgA3AwBB7DBCADcCAEHkMEKAgICAEDcCAEHcMEIANwIAQfQwQgA3AgBB/DBBADoAAEGAMUEAQYgB/AsAQQIQIEGgMkEANgIAQZgyQgA3AwBBkDJCADcDAEGIMkIANwMAQQBBAUEBEB5BvDJBADYCAEG0MkIANwIAQaQyQgA3AgAgBEEANgIEQbQyQQEgAhAJQawyQgA3AgBBzDJCADcCAEHIMkF/NgIAQcAyQgA3AwBB0TJCADcAAEHcMkGAgID8AzYCAEHZMkEBOgAAQeAyQQBByAD8CwAgBEEQEAQiADYCBCAEQoyAgICAgoCAgH83AgggAEGoCCgAADYACCAAQaAIKQAANwAAIABBADoADCMAQRBrIggkACMAQSBrIgEkAAJ/IAItAAtBB3YEQCACKAIADAELIAILIQAgAQJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCzYCHCABIAA2AhggAUGgCDYCECABQaAIEBg2AhQgASABKQIYNwMIIAEgASkCEDcDACMAQRBrIgYkACABKAIMIAEoAgRGBEAgBiABKQIAIgs3AwAgBiALNwMIIwBBEGsiByQAIAcgASgCDDYCDCAHIAYoAgQ2AggjAEEQayIAJAAgB0EIaiIDKAIAIAdBDGoiBSgCAEkhCSAAQRBqJAAgAyAFIAkbKAIAIQACQAJ/IAEoAgghAyAGKAIAIQUCQAJAIABBBE8EQCADIAVyQQNxDQEDQCADKAIAIAUoAgBHDQIgBUEEaiEFIANBBGohAyAAQQRrIgBBA0sNAAsLIABFDQELA0AgAy0AACIJIAUtAAAiCkYEQCAFQQFqIQUgA0EBaiEDIABBAWsiAA0BDAILCyAJIAprDAELQQALIgANAEEAIQAgASgCDCIDIAYoAgQiBUYNAEF/QQEgAyAFSRshAAsgB0EQaiQAIABFIQMLIAZBEGokACABQSBqJAAgA0UEQCMAQRBrIgUkAEHaCBAYIQQCfyACLQALQQd2BEAgAigCBAwBCyACLQALQf8AcQshBgJ/An8jAEEQayIHJAAgCEEEaiEAIAQgBmoiAUH3////B00EQAJAIAFBC0kEQCAAQgA3AgAgAEEANgIIIAAgAC0AC0GAAXEgAUH/AHFyOgALIAAgAC0AC0H/AHE6AAsMAQsgAUELTwR/IAFBCGpBeHEiAyADQQFrIgMgA0ELRhsFQQoLQQFqIgNBf0sEQBAIAAsgAxAEIQggACAAKAIIQYCAgIB4cSADQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAg2AgAgACABNgIECyAHQRBqJAAgAAwBCxAFAAsiAS0AC0EHdgRAIAEoAgAMAQsgAQshAQJAIARFIgMNACADDQAgAUHaCCAE/AoAAAsgASAEaiEBAn8gAi0AC0EHdgRAIAIoAgAMAQsgAgshAgJAIAZFIgQNACAEDQAgASACIAb8CgAACyABIAZqIQIjAEEQayIBJAAgAUEAOgAPQQEhBANAIAQEQCACIAEtAA86AAAgBEEBayEEIAJBAWohAgwBCwsgAUEQaiQAIAVBEGokAAJ/IAAtAAtBB3YEQCAAKAIADAELQQALGhAIAAsgCEEQaiQAIAQsAA9BAEgEQCAEKAIEEAMLIwBBEGsiAiQAIwBBEGsiACQAIAJBDGpBBBAAIgEEf0HUMyABNgIAQX8FQQALIAAoAgwaIABBEGokAARAQdQzKAIAGhAIAAsgAigCDCEAIAJBEGokAEGoM0EBIABB/////wdwIgIgAkEBTRs2AgAgBEEQaiQAQbAzQgA3AgBBuDNBADYCAEG8M0IANwIAQcQzQQA2AgBByDNCADcCAEHQM0EANgIAC38BA38CfwJAAkAgACICQQNxRQ0AQQAgAC0AAEUNAhoDQCAAQQFqIgBBA3FFDQEgAC0AAA0ACwwBCwNAIAAiAUEEaiEAQYCChAggASgCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgASIAQQFqIQEgAC0AAA0ACwsgACACawsLhQECAX0CfyAAvCICQRd2Qf8BcSIDQZUBTQR9IANB/QBNBEAgAEMAAAAAlA8LAn0gAIsiAEMAAABLkkMAAADLkiAAkyIBQwAAAD9eBEAgACABkkMAAIC/kgwBCyAAIAGSIgAgAUMAAAC/X0UNABogAEMAAIA/kgsiAIwgACACQQBIGwUgAAsL9gICA38DfCMAQRBrIgMkAAJAIAC8IgRB/////wdxIgJB2p+k7gRNBEAgASAAuyIGIAZEg8jJbTBf5D+iRAAAAAAAADhDoEQAAAAAAAA4w6AiBUQAAABQ+yH5v6KgIAVEY2IaYbQQUb6ioCIHOQMAIAX8AiECIAdEAAAAYPsh6b9jBEAgASAGIAVEAAAAAAAA8L+gIgVEAAAAUPsh+b+ioCAFRGNiGmG0EFG+oqA5AwAgAkEBayECDAILIAdEAAAAYPsh6T9kRQ0BIAEgBiAFRAAAAAAAAPA/oCIFRAAAAFD7Ifm/oqAgBURjYhphtBBRvqKgOQMAIAJBAWohAgwBCyACQYCAgPwHTwRAIAEgACAAk7s5AwBBACECDAELIAMgAiACQRd2QZYBayICQRd0a767OQMIIANBCGogAyACQQFBABAcIQIgAysDACEFIARBAEgEQCABIAWaOQMAQQAgAmshAgwBCyABIAU5AwALIANBEGokACACC4AKAwZ/BHwBfiMAQTBrIgQkAAJAAkACQCAAvSIMQiCIpyICQf////8HcSIDQfrUvYAETQRAIAJB//8/cUH7wyRGDQEgA0H8souABE0EQCAMQgBZBEAgASAARAAAQFT7Ifm/oCIIRDFjYhphtNC9oCIAOQMAIAEgCCAAoUQxY2IaYbTQvaA5AwhBASECDAULIAEgAEQAAEBU+yH5P6AiCEQxY2IaYbTQPaAiADkDACABIAggAKFEMWNiGmG00D2gOQMIQX8hAgwECyAMQgBZBEAgASAARAAAQFT7IQnAoCIIRDFjYhphtOC9oCIAOQMAIAEgCCAAoUQxY2IaYbTgvaA5AwhBAiECDAQLIAEgAEQAAEBU+yEJQKAiCEQxY2IaYbTgPaAiADkDACABIAggAKFEMWNiGmG04D2gOQMIQX4hAgwDCyADQbuM8YAETQRAIANBvPvXgARNBEAgA0H8ssuABEYNAiAMQgBZBEAgASAARAAAMH982RLAoCIIRMqUk6eRDum9oCIAOQMAIAEgCCAAoUTKlJOnkQ7pvaA5AwhBAyECDAULIAEgAEQAADB/fNkSQKAiCETKlJOnkQ7pPaAiADkDACABIAggAKFEypSTp5EO6T2gOQMIQX0hAgwECyADQfvD5IAERg0BIAxCAFkEQCABIABEAABAVPshGcCgIghEMWNiGmG08L2gIgA5AwAgASAIIAChRDFjYhphtPC9oDkDCEEEIQIMBAsgASAARAAAQFT7IRlAoCIIRDFjYhphtPA9oCIAOQMAIAEgCCAAoUQxY2IaYbTwPaA5AwhBfCECDAMLIANB+sPkiQRLDQELIABEg8jJbTBf5D+iRAAAAAAAADhDoEQAAAAAAAA4w6AiCfwCIQICQCAAIAlEAABAVPsh+b+ioCIKIAlEMWNiGmG00D2iIguhIghEGC1EVPsh6b9jBEAgAkEBayECIAlEAAAAAAAA8L+gIglEMWNiGmG00D2iIQsgACAJRAAAQFT7Ifm/oqAhCgwBCyAIRBgtRFT7Iek/ZEUNACACQQFqIQIgCUQAAAAAAADwP6AiCUQxY2IaYbTQPaIhCyAAIAlEAABAVPsh+b+ioCEKCyABIAogC6EiADkDAAJAIANBFHYiBSAAvUI0iKdB/w9xa0ERSA0AIAEgCiAJRAAAYBphtNA9oiIAoSIIIAlEc3ADLooZozuiIAogCKEgAKGhIguhIgA5AwAgBSAAvUI0iKdB/w9xa0EySARAIAghCgwBCyABIAggCUQAAAAuihmjO6IiAKEiCiAJRMFJICWag3s5oiAIIAqhIAChoSILoSIAOQMACyABIAogAKEgC6E5AwgMAQsgA0GAgMD/B08EQCABIAAgAKEiADkDACABIAA5AwhBACECDAELIARBEGoiAkEIciEHIAxC/////////weDQoCAgICAgICwwQCEvyEAQQEhBgNAIAIgAPwCtyIIOQMAIAAgCKFEAAAAAAAAcEGiIQAgBkEAIQYgByECDQALIAQgADkDIEECIQIDQCACIgVBAWshAiAEQRBqIgYgBUEDdGorAwBEAAAAAAAAAABhDQALIAYgBCADQRR2QZYIayAFQQFqQQEQHCECIAQrAwAhACAMQgBTBEAgASAAmjkDACABIAQrAwiaOQMIQQAgAmshAgwBCyABIAA5AwAgASAEKwMIOQMICyAEQTBqJAAgAgvbDwIDfA9/IwBBsARrIgkkACACIAJBA2tBGG0iCEEAIAhBAEobIhFBaGxqIRAgBEECdEGACWooAgAiDSADQQFrIgtqQQBOBEAgAyANaiEIIBEgC2shAgNAIAlBwAJqIApBA3RqIAJBAEgEfEQAAAAAAAAAAAUgAkECdEGQCWooAgC3CzkDACACQQFqIQIgCkEBaiIKIAhHDQALCyAQQRhrIQxBACEIIA1BACANQQBKGyEKIANBAEwhDgNAAkAgDgRARAAAAAAAAAAAIQUMAQsgCCALaiEPQQAhAkQAAAAAAAAAACEFA0AgACACQQN0aisDACAJQcACaiAPIAJrQQN0aisDAKIgBaAhBSACQQFqIgIgA0cNAAsLIAkgCEEDdGogBTkDACAIIApGIAhBAWohCEUNAAtBLyAQayETQTAgEGshEiAQQRlrIRQgDSEIAkADQCAJIAhBA3RqKwMAIQVBACECIAghCiAIQQBKBEADQCAJQeADaiACQQJ0aiAFRAAAAAAAAHA+ovwCtyIGRAAAAAAAAHDBoiAFoPwCNgIAIAkgCkEBayIKQQN0aisDACAGoCEFIAJBAWoiAiAIRw0ACwsgBSAMEBIiBSAFRAAAAAAAAMA/opxEAAAAAAAAIMCioCIFIAX8AiIOt6EhBQJAAkACQAJ/IAxBAEwiFUUEQCAIQQJ0IAlqIgIgAigC3AMiAiACIBJ1IgIgEnRrIgo2AtwDIAIgDmohDiAKIBN1DAELIAwNASAIQQJ0IAlqKALcA0EXdQsiC0EATA0CDAELQQIhCyAFRAAAAAAAAOA/Zg0AQQAhCwwBC0EAIQJBACEPQQEhCiAIQQBKBEADQCAJQeADaiACQQJ0aiIWKAIAIQoCfwJAIBYgDwR/Qf///wcFIApFDQFBgICACAsgCms2AgBBASEPQQAMAQtBACEPQQELIQogAkEBaiICIAhHDQALCwJAIBUNAEH///8DIQICQAJAIBQOAgEAAgtB////ASECCyAIQQJ0IAlqIg8gDygC3AMgAnE2AtwDCyAOQQFqIQ4gC0ECRw0ARAAAAAAAAPA/IAWhIQVBAiELIAoNACAFRAAAAAAAAPA/IAwQEqEhBQsgBUQAAAAAAAAAAGEEQEEAIQogCCECAkAgCCANTA0AA0AgCUHgA2ogAkEBayICQQJ0aigCACAKciEKIAIgDUoNAAsgCkUNAANAIAxBGGshDCAJQeADaiAIQQFrIghBAnRqKAIARQ0ACwwDC0EBIQIDQCACIgpBAWohAiAJQeADaiANIAprQQJ0aigCAEUNAAsgCCAKaiEKA0AgCUHAAmogAyAIaiILQQN0aiAIQQFqIgggEWpBAnRBkAlqKAIAtzkDAEEAIQJEAAAAAAAAAAAhBSADQQBKBEADQCAAIAJBA3RqKwMAIAlBwAJqIAsgAmtBA3RqKwMAoiAFoCEFIAJBAWoiAiADRw0ACwsgCSAIQQN0aiAFOQMAIAggCkgNAAsgCiEIDAELCwJAIAVBGCAQaxASIgVEAAAAAAAAcEFmBEAgCUHgA2ogCEECdGogBUQAAAAAAABwPqL8AiICt0QAAAAAAABwwaIgBaD8AjYCACAIQQFqIQggECEMDAELIAX8AiECCyAJQeADaiAIQQJ0aiACNgIAC0QAAAAAAADwPyAMEBIhBSAIQQBOBEAgCCEDA0AgCSADIgBBA3RqIAUgCUHgA2ogAEECdGooAgC3ojkDACAAQQFrIQMgBUQAAAAAAABwPqIhBSAADQALIAghCgNARAAAAAAAAAAAIQVBACECIA0gCCAKayIAIAAgDUobIgNBAE4EQANAIAJBA3RB4B5qKwMAIAkgAiAKakEDdGorAwCiIAWgIQUgAiADRyACQQFqIQINAAsLIAlBoAFqIABBA3RqIAU5AwAgCkEASiAKQQFrIQoNAAsLAkACQAJAAkACQCAEDgQBAgIABAsCQCAIQQBMDQAgCUGgAWogCEEDdGorAwAhBSAIIQIDQCAJQaABaiIDIAJBA3RqIAUgAkEBayIAQQN0IANqIgQrAwAiBiAGIAWgIgWhoDkDACAEIAU5AwAgAkEBSyAAIQINAAsgCEEBRg0AIAhBA3QgA2orAwAhBSAIIQIDQCAJQaABaiIDIAJBA3RqIAUgAyACQQFrIgBBA3RqIgMrAwAiBiAGIAWgIgWhoDkDACADIAU5AwAgAkECSyAAIQINAAsDQCAHIAlBoAFqIAhBA3RqKwMAoCEHIAhBAkogCEEBayEIDQALCyAJKwOgASEFIAsNAiABIAU5AwAgCSsDqAEhBSABIAc5AxAgASAFOQMIDAMLRAAAAAAAAAAAIQUgCEEATgRAA0AgCCIAQQFrIQggBSAJQaABaiAAQQN0aisDAKAhBSAADQALCyABIAWaIAUgCxs5AwAMAgtEAAAAAAAAAAAhBSAIQQBOBEAgCCEDA0AgAyIAQQFrIQMgBSAJQaABaiAAQQN0aisDAKAhBSAADQALCyABIAWaIAUgCxs5AwAgCSsDoAEgBaEhBUEBIQIgCEEASgRAA0AgBSAJQaABaiACQQN0aisDAKAhBSACIAhHIAJBAWohAg0ACwsgASAFmiAFIAsbOQMIDAELIAEgBZo5AwAgCSsDqAEhBSABIAeaOQMQIAEgBZo5AwgLIAlBsARqJAAgDkEHcQuxEAQTfxJ9AX4EfCMAQRBrIgwkACAAKAIwIhEEQANAIANBA3QiBSAAKAIAaiIEIAAoAiQgBWoiCioCBCIWIAEoAgAgBWoiBSoCACIXlCAKKgIAIhggBSoCBCIZlJI4AgQgBCAYIBeUIBYgGZSTOAIAIANBAWoiAyARRw0ACwsgACgCDCEBIAwgACgCADYCDCAMIAE2AggjAEEQayIPJAAgAEEwaiIKKAI0IgEgCigCOCIDRwRAIAwoAgghBSAMKAIMIQQDQCAFIAEoAgBBA3RqIAQgASgCBEEDdGopAgA3AgAgAUEIaiIBIANHDQALCyAKKAIcIgQgCigCICITRwRAA0ACQAJAAkACQAJAIAQoAgAOBAMAAQIECyAEKAIQIgFFDQMgCigCKCAEKAIUQQN0aiEIIAQoAgwiB0EEdCELIAwoAgggBCgCCEEDdGohBUEAIQkDQCAHBEAgBSAHQQN0Ig1qIQ4gBSEBIAghAwNAIAEgAyoCDCIWIAEgDWoiBioCACIXlCADKgIIIhggBioCBCIZlJIiGyABKQIAIihCIIinviIakjgCBCABIBggF5QgFiAZlJMiFiAop74iF5I4AgAgBiAaIBuTOAIEIAYgFyAWkzgCACADQRBqIQMgAUEIaiIBIA5JDQALIAQoAhAhAQsgBSALaiEFIAlBAWoiCSABSQ0ACwwDCyAEKAIQIgFFDQIgCigCKCAEKAIUQQN0aiEIIAQoAgwiBkEYbCENIAZBBHQhDiAMKAIIIAQoAghBA3RqIQVBACELA0AgBgRAIAUgBkEDdCIQaiESIAUhASAIIQMDQCABIAMqAhQiFiABIA5qIgcqAgAiF5QgAyoCECIYIAcqAgQiGZSSIhsgAyoCDCIaIAEgEGoiCSoCACIclCADKgIIIh0gCSoCBCIelJIiH5IiICABKQIAIihCIIinviIhkjgCBCABIBggF5QgFiAZlJMiFiAdIByUIBogHpSTIheSIhggKKe+IhmSOAIAIAkgISAgQwAAAD+UkyIaIBcgFpND17Ndv5QiFpI4AgQgCSAZIBhDAAAAP5STIhcgHyAbk0PXs12/lCIYkzgCACAHIBogFpM4AgQgByAXIBiSOAIAIANBGGohAyABQQhqIgEgEkkNAAsgBCgCECEBCyAFIA1qIQUgC0EBaiILIAFJDQALDAILIAQoAhAiAUUNASAKKAIoIAQoAhRBA3RqIQggBCgCDCIGQQV0IQ4gBkEYbCEQIAZBBHQhEiAMKAIIIAQoAghBA3RqIQVBACENA0AgBgRAIAUgBkEDdCIUaiEVIAUhASAIIQMDQCABIAMqAhwiFiABIBBqIgcqAgAiF5QgAyoCGCIYIAcqAgQiGZSSIhsgAyoCDCIaIAEgEmoiCSoCACIclCADKgIIIh0gCSoCBCIelJIiH5IiICADKgIUIiEgASAUaiILKgIAIiKUIAMqAhAiIyALKgIEIiSUkiIlIAEpAgAiKEIgiKe+IiaSIieSOAIEIAEgGCAXlCAWIBmUkyIWIB0gHJQgGiAelJMiF5IiGCAjICKUICEgJJSTIhkgKKe+IhqSIhySOAIAIAsgJiAlkyIdIBcgFpMiFpM4AgQgCyAfIBuTIhcgGiAZkyIZkjgCACAJICcgIJM4AgQgCSAcIBiTOAIAIAcgFiAdkjgCBCAHIBkgF5M4AgAgA0EgaiEDIAFBCGoiASAVSQ0ACyAEKAIQIQELIAUgDmohBSANQQFqIg0gAUkNAAsMAQsgDyAMKAIIIAQoAghBA3RqNgIMQQAhCwJAIAQoAhAiBkUNACAEKAIMIgNFDQAgCigCBCEJIAQoAgQhBSAPKAIMIQggAyEBQQEhBwNAAn9BACAHRQ0AGiAFRQRAQQAhBSABDAELIAooAiggBCgCFEEDdGohB0QAAAAAAADwPyAFuKMhKUEAIQ0DQEEAIQEgBCgCBARAA0AgCSABQQN0IgZqIg4gBiAHaiIGKgIEIhYgCCABIANsQQN0aiIQKgIAIheUIAYqAgAiGCAQKgIEIhmUkjgCBCAOIBggF5QgFiAZlJM4AgAgAUEBaiIBIAQoAgRJDQALC0EAIQYCQCAFQQFNBEAgCCAJKQIANwIADAELA0AgBrhEGC1EVPshGUCiISogCSoCBCEWIAkqAgAhF0EBIQEDQCAJIAFBA3RqIg4qAgQhGCAqIAG4oiApoiIrEBQhLCAWIA4qAgAiGSArEBO2IhuUkyAYICy2IhqUkiEWIBkgGpQgF5IgGCAblJIhFyABQQFqIgEgBUcNAAsgCCADIAZsQQN0aiIBIBY4AgQgASAXOAIAIAZBAWoiBiAFRw0ACwsgCEEIaiEIIAcgBUEDdGohByANQQFqIg0gBCgCDCIBSQ0ACyAEKAIQIQYgDygCDCEIIAQoAgQhBSABCyEHIA8gCCAFIAdsQQN0aiIINgIMIAtBAWoiCyAGSQ0ACwsLIARBGGoiBCATRw0ACwsgD0EQaiQAIBFBAXYhBUEAIQMDQCADQQN0IgEgAigCAGoiBCAAKAIMIgogESADQX9zakEDdCIIaiIGKgIEIhYgASAKaikCACIoQiCIp74iF5JDAAAAP5QiGCAAKAIYIAFqIgEqAgAiGZQgKKe+IhsgBioCACIak0MAAAA/lCIcIAEqAgQiHZSSIh4gFyAWk0MAAAA/lCIWkjgCBCAEIBwgGZQgGCAdlJMiFyAaIBuSQwAAAD+UIhiSOAIAIAIoAgAgCGoiASAeIBaTOAIEIAEgGCAXkzgCACADIAVGIANBAWohA0UNAAsgDEEQaiQAC4gDAQV/IwBBEGsiBiQAQcAwIAA2AgBBxDAgASACaiIENgIAIAZBADYCBCAAIARsIQVBASEEA0AgBCIDQQF0IQQgAyAFSA0AC0HQMCADIAZBBGoQCUHIMEEANgIAQcwwIANBAWs2AgAgAUEBaiIEQQF2IQNBAiEFIARBwABPBEAgA0EBayEDQQEhBANAIAQiBUEBdCEEIANBPUsgA0EBdiEDDQALIAVBAnQhBSADQQFqIQMLA0ACQCADQYAIai0AAARAIAMhBAwBC0EgIQQgA0EBaiIDQSBHDQELC0HsMEF/NgIAQegwIAI2AgBB4DAgATYCAEHcMCAANgIAQeQwIAQgBWwiADYCAEGAMSgCAEH8MC0AABAfQYgxIABBAXUiATYCAEGEMUHcMCgCACICNgIAIAZCADcCCCABIAJsIAZBCGoQIgJAQfQwKAIAQfAwKAIAIgJrQQJ1IgEgAEkEQEHwMCAAIAFrEA8MAQsgACABTw0AQfQwIAIgAEECdGo2AgALIAZBEGokAAvGCAMHfAV/AX0jAEEQayILJABB/DAgAToAAEGAMSAANgIAQeQwKAIAIQAgAQRAQeAwKAIAQQJtIQkLIAAQICALQYCAgPwDNgIMQYgyIAAgC0EMahAJAkBBmDIoAgBBlDIoAgAiCmtBAnUiASAASQRAQZQyIAAgAWsQDwwBCyAAIAFPDQBBmDIgCiAAQQJ0ajYCAAtBoDIgCUEfdSAAcSAJajYCAEHoMCgCACIKtyECQeAwKAIAIgm3IQUCQEGAMSgCAEUEQEQAAAAAAAAAQEQAAAAAAAAgQCAFIAKjIgJEAAAAAAAACECgIgQgBKKjIAKgRAAAAAAAAAAARAAAAAAAAAhAIAKhIgIgAkQAAAAAAAAAAGMbRAAAAAAAANA/oqAiAiACRAAAAAAAAABAYxsiAiACokQAAAAAAADQP6JEAAAAAAAA8L+gn0QYLURU+yEJQKIiByAHoiEGRAAAAAAAAPA/IQJEAAAAAAAAAAAhBANAIAQgAqAhBCAGIAKiIANEAAAAAAAA8D+gIgMgA6JEAAAAAAAAEECioyICRC1DHOviNho/ZA0ACyAJQQBMDQFEAAAAAAAA8D8gBKMhBkQAAAAAAADwPyAFoyEFQYgyKAIAIQFBACEAA0BEAAAAAAAA8D8gAEEBdEEBcrggBaJEAAAAAAAA8L+gIgMgA6KhnyAHoiIDIAOiIQhEAAAAAAAAAAAhA0QAAAAAAADwPyECRAAAAAAAAAAAIQQDQCAEIAKgIQQgCCACoiADRAAAAAAAAPA/oCIDIAOiRAAAAAAAABBAoqMiAkQtQxzr4jYaP2QNAAsgASAAQQJ0aiAEIAaitjgCACAAQQFqIgAgCUcNAAsMAQsgBUSO4ziO4zjmP6IgAqMiApoiAxAMIQQgAkQAAAAAAAAiwKIQDCEHIAlBAEwNAEQAAAAAAADwPyAFoyEFRAAAAAAAAPA/RAAAAAAAAPA/IAJEAAAAAAAAEMCiEAwgBCAHIASgoyICIAKgoqGjIQdBiDIoAgAhAUEAIQADQCAAQQF0QQFyuCAFoiIERAAAAAAAAAjAoCIGIAaiIAOiEAwhBiAERAAAAAAAAPA/oCIIIAiiIAOiEAwhCCABIABBAnRqIAREAAAAAAAA8L+gIgQgBKIgA6IQDCAGIAigIAKioSAHorY4AgAgAEEBaiIAIAlHDQALCyAKQQBKBEBBiDIoAgAhDEEAIQEDQEQAAAAAAAAAACEDIAkgASIASgRAA0AgAyAMIABBAnRqKgIAIg4gDpS7oCEDIAAgCmoiACAJSA0AC0QAAAAAAADwPyADn6MhAyABIQADQCAMIABBAnRqIg0gDSoCALsgA6K2OAIAIAAgCmoiACAJSA0ACwsgAUEBaiIBIApHDQALCwJAQeQwKAIAIgAgCUwNACAAIAlrQQJ0IgBFDQBBiDIoAgAgCUECdGpBACAA/AsACyALQRBqJAALwxAEFX8BfQJ8AX4CQCAAQQF2IgJBnDEoAgBBmDEoAgAiA2tBA3UiAUsEQEGYMSACIAFrEA4MAQsgASACTQ0AQZwxIAMgAkEDdGo2AgALAkBBqDEoAgBBpDEoAgAiA2tBA3UiASACSQRAQaQxIAIgAWsQDgwBCyABIAJNDQBBqDEgAyACQQN0ajYCAAsgAEECdiIDQQFqIQECQCADQbQxKAIAQbAxKAIAIgVrQQN1IgRPBEBBsDEgASAEaxAODAELIAEgBE8NAEG0MSAFIAFBA3RqNgIAC0QAAAAAAADwPyAAuCIYoyEXQQAhAQNAQbAxKAIAIAFBA3RqIgQgAbhEGC1EVPshGcCiRBgtRFT7IQnAoCAXorYiFhALOAIAIAQgFhANjDgCBCABIANGIAFBAWohAUUNAAsCQEHAMSgCAEG8MSgCACIDa0EDdSIBIAJJBEBBvDEgAiABaxAODAELIAEgAk0NAEHAMSADIAJBA3RqNgIACwJAIABBAkkNAEEAIQEgAkEBRwRARAAAAAAAAPA/IBijIRcgAkH+////B3EhBEEAIQMDQEG8MSgCACABQQN0aiIFIAG4RBgtRFT7IRnAoiAXorYiFhALOAIEIAUgFhANOAIAQbwxKAIAIAFBAXIiBUEDdGoiBiAFuEQYLURU+yEZwKIgF6K2IhYQCzgCBCAGIBYQDTgCACABQQJqIQEgA0ECaiIDIARHDQALCyAAQQJxRQ0AQbwxKAIAIAFBA3RqIgAgAbhEGC1EVPshGcCiIBijtiIWEAs4AgQgACAWEA04AgALQcgxKAIAIAJHBH9ByDEgAjYCAAJAQdAxKAIAQcwxKAIAIgFrQQN1IgAgAkkEQEHMMSACIABrEA4MAQsgACACTQ0AQdAxIAEgAkEDdGo2AgALQdwxKAIAIgJB2DEoAgAiAEcEQEHcMSAANgIAIAAhAgsCQAJAAkBByDEoAgAiAEECTwRAQQIhAQNAAkAgACAAIAFuIgMgAWxGBEACQEHgMSgCACIFIAJLBEAgAiABNgIAIAJBBGohAgwBCyACQdgxKAIAIgBrIgJBAnUiBkEBaiIEQYCAgIAETw0GIAJB/////wMgBSAAayIFQQF1IgcgBCAEIAdJGyAFQfz///8HTxsiBAR/IARBgICAgARPDQYgBEECdBAEBUEACyIHaiIFIAE2AgAgBSAGQQJ0ayEGIAIEQCAGIAAgAvwKAAALQeAxIAcgBEECdGo2AgBB3DEgBUEEaiICNgIAQdgxIAY2AgAgAEUNACAAEAMLQdwxIAI2AgAgAyEADAELIAC4nyABuGMEQCAAIQEMAQsgAUEBaiEBCyAAQQFLDQALC0HkMSgCACIAQegxKAIARwRAQegxIAA2AgALQfAxKAIAIgBB9DEoAgBHBEBB9DEgADYCAAtByDFBAEEAQcgxKAIAQQEQFQJAQfgxKAIAQfAxKAIAIgBrQfQxKAIAIgMgAGsiAk0NACACQQN1IQEgACADRwR/IAFBgICAgAJPDQIgAhAEBUEACyACaiIDIAFBA3RrIQEgAgRAIAEgACAC/AoAAAtB+DEgAzYCAEH0MSADNgIAQfAxIAE2AgAgAEUNACAAEAMLQYAyKAIAIgBB/DEoAgAiAUcEQEGAMiABNgIAIAEhAAsCQEHIMSgCACIDQYQyKAIAIgIgAWtBA3VNDQAgA0GAgICAAk8NAiADQQN0IgIQBCEDIAAgAWsiAARAIAMgASAA/AoAAAtBhDIgAiADaiICNgIAQYAyIAAgA2oiADYCAEH8MSADNgIAIAFFDQAgARADQYQyKAIAIQJBgDIoAgAhAAsCQCAAIAJJBEAgAEIANwIAIABBCGohAAwBCyAAQfwxKAIAIgFrIgBBA3UiBEEBaiIDQYCAgIACTw0CIABB/////wEgAiABayICQQJ1IgUgAyADIAVJGyACQfj///8HTxsiAgR/IAJBgICAgAJPDQIgAkEDdBAEBUEACyIFaiIDQgA3AgAgAyAEQQN0ayEEIAAEQCAEIAEgAPwKAAALQYQyIAUgAkEDdGo2AgBBgDIgA0EIaiIANgIAQfwxIAQ2AgAgAUUNACABEAMLQYAyIAA2AgBByDEoAgAiAkECTwRAQdwxKAIAQdgxKAIAa0ECdSEOQQEhA0EBIQQgAiIFIQ8DQEHYMSgCACEBAkAgAyAETwRAIBBBAnQhBiAQQQFqIRAgDyABIAZqKAIAIgpuIg8hBiAKIAQiB2whBAwBCyAFIAEgDkEBayIOQQJ0aigCACIKbiIFIQcgCiADIgZsIQMLAkAgCkECSQ0AIABB/DEoAgAiAUYNAEEBIQJBASAAIAFrQQN1IgEgAUEBTRshEgNAIAIgB2whEyACIAZsIRRBACEBA0AgFEH8MSgCACIMIAFBA3RqKQIAIhmnaiELIBMgGUIgiKdqIRECQEGEMigCACIIIABNBEAgACAMayIAQQN1IhVBAWoiCUH/////AUsNCCAAQf////8BIAggDGsiCEECdSINIAkgCSANSRsgCEH4////B08bIgkEfyAJQf////8BSw0IIAlBA3QQBAVBAAsiDWoiCCALrSARrUIghoQ3AgAgCCAVQQN0ayELIAAEQCALIAwgAPwKAAALQYQyIA0gCUEDdGo2AgBBgDIgCEEIaiIANgIAQfwxIAs2AgAgDBADDAELIAAgC60gEa1CIIaENwIAIABBCGohAAtBgDIgADYCACABQQFqIgEgEkcNAAsgAkEBaiICIApHDQALQcgxKAIAIQILIAMgBGwgAkkNAAsLDAILEAgACxAFAAtByDEoAgAFIAILGguDBwEGf0HoMigCACIDQeAyKAIAIgJrQRxtIABPBEACQEHkMigCACACa0EcbSIFIAAgACAFSxsiBEUNAAJAIARBA3EiBkUEQCAEIQMMAQsgBCEDA0AgAiABKQIANwIAIAIgASgCGDYCGCACIAEpAhA3AhAgAiABKQIINwIIIANBAWshAyACQRxqIQIgB0EBaiIHIAZHDQALCyAEQQRJDQADQCACIAEpAgA3AgAgAiABKAIYNgIYIAIgASkCEDcCECACIAEpAgg3AgggAiABKAIYNgI0IAIgASkCEDcCLCACIAEpAgg3AiQgAiABKQIANwIcIAIgASgCGDYCUCACIAEpAhA3AkggAkFAayABKQIINwIAIAIgASkCADcCOCACIAEpAgA3AlQgAiABKQIINwJcIAIgASkCEDcCZCACIAEoAhg2AmwgAkHwAGohAiADQQRrIgMNAAsLIAAgBUsEQEHkMigCACICIAAgBWtBHGxqIQADQCACIAEpAgA3AgAgAiABKAIYNgIYIAIgASkCEDcCECACIAEpAgg3AgggAkEcaiICIABHDQALQeQyIAA2AgAPC0HkMkHgMigCACAAQRxsajYCAA8LIAIEQEHkMiACNgIAIAIQA0HoMkEANgIAQeAyQgA3AgBBACEDCwJAIABByqSSyQBPDQBByaSSyQAgA0EcbSIDQQF0IgQgACAAIARJGyADQaSSySRPGyIDQcqkkskATw0AQeQyIANBHGwiAxAEIgQ2AgBB4DIgBDYCAEHoMiADIARqNgIAIAQhAiAAQRxsIgBBHGsiBUEcbiIDQQNxQQNHBEAgA0EBakEDcSEGQQAhAwNAIAIgASkCADcCACACIAEoAhg2AhggAiABKQIQNwIQIAIgASkCCDcCCCACQRxqIQIgA0EBaiIDIAZHDQALCyAAIARqIQAgBUHUAE8EQANAIAIgASkCADcCACACIAEoAhg2AhggAiABKQIQNwIQIAIgASkCCDcCCCACIAEoAhg2AjQgAiABKQIQNwIsIAIgASkCCDcCJCACIAEpAgA3AhwgAiABKAIYNgJQIAIgASkCEDcCSCACQUBrIAEpAgg3AgAgAiABKQIANwI4IAIgASkCADcCVCACIAEpAgg3AlwgAiABKQIQNwJkIAIgASgCGDYCbCACQfAAaiICIABHDQALC0HkMiAANgIADwsQBQAL3QQCBn8BfkGUMSgCACIDQYwxKAIAIgJrQQN1IABPBEACQEGQMSgCACACa0EDdSIFIAAgACAFSxsiBEUNAAJAIARBB3EiBkUEQCAEIQMMAQsgBCEDA0AgAiABKQIANwIAIANBAWshAyACQQhqIQIgB0EBaiIHIAZHDQALCyAEQQhJDQADQCACIAEpAgA3AgAgAiABKQIANwIIIAIgASkCADcCECACIAEpAgA3AhggAiABKQIANwIgIAIgASkCADcCKCACIAEpAgA3AjAgAiABKQIANwI4IAJBQGshAiADQQhrIgMNAAsLIAAgBUsEQEGQMSgCACICIAAgBWtBA3RqIQADQCACIAEpAgA3AgAgAkEIaiICIABHDQALQZAxIAA2AgAPC0GQMUGMMSgCACAAQQN0ajYCAA8LIAIEQEGQMSACNgIAIAIQA0GUMUEANgIAQYwxQgA3AgBBACEDCwJAIABBgICAgAJPDQBB/////wEgA0ECdSIEIAAgACAESRsgA0H4////B08b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AgALIANBAEoEQEEAIQIDQCASQZgwNgIgIBJBvDM2AiQgEiASKQIgNwMQIBIgEkEoajYCHCASIBJBLGo2AhggEiASKQIYNwMIIwBBEGsiDSQAQewwKAIAIgAgAiIQSARAA0BBACEHIwBBEGsiEyQAIBIoAhAiAigCSCEBIBIoAggoAgCyIABBAWoiFrKUIBIoAgwoAgCylRAZIRsgAigCsAIhACACIBsgAbKT/AAiBjYCsAICQCACLQDAAiAGIABrIhFBAEpyIg5BAXFFDQACfyACKAKoAkEATARAIAJBADoAwQJBAAwBC0EAIAZrIgxBACAMQQBKGyEEQQEgDCAMQQFMGyIAQfz///8HcSEPIABBA3EhFCACQYABaiEVIAJB/AFqIRggBkEATiEXA0ACQCAXDQAgAigClAIgAigCkAIgB2wgBmpqIQEgAigCtAIhCCACKAKcAiEJIAIoApgCIQpBACEFQQAhAEEAIQMgDEEDSgRAA0AgCCAAQQJ0aiAJIAogACABanFBAnRqKgIAOAIAIAggAEEBciILQQJ0aiAJIAogASALanFBAnRqKgIAOAIAIAggAEECciILQQJ0aiAJIAogASALanFBAnRqKgIAOAIAIAggAEEDciILQQJ0aiAJIAogASALanFBAnRqKgIAOAIAIABBBGohACADQQRqIgMgD0cNAAsLIBRFDQADQCAIIABBAnRqIAkgCiAAIAFqcUECdGoqAgA4AgAgAEEBaiEAIAVBAWoiBSAURw0ACwsCQCAEIAIoAkgiBU4NACASKAIUKAIAIAdBAnRqKAIAIAZBAnRqIQEgAigCtAIhCEEAIQMgBSAEIgBrQQNxIgkEQANAIAggAEECdCIKaiABIApqKgIAOAIAIABBAWohACADQQFqIgMgCUcNAAsLIAQgBWtBfEsNAANAIAggAEECdCIDaiABIANqKgIAOAIAIAggA0EEaiIJaiABIAlqKgIAOAIAIAggA0EIaiIJaiABIAlqKgIAOAIAIAggA0EMaiIDaiABIANqKgIAOAIAIABBBGoiACAFRw0ACwsgEyACKAJ0IAIoAnAgB2xBA3RqNgIIIAIoArABQQF0IQUCQCACKAKIAiIBQQBMDQAgAigC/AEgBSABa0ECdGohACACKALwASEJIAIoArQCIQpBACEIIAFBAUcEQCABQf7///8HcSEZQQAhAwNAIAAgCEECdCILaiAJIAtqKgIAIAogC2oqAgCMlDgCACAAIAtBBHIiC2ogCSALaioCACAKIAtqKgIAjJQ4AgAgCEECaiEIIANBAmoiAyAZRw0ACwsgAUEBcUUNACAAIAhBAnQiA2ogAyAJaioCACADIApqKgIAjJQ4AgALAkAgASAFTg0AIAFBAWohAyACKAL8ASEIIAIoAvABIQkgAigCtAIhCiABIgBBAXEEQCAIIAkgAEECdCIAaioCACAAIApqKgIAlDgCACADIQALIAMgBUYNAANAIAggACABa0ECdGogCSAAQQJ0IgNqKgIAIAMgCmoqAgCUOAIAIAggAEEBaiIDIAFrQQJ0aiAJIANBAnQiA2oqAgAgAyAKaioCAJQ4AgAgAEECaiIAIAVHDQALCyAVIBggE0EIahAdIAdBAWoiByACKAKoAiIDSA0ACyACQQA6AMECQQAgA0EATA0AGkEAIQFBASACKAKsAiIIQQBMDQAaA0BBACEAIAhBAEoEQCACKALIAiABIAhsQRxsaiEDIAIoAnQgAigCcCABbEEDdGohBANAIAMgAEEcbGogBCAAQQN0aikCADcCACAAQQFqIgAgAigCrAIiCEgNAAsgAigCqAIhAwsgAUEBaiIBIANIDQALIANBAEoLIAItAMACRSACKAJQIgEgEUZxDQBFDQBBACEHQQAgBiABayIUayIMQQAgDEEAShshBCACQYABaiEPIAJB/AFqIRUDQAJAIAIoAkgiASAMIAEgDEgbIgtBAEwNACACKAKUAiACKAKQAiAHbCAUamohCCACKAK0AiEGIAIoApwCIQkgAigCmAIhCkEAIQVBACEAIAtBBE8EQCALQfz///8HcSEYQQAhAwNAIAYgAEECdGogCSAKIAAgCGpxQQJ0aioCADgCACAGIABBAXIiF0ECdGogCSAKIAggF2pxQQJ0aioCADgCACAGIABBAnIiF0ECdGogCSAKIAggF2pxQQJ0aioCADgCACAGIABBA3IiF0ECdGogCSAKIAggF2pxQQJ0aioCADgCACAAQQRqIQAgA0EEaiIDIBhHDQALCyALQQNxIgNFDQADQCAGIABBAnRqIAkgCiAAIAhqcUECdGoqAgA4AgAgAEEBaiEAIAVBAWoiBSADRw0ACwsCQCABIARMDQAgEigCFCgCACAHQQJ0aigC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';
174
+ function getBinarySync(file) {
175
+ if (file == wasmBinaryFile && wasmBinary) {
176
+ return new Uint8Array(wasmBinary);
177
+ }
178
+ var binary = tryParseAsDataURI(file);
179
+ if (binary) {
180
+ return binary;
181
+ }
182
+ if (readBinary) {
183
+ return readBinary(file);
184
+ }
185
+ throw 'both async and sync fetching of the wasm failed';
186
+ }
187
+ async function getWasmBinary(binaryFile) {
188
+ return getBinarySync(binaryFile);
189
+ }
190
+ async function instantiateArrayBuffer(binaryFile, imports) {
191
+ try {
192
+ var binary = await getWasmBinary(binaryFile);
193
+ var instance = await WebAssembly.instantiate(binary, imports);
194
+ return instance;
195
+ } catch (reason) {
196
+ err(`failed to asynchronously prepare wasm: ${reason}`);
197
+ abort(reason);
198
+ }
199
+ }
200
+ async function instantiateAsync(binary, binaryFile, imports) {
201
+ return instantiateArrayBuffer(binaryFile, imports);
202
+ }
203
+ function getWasmImports() {
204
+ return { a: wasmImports };
205
+ }
206
+ async function createWasm() {
207
+ function receiveInstance(instance, module) {
208
+ wasmExports = instance.exports;
209
+ wasmMemory = wasmExports['d'];
210
+ updateMemoryViews();
211
+ removeRunDependency('wasm-instantiate');
212
+ return wasmExports;
213
+ }
214
+ addRunDependency('wasm-instantiate');
215
+ function receiveInstantiationResult(result) {
216
+ return receiveInstance(result['instance']);
217
+ }
218
+ var info = getWasmImports();
219
+ try {
220
+ var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);
221
+ var exports = receiveInstantiationResult(result);
222
+ return exports;
223
+ } catch (e) {
224
+ readyPromiseReject(e);
225
+ return Promise.reject(e);
226
+ }
227
+ }
228
+ class ExitStatus {
229
+ name = 'ExitStatus';
230
+ constructor(status) {
231
+ this.message = `Program terminated with exit(${status})`;
232
+ this.status = status;
233
+ }
234
+ }
235
+ var base64Decode = (b64) => {
236
+ var b1,
237
+ b2,
238
+ i = 0,
239
+ j = 0,
240
+ bLength = b64.length;
241
+ var output = new Uint8Array(
242
+ ((bLength * 3) >> 2) -
243
+ (b64[bLength - 2] == '=') -
244
+ (b64[bLength - 1] == '=')
245
+ );
246
+ for (; i < bLength; i += 4, j += 3) {
247
+ b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];
248
+ b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];
249
+ output[j] = (base64ReverseLookup[b64.charCodeAt(i)] << 2) | (b1 >> 4);
250
+ output[j + 1] = (b1 << 4) | (b2 >> 2);
251
+ output[j + 2] = (b2 << 6) | base64ReverseLookup[b64.charCodeAt(i + 3)];
252
+ }
253
+ return output;
254
+ };
255
+ var isDataURI = (filename) => filename.startsWith(dataURIPrefix);
256
+ var dataURIPrefix = 'data:application/octet-stream;base64,';
257
+ var tryParseAsDataURI = (filename) => {
258
+ if (isDataURI(filename)) {
259
+ return base64Decode(filename.slice(dataURIPrefix.length));
260
+ }
261
+ };
262
+ var __abort_js = () => abort('');
263
+ var getHeapMax = () => 2147483648;
264
+ var alignMemory = (size, alignment) =>
265
+ Math.ceil(size / alignment) * alignment;
266
+ var abortOnCannotGrowMemory = (requestedSize) => {
267
+ abort('OOM');
268
+ };
269
+ var growMemory = (size) => {
270
+ var b = wasmMemory.buffer;
271
+ var pages = ((size - b.byteLength + 65535) / 65536) | 0;
272
+ try {
273
+ wasmMemory.grow(pages);
274
+ updateMemoryViews();
275
+ return 1;
276
+ } catch (e) {}
277
+ };
278
+ var _emscripten_resize_heap = (requestedSize) => {
279
+ var oldSize = HEAPU8.length;
280
+ requestedSize >>>= 0;
281
+ var maxHeapSize = getHeapMax();
282
+ if (requestedSize > maxHeapSize) {
283
+ abortOnCannotGrowMemory(requestedSize);
284
+ }
285
+ for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
286
+ var overGrownHeapSize = oldSize * (1 + 0.5 / cutDown);
287
+ overGrownHeapSize = Math.min(
288
+ overGrownHeapSize,
289
+ requestedSize + 100663296
290
+ );
291
+ var newSize = Math.min(
292
+ maxHeapSize,
293
+ alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)
294
+ );
295
+ var replacement = growMemory(newSize);
296
+ if (replacement) {
297
+ return true;
298
+ }
299
+ }
300
+ abortOnCannotGrowMemory(requestedSize);
301
+ };
302
+ var initRandomFill = () => (view) => crypto.getRandomValues(view);
303
+ var randomFill = (view) => {
304
+ (randomFill = initRandomFill())(view);
305
+ };
306
+ var _random_get = (buffer, size) => {
307
+ randomFill(HEAPU8.subarray(buffer, buffer + size));
308
+ return 0;
309
+ };
310
+ var keepRuntimeAlive = () => true;
311
+ var _proc_exit = (code) => {
312
+ EXITSTATUS = code;
313
+ if (!keepRuntimeAlive()) {
314
+ ABORT = true;
315
+ }
316
+ quit_(code, new ExitStatus(code));
317
+ };
318
+ var exitJS = (status, implicit) => {
319
+ EXITSTATUS = status;
320
+ _proc_exit(status);
321
+ };
322
+ var handleException = (e) => {
323
+ if (e instanceof ExitStatus || e == 'unwind') {
324
+ return EXITSTATUS;
325
+ }
326
+ quit_(1, e);
327
+ };
328
+ var UTF8Decoder =
329
+ typeof TextDecoder != 'undefined' ? new TextDecoder() : undefined;
330
+ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
331
+ var endIdx = idx + maxBytesToRead;
332
+ var endPtr = idx;
333
+ while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
334
+ if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
335
+ return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
336
+ }
337
+ var str = '';
338
+ while (idx < endPtr) {
339
+ var u0 = heapOrArray[idx++];
340
+ if (!(u0 & 128)) {
341
+ str += String.fromCharCode(u0);
342
+ continue;
343
+ }
344
+ var u1 = heapOrArray[idx++] & 63;
345
+ if ((u0 & 224) == 192) {
346
+ str += String.fromCharCode(((u0 & 31) << 6) | u1);
347
+ continue;
348
+ }
349
+ var u2 = heapOrArray[idx++] & 63;
350
+ if ((u0 & 240) == 224) {
351
+ u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;
352
+ } else {
353
+ u0 =
354
+ ((u0 & 7) << 18) |
355
+ (u1 << 12) |
356
+ (u2 << 6) |
357
+ (heapOrArray[idx++] & 63);
358
+ }
359
+ if (u0 < 65536) {
360
+ str += String.fromCharCode(u0);
361
+ } else {
362
+ var ch = u0 - 65536;
363
+ str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));
364
+ }
365
+ }
366
+ return str;
367
+ };
368
+ var UTF8ToString = (ptr, maxBytesToRead) =>
369
+ ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '';
370
+ for (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {
371
+ base64ReverseLookup[48 + i] = 52 + i;
372
+ base64ReverseLookup[65 + i] = i;
373
+ base64ReverseLookup[97 + i] = 26 + i;
374
+ }
375
+ base64ReverseLookup[43] = 62;
376
+ base64ReverseLookup[47] = 63;
377
+ var wasmImports = {
378
+ c: __abort_js,
379
+ b: _emscripten_resize_heap,
380
+ a: _random_get,
381
+ };
382
+ var wasmExports = await createWasm();
383
+ var ___wasm_call_ctors = wasmExports['e'];
384
+ var _setBuffers = (Module['_setBuffers'] = wasmExports['g']);
385
+ var _blockSamples = (Module['_blockSamples'] = wasmExports['h']);
386
+ var _intervalSamples = (Module['_intervalSamples'] = wasmExports['i']);
387
+ var _inputLatency = (Module['_inputLatency'] = wasmExports['j']);
388
+ var _outputLatency = (Module['_outputLatency'] = wasmExports['k']);
389
+ var _reset = (Module['_reset'] = wasmExports['l']);
390
+ var _presetDefault = (Module['_presetDefault'] = wasmExports['m']);
391
+ var _presetCheaper = (Module['_presetCheaper'] = wasmExports['n']);
392
+ var _configure = (Module['_configure'] = wasmExports['o']);
393
+ var _setTransposeFactor = (Module['_setTransposeFactor'] =
394
+ wasmExports['p']);
395
+ var _setTransposeSemitones = (Module['_setTransposeSemitones'] =
396
+ wasmExports['q']);
397
+ var _seek = (Module['_seek'] = wasmExports['r']);
398
+ var _process = (Module['_process'] = wasmExports['s']);
399
+ var _flush = (Module['_flush'] = wasmExports['t']);
400
+ var _main = (Module['_main'] = wasmExports['u']);
401
+ Module['UTF8ToString'] = UTF8ToString;
402
+ function callMain() {
403
+ var entryFunction = _main;
404
+ var argc = 0;
405
+ var argv = 0;
406
+ try {
407
+ var ret = entryFunction(argc, argv);
408
+ exitJS(ret, true);
409
+ return ret;
410
+ } catch (e) {
411
+ return handleException(e);
412
+ }
413
+ }
414
+ function run() {
415
+ if (runDependencies > 0) {
416
+ dependenciesFulfilled = run;
417
+ return;
418
+ }
419
+ preRun();
420
+ if (runDependencies > 0) {
421
+ dependenciesFulfilled = run;
422
+ return;
423
+ }
424
+ function doRun() {
425
+ Module['calledRun'] = true;
426
+ if (ABORT) return;
427
+ initRuntime();
428
+ preMain();
429
+ readyPromiseResolve(Module);
430
+ var noInitialRun;
431
+ if (!noInitialRun) callMain();
432
+ postRun();
433
+ }
434
+ {
435
+ doRun();
436
+ }
437
+ }
438
+ run();
439
+ moduleRtn = readyPromise;
440
+
441
+ return moduleRtn;
442
+ };
443
+ })();
444
+ function registerWorkletProcessor(Module, audioNodeKey) {
445
+ class WasmProcessor extends AudioWorkletProcessor {
446
+ constructor(options) {
447
+ super(options);
448
+ this.wasmReady = false;
449
+ this.wasmModule = null;
450
+ this.channels = 0;
451
+ this.buffersIn = [];
452
+ this.buffersOut = [];
453
+
454
+ this.audioBuffers = []; // list of (multi-channel) audio buffers
455
+ this.audioBuffersStart = 0; // time-stamp for the first audio buffer
456
+ this.audioBuffersEnd = 0; // just to be helpful
457
+
458
+ this.timeIntervalSamples = sampleRate * 0.1;
459
+ this.timeIntervalCounter = 0;
460
+
461
+ this.timeMap = [
462
+ {
463
+ active: false,
464
+ input: 0,
465
+ output: 0,
466
+ rate: 1,
467
+ semitones: 0,
468
+ loopStart: 0,
469
+ loopEnd: 0,
470
+ },
471
+ ];
472
+
473
+ let remoteMethods = {
474
+ configure: (config) => {
475
+ let blockChanged =
476
+ config.blockMs != this.config.blockMs ||
477
+ config.intervalMs != this.config.intervalMs;
478
+ Object.assign(this.config, config);
479
+ if (config.blockMs && blockChanged) this.configure();
480
+ },
481
+ setUpdateInterval: (seconds) => {
482
+ this.timeIntervalSamples = sampleRate * seconds;
483
+ },
484
+ stop: (when) => {
485
+ if (typeof when !== 'number') when = currentTime;
486
+ return remoteMethods.schedule({ active: false, output: when });
487
+ },
488
+ start: (when, offset, duration, rate, semitones) => {
489
+ if (typeof when === 'object') {
490
+ if (!('active' in when)) when.active = true;
491
+ return remoteMethods.schedule(when);
492
+ }
493
+
494
+ let obj = {
495
+ active: true,
496
+ input: 0,
497
+ output: currentTime + this.outputLatencySeconds,
498
+ };
499
+ if (typeof when === 'number') obj.output = when;
500
+ if (typeof offset === 'number') obj.input = offset;
501
+ if (typeof rate === 'number') obj.rate = rate;
502
+ if (typeof semitones === 'number') obj.semitones = semitones;
503
+ let result = remoteMethods.schedule(obj);
504
+ if (typeof duration === 'number') {
505
+ remoteMethods.stop(obj.output + duration);
506
+ obj.output += duration;
507
+ obj.active = false;
508
+ remoteMethods.schedule(obj);
509
+ }
510
+ return result;
511
+ },
512
+ schedule: (objIn, adjustPrevious) => {
513
+ let outputTime =
514
+ 'outputTime' in objIn ? objIn.outputTime : currentTime;
515
+
516
+ let latestSegment = this.timeMap[this.timeMap.length - 1];
517
+ while (
518
+ this.timeMap.length &&
519
+ this.timeMap[this.timeMap.length - 1].output >= outputTime
520
+ ) {
521
+ latestSegment = this.timeMap.pop();
522
+ }
523
+
524
+ let obj = {
525
+ active: latestSegment.active,
526
+ input: null,
527
+ output: outputTime,
528
+ rate: latestSegment.rate,
529
+ semitones: latestSegment.semitones,
530
+ loopStart: latestSegment.loopStart,
531
+ loopEnd: latestSegment.loopEnd,
532
+ };
533
+ Object.assign(obj, objIn);
534
+ if (obj.input === null) {
535
+ let rate = latestSegment.active ? latestSegment.rate : 0;
536
+ obj.input =
537
+ latestSegment.input + (obj.output - latestSegment.output) * rate;
538
+ }
539
+ this.timeMap.push(obj);
540
+
541
+ if (adjustPrevious && this.timeMap.length > 1) {
542
+ let previous = this.timeMap[this.timeMap.length - 2];
543
+ if (previous.output < currentTime) {
544
+ let rate = previous.active ? previous.rate : 0;
545
+ previous.input += (currentTime - previous.output) * rate;
546
+ previous.output = currentTime;
547
+ }
548
+ previous.rate =
549
+ (obj.input - previous.input) / (obj.output - previous.output);
550
+ }
551
+
552
+ let currentMapSegment = this.timeMap[0];
553
+ while (
554
+ this.timeMap.length > 1 &&
555
+ this.timeMap[1].output <= outputTime
556
+ ) {
557
+ this.timeMap.shift();
558
+ currentMapSegment = this.timeMap[0];
559
+ }
560
+ let rate = currentMapSegment.active ? currentMapSegment.rate : 0;
561
+ let inputTime =
562
+ currentMapSegment.input +
563
+ (outputTime - currentMapSegment.output) * rate;
564
+ this.timeIntervalCounter = this.timeIntervalSamples;
565
+ this.port.postMessage(['time', inputTime]);
566
+
567
+ return obj;
568
+ },
569
+ dropBuffers: (toSeconds) => {
570
+ if (typeof toSeconds !== 'number') {
571
+ let buffers = this.audioBuffers.flat(1).map((b) => b.buffer);
572
+ this.audioBuffers = [];
573
+ this.audioBuffersStart = this.audioBuffersEnd = 0;
574
+ return {
575
+ value: { start: 0, end: 0 },
576
+ transfer: buffers,
577
+ };
578
+ }
579
+ let transfer = [];
580
+ while (this.audioBuffers.length) {
581
+ let first = this.audioBuffers[0];
582
+ let length = first[0].length;
583
+ let endSamples = this.audioBuffersStart + length;
584
+ let endSeconds = endSamples / sampleRate;
585
+ if (endSeconds > toSeconds) break;
586
+
587
+ this.audioBuffers.shift().forEach((b) => transfer.push(b.buffer));
588
+ this.audioBuffersStart += length;
589
+ }
590
+ return {
591
+ value: {
592
+ start: this.audioBuffersStart / sampleRate,
593
+ end: this.audioBuffersEnd / sampleRate,
594
+ },
595
+ transfer: transfer,
596
+ };
597
+ },
598
+ addBuffers: (sampleBuffers) => {
599
+ sampleBuffers = [].concat(sampleBuffers);
600
+ this.audioBuffers.push(sampleBuffers);
601
+ let length = sampleBuffers[0].length;
602
+ this.audioBuffersEnd += length;
603
+ return this.audioBuffersEnd / sampleRate;
604
+ },
605
+ };
606
+
607
+ let pendingMessages = [];
608
+ this.port.onmessage = (event) => pendingMessages.push(event);
609
+
610
+ Module().then((wasmModule) => {
611
+ this.wasmModule = wasmModule;
612
+ this.wasmReady = true;
613
+
614
+ wasmModule._main();
615
+
616
+ this.channels = options.numberOfOutputs
617
+ ? options.outputChannelCount[0]
618
+ : 2; // stereo by default
619
+ this.configure();
620
+
621
+ this.port.onmessage = (event) => {
622
+ let data = event.data;
623
+ let messageId = data.shift();
624
+ let method = data.shift();
625
+ let result = remoteMethods[method](...data);
626
+ if (result?.transfer) {
627
+ this.port.postMessage([messageId, result.value], result.transfer);
628
+ } else {
629
+ this.port.postMessage([messageId, result]);
630
+ }
631
+ };
632
+ let methodArgCounts = {};
633
+ for (let key in remoteMethods) {
634
+ methodArgCounts[key] = remoteMethods[key].length;
635
+ }
636
+ this.port.postMessage(['ready', methodArgCounts]);
637
+ pendingMessages.forEach(this.port.onmessage);
638
+ pendingMessages = null;
639
+ });
640
+ }
641
+
642
+ config = {
643
+ tonalityHz: 8000,
644
+ };
645
+ configure() {
646
+ if (this.config.blockMs) {
647
+ let blockSamples = Math.round(
648
+ (this.config.blockMs / 1000) * sampleRate
649
+ );
650
+ let intervalSamples = Math.round(
651
+ ((this.config.intervalMs || this.config.blockMs * 0.25) / 1000) *
652
+ sampleRate
653
+ );
654
+ this.wasmModule._configure(
655
+ this.channels,
656
+ blockSamples,
657
+ intervalSamples
658
+ );
659
+ this.wasmModule._reset();
660
+ } else {
661
+ this.wasmModule._presetDefault(this.channels, sampleRate);
662
+ }
663
+ this.updateBuffers();
664
+ this.inputLatencySeconds = this.wasmModule._inputLatency() / sampleRate;
665
+ this.outputLatencySeconds = this.wasmModule._outputLatency() / sampleRate;
666
+ }
667
+
668
+ updateBuffers() {
669
+ let wasmModule = this.wasmModule;
670
+ // longer than one STFT block, so we can seek smoothly
671
+ this.bufferLength =
672
+ wasmModule._inputLatency() + wasmModule._outputLatency();
673
+
674
+ let lengthBytes = this.bufferLength * 4;
675
+ let bufferPointer = wasmModule._setBuffers(
676
+ this.channels,
677
+ this.bufferLength
678
+ );
679
+ this.buffersIn = [];
680
+ this.buffersOut = [];
681
+ for (let c = 0; c < this.channels; ++c) {
682
+ this.buffersIn.push(bufferPointer + lengthBytes * c);
683
+ this.buffersOut.push(bufferPointer + lengthBytes * (c + this.channels));
684
+ }
685
+ }
686
+
687
+ process(inputList, outputList, parameters) {
688
+ if (!this.wasmReady) {
689
+ outputList.forEach((output) => {
690
+ output.forEach((channel) => {
691
+ channel.fill(0);
692
+ });
693
+ });
694
+ return true;
695
+ }
696
+ if (!outputList[0]?.length) return false;
697
+
698
+ let outputTime = currentTime + this.outputLatencySeconds;
699
+ while (this.timeMap.length > 1 && this.timeMap[1].output <= outputTime) {
700
+ this.timeMap.shift();
701
+ }
702
+ let currentMapSegment = this.timeMap[0];
703
+
704
+ let wasmModule = this.wasmModule;
705
+ wasmModule._setTransposeSemitones(
706
+ currentMapSegment.semitones,
707
+ this.config.tonalityHz / sampleRate
708
+ );
709
+
710
+ // Check the input/output channel counts
711
+ if (outputList[0].length != this.channels) {
712
+ this.channels = outputList[0]?.length || 0;
713
+ configure();
714
+ }
715
+ let outputBlockSize = outputList[0][0].length;
716
+
717
+ let memory = wasmModule.exports
718
+ ? wasmModule.exports.memory.buffer
719
+ : wasmModule.HEAP8.buffer;
720
+ // Buffer list (one per channel)
721
+ let inputs = inputList[0];
722
+ if (!currentMapSegment.active) {
723
+ outputList[0].forEach((_, c) => {
724
+ let channelBuffer = inputs[c % inputs.length];
725
+ let buffer = new Float32Array(
726
+ memory,
727
+ this.buffersIn[c],
728
+ outputBlockSize
729
+ );
730
+ buffer.fill(0);
731
+ });
732
+ // Should detect silent input and skip processing
733
+ wasmModule._process(outputBlockSize, outputBlockSize);
734
+ } else if (inputs?.length) {
735
+ // Live input
736
+ outputList[0].forEach((_, c) => {
737
+ let channelBuffer = inputs[c % inputs.length];
738
+ let buffer = new Float32Array(
739
+ memory,
740
+ this.buffersIn[c],
741
+ outputBlockSize
742
+ );
743
+ if (channelBuffer) {
744
+ buffer.set(channelBuffer);
745
+ } else {
746
+ buffer.fill(0);
747
+ }
748
+ });
749
+ wasmModule._process(outputBlockSize, outputBlockSize);
750
+ } else {
751
+ let inputTime =
752
+ currentMapSegment.input +
753
+ (outputTime - currentMapSegment.output) * currentMapSegment.rate;
754
+ let loopLength =
755
+ currentMapSegment.loopEnd - currentMapSegment.loopStart;
756
+ if (loopLength > 0 && inputTime >= currentMapSegment.loopEnd) {
757
+ currentMapSegment.input -= loopLength;
758
+ inputTime -= loopLength;
759
+ }
760
+
761
+ inputTime += this.inputLatencySeconds;
762
+ let inputSamplesEnd = Math.round(inputTime * sampleRate);
763
+
764
+ // Fill the buffer with previous input
765
+ let buffers = outputList[0].map(
766
+ (_, c) =>
767
+ new Float32Array(memory, this.buffersIn[c], this.bufferLength)
768
+ );
769
+
770
+ let blockSamples = 0; // current write position in the temporary input buffer
771
+ let audioBufferIndex = 0;
772
+ let audioSamples = this.audioBuffersStart; // start of current audio buffer
773
+ // zero-pad until the start of the audio data
774
+ let inputSamples = inputSamplesEnd - this.bufferLength;
775
+ if (inputSamples < audioSamples) {
776
+ blockSamples = audioSamples - inputSamples;
777
+ buffers.forEach((b) => b.fill(0, 0, blockSamples));
778
+ inputSamples = audioSamples;
779
+ }
780
+ while (
781
+ audioBufferIndex < this.audioBuffers.length &&
782
+ audioSamples < inputSamplesEnd
783
+ ) {
784
+ let audioBuffer = this.audioBuffers[audioBufferIndex];
785
+ let startIndex = inputSamples - audioSamples; // start index within the audio buffer
786
+ let bufferEnd = audioSamples + audioBuffer[0].length;
787
+ // how many samples to copy: min(how many left in the buffer, how many more we need)
788
+ let count = Math.min(
789
+ audioBuffer[0].length - startIndex,
790
+ inputSamplesEnd - inputSamples
791
+ );
792
+ if (count > 0) {
793
+ buffers.forEach((buffer, c) => {
794
+ let channelBuffer = audioBuffer[c % audioBuffer.length];
795
+ buffer
796
+ .subarray(blockSamples)
797
+ .set(channelBuffer.subarray(startIndex, startIndex + count));
798
+ });
799
+ audioSamples += count;
800
+ blockSamples += count;
801
+ } else {
802
+ // we're already past this buffer - skip it
803
+ audioSamples += audioBuffer[0].length;
804
+ }
805
+ ++audioBufferIndex;
806
+ }
807
+ if (blockSamples < this.bufferLength) {
808
+ buffers.forEach((buffer) => buffer.subarray(blockSamples).fill(0));
809
+ }
810
+
811
+ // constantly seeking, so we don't have to worry about the input buffers needing to be a rate-dependent size
812
+ wasmModule._seek(this.bufferLength, currentMapSegment.rate);
813
+ wasmModule._process(0, outputBlockSize);
814
+
815
+ this.timeIntervalCounter -= outputBlockSize;
816
+ if (this.timeIntervalCounter <= 0) {
817
+ this.timeIntervalCounter = this.timeIntervalSamples;
818
+ this.port.postMessage(['time', inputTime]);
819
+ }
820
+ }
821
+
822
+ // Re-fetch in case the memory changed (even though there *shouldn't* be any allocations)
823
+ memory = wasmModule.exports
824
+ ? wasmModule.exports.memory.buffer
825
+ : wasmModule.HEAP8.buffer;
826
+ outputList[0].forEach((channelBuffer, c) => {
827
+ let buffer = new Float32Array(
828
+ memory,
829
+ this.buffersOut[c],
830
+ outputBlockSize
831
+ );
832
+ channelBuffer.set(buffer);
833
+ });
834
+
835
+ return true;
836
+ }
837
+ }
838
+
839
+ registerProcessor(audioNodeKey, WasmProcessor);
840
+ }
841
+
842
+ /**
843
+ Creates a Stretch node
844
+ @async
845
+ @function SignalsmithStretch
846
+ @param {AudioContext} audioContext
847
+ @param {Object} options - channel configuration (as per [options]{@link https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletNode/AudioWorkletNode#options})
848
+ @returns {Promise<StretchNode>}
849
+ */
850
+ SignalsmithStretch = ((Module, audioNodeKey) => {
851
+ if (
852
+ typeof AudioWorkletProcessor === 'function' &&
853
+ typeof registerProcessor === 'function'
854
+ ) {
855
+ // AudioWorklet side
856
+ registerWorkletProcessor(Module, audioNodeKey);
857
+ return {};
858
+ }
859
+ let promiseKey = Symbol();
860
+ let createNode = async function (audioContext, options) {
861
+ /**
862
+ @classdesc An `AudioWorkletNode` with Signalsmith Stretch extensions
863
+ @name StretchNode
864
+ @augments AudioWorkletNode
865
+ @property {number} inputTime - the current playback (in seconds) within the input audio stored by the node
866
+ */
867
+ let audioNode;
868
+ options = options || {
869
+ numberOfInputs: 1,
870
+ numberOfOutputs: 1,
871
+ outputChannelCount: [2],
872
+ };
873
+ try {
874
+ audioNode = new AudioWorkletNode(audioContext, audioNodeKey, options);
875
+ } catch (e) {
876
+ if (!audioContext[promiseKey]) {
877
+ let moduleUrl = createNode.moduleUrl;
878
+ if (!moduleUrl) {
879
+ let moduleCode = `(${registerWorkletProcessor})((_scriptName=>${Module})(),${JSON.stringify(audioNodeKey)})`;
880
+ moduleUrl = URL.createObjectURL(
881
+ new Blob([moduleCode], { type: 'text/javascript' })
882
+ );
883
+ }
884
+ audioContext[promiseKey] =
885
+ audioContext.audioWorklet.addModule(moduleUrl);
886
+ }
887
+ await audioContext[promiseKey];
888
+ audioNode = new AudioWorkletNode(audioContext, audioNodeKey, options);
889
+ }
890
+
891
+ // messages with Promise responses
892
+ let requestMap = {};
893
+ let idCounter = 0;
894
+ let timeUpdateCallback = null;
895
+ let post = (transfer, ...data) => {
896
+ let id = idCounter++;
897
+ return new Promise((resolve) => {
898
+ requestMap[id] = resolve;
899
+ audioNode.port.postMessage([id].concat(data), transfer);
900
+ });
901
+ };
902
+ audioNode.inputTime = 0;
903
+ audioNode.port.onmessage = (event) => {
904
+ let data = event.data;
905
+ let id = data[0],
906
+ value = data[1];
907
+ if (id == 'time') {
908
+ audioNode.inputTime = value;
909
+ if (timeUpdateCallback) timeUpdateCallback(value);
910
+ }
911
+ if (id in requestMap) {
912
+ requestMap[id](value);
913
+ delete requestMap[id];
914
+ }
915
+ };
916
+
917
+ return new Promise((resolve) => {
918
+ requestMap['ready'] = (remoteMethodKeys) => {
919
+ Object.keys(remoteMethodKeys).forEach((key) => {
920
+ let argCount = remoteMethodKeys[key];
921
+ audioNode[key] = (...args) => {
922
+ let transfer = null;
923
+ if (args.length > argCount) {
924
+ transfer = args.pop();
925
+ }
926
+ return post(transfer, key, ...args);
927
+ };
928
+ });
929
+ /** @lends StretchNode.prototype
930
+ @method setUpdateInterval
931
+ */
932
+ audioNode.setUpdateInterval = (seconds, callback) => {
933
+ timeUpdateCallback = callback;
934
+ return post(null, 'setUpdateInterval', seconds);
935
+ };
936
+ resolve(audioNode);
937
+ };
938
+ });
939
+ };
940
+ return createNode;
941
+ })(SignalsmithStretch, 'signalsmith-stretch');
942
+ // register as a CommonJS/AMD module
943
+ if (typeof exports === 'object' && typeof module === 'object') {
944
+ module.exports = SignalsmithStretch;
945
+ } else if (typeof define === 'function' && define['amd']) {
946
+ define([], () => SignalsmithStretch);
947
+ }
948
+ let _export = SignalsmithStretch;
949
+ export default _export;