@basmilius/apple-audio-source 0.7.2 → 0.8.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flac-HeRh6IRl.mjs","names":["CodecParser"],"sources":["../../../node_modules/.bun/@wasm-audio-decoders+flac@0.2.10/node_modules/@wasm-audio-decoders/flac/src/EmscriptenWasm.js","../../../node_modules/.bun/@wasm-audio-decoders+flac@0.2.10/node_modules/@wasm-audio-decoders/flac/src/FLACDecoder.js","../../../node_modules/.bun/@wasm-audio-decoders+flac@0.2.10/node_modules/@wasm-audio-decoders/flac/src/FLACDecoderWebWorker.js","../../../node_modules/.bun/@wasm-audio-decoders+flac@0.2.10/node_modules/@wasm-audio-decoders/flac/index.js"],"sourcesContent":["/* **************************************************\n * This file is auto-generated during the build process.\n * Any edits to this file will be overwritten.\n ****************************************************/\n\nexport default function EmscriptenWASM(WASMAudioDecoderCommon) {\n// include: shell_minimal.js\nvar Module = Module;\n\n// Redefine these in a --pre-js to override behavior. If you would like to\n// remove out() or err() altogether, you can no-op it out to function() {},\n// and build with --closure 1 to get Closure optimize out all the uses\n// altogether.\nvar out = text => console.log(text);\n\nvar err = text => console.error(text);\n\n// Override this function in a --pre-js file to get a signal for when\n// compilation is ready. In that callback, call the function run() to start\n// the program.\nfunction ready() {}\n\n// --pre-jses are emitted after the Module integration code, so that they can\n// refer to Module (if they choose; they can also define Module)\n// include: src/flac/src/emscripten-pre.js\nModule = {};\n\n// end include: src/flac/src/emscripten-pre.js\n// end include: shell_minimal.js\n// include: preamble_minimal.js\n/** @param {string|number=} what */ function abort(what) {\n throw what;\n}\n\nvar HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, HEAP64, HEAPU64, wasmMemory;\n\n// include: runtime_shared.js\n// include: runtime_stack_check.js\n// end include: runtime_stack_check.js\n// include: runtime_exceptions.js\n// end include: runtime_exceptions.js\n// include: runtime_debug.js\n// end include: runtime_debug.js\n// include: memoryprofiler.js\n// end include: memoryprofiler.js\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n HEAP64 = new BigInt64Array(b);\n HEAPU64 = new BigUint64Array(b);\n}\n\n// end include: runtime_shared.js\n// end include: preamble_minimal.js\n// Begin JS library code\n/** @noinline */ var base64Decode = b64 => {\n var b1, b2, i = 0, j = 0, bLength = b64.length;\n var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == \"=\") - (b64[bLength - 1] == \"=\"));\n for (;i < bLength; i += 4, j += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];\n output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;\n output[j + 1] = b1 << 4 | b2 >> 2;\n output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];\n }\n return output;\n};\n\nvar __abort_js = () => abort(\"\");\n\nvar __emscripten_runtime_keepalive_clear = () => {};\n\nvar timers = {};\n\nvar callUserCallback = func => func();\n\nvar _emscripten_get_now = () => performance.now();\n\nvar __setitimer_js = (which, timeout_ms) => {\n // First, clear any existing timer.\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n // A timeout of zero simply cancels the current timeout so we have nothing\n // more to do.\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n};\n\nvar _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned.\n requestedSize >>>= 0;\n return false;\n};\n\nvar _fd_close = fd => 52;\n\nvar _fd_read = (fd, iov, iovcnt, pnum) => 52;\n\nvar INT53_MAX = 9007199254740992;\n\nvar INT53_MIN = -9007199254740992;\n\nvar bigintToI53Checked = num => (num < INT53_MIN || num > INT53_MAX) ? NaN : Number(num);\n\nfunction _fd_seek(fd, offset, whence, newOffset) {\n offset = bigintToI53Checked(offset);\n return 70;\n}\n\nvar printCharBuffers = [ null, [], [] ];\n\nvar UTF8Decoder = new TextDecoder;\n\n/**\n * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given\n * array that contains uint8 values, returns a copy of that string as a\n * Javascript String object.\n * heapOrArray is either a regular array, or a JavaScript typed array view.\n * @param {number=} idx\n * @param {number=} maxBytesToRead\n * @return {string}\n */ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n // TextDecoder needs to know the byte length in advance, it doesn't stop on\n // null terminator by itself. Also, use the length info to avoid running tiny\n // strings through TextDecoder, since .subarray() allocates garbage.\n // (As a tiny code save trick, compare endPtr against endIdx using a negation,\n // so that undefined/NaN means Infinity)\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n};\n\nvar printChar = (stream, curr) => {\n var buffer = printCharBuffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n};\n\nvar _fd_write = (fd, iov, iovcnt, pnum) => {\n // hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0\n var num = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[((iov) >> 2)];\n var len = HEAPU32[(((iov) + (4)) >> 2)];\n iov += 8;\n for (var j = 0; j < len; j++) {\n printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n HEAPU32[((pnum) >> 2)] = num;\n return 0;\n};\n\nvar _proc_exit = code => {\n throw `exit(${code})`;\n};\n\n// Precreate a reverse lookup table from chars\n// \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\" back to\n// bytes to make decoding fast.\nfor (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {\n base64ReverseLookup[48 + i] = 52 + i;\n // '0-9'\n base64ReverseLookup[65 + i] = i;\n // 'A-Z'\n base64ReverseLookup[97 + i] = 26 + i;\n}\n\nbase64ReverseLookup[43] = 62;\n\n// '+'\nbase64ReverseLookup[47] = 63;\n\nvar wasmImports = {\n /** @export */ \"c\": __abort_js,\n /** @export */ \"b\": __emscripten_runtime_keepalive_clear,\n /** @export */ \"d\": __setitimer_js,\n /** @export */ \"e\": _emscripten_resize_heap,\n /** @export */ \"g\": _fd_close,\n /** @export */ \"i\": _fd_read,\n /** @export */ \"f\": _fd_seek,\n /** @export */ \"h\": _fd_write,\n /** @export */ \"a\": _proc_exit\n};\n\nfunction assignWasmExports(wasmExports) {\n _free = wasmExports[\"l\"];\n _malloc = wasmExports[\"m\"];\n _create_decoder = wasmExports[\"n\"];\n _destroy_decoder = wasmExports[\"o\"];\n _decode_frame = wasmExports[\"p\"];\n __emscripten_timeout = wasmExports[\"r\"];\n}\n\nvar _free, _malloc, _create_decoder, _destroy_decoder, _decode_frame, __emscripten_timeout;\n\n// include: postamble_minimal.js\n// === Auto-generated postamble setup entry stuff ===\nfunction initRuntime(wasmExports) {\n // No ATINITS hooks\n wasmExports[\"k\"]();\n}\n\n// Initialize wasm (asynchronous)\nif (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, \"wasm\", {get: () => String.raw`dynEncode01561175c7ecŠ¥‹˜\u001b–fÓŬ\u0014Ñ£k\u0017Á@2ºÙ\u0011ìž:šrÛy‡\u0007ë½\u0001ÙR9ßVN\u0006dü~= \n\u001ex\u0006W±b\\—°Û¼\u0019¥\u0017õä= ã\u0015j\u0003ð$k¾¥OøÃ3tÚÇA0–$|\"ï\u0019€ô\u0019´\nÎß|\u0015Ø~´¹\u0000Î)@±n\u001b‘né|\n˜=}¼¤\u001aç,\u001fÒ·CÈz˜ä^\u0011(“œ\u0012ËÒ;È?’¯¡ƒÔ\u0002+º\u0015Õ̌ |\u0012m\u0003lýÒ*môÆ\u0018½BI[µçFã6‘L|‘x9ÂÇrustRI¼ë7ÇzŸŒÿ\u0000¡\u0000Ä\u0011áÌ%ž=Mä$+NŠ!.L÷«\u0013\u0012´Õ\u001dÒ\u0015e\u0000äºÏo0\u0011|ƒ‰‰d@1\u0017»¼¼¼¼¼L\u001báþ„˱™Ý\fúâ \"ÞMxh\u0000xéP4qÅ\n\u0006.\f3/=MR\u001cóMÚ6R\u001e“\u001e\u0003æ\u0011©®w±î׉ÃñÉۯ̡Í@nê!'mù‘\tB\u001eu= 2ªâ\\Ä\u000f†1Ɉ:\u001f«R\u001a€´ê\bîö>\u001c¦k?§ÞC\u0018uƒw\"›µçQùä{)3/‡\u000f®^ê2ãÃP\u0006ˆrç5®u\b\u001f8Ë<ÄaSêXÁ˜'\u001a¦ôE£\u0015›äñ\u001e­'™\u001d¨ \u00039\u0018v0ãKa= ™¬ª/_ˆØž\u0004r\u000e\u000f\f%A$ÕÞlΏýs\u0010Û;d³ÎÌ=}äyAœÞÛvjÑeaÜ»ÒHù)&*—€¢Ê˜J¦\u001dôñ\t fÉ¢n¢ë{©èm%Þۛ\u0016¶ƒ*3.›­rªîjä˖ç{&̘qkéº\u0005'ä­yp\u00199¸áÒÿ<ü¹·I\\CpðI\u0018<EȌsçççdr_oÖ\u0014{5Ͳé«Î¤à]\u0003œ™\u001f³\u000em-¬'ƒ\u0011\u0016™E†Y(×!Ž2\u001f\u0016[ŒÄ!”¹Ð= »ZA\u0014’ \f‚×ÛWY3ö\t\u001d–í³Ù„™à\u0004y!·š§’¶kð‚.y¨;œÖZ\u0001¾à‰<\u0006æLM€Â\u001bä\bN±ºT‡0@´›®¹{Í\n€\u0014¹ 8\u0004ÑeÍ\"\u000f\u001b—lŚ¾Í¾=M2T¬\u0019’\u000fP6uƒ:'m7~qT4öZu\u000eU\t×\u0010÷Ї\u001a½ž÷N/uHee\u001e&H†ò\u00075ñ’՚ƃ´¹›,eě¬Ÿö\u0016R¬\u0007dà\u0011FR7\u001db\u0015ݸÁ÷u*˜\"2þ\u001e6¡\u001f”yBÝmT“Ê:*™=M\u0007t½Ü<¥Yî#&\"S¸\f4õÇe¸½\ta\u000euX67‹œó3˜‚øb\u0011\u001bòEHøDúº‡Øt›‰P´†\u0017im2Wk_¯j>e¹p’•r#bCQ\to—|\u0006G&9r—Šó\"ÛyLb¿C½‘ì3MØ\u0000õFØ#TŽ\u0002jüÅgæºèÆ5¨Œ’\u001cU\u0018õÍ¢G›\u0019–¹m¨4&’L\u0013äóFzÖ¥ÛÄF\u001a¨Ðm\u001c\"_¡C¬»ÇÀƒê3t­ç\u001b4¾[£\"‹=M¿ÿ‡7\u001aZ)IOR\u00074Ô;2.j3€Ü{9¬$0Á\u001fGøTy’\u001e„aí\u0006m\fE¯L(Ï䁮#k\u0003\u0019–«a3>§º.ocOй\tþ\u0019ùDj‡otŽ›\u001fF.ÅRG7HÿifåS\u0000ËÒ.9°š@½1åe\t©}&æ\u0003-k‚M,\u000bu@í-›ó.*Pßi}Lq\u0019¢ˆ_°çëÓ±\u0011¹Ÿs€¬ K™ÍÓZøó:vÕ^×ʲ[5’Ò™ò1»ç˽6ˆÐÜr‡;í\u001eEp?Ýbbb©ÊÂVñ:¬‹ÍÓÀ\u0001Ê!{ä¢T«ÁSž]\u001a·–\fdߓў*zQŽ‹tL\u0002G^i9g\u001c9מ³½ÞD*7>.\f¹0—y9\u001c„ÌnpÄ®ÎEIÿ|‘'ºAŸ=}\u001cäÔ\u001b¯8DLµøA<'@zèß²ndj¯È»ŠÂ–u³7EŒÄʰ®B“0\"èÁ\fðäôA™©•©-i1J\u0001'\u0019\u0012'­øyŒJVÿÉ&æÀ\u0005p()x\u001eBØzäŒs%¿L\nî)ø\u0001›qԍÀÉã*Áú\u001b°h\u001c\u0001›EžJk©w\u0007áå—2ݼ\u0015E¿'+x)X6\u001aóÞ«ö=MmYì=}ºI\u0005Â=M\u0013gì•\u001bb›$ö†ÇìbàÉ Ó9ûP\u001cÁ÷¾\u001dÒÃëH\u000b\b®Õ?Ý5\u001a×Ã3ñ¨ä¢Ÿ¯Š=M¡À?ì(-cͱŸä1±\u0002/¸#áuQOíÉò1M\u001c†ÐŠÇ™ cõRRÙõA ¸\u001d\u0013/\u0001nfÏÄÆ2F\u000e…\u0002U֝·M\u0013GÈ<À= 26\u000f7SõÑJÝbž\u0016ª\u0018†V²â1¡ê\u0013.ûv(²2\u0017|w}ðWztGB­Ûhzh{ç*®5T7Á´éª ˜\u0006&æÆ\u0019ïeÕÏ´Ž\u000eÜòÆN.;eÏ­°Ø™¶dÖ\u0011«2\u0006á\u0011~*úì9ò*ƒ\u001bOŸ€d¤’<±…«c떟#G\u0013Åɹx·Ø\u001eq4MÞ\u0001±9¾zi'Î4I´M»è\u001e\u0011༟NRÔ2³¨ÖÊvD\u001f™\u0010³B×/|.=MõG\u0002³˜˜3Á&ÔF\tý\u0013¡8WŠ‘—Q\u000fåÏ5\u0011™_pì¿Yöa1äÎ\u000eƒI÷\u0006 ìQ“A@)E;‡ \u001ae\u00122ëBAôPAµIî$*ÖìÌë¸òÒsë\u0001ÔÔہáÃà\u0011œ¤¿Ô:х\u000eØ}%2|@òøDîœÓT½5Nt=MkKÙm”¼½W\u0010ÑpJ\"k•Ñ[ÁþŖµ\fÔ/Ak*¹ÍD†€\u001dg\u0017îŦ\u001bR­ôÔP'\u0004Z\u0000kª\u0005º„T4I\u0015\b?ªˆc\u0014}´…é—SOí„O\u000eÿp\u0005A÷\u000f>ÁmÝ\bLo\u0014LüÓS;\u001cM„¡\fP\u0010T\b-MÀ&”ö̀üûC)¤ÕR:\u0001´ïìã)‡§*õÒ;y¥ÀÐC‡–×\bp°Y„‰:‹å2©k—\u001fwÜåÑ/ñ®…-ρ\u0013‡5F9Ҟmvӝ´½_¼yîÖ\u001cåtS£4^MŠ\u0011˜Ö0\u0001„GßZ,ëÚYM–‰û\u0002•ÇTø½UH‰÷ZòóÖÑ$-uMd©‹ÆlwIî€ÌbMî)eÔ®.ØMìµÕQ£\u0004ò\u0016ÁYÅÌXE*»\u0015\u0012.¬½9SH¯ÅRîñ\u001añ]´ÍXE:ô\tªôcM,%´Ð\u000f1Ê\u0005¡É\nÝ1º\u000fDòVÓP\u0011tQL\\*ã—ÕLIÝT0xü\u0003Аl“Ëvôx&T6є7\u001b«³\u0018\u001b¾Cފ\u0012@ëõRb\u0003#\\¿V4é%²Hªd@Â#,ø—=} !´RÒtåC\u000eû¤¶]\u0004lix*\u001c“ÒÑC;a«‡µÙP\\Jã­ÔQ8\n\u0012\\&EÒ;³ý±+‹ÖtÕHA\"j|¬\u0003$\u001aÃ)î…Ô)͔.pÙ\u0010_&MT@\u000f\u0015¬¦\u0007sp1%\u000f8³1Ö_1éì\u0014KIµÒ«scno™=}æ-Ïýá\u0005\u0007R2=}•=}Ñr\u0000OƒDR<w­\u0012¯Ùa\u001e¨\u0015|È= ®é4\u0013I?¥Î¨¾~Æ\u0015ŒMÁ‡œ½0=M­\u0014F\tuÇûˆà\f*\u001a$¨= ¤I)ò\u0014Q\u0007…“5xbž]I\u0001½ÂŒxy}}3òéÈa'ʽÇ\u00067\u000eh/óç’$,Ïòë’Äœ\u0014é3àq¿Ü3˜\u0000ؚ|÷¬o‰Ô8¦ÐtÞîÀðâʁ{á¬Ò\fTg•¼èÅù\u001eø]½\u0005OÌ6ä÷˜ë·/åi¼µ}\"ׇ™ó†ýːïÄüéýé?•œ\u0005?úÅ(\u001fʉó¢óš\u0011™Ñó¤Ø\u0004üéðÔ+_\tf–\u0018Bo§\\w\u0017úw£{\"ß|\"nwò\nÚr\u0004v‘l¥ÙÐÀ·\u001bà„\u000b6Èoû=M%Gœ\u0004™ùl¦*4A\tÜeS€§ø\u0006;’W\u0017ß\fd¥¨Ý}/b¥\u00187ŸT‡\\c¥¾\u0018éÂÜ}7FZc¥¾\u0018i®œÎæ‹æÞ˜sxŽyw= Ëޘ£lw\b-Òü¦®ä¤·¯‹â)ý˜”L%L=M\u0006é\u001dg1¢åWõOWa\u0004ErhS¬Cû\u001dH‘\n\u0016¹Ì‚vÎÐæ:\u001eUÀ,þ³ÛŸóª\u0005kÔ\u000b¤Ì®Ø£%Õ\u0012\n32>\u0015|Jìáþó\u0016Š\u0013ñz³‰êïô8ö\u0004¤÷­ >eã\u0003žnâ n¼ëˆÚœúŒ,\u0007ž³\u001fýv#79µút\bWçl]ħ{pލ¿¿6쪰<Ò¡ûñc2#ª\u0010+\u00163 û1c2Cª†Æ]ªPS×QÓLÛH²„\u0006KtÜ¥Æ×%Šý.\u0011x¾bºá¤6\u0011\u0004\u0004v”™þ6IÊ:š\bž\bšÈ\u001e\u0010šHž\u0001üÌ.=}í-tUPVy\u001d\u0004\u001a\u0019EÈÈOæEx›\bÒ/C\u00071n/=MÌJôr‘ާ—L^@¤¾³éE49²\u001fÐG½G„é“§ÉvpË­Ðl<\u0004îÆb-¾2¯I\f\u0018žl\u0012\u0019p\u000b,7B\u0010Å;–œÈÐ\u0002Ð\u0001oèmf¢\u001a@(˜@ìÍ\nb|Ô5À\f=MŽï÷w»B®Ÿ\u001bÔ/ÇT—\tËÌõ…ïÇÀô\u0007E¸\u0011õ= ©zL)\u001c›B\u0000Õú#ü•ټ릦¢Eڃsȅ\\t\u001eْà=}8JD´Š™\u001fNî\u001bee¦\u0010gCYù9É?‰Ìë\u0013Ë\u0019-®9£÷ε=M\u0012û‹\u0007[\u0013ù[õü\u0002\u0004ß\u0007S¸\u0002‹\u0004ª\tÔ΁\u0010”™\u0000Ô!Á¬µ\u0014×@\u0015Ó#@ÊY+M´\tÐE\\ÿ1wónDU!Á\n&\u0013×Z\fa×°ÙèÅêRlûÊiž_2 _\u0016˜A´[­-“ÃP;S–_,­ø)äJú\u0010Ý=MårJºêª2ýô_Sª<Ÿ•GÎ\u000býînb\tÔ\u0017°\u0015›LØî^=MÜg{cD²S\u0012\u0013ÔD+%Ñ@=}›’y¼@õ.ö\u0010ÄÏøÄŸ@°#I\b”Ž\u0019IðTA}ÆjòYäæXäõÖÏ<âµÛá#˜\u0019ñ\u0001J¼\u001d2ûº¹h:BîˆÎ£ß\u0012ð)î\u0007Ürb=}ú¡ñ(= àïîߟ‹Ö‡òæyè.wh\nÆB·‡ü{øÝ+ô>íf¤‡C<ü3’\u001b\n©ýîÌ8j)¤ò¸0<j),ýî4†\u000bø³XLÌNɁ4ï@³˜³f5‚Í*a\bòßaÑ¿âW#»:.ȚDk½~Fd\u0003‘œRjiWÁ!W»@»\u0000ÞÅsË\u0002IÕ9*Î\u0010ü²\u001aê0H–ü\u001d½Å\u0012²Î\u001aВ:²Ê!ÔñaôVóܲb»ò«Ð\tUJXËTu†0Uen¿oÙ¸ÚU\t÷êÉÿos™¯\u001d\u0001ˬ\u0019©äm­·QW\t®$љTjEX5‹>ãû\u0012PÆ\u0013\u0014þóAQ?Ù@•@öeDŠGL\tî\u000fäýЃ£5Ž8©Šü\u000e跖\u0001½\u000f\u0012Þ;ÎÕ!cÁb.^pj‡{ñ¸Ã¿B,Œ·¨C³ýƒSüJ9¡<>\u0006[¥Grä@á$©\u001d‘\b؂\n!—É5ð¥4¡-³(Q´f\u0003J\u0007h\n螦\u001e£\n£\fœa\u0014¬\u0014ÅCJ\u001b\u0003\u001fAq,ýÐqœ:öۇK\u0002­\u001fwO€d±‹–'8©T†MÁ\u0004ñ!‹£Ö\u0012´\u0015|B›¢öû\u001fx5\"¬è¤ê’j×\fºØ Žy®}ða;Äz‡EŸX»z\tœ›«º(w¹Óúù±Å¶“Áм|sAâ\u001fļ¢ì‰|Ñcoé3\"îB‹»¢ìBš˜¿‹±À¡ÔåÂ_¹ùõUÿ殼\u0013<Úh4Ö\u0011«\u0015\u001bW¼\\\u0007\"ñ:f9æFV;µ\u0013ßA䒄>þà‘íâš\u0015Ž\feꅱ\u0016ñ£\u001d\u0019m\u0002ͯW>KIF8ØÊ8’L”v7\u000f“¥B³º%M\u0013TrŸ5ek\u001a(OTÛòU¡Dˆ¥\u0011¾DWÕ!è=}$\u0000²‰M\u0016\u000eAØî@H!:\u00194§¨ŽB\u001aˆq¯‚Q\tÐދa4ŸÇïUí>Û©oYք2\u001dÇ\u0012Àµ_\u0001 l-CíCÁŠ\u0002týAPçdȍ_]äCù\npöF6PêÓ\nÁÎÜUÕTÖSÎ\u0000óhæóή\u0018õ4d%a°”1ˍ–\u0013Å@Ã$—‡pøE7暳T+h=MÆsaèŸlåŽ\u0005BÍË©¾·yÇhÝÄS £ÚÊ\"ŒtÚeu,¾Ã¦ /\u0015\u001a/üü\u0011BT°\\ù›\tUhÍ6OE‡y/™ÓÁ]0'Cœ%«³\u0002Ú\u0015lÄòqË\u000f”åþwe‘6MMK«xpOß+ÅNÕt\u0000…ïÕ÷b¹Èÿ\u0011–«~\u0014Â\u0000ï”\u0011ѼÍ\f\u0011»È\u0004Ï\u0011;ðz\"QύÅ=}ýwª=}\u0007´Ð‚P›=M¾›½\u0019«1²ð‚:*\u0010)ÕH¼\\¡Ã\u0019–n¤8›çC\u000bÃÞ÷×ÈæInC\u001fÝtÐ8“>_dòPBó U¼\u0003»r0b»ÐhÕû\u000b\u0014³U\u0001þŸIoU/s\u0011ŠBõÜ·:ŠJ¹ñ\\t!ŠN'û×\u001c€c\u0001çø=Mà–8\u0004\u000faãj\u0000vX=}á©7ù~«Æj˾›Jf‚¸Þ\u0018A\b“¼gM÷ž\u0015ìkÀ\u0015ÃPf¹Ÿ7DÓ&”™Q¦¯¾õ÷Ó~‰\n=M&4–¥Q[0s&Ä[\u001caba¢†».¤AÊV\u001d7Â9\u0007Ñ:Û%»”m°!\u001d ½¶o×Äø½cBÃ6¶YMŒ&ªÌéF7\u001dø,ïڈ_¯h\bzŠéFƒÈ5ýÁ\u001bé\u0014Wìú1êÃ\u0012\u001f”Š-ÒÙ»õÊo<\u00119RM¼m\u0010ßuu]UŽÈr>g7J9¦£J&²HktÆÙø_~tè†d+íkBŽK…GÑfR;9µG\nZ¥v\u0002øJ#žº\u001d€RºÝ«?9$ƒ´ÿF´…µ±ËèöjØÈ|~ƒ\u0017= ZÊ\\W4 {Å{xžŠÌ)j¬^)Þ\f7Á6du,5µ-05f¿ýبЀòJ=M^e\u0017x€?Åg‚SƒøãOLáàež·MTT\\ŠP1˜QbãT¬¾Å÷\u0013×ôÎ×\fY0+\u0015LN\n£ëåë%\u001615X¿Yq\u001eŒ&ª,LM$LÍ|w¡˜ìÚ¼è¹5³T\u000f\u0015¡\u0004\u0006\u0002Õù\u0015=MÕAEaÌÎ–Ýø+\u0005\u0011aüó’Më­\u0013g#\u0000a'\u0013Àh“þ\u0014f\u0013­Cš5\u00014Üx×l·q@ºÚpŒ>Ö.T\u001a\u001fƒf°vŠu܆'¸á\\±Fï}5?³¯-„0.›\u0010KH\u001eÁ@\t̶\\¹\u0003TY<¥\nò\u001c­!Nkd\\X·,tƯ\tÛáÙ̧cÁu~Äá³\"\u0017â“J!éxc\u001b\u0007öh ‡\u000eðŒ…GõüµGØ\u0012«(„Šß\u000b\"ƒ¯<ì¢Ø5Ž\u0012\u0010JŸI\u0002×4\\¬ŒæÃ¶qpÒ»y½ZRùÞVúý¼{¦EŽ}¸f7/>ñ\u000eÅ㍏@\u0019ð¿ƒ\u0001Œ<æË~è\u0005;{à#0iû7¢'Ühl\t~\u0002~ˆC=}¿Åý\u00019Š%)ÂýKZ›”ÝœâßÊòȃ\u0000ù²‘ˆlæB2olæ±­¿Å³èJHÔ\u0000l&\u00164\\dŒÆÅYE\t[\u0018ïlŽU€îƒ&\u0001[= éù”‚m¿·×8\n[z&|›,X\\Ûk\u001b°–A‰¥e\u0005ƒv›ðý;èÒ(XÁ7§óïAƒµYÀ/Ë+ÕL\u001dM2Ñ$ÓɵU¿Q\u001e¡\u001f”ý‰æ–Y\u0005J¹Ü¦Põ“ŠéüŠUÕÚXXXXXȵþï?¹f\u0007Óyª_&ÀÖþ§Z\u0000jb{× ½*€©Þh‡6Vâ»Ö—˜o‹\u001e^—]£áAM±QBÍDÓM{é u\u0012ÑL/5Á\u0005\u000b--´Qº>@¹z¶ðç\u0017}üòÍ,j\u0014_‹øŠ}N—Â|Š= Šô \u0019)3 kçÝ\u0011š\u0005{€þ}l³o\u0012®\u001eòk=}ªe„VÀ°¹ñØo÷t©, ¬c\u0016¬\t°\u001bº¼Ù\twŽ\u000f_Ãp*¼d\u000eظ»ÛÁQö£²ê¡*%k7Ú4XÐaÎWÓc¯‰[öøžf .8‹û'àZ¨WŽqvC±;Jìä1\u0002Ù%êÒE'f&³—5ÿøs¨ŸÝ±4éäfÀÂ׫ƒ(h®Y¶#%X+º\u0001þ¤Èº‹!\u0005ùð’‰,Eq+n†ù0\u0014]\u0000c÷…VÓG\tÖôþ®Û´Ç•³#\bA&}ÏU\u0014÷5‚I™e=Mfs¢¥Kk\u0013(¥[%)N\u0006–Dí>IS¨ù„mlÞoîۀô\u0015\u0012úÝÀqô¿•l½ƒ±ÃÙÚÖ\u001dÎoo„v\u000f\u001eþJ’£òªá©Î\u001b\u0012\f\u001b¥-%+­E>\"Ð\u000e~fà%*\u000f\t\u001b£CóƒLŠK&/8w£Û\t›&*$/¸©á\t\u001b˜©K/øt\u001cèé½ômîÇ(cþ=}–LXž9\nø÷I¦\u0005~&[þd\u001b#\u0004\u0016|Òv\\ò¤ê#e\u0012G݌³T\u00078ВIn(ÊÓ\u0011Ž\u0013ž\u0007kÏl¾Ç\fՃ\\\u0001´™Ó\u0015ÃF¤u\u0002›ž†ˆÇõÚM“ôÁûp¥KYal×s1Þq‘\u0019þ\\ù$aÜg\u001d\u0011Ѩ782þé'W 8X †UC\u0010Þ\\ÛZäåØ'j@º‹Î2·)E\u000f\u001bâ\u000bz¡´Êvì\u0015ƒ;_\u0018]^ÜWn=Mâ\"Üi·roÒö\u0013›\u001c#‰˜qxçf﹖îßxӒMڕâ½Ù5…g¬zÝ-@¦cTóüÖ\u001dSK‰!¶[Ó\fÉG²\t´\u0002ÓM\u000egH¿Q@o#\u000e˜´û,\u0004Þ©U\u000b‰ù¤¢ÒAâœc\u0014ǼŸpÙ®‡em\u0005õW\u000fŸ1û‰b\u0007îǓ8\u0003˜\\ a‹²îiFp\u0018™!I}ÕT\u0005ÕI%\u0015S\u0011Õ\u0006ŽÁ5\u0016QÅRCIÕGÑUT…•Pë\tLËbT<ï{@d4¼ÊƉܘ'\u0003%A§™”´\u0017Q\u000bEm¾ÖA¬µ‹D†„Üî鶄}êú´òÄGŽÆr‹PfeÜAvØ5?Ûj^]*íÎp\u0016ãÝ\u0015ž2nù\nãçŒâ«7;\fS©Þ\u0019Ð1ïH&t\u001c½•—Àa[Ò-\u0015Ðÿ?ß7>+;\u0007\u001aé\u0011’¶T\u0015›²r’\u001fÁç´\u001cä=M”sMÆêÌ~\u0001}“[cÀÐ÷½®Å\u0012û\u0017¡laj>£xüg§nEÒl™!4xwígv·PŒ.'Oæ)Ê­Ø|©NvaJF_’X\u000e\u001eÁ¿\u000fhàùËã´CéUSrÖÝQl\u00037éi,Ô\u0003,»¼é9ë\u0012„ñÔ*W/\u001bP/¨= \n4S¿^¬2Ò\f\nw®‡õƒOÒ\fú6â%ìÀ³îj\u0013¦\u0002óƒOÊ\u0011…V}#¶Ó3ËÅ=M \u0000ÙiÄׅ$\u0001†‚\u0010ö\u0015\t€Ù*ç\u001a9\u0011€x‹çJÁ¥…{\u0013–еhC\u0014@¨õ\u0018Ü\"k\b\u001e\u0000è\u001c~In{\u001c\u0016 èº¶Fñ\u0017 ÿå܌(ïdÞ\u000eå6Ër‚[»Æ~oýG\nd_\u0012™“­CTþèu|\u0003«¡›\u0006[u\u0001+]¦‹\u0019Öì!õÝ\u0007\u0019†¼*Ù\n•ë6G\u0001Á\foôÀ[ô\u001f†‡ô|„\u0019zK’\\7\u0013AûO­U\boc¶-p0*ƊÃâ˜õ¯ôӆÆßoV\u0017!¿Bap\b™ÅæúÂQ䘊ŸZXø¢\u0019H’­\u0005\u001a\\\"æ»Úû,ˆj¬ @ÍÁ…Å@)œeN|/€4¹hpÂ\u000e¸G‹#µí¼ð˜D¼?VKwÑ\u0011Dü\u0017‡r\\\u0011y¬ºžëš™\u001e\u0004oâHn…Y¬\u001eV}bËJ÷>=}ᛍ—\u001e£R^\u0000£¦«ú\u0002¡\u0007‹Ü%۟Ðù” ”Z\u001f¾±u\u000b\u0003'Ô¾A\u000b³ƒ«º=}t¬ß’€³¾ŠþøØ\u000bx0®Ò†ô= ;Ä­\u001dˆÐz<·pBë\u0004ãp$öæÔbk!†uÄy¬¶ä±®\u0016ŸÆzMoŽ¿™Üc͐D*¹\f·ˆ\tCý>\u001f\u0001äpºZZ;ED¡u£æøq§Jÿ*•Ïú܃\u0011\u001d=}»,þ\u0014dëX~pú}¹¶Gi\fájۗŒ= ìb†1\b·^\u0010t/ä÷ß;gŠ\u0014o¼\u0001Ö¢'°ý}ɗ‹Î\bÇ#\u0015[MV2èëvçài„Äo0ûjÉ~,]@\u0019ª®Q—‚:oô2C|Á€KýÏlî\u0000Ì\u001f¯\nÈW„¢\u0006[\\’çþ\fæ\t{NТÃíz°ê¾>!·2¢+\"á[\u001aR«\t²j›©la±Š¡¹šlÓ\u0004žÕaÍ\u0015&FáU\u0016„Ì9Sǁ–—2ëµÑgm\u000b÷r²×Nê°-aRùü_LVèãù!29+å)>\npÊ\u0007C\u0007Ó\u0012>‹Hiá¼ížP\"ø@aÕ~À—v\u0013uˆ¤7œš\u0012œ\u000e):Á@g\u0007â³Aû$9Qbòç\u001b9T…?[·\u000exŒvÑüv°tæ‚@4A~”åxE÷Z\f14\u001d8aÉi™²Z\u00151–e p+VåE\u000fÅEA‹FãYMû= ,èíhÆ\u000bØ\ty\n\u0016©àEœN¡~‹Ô\u000f_l\u001eƇ~ˆT4ð\u001f= ò¦õ‹^ޗ¢ÊQ¾œó”ûb\u001bvrÌ3말ª=MÝ\u0007Ý\u000eóÑZ\u0014_ë\u0018”d‘>Ž\u0017”×<…’OU#ƒÅpÞ\"õ1¼Ö'¶Jx¶š’^wEP\b\bߋ¾´… kU?\u0004^©ÏDªLÉsn\u0000ù¬šqӖÛjÒª—a·Ùö\u0019ʵV§û\u0010¯eѬ¸d–œºò\u001e›š\b°d\u0011•‚½I[¦‡v­D²òüp×F¦?\u0005´„ 4@ˆ.\u0012bÞRÐ.+–ŽM\u001d[\\= CŒÕ¾)\u001dˆVí8srŠoÒÔ\u0011‚FÀ(»±¢ä¡!ñ‡ÀGjt_Ã¥¼û¢QÐâuÒ¸ô0Öû™´¨<¼±(ő.Þ¦Á\u001d+\u0006#«\u001bõ1Ú»]ýrê†)\u0006üê±»~åjMŸNrKEŽ™É勃]³ì€…öÈÊ8{‰æ¦\u0007îF~7=}o\u0016\u0013V›\fOåâÓ:ÆT‹‚K=M%M”ÉKm%‰f6a=}·2+V\u0019\u001dAÑY¹^¤\u000b’¶7OfÒxƒ\u0013)…ãj1%aBH€eˆHßøJùýa¬˜}À§ÅO\u0018®=}‡™!à.¢'\u0016g7\nð\u0018Q\u0018¿ïaãôuô\u001c<\u0003ߗ\u001f¤×Öuٟ”\u0010¿¥hÝND Ü:¦\\qUÀÁÑO8²7‚95k\u0018ÚU­Ù¢HvÎ넵ƒnOlÕZÁ¤<F)K”\u0005ÜÄ'ë\"n³Õ˜|!$\nÀ᱂‘þÂÈ\u0004',z\u001e\fI}:­}:í\u001dI©\\!\u001b$\u000fÚ¦Ægdž«ÒM\u0019Q;\u000eËÆOH˜ò†;Ÿ†QÑØoM\u0001j<\f\u001aHwnÓÖ²èål¤‰\u0013_sëøYŒïWG@Šø\u0017Þ\u0017\u0006Ke˾‡932ÅæØÕº=M›Ê\u0000ɶÊJ_UÚþ\u0019M\u0003/ÑÆZÏe”ÿ…i*vÁ§K{¸\u0019ÙPª[ã\\\u0007OìmÂpJ\u0001ùþ¿?ª\b1\u000fí\\˜T-c?uaîwÒ+‚ùgfë_\u0013À\u0010OþFðj¤®Ž RôºD¾<²úýݣÝd\u0004ï\u0014죽\u0003\u0007£°uºÕ%V“­Ï\u0005Ò–œGÊ-ºz×0l>*?à4ÓÐ,<ǍkÕ¹²\u0012É\u0002N\u000fͅÔÔ²Ò5\u00078m\u001c\u001bÄ\u0003îr?å\u001c‹ £‹\u0014û‹P @bb\u001e^Y(±ålèÅo“-hÅv=MöÅk˜ÁR\nmXÂDmÊ.\u0006œÇ°dÙKœ\u001dU\u0004³ = \u000b\u001eL\u0007шëø\"\u001dÔuq\u001dã>K䟣´0°ÒîdŽË‡ U ÖÎ4V»@]f‚¨iŽ= \"¨»Øk°Âß9B=}!î¤5ìgýë©Ú\u0015z¥¦TáJ\u001dC!ê”F;4\u001c…•cÄ\\VJYy\u0004'@\u0005úÿ°\u000ekÏ·ª{üj¦»\nG‘•N$e:iª¬ÙÍõ´‚ÊܲÓaU¹È\u0016ßgºŠ-vm5„o<\"DRϋ·*ëÀêh\u0003x÷= ÎÕó\u0004Øê§ ®\u0013ŸŽ\u001b:ì\u0017Ó \u0014ÄF±ôZË>\u0000= \u000fí€bC¦[É\u0012¿s\u0002DÜ-bÆÿ©n\u000b¯¸Óµù\u0014ñb¥\u0018Öó¥Ì–j®8%7Oüýb]Tb'…ë´Ê¡\u000bÜbFÝ[µ\"ŽÚ\u0010Ã\u000fŒÀrº:P¦™„Ùt\u0010 §2ë\u0000—áØÅ6Júì\u0013¦é\b¬\u001b\n“h\u001c¾e¬îN\u001ddž\u0014+;ÊÆÃsc7ÍâöKc\"F¼ƒîCq´}„˜\u0019Á ˆé\u0010i:(\u0006„Ì\u0010\u001c@£\u0016ý¯ž‹>\u0003©‚'ª•™jaÔ\u0012üςª\u0018\u0007\u0014xûtž\u0018ð×êÏ?yg¶[Qñ‰ƒmI\u000f9ã)DÚP¹f=M|«§¬ªŒØ›1$~á%1Ô¦aÎ\u001f„䐞ÜQ\u0005¯ª¯\u0012—X­\u0019\u0011×>hº¿Zïe\u000f֏\tÇäÙ÷rAÙ!†B:m‹8$\u0017;”±–{ÅO\\%E%\u00175\u0012™ÕV\u0015+\t¾Ð°kL\u0007k\u001aN|\tiqޓ]&–ce6Æ= y|Ù«c¶«y\u0006ºè= ¬é4k\u0002?VškÈWÉ0Çdd\u0015¼Z\u0001[®ÓëW\u0019ڙ\u0006Gå\u0015¯\u001f @\n†Î¦\tô:º5Î\u0001 w’ã‚é2£¬\b+sɰžœ“F ñ !—M\u0018€\u001c\u000eê¹\u0002kÁ®j\u0012/V¢\u001c§÷1™¤ê+oY\"&h&CkR'zØ\u0019Ô\u0000L–yY\u0017Ü|p\u000b\u000f$‡Ç©J«{ò\u0000“°\u00046ʊúݤ怒ü²\bâE ôNlƒ]D’\u0010G\u0010¾â[³\"èG™äu\u0003ï\u001d‚“ö\u0007ýŠøD±Š_º³òm«x5†­´/76\u00043\u0002X¼ñgèå‰\u0002÷tÁ»×¿»•м\u001f\u0015-“¯Ÿ”N§…OG±6ºy+þß­c^“i‹ÄkY\u0013;vùGÔz\u0007»\u000bw\u0007\u0001‚\u0007õ‹Án»Ã¢\u0004ÌQ\u000e~~jÃ\u000fÕ\u0017ŠÂ‰.ø\u0012u´]\u0011\u0005Ð\bã\u0015\t®ìGMm†¡G@\u0004‚Ît¿¯u«ÊÈ\u0017èòþ\u0003@¹ËdKÎd\u00066õíì\b2®ü\u0006.˜$a\"Ç\u000e>}?'J‚V\u000ef\u0017oL·Ž€,;×\u0002%P˜j\u001d<'ñ7á´¨ïÇÂ˄…9Êo±\bîçл¨Ë\u000e¡”jÕ¸\u001a–ÎúF'²\u0010R¾G÷£K\nNv0¡0:\u001d°K.¸¥\u000f.Ú\u0002l¥Ùˆñÿ®^!¨d«pÆ}Ï+KÌè¸éI\u0019È¥¯\u0015¯WÄk\n´ÊUe\u0019FÝ=M÷=}@í^Í(\u001b4—_ïìâ\u0018™\u000bg“íŽäÛ\u000f俆sy·\u0010äZ“eGØÚ?Ñy—=}鯛W\\ŸÁ‰é\u000bïdÁ‰90ªæ€í›eÀ\u0010o\b\u0004¢ŒŽõpÚoÁ?””ÆF·DÌ0~tïtjL\u0012—D€2¼ÃuÝ@¾a\u0011œÅƒîë³Ò\n–\u0010›C¾áHôÃZERv\u0015æðÁ< \u0002ˆ#&!à•Z-Ê\u001f'©þéöBæÝ÷/Õd\bžH¨…4\u0005ØÖ|À¤§\u0011bŒ¢—*ŠÏF›Xº\u0002 £$Sýôª\u0013”ÿPÓ¤\u00004’é}‹$±Â\u001e\u0011ř4$Ü\u0012]Èô0l}Y_@7ÏßÏȭֈ6M¼›à÷è›i\u0006›ØX= Iï¼Ò\u001d£«¨œì0\u001d$°u\u0007¦\u0018\b\u0017žëìƒ~³þn\u0003\fÓ¶©±‘ÄÁ¨1]ö¼]cCa…FŸ9¹jé>­ä~^X0û)cqJ\u000exÅãrD—uÊÔ9J&²/\u0015¥L–ç#Öx†vÒº[\u0002³\u0014¸\n(¬«k´ë¯ÝÜÆwêÆï\u001bâÅW­6Ý©³˜ÖaþVŽ+¸{.\u0003Ÿ@íºX\u0002ó\u0010zH\u0015Á6›–@{)íjÂHùSÀ\u000f\n…'G¤Dîë-Ñté²N\u0002$ÎR̤™oî4÷vëì~Iž—\u001a¼_c@ÂÝk‚95…Ž\u0000\u0004ø§PD \u0006M—\u0012J´ÎxƒÑQ\u0006©Ãf•aÔv0buÞLQ\u0018™µT\u00004\u0005eû\u001cÌúÃÁéq=}\u0010g°ì¿tïhݐ}ýºûBp}Ë\u0000Úè·­\u0000’2\u0005‰ù\u0005&{íï_ÄÆi\f\u0017»íï\nœÝÿÙë,\u0000\b\u0018¹ŒHï\u000f:†á= SÀ©Ñ•1Jdë\u0007Û*}\\½ùÌ_ÆkÞ:—É\u001fٜÂ>dÇy…îÐ\u0017)dH4\u0014Åî2SY†$\u0015ÑÛ{‘TÂð\fsThæÐä\u0002\u0014ö«-5^Ì®SȌE ^g‚Oƒlö_¹/·\u0005´YûO\n\u0013ˆû+Ė¿ë¨ðetêüu¼t~#dê¬\u0003¦ð)6\b|ð—ô}óǀU\u000bæ0\u0003³Ô‘|Òjá/䒓˜\u0013å^ªóéý‚o¢øZ&\u0019ÌÇl,¹Fù…ä>ퟜ5voÓT[2\u000e'ÄtƒXè>\u000fõ•°ÊJæ‹G<Ĭm\u000foKijÍÑeº¦ïk;ûµÍ„\u0011ªÁìÀ#ù\u0017\u000fº}O—D.ӊŠŽ\u001e\u000e\u0007aÓºC<ÿ\u0015h¥³@c.6ÿ\u0018\u001eõMŒSëà+Σ¦Õ\u0011ÄÃÐÓ$ZÉ\u0016réÈÜb\u0002}l\u0011\t ¼e5KH\u0002\u001d\u0016k]\\Iƒ\u0001Ÿ“ó‹aGAk£¼˜Í\"\u0012û\u000f\nûϳoõS\t\bÃI1ÉUŠÁñRÌK¼)$H1\u000b%\f)ùøumÃó5T:{)¤ä€Tû¿\u0001ùðU»0ˆ\u0015\u0013ÐY@ԄQ¥Æ0RLÅ;ç±æ\býb|E¸ù$™ù\u0011î\\\u0010µ1v¶kMè5\u0000ñ7¦0µ?’m»ÌƒlõuŒ³_ôÎ]\u0017_\u000bªÊ\u0002VŒ\u0011;²·ÒiÃ]\u0002š-gk0Úkø¯øw\u0015®yä\b°zb؋‡è\u000fXD¯!jÍwˆ¹cà.zj}ëïVƒØb8W@\u0006z\u0014»+ó5(= àaôd\u001bQnGhÍ*haóû\u0014{¤E°þ\u0017ép–ê’à¡\u0013ozô\u000bNSÜku¬™¯xäX¿åžR|4.³ˆ@¸{—£+͑*ï©k÷\\Å\tb?¾™!þ¨\u0018´>rƒ$ðëfÙã­o>¼9ƒÉŸ¾Px)e´hŠ\u0000˜jEžT\u0003êÕ= O¬IE Tóꕗ\u0014)RÍbϒIsH“I·\u0006Ÿï<q:í™\u0014ÖÏ7\u000619A!Húǵ\u001càzwo·ä¶?«vs×BÃ\u0012|3´ÛÊ\u001f³žB>!·E˜K±µíü„8\u0016¹d\u001f¯ŠÁÓ.\n¦\u0019xë¿ç ·ç\u0018ÐMLúDqæ't•¦-CŠ÷¬#É]¬§ÙÅÑB³ŽR..6žØ\u0016à]‘\u0011ÌÌj‚zžÈ\u0014Qéâuò-nE@ª‹\u001eÍ@Œéàˆ\"D*ßz¹i\u001f.g\u001f®à\u0019iŸüªè_{\u001e›•Y¬t§¢Ò¦\fø7bä\u001e{ôè¢\u0001ïï¬8šˆó¼¼˜\u0017¬ã´‰Ÿ{®EÎ\u001eæÀDH¨ï™ƒªù\n\u0006Ñ\u001d/M˜lqIŒÜv¡\u0003d„¡!«¨®C\u0018@X*YF\u0011_NÏ.³Üpú\u00064\u001132‘~7j²7ßhÂüZõúçû\u0017ÌEú6¤|[íž×4Œw[S\nš\u0003\u000fªý£\u0018C\u001dê~j®\u0005™Mìj\b¢I€W»¨ûs\u001aøÔ,óÝ#\n¿œÄ\u0007Ü\u0004 Ìgr‘Ϲ=M™}Ì߄˜ù´‚G&ì6\u0003ïÊ!Š C°|ÓK€\u0015cîëÿ¶^\u0014£\u001d¦ÌZT.šÀƒE_ò^ô72Ð\u0011\\ö\u001fV<1¡ƒ\nÙc&£Ø“X#d#‰¾Ìbp\u0010/5\bÛ{o5ô’ƒŠ\u0018:¢¨Æ©\u0014sñ\b©â˜n\u0015= 5\u0010×rê_€Ž2ü)\u001e…«¤9\u0005‰ìk”kÝuáuÙõXÀ,ËÜwòJ¢­™\u0010¨sÇ«þ«¯ó8œþœ”\u0004Lúƒb°\u0002Ò±‡ŠåjX\u000fYã2a\fλ6#'·4‘Ë\u0018\u0011úFÔË0\u0007+ƒÙ\u000eÐ\u0002T!\u0017\u0012R‹F°Oæç\u001eÝÞZ+™ž ’( \u001b7\u001e/öf\u0019÷{ƒÌ2Ü®\u0003Æ\u0011t€žuõè-÷é|\"víÙ2vŠ_#|ù3\u0003\u0018>.gXÏ\u0016•:÷r\u001aøvŒ?>¶IÄ3\u0018ªÍÔ®i\"ÿ=}p2†^0Jž4º(7QR‚м\u0004á\u0007]ÑeÄäSÊØ-ÉÛMpŒ\u0003û9x\u001fªz’\u001b€õ22TécÇ\u0006ÿS\u0003*T¡\u0002ÈÄÉQɂÒÉ©Q©Qõ½ë%ÂÄUol44*TÌÀUa\u0002ÈÔÉQI‚ÒÁ©Q=M¨Qµºë%ÃÄUû\n£CEúL\u0015\u001a€õ52TI‚ÒÑ©Q=M©Qµ¼ë…ÄÄU›l43*TÄÀUʙ.¦9ïœß]¿vŸô.CbjºcŸQÅ_\b̒нšxYýT\u000b\u0004¤7©\u000ee®KzâeËd‰Fj¢YãÛ,˜ã\u0010Z9üró#v“÷›\"7˜ï?ë]ÿ\u0002Í\u001aJ\"Px\u0003\"ç±è$žšpÙ\u001c\u0017¢Ê\u001dÿ=Mè-xò±ÌŽ‹{òp¡Ddú%¼W[w\u0007®}»\u0017##GT·é l†Ð‡9ÜoL´ÉºÒc䓎ªHW ª¬š=MÁïÁX\u0017Š^rø!pJ#›Úe±\u0014’Üúo;¹æ9\b= h›ûé×@Y\u000fÊ©[\u0005\u0012B|Æ\u000b£®„TejëZ<jµ\u0015°\u001c­° ýÖÛ£‡D;U5B¶‚,râ\f\t_¬ï0°å E9ù†ÐåNÖ= îo\u0014ÇV¶Å”¯€½\u001ew\u000b-ô@ É©Z\bª²ïd'l…¢íLÁ÷âs\u0016¦o„Å×ô\u0002°‰Š/Ò lN_Ž3¦%=M––\u000f#\bü1\u0011¶–ÈH_\u0012aÛz\u0004khÈUG\u0006Mñ79µC÷\u0002ó÷¤\u0016—…[XìÎÞy\u0006ј¬ÑÕ\u0010Ì¿»jU5±Ãêd†ª©‘&’ž¨Ù:‰ó£\u0018òÝ\u0013\u001a¤’Ý%Ý.\u000eÝ¥ð/NfJÊa/5H¡Êø\u001aÉÅD>ó(©÷èqª3l>æ5MA3h0•…=M=}*¤¤Ã=}ªñ©Iòð;ªó¨”,ƅÃÿ¦Ýy_\u0007õ|eªÙ= 6]k\u0016?“.g”ûÖNŠG\u000f?È\n\u0002\u0002ç\u0014pIjâB°…\nâÒ \u0012{W\u0005‹GË&þv–È|Ô¶lo\u000b8֚…=  ÆQyºrK+%>aôŸ³àÄ\u0013·°Wý@Û\u000b\u0019«©ëþÐ\u0011af:„\u0013h›Çòê\u0010“(»Úfΐ¸Ë\bœe NüŸýÔG«\u0000[ƒD\u0017qÍrVËèE$cóDG*é¹sAºSY¹²J:(¶Û1zÃC¥4\u0006\u0014\u001f„[óžËÚ¯¡\"¬\u0019\u001cÎàNQLÊoòÜÅ\u0015|Ÿ\u0001\u001fmÖÒ!%ÿõ\u000e¾vyfN¢,\u0004\u001b¼Õøñ™1«\n=}9vo»\u001cÞc\u0006ڏ/oCM6ÿ>IãýõÒ\u0001Ç2•C\u0016f\n®\u001d\u0007\u000e\u001fôğ~oyþp$\\\u0017±(æ5j\n\u0019o¸#KVÖÙÃÛdjb\u0006IÀœd¸žÖŒI­¦\u0005àÝ\u0017u\u001a\u0019\u0005²èÐ#щ>BUý/\fFt4Ù= À,«&KԞH?IH)N•\"ÓeÞs\u001dçMñ?ï//Å͝\u0011ÅUÀÃK¢,$\u001c§8=MH00z˜/¯ò®ä[gu<™ÖWY\\\"DXÈzQÊ\u001d°ˆò§ZròÖrn^fvvWlîy–Ö2÷–VY\\Èf–\u0016s^^vvÖÖ\u0016_†:\u0000Ô+KPK@?Ïs¡§Â\u0007+«)+³«)‰3‹\u0005\u0011\u0000\tAœ3ÌÉ\u0015\u000bã½ÖýÚ\u0002—–'‡šÙ&]«Â2uYÂ×uì¡D]=Mä®|'\u001d”—“B¦?\u0017´\u001cÃÇR܏Køw¼{‚òâix\u001aÓØ“ß\u000eñü¥®“ߥPŸõ&‘o횞QÚãé^½íK_ñ}¹Ì\u0016»¡LÅ\u00173:~LoŸ…}™\f«.î\u0006þ²z‰ÑÚÃ{\u0005Wºç\u0019ÀᰏÝ\u0007\u0001½)\u001bñf»û/\u001eÍjÇC±³\u000fFÕÁR‡\u001fn\u001dzÇlæy?Lðl4×ߞ\u0015$elºvь{­/Pý¡ÑÊY‚í5ý\u0018XmÂÅŁ\u0014\b­KÂ<4GÆÌ\u0003ôêêÄ(\u0006qxœ\u0005\u000e%Ȍ,éÛÃ@³\u0011âû!Àca›?\u001f¡\f½ÑŠ÷Äï¡Ñîª\u0017k'ì‚\u0006¤.‹\f=}–+_¿\"‰Æ™‚º±e¢À\u0015BùcCƒp¾Øp>ú¤\u0007:và\u001b÷¯¿ãÆ»\u00055¹1\u000b¢lÂ1—Ã0øcÇ\f™¤«}¦{,\té´ëwӐ¤,vÇp¶ìv9ћÂ\u0002ý}£}Ì\u000b¸\u001cÆW0ÓT\u0016sq>–Ý_Í¿¸5ûN7í\"F¡üŸPÍ\u0002Ö\u001e.ÒQ¦W:R\u0014\u0014È·s~ùø™÷WD4V\u0015bhw—aûéÃx(c*Þ\u0015\u0006Üo§\u0019lá¸Ãйã쀪¢B'UR17Ÿ?†cٗMu\u0001ÁÙ*=M]Îñ}eÒ¦†Û\"C47”IS)\u0011ÏNJÄF\u0011àUbҞýO×[ò\u0017Šu•Ž#=}ˆ=MÕ(\u0017Š•¸‹º\u000e¬qAš¯_\u001eB4䍻Äå\\<Lú•=M=M»Ä•\u001aÉ\u0011Â\n]Ü\u000fs.wô1eO\u000fsíËÄýH&\u000fs5\u000b\n•*-óLÝNb2¢OyrЁxÅ\u00146¹ÁŽã„\u000eëù¡Ã?\u0011>\u001eϧ?ø)ê=}/(Š\u0012¥Ó\u001bäz\u0006L\u0018ŒtëäÇ=}\u001ezò\u0005L\u0004,ñÞ:?\bsr‘ã\u0002çùûZƒÏ–\\ø? \u000f\u0019ü@b‡«óO+e\"+,+eøi=M»K¹\u000eÐü\u0001õ²ÊŠ\bXm\fb\u0001õŒ\u0003Ԉ³Sr:-S&= ®Sb9ˆWmqaê7\u0001u\u000b¼Œ\u0006P‡™¬•óSvï\u0005)_«\u0002G\u0001õL6@½—‚‰û\u0001uÚSï\u0006©4é\u001a¨m±.Ér+¯\bôûÒjG¸^\u001bµ¦‡ç8c€<¨RÚàó|w\u0004iE*®WA\u0005? \u001b±ªB G©€„žGMª²Äf\u00162É3|øë8s€\u0004žG„k­ûÎåàñdÇ˒-ÓxLúN—Òˆ´í8«€ÄžGpk¥Š{ÇëôAyxĐ;þN\b©äàýòȪ’3F\u0010\u0003‘ömg%Ž\u0013þN\u0010)áà½ó´ªÒù¯¶µ½–…x\u0014?Jø8±¤…€\u0014CJø8Ä\t¢²!YÐgGò)!òⅎ\u0013þÎ'?›\u001b\u0013\u001cl«\u001c•äo,\\÷\u001eK;›éJ\u001f®4Ž«ü¥iøz7}¬ú= ÛÅéFS\u001de,íKC¯\u0005GQ‰¥„7~ÑäO²8œ{h©ÀœRU\u0004\u001aêðû4½þa㝦%‹4\u0003|OKVÊô'è&¯öáâ¤i0[\u0010\u001a~õPƒCRϱDÆfI\u001bIÌð= ç³Åy€¢0\u000fIÌÈ݋ŸþùÚÊçï†Í_’:éÖ\\bñ*|y‘ß\\îåcç>\u0018)\u0007½©.Ã-\u0004\u0012Å}ÄTê, ±'´\u0013\fkó\u001bÌû\u000bA^†\n*6-H5HP>Q•ûí;\u000e„à\u001c x‡¶<ã\u001eÌaÂ쓌ñ{]\b¯¸\tÝ1‚1½\t\u001a1‚'\u0017i0‚gñ\u001fŠQûƒ<5’½Ž–ƒ’èòe§=M;~e\u0002o\u001bÂ\u0010_\f¶\u001cA Þy‚CªÃX}Ì\u0000Xñr-‚÷‰ý‘«ŸF©Ø)Z•yŽ™FMZ\u0011ZU–Æì6ÃØÉZUñ6’\u0017‘Zm_Tç6h\u0017\u0011Zí_Tß6©ZEgÒð6õ_twÎõö{N\u0017à6]'¤«\tޑ+à—ÐA…gÜÔ»\b‘‰Óþòðò>jCG҂i½\u0001±.0œ¸q\u0002æLÌÏmžk&„D°_ϽYH[{u_\u001e=}êRʖ4«H©WOÃ{…]:=Mê\u0012jæ5ªH¸–Ô™\u001fIWO\u0002è=}XHA ôc\u001e½ê2c\u001eýë’iæ¥ϐv\u0015\u0002:ˆvŀψvõ¦Hª–4¦È‘v\u0005gÈóA‘D°å\u0005'.>7>„ùk³[\u0010\u0000>= &k›ƒ¦\u0001>ˆ&»›mք~0[0«\nZ°€0W0§Š]ððV£jÃC\u0000”h=}±¸Ë!ŒáÍ{jØT\u0018\u0000·\\ñÇÏ\u001bkX\u0005>9ÀÂØÜ7bˆ\u001e]xà=}+jÚéæ4»«˜çÀp@«‰¦\u0010@ˆ\u0006+‚bª#\u0017Â+\u0012/ªOlOñº\u001d„ SÆ\u001cò1ûøîÏôêáó§½§lá̧lÉ$ö‚\fòœ¯b¯ø‚¬òš¯¢ŽÛ\b.\u0005£»¹/øºò0’¶t©Þ{8\u001dº_O«¸'qºŸb\bZÙ΁¦\u0007Ý8xÚ­‘“¯9¶Ý qù;'0\u001eñ¹¤\"‡]ÉÎS\u00120Ց«»XÑ*9\u0016\u0001…\u0000$™«\u0005õ\u00151¥6d9Cæ Á·¢–Tž4d´C„*ì;&Öt´\u0013\u00155}0‡a{ºßv\u000f\u0015µåQ\"T ý&\u0001†ƒ€¢™[…émKŸ’´\u0012ogÅ\\8Ïï\u0012«u+¾ˆ\"éYq*!Žˆ >º5ÿí;'ð Ͳ \u001d{L\u0013ÏÙÒ¯y\u001a&Ôþ‚‡'y\u000f\"]z]\u0015<͚ð¢\u001a\u0006¼í\u0011–ô\n\"Sâ-—è䧋þ[蛕+\u001dÛ\u0000n\u0007™*_N:ºìÞ/pÄ\bݟáñü(,éðsZÜ\u0007é\u0010\fp\n§X\u001fe®±\u000bîhƒøWƒÀ€c\b}w‘‡¹rÒçÉ»tÆ\u0002⎬œryäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëg\u001dàÒGÀãsÁG\u0006È\t\u000f+\u0000е\u0018\u0019 Î®ßT.g\u0005\u001dÑí\u0000´·\u0001ÖÌGèCC‡/\\:a ”hæ%O?Ö\u0012\u0001:ýXH1 ´d\u001eÅÏv\u0015ÿ:\u001bÖRÜè=}YH¯{%[:-ë’qæ%~\u000fq楁Ï|võ¨Hʖԯ\u001f»–4ªHº–”÷:ÿÖ\u0012÷:̖´­\bgÈsçÝ;\u0004KNðãðôhä´¸Jþø\u0001–­k³W\u0010øþ[Àk³\\\u0010\u0002>X&[›\u0011–\u0011à얡›‘–‘à<–É›iößø\u0003¡´õ6\u001b*\tÁ•\u0013dm¡$tu\"\u001b(†üg•ƒ“ʦ\u0003÷1@nÚÿ´ÖÞ+Z\u0005´Ú+¡¦\bd+\u0001c\\\fPd\"ªÓm\u001c\u0001\u0014-vAé ðy¾\u0002\u0014šó¯\u0015Ñßà¸FEçð\u0007‰Eͦl1Äö‚Ü“ä\b®K{ê\u001bú…ø‚L²¯âOX ¸\u001f¹Â\u001cåCp×t/ÿäX¡[Á\t\u001d¿jâ\t@\u001až1þ—þ.™GZJ¦é“·‘Ï\u001dA\u0007îÁú»ª«Å×\u0015û,ˆ-“ì'‡¨Á«+å×}È5\u0011¹µ+‚yƒö€Ï£UDõTçPþhT„”T}ŒQ€¥BžÃª’…KiÒ œ \u00008ϱ•hQÜ\u00041íˆIžÇ\u000bՅ,¹‡6žo\n9&¢]ãÊy\u001b¸_ÜQ o’‘^l™xÊÝ4\u0000ž$…›81\u001b:wã\u0004™\u0003þ¶83oÃî€Ë˜$&\u0015q¿\"ç\u0018Q”@L\u0014´0À\u001a\u0016Ð\\àr\u0012ÔþªªbʾL‹¶ÒY\u0000xÄ&êBW\"\u0007Iðêî8³ÓߋYqViEg¼Hñű\f= p\u0015K†=}2i\u0003u{ñ®\u0013¬i®8¬s\u0002Ù\u0001‚ì\u0001Ÿ\u0002þ\u0001h!DÀð\u0016\\ÑÚg‘â³Xõ\u0018wâ6v$g\u0012c݆hÝæ6³ŽÚgr\u0016»ØM7fœÆNô|Îë6gØ-^°Øug\u0002^Tض£F\\\u0017kØõfÒÜ6\u0005_”¡Fl\u0017\u0005ÉUZ­\u000fÕØ56T_”\u001dSiR|M¥F~M¥F±2•\u0017ÅÉUG¤K\u0012ÃÑ݉Þ\u0019ÏÆ*tÏPÿ;\u0019¡áaIÉ\t™ó¨±.=}‹TÖ©PÃûÛ¤?=Mêrûërû5ªÈ>ê”ý:&SÜè™ýÊ«\u001f÷©PË{ݤ?\t dó(½êrû dó(°\u001f÷©°Ê \u0003è™ýJž–4Jä\u0010èYýJ{ݤ?\bè™ýÊvMê\u0012næå€Ï”v\u0005€Ï„v\u0005~όv±{ÍYH\bè½XHØèýYÈ­\u001f»–„ë’o摠ô= \u001e\u000fè‘W§Hš–ďh\b#*\u0013mÝíM\u001d@Ú¹2L\u001a™S‰\u001fÜ=M}|Ù1ié\u0018ü\u0010û/uT\u0017?NC6ê¢hòè_e\u001e*hB%ümÜtêŸt’~¹Ø,:*¢Ø\u0019UD>¢Â‰/@çG¬å*¾N\u0017ÃJÿ= µ×\f2y;UÆ­I]\u0005\u001cy\u0005ðݳ+rwÿôéç9\b¼Ú†ð{zRã¹\u001alS¤ªNY¾\u0012/!6F°ÑÖ°©­\u0005N>üÐ46tâ1n\u001f\b˜ø¨sc\u001fw\u0003ܧEâZW\t[¸~\u001cÐ,\u00007óA;Žør7æc\u0017ÙE²J\u001d\u001f\n½è[—ˆ\\¤+ÿªlàž\nz,ö\u001a¿½šÿˆŒQ\u0007ò²=MËxG\\¸šÔ\b_è\u0007Gjí\u0015}¯ÁãÑr¾Ñ\"Ü£Ä,\u0013MA¹­\u0005É\u0002“èE.,\u0003,AÝ]X%*\u0007À>o\nÍrCû êì-\fÐLáphL=}Ý\t\u0005tæSA\u0019/CW/åb½µŽfÑÅ!Ô\u000eËRUeÃ÷’öV©‚Öˆ;\"\nü¢š.%êNäšÖô= f‹¹E‹šÔ†”¦§›\u0010%\u001c®ëIñaۋèʆ9\tl\u001f\u0016¶æbAaëçò;hÖùÍKPÏr=}\u0001yl%a‹&Ë-7©dµÆN\u0012\u0019í×é/öø\n·sÃËÖ\fXð?9\u0001d-ÔäˆÔ´T\u0001æ³õ»¤ŽÚšØšÂ\"QmId\nÚ(!HºÊ;\u000f\u001aÉ·Â:ôç¬Õ¸+Ù<Ž\b0ÁŒ\u001e†›‚ºFu\u000eiÚ\u0001Óÿ½™XÆÑ\u0005\u0010$\u001b\u001e9(SI'Øeqß\u0019\u0001^£“FšH¬ž´ç­àewŠîzŒøÝ\u0013䞶òÍ\u001blÑu¬£e)ð¬\"‰æ¢‡ÜaA«<|í\"ý¸\u0018œ†\u0014ÐwW>wìŒí$¿N\u000fì~D\b|l‡¢Mg9ʨH7áÂzs!\u0011„C\u0015A²ö=Mª4˰ïãÖÚXHLŒÓ7yʲã‘7\u001d«N0†<\u001aý„özaî\t“yGåxàè¯ôk\tC|Ðí5ý^ú\u0012yÞ>û NäT/¼uśjì¼#pôQM\fø\u0001}9ì\fÅ->7Z¿îP§µÆ†Jd¸KKw¬5G(—ÿÞëVÓ®=Mhší–ՏÌ\u000b9°s‡?…BzŒìŸMɤ€ªoòY\u0015¾9Í\u001fÿ¢%4 \"ô¡¹\u001f(Tg˜”=M¥g&«\u001eè=MÆ.s¤eÆÝ/±=}Ñ[\u0017›]gPéÜ£í\u000e¢ªƒ¿õwÂt\u0005Ñb•Ð,ü…\u001cu’¡q%ø\\Ëq æc閺{´à¿æ\u0011ü\u0005X\u0013ý>‹öM[Ô܈O‹{\u001f½aäÐ\u0007vöjæaöÁ\u0012\u0019\u0005ås\u0001¨„åñôêläñc±¦lªœÂ\u0015È\u0001Ô7\u000e\u0007ÂÄ\u0010žɕ“µ\u000eäãú\u001d\u0004yÂyD˜wMv\u0014B¸§ìۚH¢ \u001f˜Ô؋ƒsdDô\u000eg­Nqþ×ta4ãk\u001cÏrÈ\u0012\u0015v1‹?Äs9–0Ë\u000eM<+\u0019ڝ#\u00073p7f´9š³[\u000f':ìI>|G&\u0010\\\u0007’ÎU\u001b\u0016= ]Ó10&8Ù9“ÃB\u0007Gâ#´9,Ã\u001c\u0005)â•áºëg\u000fOk\\¦5LÞ9Äj\u0001‚H–z†É€A4ª™\u0014æhȰÝ\\“ý©\u00069È¡o+2ޕOøpGm,†yÁ\u001e ®Y\u001dúãç\u000e\u001cÙ8ûä‡kœö\u0010t¬åºrRˆ×)h§$¤m;BeJTx\u000f&µÑن„Þî h+v‡¦s¹\u001bãNc\u0003þ&ÞóJ\u001dž\u0000§¯É¦\nš”5y}\u0016NR&\\#\u001f3äÇo³¡<\u00191€<]R¬©M$v¡œ¥ùØ<\u0003ܵø¢œ >ZO‹r‹=}ÀÕâöœÀ߯}xs:'ìbøîp\u000fxàMÿ® G¥ªBøÞM{eýª´ŒŒ\u0010ß'ÚnûÍOâjÛo~½;›l¡‚G‡U.Î\u001d–ØÒšY׺目«kÔnµü\u0010F_Z·žŒrã¹+pt\u001d€’AÙ¾Ûƒ~Fz\u0011þŽÔJ\u000b+n—Ó/¼{©ç°àŽî\u001ež\u0001òàU@¦x¨¶èè-\u000f\n9\u0005^è*ß!…ò¾Ô7ê4èèµ®I1üðµŽ3w±ÈÔ7ª˜1j·Gé×R\u0018§\t§B\u0015‚Ã-ç<m\\—HaðµÎöçZOÛyؔ\u0015†·ðµŽ—Ô·âFv\u0015†*Ç/ìã%\fÂØÂ!\u000e÷𵅼Բ°çñ/i&xÆOÎ\u0012€®„öš¡\"2i¼_¥9ñEk\u001eù\u0012ø£Q¡šêÄ$ö PÆT˲\u0012‰ÚõÞ\u0018U\u0000Âb=}5\u0016\u001b•d7}øFõ›ëi\u0019O¥683wRšjT¦»ÉŽU|„T¿^•gÛU£ªÏώU!\u000eÎÅ^•gÛUƒª‹òUj„TÏ^•gÛUꏓòUŠ„4u\u0018¥š75›ëəÀòéõ\u000fã‡\f ‹zÓ\u000eã³j\u0006)¡\u001aÈÞT†(j=Mþ~OêÕvkŒ\u0000žØ¥{ŽÎu\u001fs\u001bç6©#Ý5=}Ú:\u001f|k‚H®7zš/\u001cžÜŠë¼-´Ûþõ\u0005f•(oŸ,DÈԟZûe§Ä}òþ<Y¤Äw8±WaX W\u000fÖ,6Ö̇—Ä}¢ÂgÇ\u0012õJÒ\u000fÆkoãð ÛqPZ8\bƲJº\u0018Lj)ê7ç^Õ\u0007µU\u0019~¶\u000e\u0000þÈRáÆ¦\u0013”!\u000bæ;½Q¯”È‚-’!%™ìµB½Oû¹O\u000f½\u000fg\bÒ\u0012õ;i\u001dÈ\u0019\tR€ºOKÔì5ŽìµÏì±w!EL\tÒ@®ÄÏì%˜ì5E½OÙ¹O¢®:4\nnÆk€jUðx=MË\u00197Ú}Áº±ö\bûˆä\u0018\fs7$űšè¢\u0010š ß\n—ÚØý$XÚè4\u0017±\u0003\bþ‘ŠðÈ1\u0017[o¯Ãb€´ÿj2Ë$Õ0R½\u0012¹g9¨´PòèXâÖª\u0016Žå\u000brÉ4e'ŽÜ~éé¶RÙÖ÷3Òb×È$tÒَœÍ¿!nüê6âv±?½â)b³h6ÛaWš\"çR6Z\u001c«\\ëv4š­Ëá/Õ\u000f¸±®­®p’ªÄT\u0006ø_Õñ%¬Š9ÓI‘µRã…T m•,øŠcYŒ\u001e›€S:ì*\u001a\u0003V°ˆ= {yîå5–9ÙÏY°‚M\u0010\u001b8ùVAóìµWŸhŸò€i1àú \nðÛj\u001f†mZA= ~[ÊVvè§ß\"óž63ž\u00044áò'쁝\u000fP⺪Sò£l§†\u0018½BŽ…ÆÂ´\u0012ž=Mô-”.\u00030²9ó\"ð¹JÜúYëÕ\u000e°\u000e\u0001\u001bU\u001aÇԏеtbߗ¥ºœ‘âzd\u001fAÚ'ì™!»\njê\u001dW”?ÉI\u0011\u0006|Ú~á€ý!n„náè\b\u0014Ï@u@^/éš*\u0011\u0013C=}8¬+·µo¡Š\u001fë\u001aûl펇Õ+\f’ŸªÛIÒ¨Ù÷ÞS\no…Ê\u000fÚÊõptéq\u0019\u0005 N¢·P1S\u001c\u000e0\u00151$\u0015Ãæšï¼“e…Ú§\u0002wA9-·*u,fåëº\u0011(nÌ8\u0010æ\u0002\u001bÕî~\u0015â\u0006Pñî6z‰ÍŠ«¦e•\t1kM*{k¸g‰=},i~èø\u001f\u0010¶‰â7L/Ç qÄ\u001dÂñ\u0012,Z‰8Ž½Þ¥:Ý<Ú\u0006Àò…\u0015\u001cQZú%|0ÏßV¦Ô i˜_ú»qµ€\u0000²\u0000\u001fÝ\u0013ÇíÝ,l*àú= ÄC=}jµÚJzaö5Îio\u0018ûsOˆyµØxšF'âJÊ]yÕyޑ™Ú‡œ¶’B2À!LG¢˜Ðú¨ß&*Çúô¹âj-\u0011l\u0007KÿÅ\u0005(\u0016^Fsq5¢\u001a#~DçRÅpmí)¡”qªz4»+ìf“\u000eýhb\u0003Û²‘;âú¥z…r¼iñwôZo¸Ý\u000eùM$!Iç¶\u0005\u0012ad-&vÏ\u0005ðÞ7úê˘ÖÎH­iÏzR\u0005ÐÚËA$#+ê<\u0002¹\u0005-t:DÅ\u000b½]oz\u000fYwîóÐH¼Ë\u001eðñŽï笹¬X«£Ã\u000bTµ˜6uAHЋœ£ð£ËêIuI%Õf\u0016Õ¡š\u001bøõy5B\u001aÁiÑ»!JÓ\u0007ô\bÝ\u0004È¡9ÂtT\u000bæøÂ\u0019÷8=}Ó ¤é:šŒž\u0010܂z(±\u0018\u0013û÷\bKb¡ô0ŸÐúÌ®»‘¹)ñ­ÃOw\u000b%MêD¨]l<ÇńRºêçGÞ°@<«øú•νq\u0005¸Ê–Õp\u0000Ò.üݏ‹Ž‘6P\u001c\u001c¡\\\u001cÞßI†G\u0006}\u0001Mp/qÇÑ¿v,Ч<„‘˜€)Ø”&ê†ËFŸªèž—:€ì\\Ìr_N\u001a’\\ë¸ñb+ýàz\u0015Íݗ´'R¡ÌGÙ|ÏÆ\u001e¶\nj¦sÏ\u00160•ìþjðW\u0002)€°âmSúŽ›ç'žá8šº„I.ÄhÐÌðх\u001f\u0005ëÕÔÿu$C\u0014l±Â{Œ}(L ÛûøN%=} ôÆáU¹êb׀ܷ†2\u0011]îý\u0017±\u0012m¯ñÃ;\u000bcí\f8·8Fdß\u0019ùŽ\u0012\u001duÝMlÅFdto\u001c\u001a}ìÒ!S!H\nqiÎç0nw¡–¥W¯€XQ¯œ¸\u001f.v–Y½àPfÂ\u001bð‹ˆºêЂԻ0\u0005ºM\u0007Z÷Çÿ0= £év‰Gµ·F\u0006,Ý×\u000e·\u0006ño‰G§v{H&xë\u000bŸ\u0013\u001ah±ÚjE†\u0002Ô¤à;66Ï\u0015Õ3óÍ\u0003z;—ϧ4ë¥;±\u000fÍ$Mà“Gêá&Ðëš\u000bo!Œ3WØ\"^°Uµ´Ôù½…,b#%q´@;l\u000exb_mŹ‚Q\u0010¢óБƒÊö´˜36ÁRp!\nòòÉu\u0010-…;H\u0018\u000fq;§Ï©ÔVcWHT4\\V—\u0013daZ¼¢·™V—'daÿx]d_rqhkŽ•Œ‡zy€ƒÆÍÔÏÂÁ¸»ž¥œ—ª©°³6=}D?RQHK.5,'\u001a\u0019 #æíôïâáØÛþ\u0005ü÷\n\t\u0010\u0013\u001d\u0016\u001f$12+(UNGL9:C@=M\u0006\u000f\u0014\u0001\u0002ûøåÞ×Üéêóð}v„‘’‹ˆunglYZc= ­¦¯´¡¢›˜Å¾·¼ÉÊÓÐßäÝÖëèñò\u0007\f\u0015\u000e\u0003\u0000ùúOTMF;8AB\u0017\u001c%\u001e30)*¿Ä½¶ËÈÑÒ§¬µ®£ ™šotmf[Xabw|…~“‰Š¤Ÿ–¨«²±ÌÇÎÕÀú¹”†x{‚\\W^epsji\u0004ÿöý\b\u000b\u0012\u0011ìçîõàãÚÙ4/&-\u0018\u001b\"!<7>Z\u0017Y¶vVVX\u0016Ð1\fÃ1\fÃ1¼\u0013Ã1\fÃ1\fù13\u001d•U\u0015Ó[˜€\b\u0018w\u0014hw\\ø€\u0011È÷VH€cˆ€\u000bè÷\u000f°÷Y0\u0000e\\\u0000=M\u0010÷= À\u0000\u0007@÷\u0012€÷Zà@þ¤6r¤AlDAü\u00046i\u0014¦ÕF¬uFbå\u000b^!\u000b§Á\u0006­]\u0006cñ‹«‰†e\t‹= 9‹¨™†*yŽäù“áI“)©\u000eß1Ó&Ñ\u000e,q\u000eâáSÞ%S'ÅN-WR\u001c%\u0014@q\u0012\u001d1”\u001bI”?y‚\u0018è\u0004BÈ\u0002Eœ\u0002\u0017\u0000DD´r\u0016\u0014Ä\u0019äÄC¼¢Dª\"\u0016\n$\u0019Ø$CÂâ\u0018î¤BÎbEžb—Þ—ÐÖdY= ØVÎÅ=M\fÃ1\fÃ1\f#\u00110\fÃ1\fÃ\u0011\u0007óRÏ\fÜlÝßn5(‡\tû\u000bj‚\u001c(¬+€\u0006ök·„¼=MÄBÙÃV}0jä8ÆÁ¿Ã.ßC\u0003tq±³\u0001\u0017\u0012¿åCt51}\u00146©I=Mvœ†*T&)Ô1Ä=M³’\u0016\u0013ÌÜmC\ns9h\u0004\n#\fäIÃg½Æ\u0010£\u0019¢³\u0002I\u0006´·[ì@ǓÛaŽ\u0001ÑÆ¦ÍAŒÒ-µF\u0016µc—ú\\\u0001uô6ûÔ,Í\u000e\u0005åÆY­\u000bü,—y*-Ì>\u0002Ã\u000b[Ü·\n¤+_nþ™&a3‹qÈÁ§ƒÖà°[û¦²©Àpº˜ÐãÝ\u001ap­Wg$8XŸ\u0016‹8XÆoåÞa\u0016ÉèåÝ\u000e™ÈFá\u000eVR}9n\u001bVÇWNàuúYEÞa\u0016Á\u0002|„Vq\u001eqÌ·ÇWŽÜézâS\u001a[¶e/\u0018’‚zQ®¤²V춈ÇWnþYä‹VV^öÂDÊ}™ž^wfhXwÚږž^wfhXwï†wwf˜ž^ÚÚfXwwf˜ž^ÚÚ\u0006ESÞMEMõõ{U\b]x\u001eWxòÈâf¨²Éábmžx$oÀ\u0012Iß\\•>ø#m¥~ù a= ’ÈårÌ\"\tÞY\u000e8\"h±Î9!dtÂ\bäq¹î¹\u001fZŒ\"ˆãkœb‰à_Ynø%µ@ïdÀ6Þüp‘:ê,0ùÛéäÁ<ðDÐ\u0010÷å\u0011ÄAûé!\u0004@8Øä0‘=}óH€Pöà\u0005”\u0001úì5T\u00009Ýð\u0000Qüî=}´€7ã\b Ñ;ç\u0018àÐøÖÝDA•\u0019JÖV\flZV†<|QÃ1\fÃ,\fÃyŒÀ1\fÃ1\fÃA3·Ü—= ’ž¦×ÄNb”Zs¶rÔØµ\u0017bÒc\u001c\u0016vÒWL·k\u0002[}\u0006o2ס.VUك\u0006a¡\u0016ˆR]ÕØ[Fs„\u0017«F]Äو¦^6¾X\u0003F\\ª\u0019‰Î^€¶•Î[4\u0018gFo$\u0017ŸFW2ݳ\u0006m’×W>\u0016÷›§åpÅpµ§[ãõþ¼ª³¹ö‡ß= þ\u0014\u001c@þ\u0007)®›S¾lø\u0001'Ã#Q¾'R(Òá4µ‹­ð\u0011>ß<v\u0010qóñ\f+ßo\u001c\"\u000b,‡¡\u0003ñ,<<©¡\u000bô¸p°ëî¸\"\u0015,’Ì\u0001Ó(\u0014\u001bÌ\nsÌp‘,\u0004¾¸Õ¹!0E\u0007\u00050¥0\u0016\bD™RÁR=MDÕR\u0005Ä¡=Ml5åõ@\u001cąTøÑÞ5\u001c\u0005Ë\u00159à‹ó¬2Ùd\u001dÓ\u001c\u0013ArʄÇ!\u000e\u0013$ŽÄþ))ŸŽ™B@åJ½ßqS›8‹G\u0002UøUç~ß%PK\u001a\u0000ԟU…Ç÷=MŸŽ|2K0_\u0014)q{êiðÐÕÐûÚe\u0013íÚ\u001dZJ.>w;‹;1>•;-þ»ª¡?ý¢ã8þíȇú©,œ5ÿ›9ðǁK\u0017©5ãe\u001cí*»@4ÎòŠDo}\u0000wËcœ\\\túã\u0017x?ðʌ·Nžèú½ÙШ+öºFí\n†2zuéEÜCº•òoäè!\u001f£\u0019•\u0019¨HÝ7¡H¹ˆÜj”ð\u0015ïÕÛ[Iõ\u0006o,#]<é†\u0016\u0014O’ðE\"­7å¯w\u0013ð4Œ\u0011¥m\t…\t=MJÓP+»\f¡õîc(\u0011?ϼýó\n·02Êó\fŠ\u0013ïô(ô)”£+J\u0003·°ŸüSñ$Ù\u0003\u001f\u001f:lÊ¢rî\\¹éàŸyNc |E\u0017\u0001\u001fé_VO5ßsœ\u001c\u0005ù^VLjQr›V\u0006¥ç\u001dë.¸*€7‘Ôi\u000f*à\u00127Ú%N§:9{·ooŽäÕßò£\u0016\u0016ÝÞ+¯\u001a;x\u000eÜ\u000bÞ=Må–x\u0018@7w¸H…Hùæ²ãâ\u000e¥Ç\u001e×=M:Ó yȽmό>t—ÆV\u0007fVVŽÚ4i0r‘,ü#\u0007¹Ãä\u000b)ó9˜^wÚf˜^wÚf˜^wÚwÚf˜^wÚf˜^wÚf˜^wR5M…PõŠ\\|†\u0007\u0007‰\u001c\u0017NðÃÉÄ:âڏ‰<\u0019\u0012p»Óe\u0001\u0006ûU¶ u@±îÛÍ\u0013\u0001í6£}ÆWy“ÿ\u001a*ÿ\u0010ªÚЬࠥÓÿo»ùâ*\nH¬ñÀ£¿[ÆW¥\u0003e|°²!Ùk¾¾uC^@0pvV\u000b\u0007r^v\u00062ßà’\u001e\u0005¾á\u000f\"\u001fÚî\u001fäÎÞ\u0001‚\t“\u0005HlQGjq\bƒ%H‘A\bh\u0015‡\u0018m’¸\u001fvœüºo^Èdà—å\u0012ž|.Zyèd4úŸÀ\u0017‚&aÓÜӐ_9·ô\u0004¾yRڝ°e-j§näCî‹\u000bì\f\u0006$Ì'D¯…¹ÅBçë\f5¬)\u0000/}ªÆ„$iKó_àù\u0012\tÈp>Ùä¤s\u0003s:–ŠL]tF\u0006\u0015I€T\u0017UÐÃÅD=}RڍI‘4\u0019\u0011P»\u0012Í\u0001ÄaU2jt8\u0003ñËE\u000eá¡DciÍ7œNå÷ÆÂ÷‡9ŽÔ\u0005–\n\u001b¿àù*¿à¦@^š±r\u0007\u001f,\u00071ˆlÀɱ\u001c˜Ãä.ºA.¿ å¾sýë\fû\u001d¿ûÃ?\u000b“øË±\u001c˜Ãä.ºA.gñÂo\u0011ƒ¹÷\f\u0014M’\u0015%I«Eµ |*p+XÙõërd\u0000û˜Š›Äήǯ®\u0003æ\u0011xànë°×å\"’ rããšÝmêQ!™\u0019\u000fyçg.Þ2yðé\u0004Ç Ž%ŸÏÂÓë\u0004 ‡¬¢aò†ô\u0006ú?Ã¹ú‡ÃëúÌæÈ¨°\u0003SnŠðts•¼Lî¨O*ÔeñˆÆ2Ð2æøE ¨\b’=};?Kã\u0010œ\u001dÊǰ6òGò»ð\u0014\u0017Œ«ð0,–¤t\u0002Ë,À}1\u0013fš™Ç\u0005\u000f$ŠÛõ(µ\u001d¼d*±Acï\u0016N(©ß©*N~C[—\u0006Údôl(çJø)\u0006\u0004î_‰”ó\u0011|çîî°Ù¥ ’!ò㣘}jªQ\u0001™i\u000e‰çb‚yMâ<ì\u0001¦J2è­*M@Ðs\u001a«×1\u001c1ì«P”1 ¿»±u¯†nÆ\\\n[Lñ¦”óu\u0015¿l¢|4*…\u0006!]Ä®ÅnìY\u001c¨Õ\u0018¥où³4›6øè\u0004v…v^¨\u001a\u0019aá‘\u0019ó\u0014ÛDD:¸¸ÇÀ\u0014zIpɃ\fZ³¬&9E_ƒ9\u0004ì¸¡É\u0005Y/ûmimÿB~=}+ÙPh„Ηî×\"~\u0010V\u0019\u001bÂîK\u0017Dü:¢¸¼ÀiôéÏß\u000fj!—½kŠQñ™\t\u000e!ç/.B2!ð\u0004O Ò%kÏ´Ó\u0011\u00043‡¥\"a²‹´\u000b:?‘Âaú[Ãs:2\u0017¬½\u0001Ì\u0004\u0013c ûÉ9Ã<l)rÔ¤ÕaÁnF¯Ó\\Ù@•ÿwVÀú’X¨ã‘œùØÀ‰ú\fûŸ9b?:ÎíÀŸ\u0001\u0010G¤X‰¸\u0000i\u001a½°ü\u0017¯g+\u0002Å\\ïC¨=M\u0000«Í?#W½\u001d*\u0013ïÈÏÙ{eôu§?©Ózg\u0018žƒçí˜\u0000W”\u0010²¦CÚª½\f«¨÷·s\u000f,\u000b¬¯ý³ã\u0005G\u0004W­\u001dŒÞA£AOcla²j\u0018‚\u0014ã\u0016ü:|¸y»ë‡^ù\u0003ä\u0003>Œ·q\b‹\nÛ3Â1‚ÇBV\f}=Mi‘~²\f™ÌpÍB—Ía\u0011ç“÷óB„1„¿ý·•Ï\u0016˖/\u00053ÝEKD[M\u001bdàÝ¢ÝNÙì¨.kÇ·û”eŸ\u000f~\u001bù\u0003\u001a\u0001\u0012«¶»\u0002¢’\"í¯ 7àž[¬D\u0001[@è˚ƒ+~–cÊùٜoח>¦c±Ã\u0001ìÀb\u0003–¡\bÛ¾û0;dþÙÄÍÆ~\u0006^mÀ¸ñÃ#¨é—vY\u0004Öx¾QF´Å….mAj\u0011¢³Òýû]Däʹ“\u0014]\u0016\u0019:™8W˵\u0014]3ùE‘DöÍÛ\u0011\u001eó¦ækÃøjŠ’}õ\u000fô%\u000bgÒ\u0016‘Vœ¸¥\u001b}ü}R©!yNÇ:‡L\u001eMÜÒAÐ\u0001\u0012'\u001cGî\\\u001c¹\u0005\u001a-ü-R!¡N›:[L(ZÒ ÔxÜþeH>yS\u0017GtÓ}\u0012™4ÝjŒ·¡žàÐÕ3·Óoø‡í¹@Áͬ\u000eЊñ8MÞ¿7 ¾ëˆ¤É= Z·óGА\u0017Ð\u001cÔì¼\u0012²“•{Î¤ð€¥¥ò-²ZK†Â\u0012Ö$\b´\fµx¼èÉïŒ$\u001d%_´ël\u001eIh­Vù\u0004¡5ßv<t¢ÓÓ$ÄÍÖ$½íQ[Ç«\u000e…0\u0001jÀÔ[ÔWTøG-~ÀSÛSíÚïR= IqD=MR­Ùw?¡HíiS\u0016œ3iS©ºéOgÜ7¬=}¹M‰Ð\u0011#U²2räš]êƒ\u0016d3ÁSº\u0011O{¼\u001dÇ=}aM±Ðe\u00111Uœ2k䝹 ¤#Õ\u0017u\u0019•ˆT]˰UÃUm—敽T%SåU¯Æ¦PÿR隨ù[å\u0017\u001dãÿ>_AnQ®8zŸˆõÇ\u0019ÎÍÆ\u000eʚ”ðn[*@vÓ|¨½ô܋6ã$‚MÎð¼oÕ\u0010®s$Þ¤¨ÀÖ¬³\u00044Ö\nîI\u0006d\u001235ó£É‚AõwŒÝ½Éê|£WÎi\u0014·Š÷=M\u0003CÞ±úõ¯\u001aƒ:O6ˆ?\u0010҃\u0007nÎö±\u00055֒б\u0006ÑNÓ½çуÓÝ\u0013Aµ}à7+'‹ ¦IƒF¥Fõã5œU¶\u000b/áߕè\u0015¹\u0014\u0017ÓéUÓFÁèzÝiµ-RfR}Re9e&\u0015±¡Bd8Å:µïEÉ59UhR\u0004jë;\u001aÍÖw3wS—:é\u000fjQÞÕÆ\u00102]>MB‘Uԇg4m3\u0001~V†h¢Ù©f^#\u0018ˆFÊXwí(Û”ÅfIúr±/¤0?óBtTö®€Cëe~qW\u000eo4Ü\u0002á\u0006+N8wÏåd\bÍNý8y¿–ÔübWu\u0016ZRdÏã\u0014\u00168Nqøk¾]ñ·l?˜\u0011\u0007”²v@\u001e\\\u0010ÜûOˆ\u0007²\u0000è;ÉV\u0003W¨Tñ×óçí÷ç\u0007Ù\u0017Û'å7ßG\u0001W\u0003gýw÷‡\t—\u000b§\u0015·\u000fÇTWNgHwJ‡<—6§@·BÇ$×\u001eç\u0018÷\u001a\u0007,\u0017&'072GªW¨g®w´‡¢— §–·œÇº×¸ç¾÷Ä\u0007Ò\u0017Ð'Æ7ÌG‡×ç“÷‘\u0007\u0017…'{7yGWW]gcwa‡o—u§k·iljًé•ù\t\u0019ƒ)}9wIYY[iey_‰q™s©m¹gɬY¦i°y²‰¤™ž©˜¹šÉ¼Ù¶éÀùÂ\tÔ\u0019Î)È9ÊIRYPiFyL‰:™8©>¹DÉ\"Ù é\u0016ù\u001c\t*\u0019().94IïÙõéëùé\t×\u0019Ý)ã9áIÿY\u0005iûyù‰\u0007™=M©\u0013¹\u0011ÉþX\u0004húxøˆ\u0006˜\f¨\u0012¸\u0010ÈîØôèêøè\bÖ\u0018Ü(â8àH#Ø!è\u0017ø\u001d\b+\u0018)(/85HSXQhGxMˆ;˜9¨?¸EȽطèÁøÃ\bÕ\u0018Ï(É8ËH­X§h±x³ˆ¥˜Ÿ¨™¸›ÈXXZhdx^ˆp˜r¨l¸fÈˆØŠè”øŽ\b€\u0018‚(|8vHªÅÅv÷ÄÏv¿ÄÆËÊv¸Ë¼¼»ÈÉVVVVT˜VTUœTUU VVV¥æoV—Ú‰:\f:WȖîm]œì=}—\u0017äeb\u000f»'ë‡\u0016¾\u0006\u000e¹Ý‡ý×\\yî!\u001f6Ž\u001dîñgޏ\t\u0017î±Þs\u0000ÞYÞ½\u001eY_l\\\u001d‘\u001c2‚U×Ö\u0017Ç×_yÆÈhžW\u000bs‡7<9X€7\\8k ¦\u000b–œ\\\u001d|2\u0002vƒ²–©£\u000fïjúV`});\n\nvar imports = {\n \"a\": wasmImports\n};\n\n// No ATMODULES hooks\n// Begin runtime exports\n// End runtime exports\n// Begin JS library exports\n// End JS library exports\n\nthis.setModule = (data) => {\n WASMAudioDecoderCommon.setModule(EmscriptenWASM, data);\n};\n\nthis.getModule = () =>\n WASMAudioDecoderCommon.getModule(EmscriptenWASM);\n\nthis.instantiate = () => {\n this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then(instance => {\n const wasmExports = instance.exports;\n assignWasmExports(wasmExports);\n wasmMemory = wasmExports[\"j\"];\n updateMemoryViews();\n // No ATPRERUNS hooks\n initRuntime(wasmExports);\n ready();\n});\n\n// end include: postamble_minimal.js\n// include: src/flac/src/emscripten-post.js\nthis.ready = new Promise(resolve => {\n ready = resolve;\n}).then(() => {\n this.HEAP = wasmMemory.buffer;\n this.malloc = _malloc;\n this.free = _free;\n this.create_decoder = _create_decoder;\n this.destroy_decoder = _destroy_decoder;\n this.decode_frame = _decode_frame;\n});\nreturn this;\n}}","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\nimport CodecParser, {\n data,\n totalSamples,\n codecFrames,\n isLastPage,\n} from \"codec-parser\";\n\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\n\nexport function Decoder() {\n // injects dependencies when running as a web worker\n // async\n this._init = () => {\n return new this._WASMAudioDecoderCommon()\n .instantiate(this._EmscriptenWASM, this._module)\n .then((common) => {\n this._common = common;\n\n this._inputBytes = 0;\n this._outputSamples = 0;\n this._frameNumber = 0;\n\n this._channels = this._common.allocateTypedArray(1, Uint32Array);\n this._sampleRate = this._common.allocateTypedArray(1, Uint32Array);\n this._bitsPerSample = this._common.allocateTypedArray(1, Uint32Array);\n this._samplesDecoded = this._common.allocateTypedArray(1, Uint32Array);\n this._outputBufferPtr = this._common.allocateTypedArray(1, Uint32Array);\n this._outputBufferLen = this._common.allocateTypedArray(1, Uint32Array);\n\n this._errorStringPtr = this._common.allocateTypedArray(1, Uint32Array);\n this._stateStringPtr = this._common.allocateTypedArray(1, Uint32Array);\n\n this._decoder = this._common.wasm.create_decoder(\n this._channels.ptr,\n this._sampleRate.ptr,\n this._bitsPerSample.ptr,\n this._samplesDecoded.ptr,\n this._outputBufferPtr.ptr,\n this._outputBufferLen.ptr,\n this._errorStringPtr.ptr,\n this._stateStringPtr.ptr,\n );\n });\n };\n\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n get: () => this._ready,\n });\n\n // async\n this.reset = () => {\n this.free();\n return this._init();\n };\n\n this.free = () => {\n this._common.wasm.destroy_decoder(this._decoder);\n\n this._common.free();\n };\n\n this._decode = (data) => {\n if (!(data instanceof Uint8Array))\n throw Error(\n \"Data to decode must be Uint8Array. Instead got \" + typeof data,\n );\n\n const input = this._common.allocateTypedArray(\n data.length,\n Uint8Array,\n false,\n );\n input.buf.set(data);\n\n this._common.wasm.decode_frame(this._decoder, input.ptr, input.len);\n\n let errorMessage = [],\n error;\n if (this._errorStringPtr.buf[0])\n errorMessage.push(\n \"Error: \" + this._common.codeToString(this._errorStringPtr.buf[0]),\n );\n\n if (this._stateStringPtr.buf[0])\n errorMessage.push(\n \"State: \" + this._common.codeToString(this._stateStringPtr.buf[0]),\n );\n\n if (errorMessage.length) {\n error = errorMessage.join(\"; \");\n console.error(\n \"@wasm-audio-decoders/flac: \\n\\t\" + errorMessage.join(\"\\n\\t\"),\n );\n }\n\n const output = new Float32Array(\n this._common.wasm.HEAP,\n this._outputBufferPtr.buf[0],\n this._outputBufferLen.buf[0],\n );\n\n const decoded = {\n error: error,\n outputBuffer: this._common.getOutputChannels(\n output,\n this._channels.buf[0],\n this._samplesDecoded.buf[0],\n ),\n samplesDecoded: this._samplesDecoded.buf[0],\n };\n\n this._common.wasm.free(this._outputBufferPtr.buf[0]);\n this._outputBufferLen.buf[0] = 0;\n this._samplesDecoded.buf[0] = 0;\n\n return decoded;\n };\n\n this.decodeFrames = (frames) => {\n let outputBuffers = [],\n errors = [],\n outputSamples = 0;\n\n for (let i = 0; i < frames.length; i++) {\n let offset = 0;\n const data = frames[i];\n\n while (offset < data.length) {\n const chunk = data.subarray(offset, offset + this._MAX_INPUT_SIZE);\n offset += chunk.length;\n\n const decoded = this._decode(chunk);\n\n outputBuffers.push(decoded.outputBuffer);\n outputSamples += decoded.samplesDecoded;\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n data.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._inputBytes += data.length;\n this._outputSamples += decoded.samplesDecoded;\n }\n\n this._frameNumber++;\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n outputBuffers,\n this._channels.buf[0],\n outputSamples,\n this._sampleRate.buf[0],\n this._bitsPerSample.buf[0],\n );\n };\n\n // injects dependencies when running as a web worker\n this._isWebWorker = Decoder.isWebWorker;\n this._WASMAudioDecoderCommon =\n Decoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;\n this._EmscriptenWASM = Decoder.EmscriptenWASM || EmscriptenWASM;\n this._module = Decoder.module;\n\n this._MAX_INPUT_SIZE = 65535 * 8;\n\n this._ready = this._init();\n\n return this;\n}\n\nexport const setDecoderClass = Symbol();\n\nconst determineDecodeMethod = Symbol();\nconst decodeFlac = Symbol();\nconst decodeOggFlac = Symbol();\nconst placeholderDecodeMethod = Symbol();\nconst decodeMethod = Symbol();\nconst init = Symbol();\nconst totalSamplesDecoded = Symbol();\n\nexport default class FLACDecoder {\n constructor() {\n this._onCodec = (codec) => {\n if (codec !== \"flac\")\n throw new Error(\n \"@wasm-audio-decoders/flac does not support this codec \" + codec,\n );\n };\n\n // instantiate to create static properties\n new WASMAudioDecoderCommon();\n\n this[init]();\n this[setDecoderClass](Decoder);\n }\n\n [init]() {\n this[decodeMethod] = placeholderDecodeMethod;\n this[totalSamplesDecoded] = 0;\n this._codecParser = null;\n }\n\n [determineDecodeMethod](data) {\n if (!this._codecParser && data.length >= 4) {\n let codec = \"audio/\";\n\n if (\n data[0] !== 0x4f || // O\n data[1] !== 0x67 || // g\n data[2] !== 0x67 || // g\n data[3] !== 0x53 // S\n ) {\n codec += \"flac\";\n this[decodeMethod] = decodeFlac;\n } else {\n codec += \"ogg\";\n this[decodeMethod] = decodeOggFlac;\n }\n\n this._codecParser = new CodecParser(codec, {\n onCodec: this._onCodec,\n enableFrameCRC32: false,\n });\n }\n }\n\n [setDecoderClass](decoderClass) {\n if (this._decoder) {\n const oldDecoder = this._decoder;\n oldDecoder.ready.then(() => oldDecoder.free());\n }\n\n this._decoder = new decoderClass();\n this._ready = this._decoder.ready;\n }\n\n [decodeFlac](flacFrames) {\n return this._decoder.decodeFrames(flacFrames.map((f) => f[data] || f));\n }\n\n [decodeOggFlac](oggPages) {\n const frames = oggPages\n .map((page) => page[codecFrames].map((f) => f[data]))\n .flat();\n\n const decoded = this._decoder.decodeFrames(frames);\n\n const oggPage = oggPages[oggPages.length - 1];\n if (oggPage && oggPage[isLastPage]) {\n // trim any extra samples that are decoded beyond the absoluteGranulePosition, relative to where we started in the stream\n const samplesToTrim = this[totalSamplesDecoded] - oggPage[totalSamples];\n\n if (samplesToTrim > 0) {\n for (let i = 0; i < decoded.channelData.length; i++)\n decoded.channelData[i] = decoded.channelData[i].subarray(\n 0,\n decoded.samplesDecoded - samplesToTrim,\n );\n\n decoded.samplesDecoded -= samplesToTrim;\n }\n }\n\n this[totalSamplesDecoded] += decoded.samplesDecoded;\n\n return decoded;\n }\n\n [placeholderDecodeMethod]() {\n return WASMAudioDecoderCommon.getDecodedAudio([], [], 0, 0, 0);\n }\n\n get ready() {\n return this._ready;\n }\n\n async reset() {\n this[init]();\n return this._decoder.reset();\n }\n\n free() {\n this._decoder.free();\n }\n\n async decode(flacData) {\n if (this[decodeMethod] === placeholderDecodeMethod)\n this[determineDecodeMethod](flacData);\n\n return this[this[decodeMethod]]([\n ...this._codecParser.parseChunk(flacData),\n ]);\n }\n\n async flush() {\n const decoded = this[this[decodeMethod]]([...this._codecParser.flush()]);\n\n await this.reset();\n return decoded;\n }\n\n async decodeFile(flacData) {\n this[determineDecodeMethod](flacData);\n\n const decoded = this[this[decodeMethod]]([\n ...this._codecParser.parseAll(flacData),\n ]);\n\n await this.reset();\n return decoded;\n }\n\n async decodeFrames(flacFrames) {\n return this[decodeFlac](flacFrames);\n }\n}\n","import { WASMAudioDecoderWorker } from \"@wasm-audio-decoders/common\";\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\nimport FLACDecoder, { Decoder, setDecoderClass } from \"./FLACDecoder.js\";\n\nclass DecoderWorker extends WASMAudioDecoderWorker {\n constructor(options) {\n super(options, \"flac-decoder\", Decoder, EmscriptenWASM);\n }\n\n async decodeFrames(frames) {\n return this.postToDecoder(\"decodeFrames\", frames);\n }\n}\n\nexport default class FLACDecoderWebWorker extends FLACDecoder {\n constructor() {\n super();\n\n super[setDecoderClass](DecoderWorker);\n }\n\n async free() {\n await this._decoder.free();\n }\n\n terminate() {\n this._decoder.terminate();\n }\n}\n","import FLACDecoder from \"./src/FLACDecoder.js\";\nimport FLACDecoderWebWorker from \"./src/FLACDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(FLACDecoder, \"FLACDecoder\");\nassignNames(FLACDecoderWebWorker, \"FLACDecoderWebWorker\");\n\nexport { FLACDecoder, FLACDecoderWebWorker };\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"uIAKA,SAAwB,EAAe,EAAwB,CAE/D,IAAI,EAAS,EAMT,EAAM,GAAQ,QAAQ,IAAI,EAAK,CAE/B,EAAM,GAAQ,QAAQ,MAAM,EAAK,CAKrC,SAAS,GAAQ,EAKjB,EAAS,EAAE,CAKyB,SAAS,EAAM,EAAM,CACvD,MAAM,EAGR,IAA2B,EAAiB,EAA4C,EAWxF,SAAS,GAAoB,CAC3B,IAAI,EAAI,EAAW,OACX,IAAI,UAAU,EAAE,CACf,IAAI,WAAW,EAAE,CAC1B,EAAS,IAAI,WAAW,EAAE,CAChB,IAAI,YAAY,EAAE,CACnB,IAAI,WAAW,EAAE,CAC1B,EAAU,IAAI,YAAY,EAAE,CAClB,IAAI,aAAa,EAAE,CACnB,IAAI,aAAa,EAAE,CACpB,IAAI,cAAc,EAAE,CACnB,IAAI,eAAe,EAAE,CAmBjC,IAAI,MAAmB,EAAM,GAAG,CAE5B,MAA6C,GAE7C,EAAS,EAAE,CAEX,EAAmB,GAAQ,GAAM,CAEjC,MAA4B,YAAY,KAAK,CAE7C,GAAkB,EAAO,KAEvB,EAAO,KACT,aAAa,EAAO,GAAO,GAAG,CAC9B,OAAO,EAAO,IAIX,IAKL,EAAO,GAAS,CACd,GALO,eAAiB,CACxB,OAAO,EAAO,GACd,MAAuB,EAAqB,EAAO,GAAqB,CAAC,CAAC,EACzE,EAAW,CAGZ,aACD,EARuB,GAYtB,EAA0B,IACd,EAAO,OAErB,KAAmB,EACZ,IAGL,EAAY,GAAM,GAElB,GAAY,EAAI,EAAK,EAAQ,IAAS,GAEtC,EAAY,iBAEZ,EAAY,kBAEZ,EAAqB,GAAQ,EAAM,GAAa,EAAM,EAAa,IAAM,OAAO,EAAI,CAExF,SAAS,EAAS,EAAI,EAAQ,EAAQ,EAAW,CAE/C,MADA,GAAS,EAAmB,EAAO,CAC5B,GA4DT,IAAK,IAzDD,EAAmB,CAAE,KAAM,EAAE,CAAE,EAAE,CAAE,CAEnC,EAAc,IAAI,YAUV,GAAqB,EAAa,EAAM,EAAG,EAAiB,MAAQ,CAQ9E,IAPA,IAAI,EAAS,EAAM,EACf,EAAS,EAMN,EAAY,IAAW,EAAE,GAAU,IAAS,EAAE,EACrD,OAAO,EAAY,OAAO,EAAY,OAAS,EAAY,SAAS,EAAK,EAAO,CAAG,IAAI,WAAW,EAAY,MAAM,EAAK,EAAO,CAAC,CAAC,EAGhI,GAAa,EAAQ,IAAS,CAChC,IAAI,EAAS,EAAiB,GAC1B,IAAS,GAAK,IAAS,KACxB,IAAW,EAAI,EAAM,GAAK,EAAkB,EAAO,CAAC,CACrD,EAAO,OAAS,GAEhB,EAAO,KAAK,EAAK,EAIjB,GAAa,EAAI,EAAK,EAAQ,IAAS,CAGzC,IAAK,IADD,EAAM,EACD,EAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,IAAI,EAAM,EAAU,GAAQ,GACxB,EAAM,EAAW,EAAQ,GAAO,GACpC,GAAO,EACP,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,IACvB,EAAU,EAAI,EAAO,EAAM,GAAG,CAEhC,GAAO,EAGT,MADA,GAAU,GAAS,GAAM,EAClB,GAGL,EAAa,GAAQ,CACvB,KAAM,QAAQ,EAAK,IAMZ,EAAsB,IAAI,WAAW,IAAI,CAAE,EAAI,GAAI,GAAK,EAAG,EAAE,EACpE,EAAoB,GAAK,GAAK,GAAK,EAEnC,EAAoB,GAAK,GAAK,EAE9B,EAAoB,GAAK,GAAK,GAAK,EAGrC,EAAoB,IAAM,GAG1B,EAAoB,IAAM,GAE1B,IAAI,EAAc,CACD,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACrB,CAED,SAAS,EAAkB,EAAa,CACtC,EAAQ,EAAY,EACpB,EAAU,EAAY,EACtB,EAAkB,EAAY,EAC9B,EAAmB,EAAY,EAC/B,EAAgB,EAAY,EAC5B,EAAuB,EAAY,EAGrC,IAAI,EAAO,EAAS,EAAiB,EAAkB,EAAe,EAItE,SAAS,EAAY,EAAa,CAEhC,EAAY,GAAM,CAIf,EAAe,MAAM,OAAO,eAAe,EAAgB,OAAQ,CAAC,QAAW,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+0BA+FivB,CAAC,CAEh1B,IAAI,EAAU,CACZ,EAAK,EACN,CAQD,KAAK,UAAa,GAAS,CACzB,EAAuB,UAAU,EAAgB,EAAK,EAGxD,KAAK,cACH,EAAuB,UAAU,EAAe,CAElD,KAAK,iBACH,KAAK,WAAW,CAAC,KAAM,GAAS,YAAY,YAAY,EAAM,EAAQ,CAAC,CAAC,KAAK,GAAY,CACvF,IAAM,EAAc,EAAS,QAC/B,EAAkB,EAAY,CAC9B,EAAa,EAAY,EACzB,GAAmB,CAEnB,EAAY,EAAY,CACxB,GAAO,EACP,CAIF,KAAK,MAAQ,IAAI,QAAQ,GAAW,CAClC,EAAQ,GACR,CAAC,SAAW,CACZ,KAAK,KAAO,EAAW,OACvB,KAAK,OAAS,EACd,KAAK,KAAO,EACZ,KAAK,eAAiB,EACtB,KAAK,gBAAkB,EACvB,KAAK,aAAe,GACpB,CACK,MCnWP,SAAgB,GAAU,CAsKxB,MAnKA,MAAK,UACI,IAAI,KAAK,yBAAyB,CACtC,YAAY,KAAK,gBAAiB,KAAK,QAAQ,CAC/C,KAAM,GAAW,CAChB,KAAK,QAAU,EAEf,KAAK,YAAc,EACnB,KAAK,eAAiB,EACtB,KAAK,aAAe,EAEpB,KAAK,UAAY,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CAChE,KAAK,YAAc,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CAClE,KAAK,eAAiB,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CACrE,KAAK,gBAAkB,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CACtE,KAAK,iBAAmB,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CACvE,KAAK,iBAAmB,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CAEvE,KAAK,gBAAkB,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CACtE,KAAK,gBAAkB,KAAK,QAAQ,mBAAmB,EAAG,YAAY,CAEtE,KAAK,SAAW,KAAK,QAAQ,KAAK,eAChC,KAAK,UAAU,IACf,KAAK,YAAY,IACjB,KAAK,eAAe,IACpB,KAAK,gBAAgB,IACrB,KAAK,iBAAiB,IACtB,KAAK,iBAAiB,IACtB,KAAK,gBAAgB,IACrB,KAAK,gBAAgB,IACtB,EACD,CAGN,OAAO,eAAe,KAAM,QAAS,CACnC,WAAY,GACZ,QAAW,KAAK,OACjB,CAAC,CAGF,KAAK,WACH,KAAK,MAAM,CACJ,KAAK,OAAO,EAGrB,KAAK,SAAa,CAChB,KAAK,QAAQ,KAAK,gBAAgB,KAAK,SAAS,CAEhD,KAAK,QAAQ,MAAM,EAGrB,KAAK,QAAW,GAAS,CACvB,GAAI,EAAE,aAAgB,YACpB,MAAM,MACJ,kDAAoD,OAAO,EAC5D,CAEH,IAAM,EAAQ,KAAK,QAAQ,mBACzB,EAAK,OACL,WACA,GACD,CACD,EAAM,IAAI,IAAI,EAAK,CAEnB,KAAK,QAAQ,KAAK,aAAa,KAAK,SAAU,EAAM,IAAK,EAAM,IAAI,CAEnE,IAAI,EAAe,EAAE,CACnB,EACE,KAAK,gBAAgB,IAAI,IAC3B,EAAa,KACX,UAAY,KAAK,QAAQ,aAAa,KAAK,gBAAgB,IAAI,GAAG,CACnE,CAEC,KAAK,gBAAgB,IAAI,IAC3B,EAAa,KACX,UAAY,KAAK,QAAQ,aAAa,KAAK,gBAAgB,IAAI,GAAG,CACnE,CAEC,EAAa,SACf,EAAQ,EAAa,KAAK,KAAK,CAC/B,QAAQ,MACN;GAAoC,EAAa,KAAK;GAAO,CAC9D,EAGH,IAAM,EAAS,IAAI,aACjB,KAAK,QAAQ,KAAK,KAClB,KAAK,iBAAiB,IAAI,GAC1B,KAAK,iBAAiB,IAAI,GAC3B,CAEK,EAAU,CACP,QACP,aAAc,KAAK,QAAQ,kBACzB,EACA,KAAK,UAAU,IAAI,GACnB,KAAK,gBAAgB,IAAI,GAC1B,CACD,eAAgB,KAAK,gBAAgB,IAAI,GAC1C,CAMD,OAJA,KAAK,QAAQ,KAAK,KAAK,KAAK,iBAAiB,IAAI,GAAG,CACpD,KAAK,iBAAiB,IAAI,GAAK,EAC/B,KAAK,gBAAgB,IAAI,GAAK,EAEvB,GAGT,KAAK,aAAgB,GAAW,CAC9B,IAAI,EAAgB,EAAE,CACpB,EAAS,EAAE,CACX,EAAgB,EAElB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,IAAI,EAAS,EACP,EAAO,EAAO,GAEpB,KAAO,EAAS,EAAK,QAAQ,CAC3B,IAAM,EAAQ,EAAK,SAAS,EAAQ,EAAS,KAAK,gBAAgB,CAClE,GAAU,EAAM,OAEhB,IAAM,EAAU,KAAK,QAAQ,EAAM,CAEnC,EAAc,KAAK,EAAQ,aAAa,CACxC,GAAiB,EAAQ,eAErB,EAAQ,OACV,KAAK,QAAQ,SACX,EACA,EAAQ,MACR,EAAK,OACL,KAAK,aACL,KAAK,YACL,KAAK,eACN,CAEH,KAAK,aAAe,EAAK,OACzB,KAAK,gBAAkB,EAAQ,eAGjC,KAAK,eAGP,OAAO,KAAK,wBAAwB,4BAClC,EACA,EACA,KAAK,UAAU,IAAI,GACnB,EACA,KAAK,YAAY,IAAI,GACrB,KAAK,eAAe,IAAI,GACzB,EAIH,KAAK,aAAe,EAAQ,YAC5B,KAAK,wBACH,EAAQ,wBAA0B,EACpC,KAAK,gBAAkB,EAAQ,gBAAkB,EACjD,KAAK,QAAU,EAAQ,OAEvB,KAAK,gBAAkB,MAAQ,EAE/B,KAAK,OAAS,KAAK,OAAO,CAEnB,KAGT,MAAa,EAAkB,QAAQ,CAEjC,EAAwB,QAAQ,CAChC,EAAa,QAAQ,CACrB,EAAgB,QAAQ,CACxB,EAA0B,QAAQ,CAClC,EAAe,QAAQ,CACvB,EAAO,QAAQ,CACf,EAAsB,QAAQ,CAEpC,IAAqB,EAArB,KAAiC,CAC/B,aAAc,CACZ,KAAK,SAAY,GAAU,CACzB,GAAI,IAAU,OACZ,MAAU,MACR,yDAA2D,EAC5D,EAIL,IAAI,EAEJ,KAAK,IAAO,CACZ,KAAK,GAAiB,EAAQ,CAGhC,CAAC,IAAQ,CACP,KAAK,GAAgB,EACrB,KAAK,GAAuB,EAC5B,KAAK,aAAe,KAGtB,CAAC,GAAuB,EAAM,CAC5B,GAAI,CAAC,KAAK,cAAgB,EAAK,QAAU,EAAG,CAC1C,IAAI,EAAQ,SAGV,EAAK,KAAO,IACZ,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,KAAO,IAEZ,GAAS,OACT,KAAK,GAAgB,IAErB,GAAS,MACT,KAAK,GAAgB,GAGvB,KAAK,aAAe,IAAIA,EAAY,EAAO,CACzC,QAAS,KAAK,SACd,iBAAkB,GACnB,CAAC,EAIN,CAAC,GAAiB,EAAc,CAC9B,GAAI,KAAK,SAAU,CACjB,IAAM,EAAa,KAAK,SACxB,EAAW,MAAM,SAAW,EAAW,MAAM,CAAC,CAGhD,KAAK,SAAW,IAAI,EACpB,KAAK,OAAS,KAAK,SAAS,MAG9B,CAAC,GAAY,EAAY,CACvB,OAAO,KAAK,SAAS,aAAa,EAAW,IAAK,GAAM,EAAE,IAAS,EAAE,CAAC,CAGxE,CAAC,GAAe,EAAU,CACxB,IAAM,EAAS,EACZ,IAAK,GAAS,EAAK,GAAa,IAAK,GAAM,EAAE,GAAM,CAAC,CACpD,MAAM,CAEH,EAAU,KAAK,SAAS,aAAa,EAAO,CAE5C,EAAU,EAAS,EAAS,OAAS,GAC3C,GAAI,GAAW,EAAQ,GAAa,CAElC,IAAM,EAAgB,KAAK,GAAuB,EAAQ,GAE1D,GAAI,EAAgB,EAAG,CACrB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,YAAY,OAAQ,IAC9C,EAAQ,YAAY,GAAK,EAAQ,YAAY,GAAG,SAC9C,EACA,EAAQ,eAAiB,EAC1B,CAEH,EAAQ,gBAAkB,GAM9B,MAFA,MAAK,IAAwB,EAAQ,eAE9B,EAGT,CAAC,IAA2B,CAC1B,OAAO,EAAuB,gBAAgB,EAAE,CAAE,EAAE,CAAE,EAAG,EAAG,EAAE,CAGhE,IAAI,OAAQ,CACV,OAAO,KAAK,OAGd,MAAM,OAAQ,CAEZ,OADA,KAAK,IAAO,CACL,KAAK,SAAS,OAAO,CAG9B,MAAO,CACL,KAAK,SAAS,MAAM,CAGtB,MAAM,OAAO,EAAU,CAIrB,OAHI,KAAK,KAAkB,GACzB,KAAK,GAAuB,EAAS,CAEhC,KAAK,KAAK,IAAe,CAC9B,GAAG,KAAK,aAAa,WAAW,EAAS,CAC1C,CAAC,CAGJ,MAAM,OAAQ,CACZ,IAAM,EAAU,KAAK,KAAK,IAAe,CAAC,GAAG,KAAK,aAAa,OAAO,CAAC,CAAC,CAGxE,OADA,MAAM,KAAK,OAAO,CACX,EAGT,MAAM,WAAW,EAAU,CACzB,KAAK,GAAuB,EAAS,CAErC,IAAM,EAAU,KAAK,KAAK,IAAe,CACvC,GAAG,KAAK,aAAa,SAAS,EAAS,CACxC,CAAC,CAGF,OADA,MAAM,KAAK,OAAO,CACX,EAGT,MAAM,aAAa,EAAY,CAC7B,OAAO,KAAK,GAAY,EAAW,GC9TjC,EAAN,cAA4B,CAAuB,CACjD,YAAY,EAAS,CACnB,MAAM,EAAS,eAAgB,EAAS,EAAe,CAGzD,MAAM,aAAa,EAAQ,CACzB,OAAO,KAAK,cAAc,eAAgB,EAAO,GAIhC,EAArB,cAAkD,CAAY,CAC5D,aAAc,CACZ,OAAO,CAEP,MAAM,GAAiB,EAAc,CAGvC,MAAM,MAAO,CACX,MAAM,KAAK,SAAS,MAAM,CAG5B,WAAY,CACV,KAAK,SAAS,WAAW,GCtB7B,EAAY,EAAa,cAAc,CACvC,EAAY,EAAsB,uBAAuB"}
@@ -0,0 +1,88 @@
1
+ import { AudioSource } from "@basmilius/apple-common";
2
+
3
+ //#region src/ffmpeg.d.ts
4
+ declare class Ffmpeg implements AudioSource {
5
+ #private;
6
+ readonly duration: number;
7
+ constructor(filePath: string, duration: number, sampleRate?: number, channels?: number, bytesPerChannel?: number);
8
+ start(): Promise<void>;
9
+ reset(): Promise<void>;
10
+ stop(): Promise<void>;
11
+ readFrames(count: number): Promise<Buffer | null>;
12
+ }
13
+ //#endregion
14
+ //#region src/mp3.d.ts
15
+ declare class Mp3 implements AudioSource {
16
+ #private;
17
+ readonly duration: number;
18
+ constructor(buffer: Buffer, duration: number);
19
+ readFrames(count: number): Promise<Buffer | null>;
20
+ reset(): Promise<void>;
21
+ start(): Promise<void>;
22
+ stop(): Promise<void>;
23
+ static fromBuffer(mp3Buffer: Buffer): Promise<Mp3>;
24
+ static fromUrl(url: string): Promise<Mp3>;
25
+ }
26
+ //#endregion
27
+ //#region src/ogg.d.ts
28
+ declare class Ogg implements AudioSource {
29
+ #private;
30
+ readonly duration: number;
31
+ constructor(buffer: Buffer, duration: number);
32
+ readFrames(count: number): Promise<Buffer | null>;
33
+ reset(): Promise<void>;
34
+ start(): Promise<void>;
35
+ stop(): Promise<void>;
36
+ static fromBuffer(oggBuffer: Buffer): Promise<Ogg>;
37
+ static fromUrl(url: string): Promise<Ogg>;
38
+ }
39
+ //#endregion
40
+ //#region src/pcm.d.ts
41
+ declare class Pcm implements AudioSource {
42
+ #private;
43
+ readonly duration: number;
44
+ constructor(pcmBuffer: Buffer, sampleRate?: number);
45
+ readFrames(count: number): Promise<Buffer | null>;
46
+ reset(): Promise<void>;
47
+ start(): Promise<void>;
48
+ stop(): Promise<void>;
49
+ }
50
+ //#endregion
51
+ //#region src/sineWave.d.ts
52
+ declare class SineWave implements AudioSource {
53
+ #private;
54
+ readonly duration: number;
55
+ constructor(durationSeconds: number, frequency?: number, sampleRate?: number, channels?: number, bytesPerChannel?: number);
56
+ readFrames(count: number): Promise<Buffer | null>;
57
+ reset(): Promise<void>;
58
+ start(): Promise<void>;
59
+ stop(): Promise<void>;
60
+ }
61
+ //#endregion
62
+ //#region src/url.d.ts
63
+ declare class Url implements AudioSource {
64
+ #private;
65
+ readonly duration: number;
66
+ constructor(buffer: Buffer, duration: number);
67
+ readFrames(count: number): Promise<Buffer | null>;
68
+ reset(): Promise<void>;
69
+ start(): Promise<void>;
70
+ stop(): Promise<void>;
71
+ static fromUrl(url: string): Promise<Url>;
72
+ }
73
+ //#endregion
74
+ //#region src/wav.d.ts
75
+ declare class Wav implements AudioSource {
76
+ #private;
77
+ readonly duration: number;
78
+ constructor(buffer: Buffer, duration: number);
79
+ readFrames(count: number): Promise<Buffer | null>;
80
+ reset(): Promise<void>;
81
+ start(): Promise<void>;
82
+ stop(): Promise<void>;
83
+ static fromBuffer(wavBuffer: Buffer): Promise<Wav>;
84
+ static fromUrl(url: string): Promise<Wav>;
85
+ }
86
+ //#endregion
87
+ export { Ffmpeg, Mp3, Ogg, Pcm, SineWave, Url, Wav };
88
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/ffmpeg.ts","../src/mp3.ts","../src/ogg.ts","../src/pcm.ts","../src/sineWave.ts","../src/url.ts","../src/wav.ts"],"mappings":";;;cAIqB,MAAA,YAAkB,WAAA;EAAA;WAC1B,QAAA;EAWT,WAAA,CAAY,QAAA,UAAkB,QAAA,UAAkB,UAAA,WAA0C,QAAA,WAAqC,eAAA;EAQ/H,KAAA,CAAA,GAAe,OAAA;EA6Bf,KAAA,CAAA,GAAe,OAAA;EAGf,IAAA,CAAA,GAAc,OAAA;EAgBd,UAAA,CAAiB,KAAA,WAAgB,OAAA,CAAQ,MAAA;AAAA;;;cCpExB,GAAA,YAAe,WAAA;EAAA;WACvB,QAAA;EAKT,WAAA,CAAY,MAAA,EAAQ,MAAA,EAAQ,QAAA;EAM5B,UAAA,CAAiB,KAAA,WAAgB,OAAA,CAAQ,MAAA;EAYzC,KAAA,CAAA,GAAe,OAAA;EAIf,KAAA,CAAA,GAAe,OAAA;EAGf,IAAA,CAAA,GAAc,OAAA;EAAA,OAGD,UAAA,CAAW,SAAA,EAAW,MAAA,GAAS,OAAA,CAAQ,GAAA;EAAA,OAWvC,OAAA,CAAQ,GAAA,WAAc,OAAA,CAAQ,GAAA;AAAA;;;cC7C1B,GAAA,YAAe,WAAA;EAAA;WACvB,QAAA;EAKT,WAAA,CAAY,MAAA,EAAQ,MAAA,EAAQ,QAAA;EAM5B,UAAA,CAAiB,KAAA,WAAgB,OAAA,CAAQ,MAAA;EAYzC,KAAA,CAAA,GAAe,OAAA;EAIf,KAAA,CAAA,GAAe,OAAA;EAGf,IAAA,CAAA,GAAc,OAAA;EAAA,OAGD,UAAA,CAAW,SAAA,EAAW,MAAA,GAAS,OAAA,CAAQ,GAAA;EAAA,OAWvC,OAAA,CAAQ,GAAA,WAAc,OAAA,CAAQ,GAAA;AAAA;;;cC9C1B,GAAA,YAAe,WAAA;EAAA;WACvB,QAAA;EAKT,WAAA,CAAY,SAAA,EAAW,MAAA,EAAQ,UAAA;EAM/B,UAAA,CAAiB,KAAA,WAAgB,OAAA,CAAQ,MAAA;EAYzC,KAAA,CAAA,GAAe,OAAA;EAIf,KAAA,CAAA,GAAe,OAAA;EAGf,IAAA,CAAA,GAAc,OAAA;AAAA;;;cC/BG,QAAA,YAAoB,WAAA;EAAA;WAC5B,QAAA;EAKT,WAAA,CAAY,eAAA,UAAyB,SAAA,WAAyB,UAAA,WAA0C,QAAA,WAAqC,eAAA;EAkC7I,UAAA,CAAiB,KAAA,WAAgB,OAAA,CAAQ,MAAA;EAYzC,KAAA,CAAA,GAAe,OAAA;EAIf,KAAA,CAAA,GAAe,OAAA;EAGf,IAAA,CAAA,GAAc,OAAA;AAAA;;;cC1DG,GAAA,YAAe,WAAA;EAAA;WACvB,QAAA;EAKT,WAAA,CAAY,MAAA,EAAQ,MAAA,EAAQ,QAAA;EAM5B,UAAA,CAAiB,KAAA,WAAgB,OAAA,CAAQ,MAAA;EAYzC,KAAA,CAAA,GAAe,OAAA;EAIf,KAAA,CAAA,GAAe,OAAA;EAGf,IAAA,CAAA,GAAc,OAAA;EAAA,OAGD,OAAA,CAAQ,GAAA,WAAc,OAAA,CAAQ,GAAA;AAAA;;;cClC1B,GAAA,YAAe,WAAA;EAAA;WACvB,QAAA;EAKT,WAAA,CAAY,MAAA,EAAQ,MAAA,EAAQ,QAAA;EAM5B,UAAA,CAAiB,KAAA,WAAgB,OAAA,CAAQ,MAAA;EAYzC,KAAA,CAAA,GAAe,OAAA;EAIf,KAAA,CAAA,GAAe,OAAA;EAGf,IAAA,CAAA,GAAc,OAAA;EAAA,OAGD,UAAA,CAAW,SAAA,EAAW,MAAA,GAAS,OAAA,CAAQ,GAAA;EAAA,OAWvC,OAAA,CAAQ,GAAA,WAAc,OAAA,CAAQ,GAAA;AAAA"}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./chunk-Bwx8J3ba.mjs";import{spawn as t}from"node:child_process";const n=44100;var r=class{duration;#e;#t;#n;#r;#i=null;#a=Buffer.alloc(0);#o=!1;#s=[];constructor(e,t,r=n,i=2,a=2){this.#t=e,this.duration=t,this.#n=r,this.#r=i,this.#e=i*a}async start(){this.#i=t(`ffmpeg`,[`-i`,this.#t,`-f`,`s16be`,`-acodec`,`pcm_s16be`,`-ar`,String(this.#n),`-ac`,String(this.#r),`-`],{stdio:[`ignore`,`pipe`,`ignore`]}),this.#i.stdout.on(`data`,e=>{this.#a=Buffer.concat([this.#a,e]),this.#c()}),this.#i.stdout.on(`end`,()=>{this.#o=!0,this.#c()}),this.#i.on(`error`,e=>{console.error(`ffmpeg error:`,e),this.#o=!0,this.#c()})}async reset(){}async stop(){if(this.#i){for(;this.#s.length>0;)this.#s.shift()(null);this.#i.stdout?.removeAllListeners(),this.#i.removeAllListeners(),this.#i.kill(),this.#i=null}}async readFrames(e){let t=e*this.#e;if(this.#a.length>=t){let e=this.#a.subarray(0,t);return this.#a=this.#a.subarray(t),e}if(this.#o){if(this.#a.length>0){let e=this.#a;return this.#a=Buffer.alloc(0),e}return null}return new Promise(e=>{this.#s.push(e)})}#c(){for(;this.#s.length>0;){let e=352*this.#e;if(this.#a.length>=e){let t=this.#a.subarray(0,e);this.#a=this.#a.subarray(e),this.#s.shift()(t)}else if(this.#o)if(this.#a.length>0){let e=this.#a;this.#a=Buffer.alloc(0),this.#s.shift()(e)}else this.#s.shift()(null);else break}}};function i(e){return e[0]===73&&e[1]===68&&e[2]===51||e[0]===255&&(e[1]&224)==224}function a(e){return e.length>4&&e.toString(`ascii`,0,4)===`OggS`}function o(e){return e.length>12&&e.toString(`ascii`,0,4)===`RIFF`&&e.toString(`ascii`,8,12)===`WAVE`}function s(e,t){let{inputChannels:r,inputSampleRate:i,inputBitsPerSample:a,inputEndian:o}=t,s=a/8,l=r*s,u=Math.floor(e.length/l),d=Math.floor(u*n/i),f=Buffer.alloc(d*2*2);for(let t=0;t<d;t++){let d=t*i/n,p=Math.floor(d),m=d-p;for(let n=0;n<2;n++){let i=Math.min(n,r-1),d=c(e,p,i,l,s,a,o),h=d+((p+1<u?c(e,p+1,i,l,s,a,o):d)-d)*m,g=(t*2+n)*2;f.writeInt16BE(Math.round(Math.max(-32768,Math.min(32767,h))),g)}}return f}function c(e,t,n,r,i,a,o){let s=t*r+n*i;if(s+i>e.length)return 0;if(a===16)return o===`little`?e.readInt16LE(s):e.readInt16BE(s);if(a===8)return(e[s]-128)*256;if(a===24){let t;return t=o===`little`?e[s]|e[s+1]<<8|e[s+2]<<16:e[s]<<16|e[s+1]<<8|e[s+2],t&8388608&&(t|=-16777216),t/256}return a===32?(o===`little`?e.readInt32LE(s):e.readInt32BE(s))/65536:0}function l(e){if(e){if(e=new Uint8Array(e.buffer||e),d(e))return`wav`;if(u(e))return`mp3`;if(p(e))return`flac`;if(m(e))return`m4a`;if(h(e))return`opus`;if(f(e))return`oga`;if(g(e))return`qoa`}}function u(e){if(!(!e||e.length<3))return e[0]===73&&e[1]===68&&e[2]===51||e[0]===255&&(e[1]&224)==224||e[0]===84&&e[1]===65&&e[2]===71}function d(e){if(!(!e||e.length<12))return e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===65&&e[10]===86&&e[11]===69}function f(e){if(!(!e||e.length<4))return e[0]===79&&e[1]===103&&e[2]===103&&e[3]===83}function p(e){if(!(!e||e.length<4))return e[0]===102&&e[1]===76&&e[2]===97&&e[3]===67}function m(e){if(!(!e||e.length<8))return e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112||e[0]===77&&e[1]===52&&e[2]===65&&e[3]===32}function h(e){if(!(!e||e.length<36))return e[0]===79&&e[1]===103&&e[2]===103&&e[3]===83&&e[28]===79&&e[29]===112&&e[30]===117&&e[31]===115&&e[32]===72&&e[33]===101&&e[34]===97&&e[35]===100}function g(e){if(e)return e[0]===113&&e[1]===111&&e[2]===97&&e[3]===102}var _=class{constructor(e){if(!e)throw TypeError(`options argument is required`);if(!e.sampleRate)throw TypeError(`options.sampleRate is required`);if(e.sampleRate<3e3||e.sampleRate>768e3)throw TypeError(`options.sampleRate must be within 3000..768000`);if(!e.length)throw TypeError(`options.length must be more than 0`);this.sampleRate=e.sampleRate,this.numberOfChannels=e.numberOfChannels||1,this.length=e.length|0,this.duration=this.length/this.sampleRate,this._data=new Float32Array(this.length*this.numberOfChannels),this._channelData=[];for(let e=0;e<this.numberOfChannels;e++)this._channelData.push(this._data.subarray(e*this.length,(e+1)*this.length))}getChannelData(e){if(e>=this.numberOfChannels||e<0||e==null)throw Error(`Cannot getChannelData: channel number (`+e+`) exceeds number of channels (`+this.numberOfChannels+`)`);return this._channelData[e]}copyFromChannel(e,t,n){n??=0;for(var r=this._channelData[t],i=n,a=0;i<this.length&&a<e.length;i++,a++)e[a]=r[i]}copyToChannel(e,t,n){var r=this._channelData[t];n||=0;for(var i=n,a=0;i<this.length&&a<e.length;i++,a++)r[i]=e[a]}};const v=globalThis.AudioBuffer||_;async function y(e){if(!e&&!(e.length||e.buffer))throw Error(`Bad decode target`);e=new Uint8Array(e.buffer||e);let t=l(e);if(!t)throw Error(`Cannot detect audio format`);if(!b[t])throw Error(`Missing decoder for `+t+` format`);return b[t](e)}const b={async oga(e){let{decoder:t}=b.oga;if(t)await t.reset();else{let{OggVorbisDecoder:e}=await import(`./ogg-vorbis-Di1d0ou7.mjs`);await(b.oga.decoder=t=new e).ready}return e&&x(await t.decodeFile(e))},async mp3(e){let{decoder:t}=b.mp3;if(t)await t.reset();else{let{MPEGDecoder:e}=await import(`./mpg123-decoder-Dq9WfDuS.mjs`);await(b.mp3.decoder=t=new e).ready}return e&&x(await t.decode(e))},async flac(e){let{decoder:t}=b.flac;if(t)await t.reset();else{let{FLACDecoder:e}=await import(`./flac-HeRh6IRl.mjs`);await(b.flac.decoder=t=new e).ready}return e&&x(await t.decode(e))},async wav(t){let{decode:n}=b.wav;if(!n){let t=await import(`./node-wav-BofhZIPC.mjs`).then(t=>e(t.default,1));n=b.wav.decode=t.default.decode}return t&&x(await n(t))},async qoa(e){let{decode:t}=b.qoa;return t||(b.qoa.decode=t=(await import(`./qoa-format-CAiNgsjx.mjs`)).decode),e&&x(await t(e))}};function x({channelData:e,sampleRate:t}){let n=new v({sampleRate:t,length:e[0].length,numberOfChannels:e.length});for(let t=0;t<e.length;t++)n.getChannelData(t).set(e[t]);return n}async function S(e){let t=await y(e),r=t.numberOfChannels,i=t.length,a=t.sampleRate,o=Buffer.alloc(i*2*2);for(let e=0;e<i;e++)for(let n=0;n<2;n++){let i=Math.min(n,r-1),a=t.getChannelData(i),s=Math.round(a[e]*32767),c=Math.max(-32768,Math.min(32767,s));o.writeInt16BE(c,(e*2+n)*2)}return a===n?o:s(o,{inputChannels:2,inputSampleRate:a,inputBitsPerSample:16,inputEndian:`big`})}var C=class e{duration;#e;#t;#n=0;constructor(e,t){this.#e=e,this.#t=4,this.duration=t}async readFrames(e){if(this.#n>=this.#e.length)return null;let t=e*this.#t,n=this.#e.subarray(this.#n,this.#n+t);return this.#n+=t,n.length>0?n:null}async reset(){this.#n=0}async start(){}async stop(){}static async fromBuffer(t){if(!i(t))throw Error(`Invalid MP3 file`);let r=await S(t);return new e(r,r.length/4/n)}static async fromUrl(t){let n=await(await fetch(t)).arrayBuffer();return e.fromBuffer(Buffer.from(n))}},w=class e{duration;#e;#t;#n=0;constructor(e,t){this.#e=e,this.#t=4,this.duration=t}async readFrames(e){if(this.#n>=this.#e.length)return null;let t=e*this.#t,n=this.#e.subarray(this.#n,this.#n+t);return this.#n+=t,n.length>0?n:null}async reset(){this.#n=0}async start(){}async stop(){}static async fromBuffer(t){if(!a(t))throw Error(`Invalid OGG file`);let r=await S(t);return new e(r,r.length/4/n)}static async fromUrl(t){let n=await(await fetch(t)).arrayBuffer();return e.fromBuffer(Buffer.from(n))}},T=class{duration;#e;#t;#n=0;constructor(e,t=n){this.#e=e,this.#t=4,this.duration=e.length/this.#t/t}async readFrames(e){if(this.#n>=this.#e.length)return null;let t=e*this.#t,n=this.#e.subarray(this.#n,this.#n+t);return this.#n+=t,n.length>0?n:null}async reset(){this.#n=0}async start(){}async stop(){}},E=class{duration;#e;#t;#n=0;constructor(e,t=440,r=n,i=2,a=2){this.duration=e,this.#t=i*a,this.#e=this.#r(r,i,a,e,t)}#r(e,t,n,r,i){let a=e*r,o=Buffer.alloc(a*t*n),s=Math.floor(e*.05);for(let r=0;r<a;r++){let c=Math.sin(2*Math.PI*i*r/e),l=1;r<s?l=r/s:r>=a-s&&(l=(a-r)/s);let u=Math.round(c*l*32767);for(let e=0;e<t;e++){let i=(r*t+e)*n;o.writeInt16BE(u,i)}}return o}async readFrames(e){if(this.#n>=this.#e.length)return null;let t=e*this.#t,n=this.#e.subarray(this.#n,this.#n+t);return this.#n+=t,n.length>0?n:null}async reset(){this.#n=0}async start(){}async stop(){}},D=class e{duration;#e;#t;#n=0;constructor(e,t){this.#e=e,this.#t=4,this.duration=t}async readFrames(e){if(this.#n>=this.#e.length)return null;let t=e*this.#t,n=this.#e.subarray(this.#n,this.#n+t);return this.#n+=t,n.length>0?n:null}async reset(){this.#n=0}async start(){}async stop(){}static async fromUrl(t){let r=await(await fetch(t)).arrayBuffer(),s=Buffer.from(r),c;if(i(s)||a(s)||o(s))c=await S(s);else throw Error(`Unsupported audio format. Please use WAV or MP3.`);let l=c.length/4/n;return new e(c,l)}},O=class e{duration;#e;#t;#n=0;constructor(e,t){this.#e=e,this.#t=4,this.duration=t}async readFrames(e){if(this.#n>=this.#e.length)return null;let t=e*this.#t,n=this.#e.subarray(this.#n,this.#n+t);return this.#n+=t,n.length>0?n:null}async reset(){this.#n=0}async start(){}async stop(){}static async fromBuffer(t){if(!o(t))throw Error(`Invalid WAV file`);let r=await S(t);return new e(r,r.length/4/n)}static async fromUrl(t){let n=await(await fetch(t)).arrayBuffer();return e.fromBuffer(Buffer.from(n))}};export{r as Ffmpeg,C as Mp3,w as Ogg,T as Pcm,E as SineWave,D as Url,O as Wav};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["#frameSize","#filePath","#sampleRate","#channels","#ffmpeg","#buffer","#processQueue","#ended","#resolveQueue","isMp3","isOgg","isWav","AudioBuffer","AudioBufferShim","getType","#buffer","#frameSize","#offset","isMp3","decode","#buffer","#frameSize","#offset","isOgg","decode","#buffer","#frameSize","#offset","#buffer","#frameSize","#generateSineWave","#offset","#buffer","#frameSize","#offset","isMp3","isOgg","isWav","decode","#buffer","#frameSize","#offset","isWav","decode"],"sources":["../src/const.ts","../src/ffmpeg.ts","../src/decoder/codec.ts","../src/decoder/pcm.ts","../../../node_modules/.bun/audio-type@2.2.1/node_modules/audio-type/audio-type.js","../../../node_modules/.bun/audio-buffer@5.0.0/node_modules/audio-buffer/index.js","../src/decoder/audioDecode.ts","../src/decoder/decode.ts","../src/mp3.ts","../src/ogg.ts","../src/pcm.ts","../src/sineWave.ts","../src/url.ts","../src/wav.ts"],"sourcesContent":["export const DEFAULT_BYTES_PER_CHANNEL = 2;\nexport const DEFAULT_CHANNELS = 2;\nexport const DEFAULT_SAMPLE_RATE = 44100;\nexport const FFMPEG_FRAMES_PER_PACKET = 352;\n","import { type ChildProcess, spawn } from 'node:child_process';\nimport type { AudioSource } from '@basmilius/apple-common';\nimport { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE, FFMPEG_FRAMES_PER_PACKET } from './const';\n\nexport default class Ffmpeg implements AudioSource {\n readonly duration: number;\n readonly #frameSize: number;\n readonly #filePath: string;\n readonly #sampleRate: number;\n readonly #channels: number;\n\n #ffmpeg: ChildProcess | null = null;\n #buffer: Buffer = Buffer.alloc(0);\n #ended: boolean = false;\n #resolveQueue: Array<(value: Buffer | null) => void> = [];\n\n constructor(filePath: string, duration: number, sampleRate: number = DEFAULT_SAMPLE_RATE, channels: number = DEFAULT_CHANNELS, bytesPerChannel: number = DEFAULT_BYTES_PER_CHANNEL) {\n this.#filePath = filePath;\n this.duration = duration;\n this.#sampleRate = sampleRate;\n this.#channels = channels;\n this.#frameSize = channels * bytesPerChannel;\n }\n\n async start(): Promise<void> {\n this.#ffmpeg = spawn('ffmpeg', [\n '-i', this.#filePath,\n '-f', 's16be',\n '-acodec', 'pcm_s16be',\n '-ar', String(this.#sampleRate),\n '-ac', String(this.#channels),\n '-'\n ], {\n stdio: ['ignore', 'pipe', 'ignore']\n });\n\n this.#ffmpeg.stdout!.on('data', (chunk: Buffer) => {\n this.#buffer = Buffer.concat([this.#buffer, chunk]);\n this.#processQueue();\n });\n\n this.#ffmpeg.stdout!.on('end', () => {\n this.#ended = true;\n this.#processQueue();\n });\n\n this.#ffmpeg.on('error', (err) => {\n console.error('ffmpeg error:', err);\n this.#ended = true;\n this.#processQueue();\n });\n }\n\n async reset(): Promise<void> {\n }\n\n async stop(): Promise<void> {\n if (!this.#ffmpeg) {\n return;\n }\n\n while (this.#resolveQueue.length > 0) {\n this.#resolveQueue.shift()!(null);\n }\n\n this.#ffmpeg.stdout?.removeAllListeners();\n this.#ffmpeg.removeAllListeners();\n\n this.#ffmpeg.kill();\n this.#ffmpeg = null;\n }\n\n async readFrames(count: number): Promise<Buffer | null> {\n const bytesNeeded = count * this.#frameSize;\n\n if (this.#buffer.length >= bytesNeeded) {\n const chunk = this.#buffer.subarray(0, bytesNeeded);\n this.#buffer = this.#buffer.subarray(bytesNeeded);\n return chunk;\n }\n\n if (this.#ended) {\n if (this.#buffer.length > 0) {\n const chunk = this.#buffer;\n this.#buffer = Buffer.alloc(0);\n return chunk;\n }\n return null;\n }\n\n return new Promise((resolve) => {\n this.#resolveQueue.push(resolve);\n });\n }\n\n #processQueue(): void {\n while (this.#resolveQueue.length > 0) {\n const bytesNeeded = FFMPEG_FRAMES_PER_PACKET * this.#frameSize;\n\n if (this.#buffer.length >= bytesNeeded) {\n const chunk = this.#buffer.subarray(0, bytesNeeded);\n this.#buffer = this.#buffer.subarray(bytesNeeded);\n this.#resolveQueue.shift()!(chunk);\n } else if (this.#ended) {\n if (this.#buffer.length > 0) {\n const chunk = this.#buffer;\n this.#buffer = Buffer.alloc(0);\n this.#resolveQueue.shift()!(chunk);\n } else {\n this.#resolveQueue.shift()!(null);\n }\n } else {\n break;\n }\n }\n }\n}\n","export function isMp3(buffer: Buffer): boolean {\n return (buffer[0] === 0x49 && buffer[1] === 0x44 && buffer[2] === 0x33) // ID3v2 tag\n || (buffer[0] === 0xFF && (buffer[1] & 0xE0) === 0xE0); // MP3 frame sync\n}\n\nexport function isOgg(buffer: Buffer): boolean {\n return buffer.length > 4 && buffer.toString('ascii', 0, 4) === 'OggS';\n}\n\nexport function isWav(buffer: Buffer): boolean {\n return buffer.length > 12\n && buffer.toString('ascii', 0, 4) === 'RIFF'\n && buffer.toString('ascii', 8, 12) === 'WAVE';\n}\n","import { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from '../const';\n\nexport function convertPcm(input: Buffer, options: ConvertPcmOptions): Buffer {\n const {inputChannels, inputSampleRate, inputBitsPerSample, inputEndian} = options;\n const bytesPerSample = inputBitsPerSample / 8;\n const inputFrameSize = inputChannels * bytesPerSample;\n const inputFrames = Math.floor(input.length / inputFrameSize);\n\n const outputFrames = Math.floor(inputFrames * DEFAULT_SAMPLE_RATE / inputSampleRate);\n const output = Buffer.alloc(outputFrames * DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL);\n\n for (let i = 0; i < outputFrames; i++) {\n const srcPos = (i * inputSampleRate) / DEFAULT_SAMPLE_RATE;\n const srcIndex = Math.floor(srcPos);\n const srcFrac = srcPos - srcIndex;\n\n for (let ch = 0; ch < DEFAULT_CHANNELS; ch++) {\n const inputCh = Math.min(ch, inputChannels - 1);\n\n const sample1 = readSample(input, srcIndex, inputCh, inputFrameSize, bytesPerSample, inputBitsPerSample, inputEndian);\n const sample2 = srcIndex + 1 < inputFrames\n ? readSample(input, srcIndex + 1, inputCh, inputFrameSize, bytesPerSample, inputBitsPerSample, inputEndian)\n : sample1;\n\n const sample = sample1 + (sample2 - sample1) * srcFrac;\n\n const outputOffset = (i * DEFAULT_CHANNELS + ch) * DEFAULT_BYTES_PER_CHANNEL;\n output.writeInt16BE(Math.round(Math.max(-32768, Math.min(32767, sample))), outputOffset);\n }\n }\n\n return output;\n}\n\nfunction readSample(buffer: Buffer, frame: number, channel: number, frameSize: number, bytesPerSample: number, bitsPerSample: number, endian: 'little' | 'big'): number {\n const offset = frame * frameSize + channel * bytesPerSample;\n\n if (offset + bytesPerSample > buffer.length) return 0;\n\n if (bitsPerSample === 16) {\n return endian === 'little'\n ? buffer.readInt16LE(offset)\n : buffer.readInt16BE(offset);\n }\n\n if (bitsPerSample === 8) {\n return (buffer[offset] - 128) * 256;\n }\n\n if (bitsPerSample === 24) {\n let value: number;\n\n if (endian === 'little') {\n value = buffer[offset] | (buffer[offset + 1] << 8) | (buffer[offset + 2] << 16);\n } else {\n value = (buffer[offset] << 16) | (buffer[offset + 1] << 8) | buffer[offset + 2];\n }\n if (value & 0x800000) {\n value |= ~0xFFFFFF;\n }\n\n return value / 256;\n }\n\n if (bitsPerSample === 32) {\n const value = endian === 'little'\n ? buffer.readInt32LE(offset)\n : buffer.readInt32BE(offset);\n\n return value / 65536;\n }\n\n return 0;\n}\n\ntype ConvertPcmOptions = {\n readonly inputChannels: number;\n readonly inputSampleRate: number;\n readonly inputBitsPerSample: number;\n readonly inputEndian: 'little' | 'big';\n};\n","export default function audioType (buf) {\n\tif (!buf) return;\n\n\tbuf = new Uint8Array(buf.buffer || buf)\n\n\tif (isWav(buf)) return 'wav';\n\tif (isMp3(buf)) return 'mp3';\n\tif (isFlac(buf)) return 'flac';\n\tif (isM4a(buf)) return 'm4a';\n\tif (isOpus(buf)) return 'opus'; // overlaps with ogg, so must come first\n\tif (isOgg(buf)) return 'oga';\n\tif (isQoa(buf)) return 'qoa';\n};\n\nexport function isMp3 (buf) {\n\tif (!buf || buf.length < 3) return\n\n\treturn (buf[0] === 0x49 && buf[1] === 0x44 && buf[2] === 0x33) || // id3\n\t\t( buf[0] === 0xff && (buf[1] & 0xe0) === 0xe0 ) || // no tag\n\t\t( buf[0] === 0x54 && buf[1] === 0x41 && buf[2] === 0x47) // 'TAG'\n};\n\nexport function isWav(buf) {\n\tif (!buf || buf.length < 12) return\n\n\treturn buf[0] === 82 &&\n\t\tbuf[1] === 73 &&\n\t\tbuf[2] === 70 &&\n\t\tbuf[3] === 70 &&\n\t\tbuf[8] === 87 &&\n\t\tbuf[9] === 65 &&\n\t\tbuf[10] === 86 &&\n\t\tbuf[11] === 69;\n}\n\nexport function isOgg(buf) {\n\tif (!buf || buf.length < 4) return;\n\n\treturn buf[0] === 79 &&\n\t\tbuf[1] === 103 &&\n\t\tbuf[2] === 103 &&\n\t\tbuf[3] === 83;\n}\n\nexport function isFlac(buf) {\n\tif (!buf || buf.length < 4) return;\n\n\treturn buf[0] === 102 &&\n\t\tbuf[1] === 76 &&\n\t\tbuf[2] === 97 &&\n\t\tbuf[3] === 67;\n}\n\nexport function isM4a(buf) {\n\tif (!buf || buf.length < 8) return;\n\n\treturn (buf[4] === 102 &&\n\t\tbuf[5] === 116 &&\n\t\tbuf[6] === 121 &&\n\t\tbuf[7] === 112) || (\n\t\t\tbuf[0] === 77 &&\n\t\t\tbuf[1] === 52 &&\n\t\t\tbuf[2] === 65 &&\n\t\t\tbuf[3] === 32\n\t\t);\n}\n\nexport function isOpus(buf) {\n\tif (!buf || buf.length < 36) return\n\n\t// Bytes 0 to 3: detect general OGG (OPUS is OGG)\n\t// Bytes 28 to 35: detect OPUS\n\treturn buf[0] === 79 &&\n\t\tbuf[1] === 103 &&\n\t\tbuf[2] === 103 &&\n\t\tbuf[3] === 83 &&\n\t\tbuf[28] === 79 &&\n\t\tbuf[29] === 112 &&\n\t\tbuf[30] === 117 &&\n\t\tbuf[31] === 115 &&\n\t\tbuf[32] === 72 &&\n\t\tbuf[33] === 101 &&\n\t\tbuf[34] === 97 &&\n\t\tbuf[35] === 100;\n}\n\nexport function isQoa(buf) {\n\tif (!buf) return\n\treturn (buf[0] === 0x71 && buf[1] === 0x6f && buf[2] === 0x61 && buf[3] === 0x66)\n}","/**\n * AudioBuffer class\n */\nexport default class AudioBuffer {\n\t/**\n\t * Create AudioBuffer instance.\n\t * @constructor\n\t * @param {Object} options - buffer init options.\n\t * @param {number} options.length - buffer length in samples.\n\t * @param {number} options.sampleRate - buffer sample rate.\n\t * @param {number} options.numberOfChannels - number of channels.\n\t */\n\tconstructor(options) {\n\t\tif (!options) throw TypeError('options argument is required')\n\t\tif (!options.sampleRate) throw TypeError('options.sampleRate is required')\n\t\tif (options.sampleRate < 3000 || options.sampleRate > 768000) throw TypeError('options.sampleRate must be within 3000..768000')\n\t\tif (!options.length) throw TypeError('options.length must be more than 0')\n\n\t\tthis.sampleRate = options.sampleRate\n\t\tthis.numberOfChannels = options.numberOfChannels || 1\n\t\tthis.length = options.length | 0\n\t\tthis.duration = this.length / this.sampleRate\n\n\t\t//data is stored as a planar sequence\n\t\tthis._data = new Float32Array(this.length * this.numberOfChannels)\n\n\t\t//channels data is cached as subarrays\n\t\tthis._channelData = []\n\t\tfor (let c = 0; c < this.numberOfChannels; c++) {\n\t\t\tthis._channelData.push(this._data.subarray(c * this.length, (c+1) * this.length))\n\t\t}\n\t}\n\n\t/**\n\t * Return data associated with the channel.\n\t * @param {number} channel - Channel index, starting from 0.\n\t * @return {Float32Array} Array containing the data.\n\t */\n\tgetChannelData (channel) {\n\t\tif (channel >= this.numberOfChannels || channel < 0 || channel == null) throw Error('Cannot getChannelData: channel number (' + channel + ') exceeds number of channels (' + this.numberOfChannels + ')');\n\n\t\treturn this._channelData[channel]\n\t}\n\n\n\t/**\n\t * Place data to the destination buffer, starting from the position.\n\t * @param {Float32Array} destination - Destination array to write data to.\n\t * @param {number} channelNumber - Channel to take data from.\n\t * @param {number} startInChannel - Data offset in channel to read from.\n\t */\n\tcopyFromChannel (destination, channelNumber, startInChannel) {\n\t\tif (startInChannel == null) startInChannel = 0;\n\t\tvar data = this._channelData[channelNumber]\n\t\tfor (var i = startInChannel, j = 0; i < this.length && j < destination.length; i++, j++) {\n\t\t\tdestination[j] = data[i];\n\t\t}\n\t}\n\n\n\t/**\n\t * Place data from the source to the channel, starting (in self) from the position.\n\t * @param {Float32Array | Array} source - source array to read data from.\n\t * @param {number} channelNumber - channel index to copy data to.\n\t * @param {number} startInChannel - offset in channel to copy data to.\n\t */\n\tcopyToChannel (source, channelNumber, startInChannel) {\n\t\tvar data = this._channelData[channelNumber]\n\n\t\tif (!startInChannel) startInChannel = 0;\n\n\t\tfor (var i = startInChannel, j = 0; i < this.length && j < source.length; i++, j++) {\n\t\t\tdata[i] = source[j];\n\t\t}\n\t}\n}\n","// @ts-nocheck\nimport getType from 'audio-type';\nimport AudioBufferShim from 'audio-buffer';\n\nconst AudioBuffer = globalThis.AudioBuffer || AudioBufferShim;\n\nexport default async function audioDecode(buf) {\n if (!buf && !(buf.length || buf.buffer)) throw Error('Bad decode target');\n buf = new Uint8Array(buf.buffer || buf);\n\n let type = getType(buf);\n\n if (!type) throw Error('Cannot detect audio format');\n\n if (!decoders[type]) throw Error('Missing decoder for ' + type + ' format');\n\n return decoders[type](buf);\n};\n\nexport const decoders = {\n async oga(buf) {\n let {decoder} = decoders.oga;\n if (!decoder) {\n let {OggVorbisDecoder} = await import('@wasm-audio-decoders/ogg-vorbis');\n await (decoders.oga.decoder = decoder = new OggVorbisDecoder()).ready;\n } else await decoder.reset();\n return buf && createBuffer(await decoder.decodeFile(buf));\n },\n async mp3(buf) {\n let {decoder} = decoders.mp3;\n if (!decoder) {\n const {MPEGDecoder} = await import('mpg123-decoder');\n await (decoders.mp3.decoder = decoder = new MPEGDecoder()).ready;\n } else await decoder.reset();\n return buf && createBuffer(await decoder.decode(buf));\n },\n async flac(buf) {\n let {decoder} = decoders.flac;\n if (!decoder) {\n const {FLACDecoder} = await import('@wasm-audio-decoders/flac');\n await (decoders.flac.decoder = decoder = new FLACDecoder()).ready;\n } else await decoder.reset();\n return buf && createBuffer(await decoder.decode(buf));\n },\n // async opus(buf) {\n // let {decoder} = decoders.opus;\n // if (!decoder) {\n // const {OggOpusDecoder} = await import('ogg-opus-decoder');\n // await (decoders.opus.decoder = decoder = new OggOpusDecoder()).ready;\n // } else await decoder.reset();\n // return buf && createBuffer(await decoder.decodeFile(buf));\n // },\n async wav(buf) {\n let {decode} = decoders.wav;\n if (!decode) {\n let module = await import('node-wav');\n decode = decoders.wav.decode = module.default.decode;\n }\n return buf && createBuffer(await decode(buf));\n },\n async qoa(buf) {\n let {decode} = decoders.qoa;\n if (!decode) {\n decoders.qoa.decode = decode = (await import('qoa-format')).decode;\n }\n return buf && createBuffer(await decode(buf));\n }\n};\n\nfunction createBuffer({channelData, sampleRate}) {\n let audioBuffer = new AudioBuffer({\n sampleRate,\n length: channelData[0].length,\n numberOfChannels: channelData.length\n });\n\n for (let ch = 0; ch < channelData.length; ch++) {\n audioBuffer.getChannelData(ch).set(channelData[ch]);\n }\n\n return audioBuffer;\n}\n","import { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from '../const';\nimport { convertPcm } from './pcm';\nimport audioDecode from './audioDecode';\n\nexport default async function (buffer: Buffer): Promise<Buffer> {\n const audioBuffer = await audioDecode(buffer);\n\n const numChannels = audioBuffer.numberOfChannels;\n const numFrames = audioBuffer.length;\n const sampleRate = audioBuffer.sampleRate;\n\n const tempBuffer = Buffer.alloc(numFrames * DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL);\n\n for (let i = 0; i < numFrames; i++) {\n for (let ch = 0; ch < DEFAULT_CHANNELS; ch++) {\n const inputCh = Math.min(ch, numChannels - 1);\n const channelData = audioBuffer.getChannelData(inputCh);\n const sample = Math.round(channelData[i] * 32767);\n const clampedSample = Math.max(-32768, Math.min(32767, sample));\n tempBuffer.writeInt16BE(clampedSample, (i * DEFAULT_CHANNELS + ch) * DEFAULT_BYTES_PER_CHANNEL);\n }\n }\n\n if (sampleRate !== DEFAULT_SAMPLE_RATE) {\n return convertPcm(tempBuffer, {\n inputChannels: DEFAULT_CHANNELS,\n inputSampleRate: sampleRate,\n inputBitsPerSample: 16,\n inputEndian: 'big'\n });\n }\n\n return tempBuffer;\n}\n","import type { AudioSource } from '@basmilius/apple-common';\nimport { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from './const';\nimport { decode, isMp3 } from './decoder';\n\nexport default class Mp3 implements AudioSource {\n readonly duration: number;\n readonly #buffer: Buffer;\n readonly #frameSize: number;\n #offset: number = 0;\n\n constructor(buffer: Buffer, duration: number) {\n this.#buffer = buffer;\n this.#frameSize = DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL;\n this.duration = duration;\n }\n\n async readFrames(count: number): Promise<Buffer | null> {\n if (this.#offset >= this.#buffer.length) {\n return null;\n }\n\n const bytesToRead = count * this.#frameSize;\n const chunk = this.#buffer.subarray(this.#offset, this.#offset + bytesToRead);\n this.#offset += bytesToRead;\n\n return chunk.length > 0 ? chunk : null;\n }\n\n async reset(): Promise<void> {\n this.#offset = 0;\n }\n\n async start(): Promise<void> {\n }\n\n async stop(): Promise<void> {\n }\n\n static async fromBuffer(mp3Buffer: Buffer): Promise<Mp3> {\n if (!isMp3(mp3Buffer)) {\n throw new Error('Invalid MP3 file');\n }\n\n const pcmBuffer = await decode(mp3Buffer);\n const duration = pcmBuffer.length / (DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL) / DEFAULT_SAMPLE_RATE;\n\n return new Mp3(pcmBuffer, duration);\n }\n\n static async fromUrl(url: string): Promise<Mp3> {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n\n return Mp3.fromBuffer(Buffer.from(arrayBuffer));\n }\n}\n","import type { AudioSource } from '@basmilius/apple-common';\nimport { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from './const';\nimport { decode, isOgg } from './decoder';\n\nexport default class Ogg implements AudioSource {\n readonly duration: number;\n readonly #buffer: Buffer;\n readonly #frameSize: number;\n #offset: number = 0;\n\n constructor(buffer: Buffer, duration: number) {\n this.#buffer = buffer;\n this.#frameSize = DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL;\n this.duration = duration;\n }\n\n async readFrames(count: number): Promise<Buffer | null> {\n if (this.#offset >= this.#buffer.length) {\n return null;\n }\n\n const bytesToRead = count * this.#frameSize;\n const chunk = this.#buffer.subarray(this.#offset, this.#offset + bytesToRead);\n this.#offset += bytesToRead;\n\n return chunk.length > 0 ? chunk : null;\n }\n\n async reset(): Promise<void> {\n this.#offset = 0;\n }\n\n async start(): Promise<void> {\n }\n\n async stop(): Promise<void> {\n }\n\n static async fromBuffer(oggBuffer: Buffer): Promise<Ogg> {\n if (!isOgg(oggBuffer)) {\n throw new Error('Invalid OGG file');\n }\n\n const pcmBuffer = await decode(oggBuffer);\n const duration = pcmBuffer.length / (DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL) / DEFAULT_SAMPLE_RATE;\n\n return new Ogg(pcmBuffer, duration);\n }\n\n static async fromUrl(url: string): Promise<Ogg> {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n\n return Ogg.fromBuffer(Buffer.from(arrayBuffer));\n }\n}\n","import type { AudioSource } from '@basmilius/apple-common';\nimport { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from './const';\n\nexport default class Pcm implements AudioSource {\n readonly duration: number;\n readonly #buffer: Buffer;\n readonly #frameSize: number;\n #offset: number = 0;\n\n constructor(pcmBuffer: Buffer, sampleRate: number = DEFAULT_SAMPLE_RATE) {\n this.#buffer = pcmBuffer;\n this.#frameSize = DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL;\n this.duration = pcmBuffer.length / this.#frameSize / sampleRate;\n }\n\n async readFrames(count: number): Promise<Buffer | null> {\n if (this.#offset >= this.#buffer.length) {\n return null;\n }\n\n const bytesToRead = count * this.#frameSize;\n const chunk = this.#buffer.subarray(this.#offset, this.#offset + bytesToRead);\n this.#offset += bytesToRead;\n\n return chunk.length > 0 ? chunk : null;\n }\n\n async reset(): Promise<void> {\n this.#offset = 0;\n }\n\n async start(): Promise<void> {\n }\n\n async stop(): Promise<void> {\n }\n}\n","import type { AudioSource } from '@basmilius/apple-common';\nimport { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from './const';\n\nexport default class SineWave implements AudioSource {\n readonly duration: number;\n readonly #buffer: Buffer;\n readonly #frameSize: number;\n #offset: number = 0;\n\n constructor(durationSeconds: number, frequency: number = 440, sampleRate: number = DEFAULT_SAMPLE_RATE, channels: number = DEFAULT_CHANNELS, bytesPerChannel: number = DEFAULT_BYTES_PER_CHANNEL) {\n this.duration = durationSeconds;\n this.#frameSize = channels * bytesPerChannel;\n this.#buffer = this.#generateSineWave(sampleRate, channels, bytesPerChannel, durationSeconds, frequency);\n }\n\n #generateSineWave(sampleRate: number, channels: number, bytesPerChannel: number, durationSeconds: number, frequency: number): Buffer {\n const totalSamples = sampleRate * durationSeconds;\n const buffer = Buffer.alloc(totalSamples * channels * bytesPerChannel);\n\n const fadeSamples = Math.floor(sampleRate * 0.05);\n\n for (let i = 0; i < totalSamples; i++) {\n const sample = Math.sin(2 * Math.PI * frequency * i / sampleRate);\n\n let envelope = 1.0;\n\n if (i < fadeSamples) {\n envelope = i / fadeSamples;\n } else if (i >= totalSamples - fadeSamples) {\n envelope = (totalSamples - i) / fadeSamples;\n }\n\n const value = Math.round(sample * envelope * 0x7FFF);\n\n for (let ch = 0; ch < channels; ch++) {\n const offset = (i * channels + ch) * bytesPerChannel;\n buffer.writeInt16BE(value, offset);\n }\n }\n\n return buffer;\n }\n\n async readFrames(count: number): Promise<Buffer | null> {\n if (this.#offset >= this.#buffer.length) {\n return null;\n }\n\n const bytesToRead = count * this.#frameSize;\n const chunk = this.#buffer.subarray(this.#offset, this.#offset + bytesToRead);\n this.#offset += bytesToRead;\n\n return chunk.length > 0 ? chunk : null;\n }\n\n async reset(): Promise<void> {\n this.#offset = 0;\n }\n\n async start(): Promise<void> {\n }\n\n async stop(): Promise<void> {\n }\n}\n","import type { AudioSource } from '@basmilius/apple-common';\nimport { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from './const';\nimport { decode, isMp3, isOgg, isWav } from './decoder';\n\nexport default class Url implements AudioSource {\n readonly duration: number;\n readonly #buffer: Buffer;\n readonly #frameSize: number;\n #offset: number = 0;\n\n constructor(buffer: Buffer, duration: number) {\n this.#buffer = buffer;\n this.#frameSize = DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL;\n this.duration = duration;\n }\n\n async readFrames(count: number): Promise<Buffer | null> {\n if (this.#offset >= this.#buffer.length) {\n return null;\n }\n\n const bytesToRead = count * this.#frameSize;\n const chunk = this.#buffer.subarray(this.#offset, this.#offset + bytesToRead);\n this.#offset += bytesToRead;\n\n return chunk.length > 0 ? chunk : null;\n }\n\n async reset(): Promise<void> {\n this.#offset = 0;\n }\n\n async start(): Promise<void> {\n }\n\n async stop(): Promise<void> {\n }\n\n static async fromUrl(url: string): Promise<Url> {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n\n let pcmBuffer: Buffer;\n\n if (isMp3(buffer) || isOgg(buffer) || isWav(buffer)) {\n pcmBuffer = await decode(buffer);\n } else {\n throw new Error('Unsupported audio format. Please use WAV or MP3.');\n }\n\n const duration = pcmBuffer.length / (DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL) / DEFAULT_SAMPLE_RATE;\n\n return new Url(pcmBuffer, duration);\n }\n}\n","import type { AudioSource } from '@basmilius/apple-common';\nimport { DEFAULT_BYTES_PER_CHANNEL, DEFAULT_CHANNELS, DEFAULT_SAMPLE_RATE } from './const';\nimport { decode, isWav } from './decoder';\n\nexport default class Wav implements AudioSource {\n readonly duration: number;\n readonly #buffer: Buffer;\n readonly #frameSize: number;\n #offset: number = 0;\n\n constructor(buffer: Buffer, duration: number) {\n this.#buffer = buffer;\n this.#frameSize = DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL;\n this.duration = duration;\n }\n\n async readFrames(count: number): Promise<Buffer | null> {\n if (this.#offset >= this.#buffer.length) {\n return null;\n }\n\n const bytesToRead = count * this.#frameSize;\n const chunk = this.#buffer.subarray(this.#offset, this.#offset + bytesToRead);\n this.#offset += bytesToRead;\n\n return chunk.length > 0 ? chunk : null;\n }\n\n async reset(): Promise<void> {\n this.#offset = 0;\n }\n\n async start(): Promise<void> {\n }\n\n async stop(): Promise<void> {\n }\n\n static async fromBuffer(wavBuffer: Buffer): Promise<Wav> {\n if (!isWav(wavBuffer)) {\n throw new Error('Invalid WAV file');\n }\n\n const pcmBuffer = await decode(wavBuffer);\n const duration = pcmBuffer.length / (DEFAULT_CHANNELS * DEFAULT_BYTES_PER_CHANNEL) / DEFAULT_SAMPLE_RATE;\n\n return new Wav(pcmBuffer, duration);\n }\n\n static async fromUrl(url: string): Promise<Wav> {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n return Wav.fromBuffer(Buffer.from(arrayBuffer));\n }\n}\n"],"x_google_ignoreList":[4,5],"mappings":"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"}
Binary file