@openclaw/whatsapp 2026.5.28 → 2026.5.31-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/{access-control-Z0fYaWrx.js → access-control-C53zKYSN.js} +1 -1
  2. package/dist/{accounts-BMGM1RtF.js → accounts-DgViSyJx.js} +1 -0
  3. package/dist/{action-runtime-BdhkGtaP.js → action-runtime-Cyp5GNIT.js} +2 -2
  4. package/dist/action-runtime-api.js +1 -1
  5. package/dist/action-runtime.runtime.js +1 -1
  6. package/dist/api.js +9 -9
  7. package/dist/{approval-handler.runtime-C25wPeBf.js → approval-handler.runtime-BVmOu6x1.js} +1 -2
  8. package/dist/{auth-store-BrKb0mwT.js → auth-store-CZ22aNcV.js} +4 -2
  9. package/dist/{channel-D3y4A5Dd.js → channel-DA2BAIo5.js} +17 -64
  10. package/dist/channel-config-api.js +1 -1
  11. package/dist/channel-plugin-api.js +1 -1
  12. package/dist/{channel-react-action-Cd2qkLqp.js → channel-react-action-zvbaCnGe.js} +3 -3
  13. package/dist/{channel.runtime-C228XUjs.js → channel.runtime-Q1LZDB5s.js} +4 -4
  14. package/dist/{channel.setup-BJQyTUUP.js → channel.setup-DHXOo4h5.js} +2 -3
  15. package/dist/{config-schema-CsNDlDpL.js → config-schema-CROZuhT-.js} +16 -0
  16. package/dist/{connection-controller-mpPGmqGq.js → connection-controller-Bnm4INld.js} +2 -2
  17. package/dist/contract-api.js +1 -1
  18. package/dist/light-runtime-api.js +1 -1
  19. package/dist/{login-CE4UYnyO.js → login-2fuBM7Je.js} +4 -4
  20. package/dist/{login-qr-LBvhEes5.js → login-qr-B1o7GFy8.js} +10 -6
  21. package/dist/login-qr-runtime.js +1 -1
  22. package/dist/{monitor-Ccph7Y8M.js → monitor-BVRq04Dt.js} +36 -18
  23. package/dist/runtime-api.js +7 -7
  24. package/dist/{send-C4LG-Cl6.js → send-DSlVXKL_.js} +53 -41
  25. package/dist/{send-api-C66vkRl9.js → send-api-Bjn-h80j.js} +3 -2
  26. package/dist/{session-D8UW2Vbn.js → session-DyGWNClj.js} +1 -1
  27. package/dist/{setup-core-DpfT4K-2.js → setup-core-OvPMaAsx.js} +4 -4
  28. package/dist/{setup-finalize-CFnxX7la.js → setup-finalize-Dk23pfKc.js} +3 -3
  29. package/dist/setup-plugin-api.js +1 -1
  30. package/dist/{setup-surface-DRsmp0ZS.js → setup-surface-F-jVrH8u.js} +3 -3
  31. package/node_modules/@audio/decode-aac/LICENSE +9 -0
  32. package/node_modules/@audio/decode-aac/README.md +60 -0
  33. package/node_modules/@audio/decode-aac/decode-aac.d.ts +16 -0
  34. package/node_modules/@audio/decode-aac/decode-aac.js +391 -0
  35. package/node_modules/@audio/decode-aac/package.json +47 -0
  36. package/node_modules/@audio/decode-aac/src/aac.wasm.cjs +0 -0
  37. package/node_modules/@audio/decode-aiff/LICENSE +21 -0
  38. package/node_modules/@audio/decode-aiff/README.md +53 -0
  39. package/node_modules/@audio/decode-aiff/decode-aiff.d.ts +16 -0
  40. package/node_modules/@audio/decode-aiff/decode-aiff.js +583 -0
  41. package/node_modules/@audio/decode-aiff/package.json +42 -0
  42. package/node_modules/@audio/decode-amr/LICENSE +191 -0
  43. package/node_modules/@audio/decode-amr/README.md +65 -0
  44. package/node_modules/@audio/decode-amr/decode-amr.d.ts +16 -0
  45. package/node_modules/@audio/decode-amr/decode-amr.js +159 -0
  46. package/node_modules/@audio/decode-amr/package.json +48 -0
  47. package/node_modules/@audio/decode-amr/src/amr.wasm.cjs +0 -0
  48. package/node_modules/@audio/decode-caf/LICENSE +21 -0
  49. package/node_modules/@audio/decode-caf/README.md +55 -0
  50. package/node_modules/@audio/decode-caf/decode-caf.d.ts +16 -0
  51. package/node_modules/@audio/decode-caf/decode-caf.js +190 -0
  52. package/node_modules/@audio/decode-caf/package.json +43 -0
  53. package/node_modules/{audio-buffer → @audio/decode-flac}/LICENSE +5 -2
  54. package/node_modules/@audio/decode-flac/README.md +23 -0
  55. package/node_modules/@audio/decode-flac/decode-flac.d.ts +16 -0
  56. package/node_modules/@audio/decode-flac/decode-flac.js +2994 -0
  57. package/node_modules/@audio/decode-flac/meta.js +115 -0
  58. package/node_modules/@audio/decode-flac/package.json +49 -0
  59. package/node_modules/@audio/decode-mp3/LICENSE +25 -0
  60. package/node_modules/@audio/decode-mp3/README.md +23 -0
  61. package/node_modules/@audio/decode-mp3/decode-mp3.d.ts +16 -0
  62. package/node_modules/@audio/decode-mp3/decode-mp3.js +868 -0
  63. package/node_modules/@audio/decode-mp3/meta.js +143 -0
  64. package/node_modules/@audio/decode-mp3/package.json +50 -0
  65. package/node_modules/@audio/decode-opus/LICENSE +25 -0
  66. package/node_modules/@audio/decode-opus/README.md +23 -0
  67. package/node_modules/@audio/decode-opus/decode-opus.d.ts +16 -0
  68. package/node_modules/@audio/decode-opus/decode-opus.js +3179 -0
  69. package/node_modules/@audio/decode-opus/package.json +47 -0
  70. package/node_modules/@audio/decode-qoa/LICENSE +25 -0
  71. package/node_modules/@audio/decode-qoa/README.md +21 -0
  72. package/node_modules/@audio/decode-qoa/decode-qoa.d.ts +16 -0
  73. package/node_modules/@audio/decode-qoa/decode-qoa.js +278 -0
  74. package/node_modules/@audio/decode-qoa/package.json +46 -0
  75. package/node_modules/@audio/decode-vorbis/LICENSE +25 -0
  76. package/node_modules/@audio/decode-vorbis/README.md +23 -0
  77. package/node_modules/@audio/decode-vorbis/decode-vorbis.d.ts +16 -0
  78. package/node_modules/@audio/decode-vorbis/decode-vorbis.js +2984 -0
  79. package/node_modules/@audio/decode-vorbis/package.json +47 -0
  80. package/node_modules/@audio/decode-wav/decode-wav.js +104 -0
  81. package/node_modules/@audio/decode-wav/meta.js +114 -0
  82. package/node_modules/@audio/decode-wav/package.json +27 -0
  83. package/node_modules/@audio/decode-webm/LICENSE +21 -0
  84. package/node_modules/@audio/decode-webm/README.md +57 -0
  85. package/node_modules/@audio/decode-webm/decode-webm.d.ts +16 -0
  86. package/node_modules/@audio/decode-webm/decode-webm.js +3964 -0
  87. package/node_modules/@audio/decode-webm/package.json +51 -0
  88. package/node_modules/@audio/decode-wma/LICENSE +12 -0
  89. package/node_modules/@audio/decode-wma/README.md +76 -0
  90. package/node_modules/@audio/decode-wma/decode-wma.d.ts +33 -0
  91. package/node_modules/@audio/decode-wma/decode-wma.js +525 -0
  92. package/node_modules/@audio/decode-wma/package.json +47 -0
  93. package/node_modules/@audio/decode-wma/src/wma.wasm.cjs +0 -0
  94. package/node_modules/audio-decode/.claude/settings.json +204 -0
  95. package/node_modules/audio-decode/.github/workflows/test.js.yml +11 -20
  96. package/node_modules/audio-decode/.gitmodules +9 -0
  97. package/node_modules/audio-decode/audio-decode.d.ts +48 -10
  98. package/node_modules/audio-decode/audio-decode.js +193 -77
  99. package/node_modules/audio-decode/meta.js +11 -0
  100. package/node_modules/audio-decode/package.json +49 -21
  101. package/node_modules/audio-decode/readme.md +129 -29
  102. package/node_modules/audio-decode/stream.d.ts +15 -0
  103. package/node_modules/audio-decode/stream.js +1 -0
  104. package/node_modules/audio-decode/test.html +29 -10
  105. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts +2 -2
  106. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -1
  107. package/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -1
  108. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +1 -1
  109. package/node_modules/lru-cache/dist/commonjs/index.d.ts +2 -2
  110. package/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -1
  111. package/node_modules/lru-cache/dist/commonjs/index.js.map +1 -1
  112. package/node_modules/lru-cache/dist/commonjs/index.min.js.map +1 -1
  113. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts +2 -2
  114. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -1
  115. package/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -1
  116. package/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +1 -1
  117. package/node_modules/lru-cache/dist/esm/browser/index.d.ts +2 -2
  118. package/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -1
  119. package/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -1
  120. package/node_modules/lru-cache/dist/esm/browser/index.min.js.map +1 -1
  121. package/node_modules/lru-cache/dist/esm/index.d.ts +2 -2
  122. package/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -1
  123. package/node_modules/lru-cache/dist/esm/index.js.map +1 -1
  124. package/node_modules/lru-cache/dist/esm/index.min.js.map +1 -1
  125. package/node_modules/lru-cache/dist/esm/node/index.d.ts +2 -2
  126. package/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -1
  127. package/node_modules/lru-cache/dist/esm/node/index.js.map +1 -1
  128. package/node_modules/lru-cache/dist/esm/node/index.min.js.map +1 -1
  129. package/node_modules/lru-cache/package.json +1 -1
  130. package/node_modules/typebox/build/type/script/mapping.d.mts +5 -2
  131. package/node_modules/typebox/build/type/script/mapping.mjs +15 -8
  132. package/node_modules/typebox/build/type/script/parser.d.mts +3 -1
  133. package/node_modules/typebox/build/type/script/parser.mjs +2 -1
  134. package/node_modules/typebox/package.json +29 -29
  135. package/npm-shrinkwrap.json +156 -39
  136. package/openclaw.plugin.json +76 -0
  137. package/package.json +6 -6
  138. package/node_modules/audio-buffer/.eslintrc.json +0 -44
  139. package/node_modules/audio-buffer/.github/workflows/node.js.yml +0 -31
  140. package/node_modules/audio-buffer/.travis.yml +0 -7
  141. package/node_modules/audio-buffer/index.js +0 -76
  142. package/node_modules/audio-buffer/package.json +0 -37
  143. package/node_modules/audio-buffer/readme.md +0 -56
  144. package/node_modules/audio-decode/.eslintrc.json +0 -43
  145. package/node_modules/audio-decode/.travis.yml +0 -13
  146. package/node_modules/audio-decode/tea.yaml +0 -6
  147. package/node_modules/audio-decode/test-case.js +0 -11
  148. package/node_modules/audio-decode/test.js +0 -107
  149. package/node_modules/node-wav/README.md +0 -35
  150. package/node_modules/node-wav/file.wav +0 -0
  151. package/node_modules/node-wav/index.js +0 -291
  152. package/node_modules/node-wav/package.json +0 -29
  153. package/node_modules/node-wav/tests/file1.wav +0 -0
  154. package/node_modules/node-wav/tests/test.js +0 -66
  155. package/node_modules/node-wav/x.js +0 -12
  156. package/node_modules/node-wav/x.json +0 -86702
  157. package/node_modules/node-wav/x.js~ +0 -13
@@ -0,0 +1,3179 @@
1
+ // ../../node_modules/simple-yenc/dist/esm.js
2
+ var t = (t2, n = 4294967295, e2 = 79764919) => {
3
+ const r = new Int32Array(256);
4
+ let o, s, i, c = n;
5
+ for (o = 0; o < 256; o++) {
6
+ for (i = o << 24, s = 8; s > 0; --s) i = 2147483648 & i ? i << 1 ^ e2 : i << 1;
7
+ r[o] = i;
8
+ }
9
+ for (o = 0; o < t2.length; o++) c = c << 8 ^ r[255 & (c >> 24 ^ t2[o])];
10
+ return c;
11
+ };
12
+ var e = (n, e2 = t) => {
13
+ const r = (t2) => new Uint8Array(t2.length / 2).map(((n2, e3) => parseInt(t2.substring(2 * e3, 2 * (e3 + 1)), 16))), o = (t2) => r(t2)[0], s = /* @__PURE__ */ new Map();
14
+ [, 8364, , 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, , 381, , , 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, , 382, 376].forEach(((t2, n2) => s.set(t2, n2)));
15
+ const i = new Uint8Array(n.length);
16
+ let c, a, l, f = false, g = 0, h = 42, p = n.length > 13 && "dynEncode" === n.substring(0, 9), u = 0;
17
+ p && (u = 11, a = o(n.substring(9, u)), a <= 1 && (u += 2, h = o(n.substring(11, u))), 1 === a && (u += 8, l = ((t2) => new DataView(r(t2).buffer).getInt32(0, true))(n.substring(13, u))));
18
+ const d = 256 - h;
19
+ for (let t2 = u; t2 < n.length; t2++) if (c = n.charCodeAt(t2), 61 !== c || f) {
20
+ if (92 === c && t2 < n.length - 5 && p) {
21
+ const e3 = n.charCodeAt(t2 + 1);
22
+ 117 !== e3 && 85 !== e3 || (c = parseInt(n.substring(t2 + 2, t2 + 6), 16), t2 += 5);
23
+ }
24
+ if (c > 255) {
25
+ const t3 = s.get(c);
26
+ t3 && (c = t3 + 127);
27
+ }
28
+ f && (f = false, c -= 64), i[g++] = c < h && c > 0 ? c + d : c - h;
29
+ } else f = true;
30
+ const m = i.subarray(0, g);
31
+ if (p && 1 === a) {
32
+ const t2 = e2(m);
33
+ if (t2 !== l) {
34
+ const n2 = "Decode failed crc32 validation";
35
+ throw console.error("`simple-yenc`\n", n2 + "\n", "Expected: " + l + "; Got: " + t2 + "\n", "Visit https://github.com/eshaz/simple-yenc for more information"), Error(n2);
36
+ }
37
+ }
38
+ return m;
39
+ };
40
+
41
+ // ../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js
42
+ function WASMAudioDecoderCommon() {
43
+ const uint8Array2 = Uint8Array;
44
+ const float32Array = Float32Array;
45
+ if (!WASMAudioDecoderCommon.modules) {
46
+ Object.defineProperties(WASMAudioDecoderCommon, {
47
+ modules: {
48
+ value: /* @__PURE__ */ new WeakMap()
49
+ },
50
+ setModule: {
51
+ value(Ref, module) {
52
+ WASMAudioDecoderCommon.modules.set(Ref, Promise.resolve(module));
53
+ }
54
+ },
55
+ getModule: {
56
+ value(Ref, wasmString) {
57
+ let module = WASMAudioDecoderCommon.modules.get(Ref);
58
+ if (!module) {
59
+ if (!wasmString) {
60
+ wasmString = Ref.wasm;
61
+ module = WASMAudioDecoderCommon.inflateDynEncodeString(
62
+ wasmString
63
+ ).then((data3) => WebAssembly.compile(data3));
64
+ } else {
65
+ module = WebAssembly.compile(e(wasmString));
66
+ }
67
+ WASMAudioDecoderCommon.modules.set(Ref, module);
68
+ }
69
+ return module;
70
+ }
71
+ },
72
+ concatFloat32: {
73
+ value(buffers, length2) {
74
+ let ret = new float32Array(length2), i = 0, offset = 0;
75
+ while (i < buffers.length) {
76
+ ret.set(buffers[i], offset);
77
+ offset += buffers[i++].length;
78
+ }
79
+ return ret;
80
+ }
81
+ },
82
+ getDecodedAudio: {
83
+ value: (errors, channelData, samplesDecoded, sampleRate2, bitDepth2) => ({
84
+ errors,
85
+ channelData,
86
+ samplesDecoded,
87
+ sampleRate: sampleRate2,
88
+ bitDepth: bitDepth2
89
+ })
90
+ },
91
+ getDecodedAudioMultiChannel: {
92
+ value(errors, input, channelsDecoded, samplesDecoded, sampleRate2, bitDepth2) {
93
+ let channelData = [], i, j;
94
+ for (i = 0; i < channelsDecoded; i++) {
95
+ const channel2 = [];
96
+ for (j = 0; j < input.length; ) channel2.push(input[j++][i] || []);
97
+ channelData.push(
98
+ WASMAudioDecoderCommon.concatFloat32(channel2, samplesDecoded)
99
+ );
100
+ }
101
+ return WASMAudioDecoderCommon.getDecodedAudio(
102
+ errors,
103
+ channelData,
104
+ samplesDecoded,
105
+ sampleRate2,
106
+ bitDepth2
107
+ );
108
+ }
109
+ },
110
+ /*
111
+ ******************
112
+ * Compression Code
113
+ ******************
114
+ */
115
+ inflateDynEncodeString: {
116
+ value(source) {
117
+ source = e(source);
118
+ return new Promise((resolve) => {
119
+ const puffString = String.raw`dynEncode012804c7886d(‰›•)((()>+ˆ*§§)§ˆ,§§§§)§ˆ+§§§)§+.-()(*)-+)(ˆ.7*§)i¸¸,3§(i¸¸,3/G+.••—š¡*(,˜ŽŽ(,3‡‡‰˜‡Š‰›+)2å:-œ),§H(P*DI*H(P*@I++hH)H*r,hH(H(P*<J,i)’^*<H,H(P*4’U((I-H(H*i0’J,^*DH+H-H*œšI+H,I*4)33H(H*H)“^*DH(H+H)^*@H+i§H)œi§›™3æ*).§K(iH“I/+§H,iHn,§H+i(H+i(rCJ0I,H*I-+hH,,hH(H-V)(i)œ’J.H.W)(i)’c)(H,i)“I,H-i*’I-4)33i(I.*hH(V)(H+n5(H(i*’I-i(I,i)I.+hH,i*’J+iHn,hi(I-i*I,+hH,H/’H-c)(H,iFn,hi(I,+hH,H0n5-H*V)(J(,hH/H(i)œ’J(H(V)(J(i)’c)(H)H(i)œ’H,c)(3H*i*’I*H,i)’I,4(3(-H(H,’W)(H-’I-H,i*’I,4)3(3(3H,H-’I1H+I,H.i)œH1V)(“J.i(v5(33H.-H(H,’i(c)(H,i*’I,4)333–)-§i*I*+§H*iHn,hiž73H,H(i)8(H+šJ+H)P*(H*’V)(J-“r,§H)P*,H.i)œ’H+H,“i)œ’V)(-H*i*’I*H+i)œI+H-H.’I.H,H-’i)œI,4)333Ã+)-§iø7i(^*(iü7I,*h+hH+iDn,h*hilI+i)I,+hH+,hH+iô7’H,c)(i)H+i´8’W)(œH,’I,H+i*’I+4)-+hH(H)8*J-i(p5.*h*h*hH-i')u,hH(P*(J+,hH(P*0J,H(P*,n50H+H,’H-b((3H(P*0i)’I.4)3H-i¨*n5*H-iÅ*s,hiž73H-i)œJ+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)œJ+i¸7’V)(H(H+iø7’V)(8(’J/H(P*0J+s,hi73H+H,H.’J,’I.H(P*(m5(H.H(P*,s5.+hH,m5*H(P*(J.H+’H.H+H/“’U((b((H(H(P*0i)’J+^*0H,i)“I,4(3(3H(H.^*03H-i¨*o5)33i(73(3(3-H,H+i)žc)(H,i*’I,H+i)’I+4)33i)I-3H-3!2)0§K(i2“J,L(H,H(^*(H,H*^*4H,i(^*0H,i(^*DH,j(_*<H,H)P*(^*,H,H+P*(^*8*h*h+hH,i)8(I3i§I**h*h*h*h*h*h*hH,i*8(6+(),03H,j(_*@i*I-H,P*<J.i,’J(H,P*8J/s50H,H.i+’J0^*<i¦I*H.H,P*4J1’J.U(*H.U((J2›i')o5/H.U()I.H,H(^*<H0H1’U((H.i0œJ.i§›i0ži')™o5/H/H.H2šJ*H(’J.q50H,P*0J/H*’I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0’H(H1’U((b((H/i)’I/H(i)’I(H*i)“I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i1^*(i$6iè1^*(i°7iè6^*(i¬7iÈ6^*(+hH(iÈ*n,hiÈ*I(+hH(i¨,n,hi¨,I(+hH(iØ,n,hiØ,I(+hH(iè,o,hH,i-’H(’i0c)(H(i*’I(4)33iè1i1H,i-’iÈ*8)Bi(I(+hH(ido,hH,i-’H(’i-c)(H(i*’I(4)33iÈ6iè6H,i-’iF8)BiØ1i)b((41-H,i-’H(’i/c)(H(i*’I(4)3(3(-H,i-’H(’i1c)(H(i*’I(4)3(3(-H,i-’H(’i0c)(H(i*’I(4)3(3(3H,H/^*0H,H(^*<3i(I*4*3H,H,i¸)’^*TH,H,iø-’^*PH,H,iX’^*LH,H,i(’^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iErš5)H(i©*’I1H-i)’I0i(i;H.i,’J(i(H(i(rCJ(“J*H*i;sCI*i¨1I-H(I/+hH/,hH,i-’H-V)(i)œ’H,i+8(c)(H/i)“I/H-i*’I-H*i)’I*4)-H(i)œi¨1’I/+hH(H*o,hH,i-’H/V)(i)œ’i(c)(H/i*’I/H(i)’I(4)33i¤I*H,iø-’H,i¸)’H,i-’i;8)5+H0H1’I2i(I-+hH-H2p,hH,H,iP’8*J*i(p5-H*i7u,hH,i-’H-i)œ’H*c)(H-i)’I-4*3i(I/i+I.i+I(*h*h*hH*i8“6*(*)3H-m,hi£I*403H-i)œH,’W)-I/i*I(4)3i3I.i/I(3H2H,H(8(H.’J(H-’J.p,hi¢I*4.3H,i-’H-i)œ’I*+hH(,hH*H/c)(H*i*’I*H(i)“I(4)-H.I-4+3(3(33H,W)1m,hiŸI*4,3H,iø-’H,i¸)’H,i-’H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-’o5,3H,i(’H,iX’H,i-’H1i)œ’H08)J(,hi I*H(i(p5,H0H,V)šH,V)˜’o5,3H,H,iP’H,iH’8+I*4+3(3(3H,i$6i¬78+I*3H*H3šm5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i2’L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(‹(›(«(Ë(ë( (*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7œ‰šœ‡Ž‰œš›*S7•œ‰Š”U”—Љ”›S0›‘–U œ`;
120
+ WASMAudioDecoderCommon.getModule(WASMAudioDecoderCommon, puffString).then((wasm) => WebAssembly.instantiate(wasm, {})).then(({ exports }) => {
121
+ const instanceExports = new Map(Object.entries(exports));
122
+ const puff = instanceExports.get("puff");
123
+ const memory = instanceExports.get("memory")["buffer"];
124
+ const dataArray = new uint8Array2(memory);
125
+ const heapView = new DataView(memory);
126
+ let heapPos = instanceExports.get("__heap_base");
127
+ const sourceLength = source.length;
128
+ const sourceLengthPtr = heapPos;
129
+ heapPos += 4;
130
+ heapView.setInt32(sourceLengthPtr, sourceLength, true);
131
+ const sourcePtr = heapPos;
132
+ heapPos += sourceLength;
133
+ dataArray.set(source, sourcePtr);
134
+ const destLengthPtr = heapPos;
135
+ heapPos += 4;
136
+ heapView.setInt32(
137
+ destLengthPtr,
138
+ dataArray.byteLength - heapPos,
139
+ true
140
+ );
141
+ puff(heapPos, destLengthPtr, sourcePtr, sourceLengthPtr);
142
+ resolve(
143
+ dataArray.slice(
144
+ heapPos,
145
+ heapPos + heapView.getInt32(destLengthPtr, true)
146
+ )
147
+ );
148
+ });
149
+ });
150
+ }
151
+ }
152
+ });
153
+ }
154
+ Object.defineProperty(this, "wasm", {
155
+ enumerable: true,
156
+ get: () => this._wasm
157
+ });
158
+ this.getOutputChannels = (outputData, channelsDecoded, samplesDecoded) => {
159
+ let output = [], i = 0;
160
+ while (i < channelsDecoded)
161
+ output.push(
162
+ outputData.slice(
163
+ i * samplesDecoded,
164
+ i++ * samplesDecoded + samplesDecoded
165
+ )
166
+ );
167
+ return output;
168
+ };
169
+ this.allocateTypedArray = (len, TypedArray, setPointer = true) => {
170
+ const ptr = this._wasm.malloc(TypedArray.BYTES_PER_ELEMENT * len);
171
+ if (setPointer) this._pointers.add(ptr);
172
+ return {
173
+ ptr,
174
+ len,
175
+ buf: new TypedArray(this._wasm.HEAP, ptr, len)
176
+ };
177
+ };
178
+ this.free = () => {
179
+ this._pointers.forEach((ptr) => {
180
+ this._wasm.free(ptr);
181
+ });
182
+ this._pointers.clear();
183
+ };
184
+ this.codeToString = (ptr) => {
185
+ const characters = [], heap = new Uint8Array(this._wasm.HEAP);
186
+ for (let character = heap[ptr]; character !== 0; character = heap[++ptr])
187
+ characters.push(character);
188
+ return String.fromCharCode.apply(null, characters);
189
+ };
190
+ this.addError = (errors, message, frameLength2, frameNumber2, inputBytes, outputSamples) => {
191
+ errors.push({
192
+ message,
193
+ frameLength: frameLength2,
194
+ frameNumber: frameNumber2,
195
+ inputBytes,
196
+ outputSamples
197
+ });
198
+ };
199
+ this.instantiate = (_EmscriptenWASM, _module) => {
200
+ if (_module) WASMAudioDecoderCommon.setModule(_EmscriptenWASM, _module);
201
+ this._wasm = new _EmscriptenWASM(WASMAudioDecoderCommon).instantiate();
202
+ this._pointers = /* @__PURE__ */ new Set();
203
+ return this._wasm.ready.then(() => this);
204
+ };
205
+ }
206
+
207
+ // ../_build/empty-worker.js
208
+ var empty_worker_default = null;
209
+
210
+ // ../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js
211
+ var getWorker = () => globalThis.Worker || empty_worker_default;
212
+ var WASMAudioDecoderWorker = class extends getWorker() {
213
+ constructor(options, name, Decoder, EmscriptenWASM2) {
214
+ if (!WASMAudioDecoderCommon.modules) new WASMAudioDecoderCommon();
215
+ let source = WASMAudioDecoderCommon.modules.get(Decoder);
216
+ if (!source) {
217
+ let type = "text/javascript", isNode, webworkerSourceCode = `'use strict';(${((_Decoder, _WASMAudioDecoderCommon, _EmscriptenWASM) => {
218
+ let decoder2, moduleResolve, modulePromise = new Promise((resolve) => {
219
+ moduleResolve = resolve;
220
+ });
221
+ self.onmessage = ({ data: { id, command, data: data3 } }) => {
222
+ let messagePromise = modulePromise, messagePayload = { id }, transferList;
223
+ if (command === "init") {
224
+ Object.defineProperties(_Decoder, {
225
+ WASMAudioDecoderCommon: { value: _WASMAudioDecoderCommon },
226
+ EmscriptenWASM: { value: _EmscriptenWASM },
227
+ module: { value: data3.module },
228
+ isWebWorker: { value: true }
229
+ });
230
+ decoder2 = new _Decoder(data3.options);
231
+ moduleResolve();
232
+ } else if (command === "free") {
233
+ decoder2.free();
234
+ } else if (command === "ready") {
235
+ messagePromise = messagePromise.then(() => decoder2.ready);
236
+ } else if (command === "reset") {
237
+ messagePromise = messagePromise.then(() => decoder2.reset());
238
+ } else {
239
+ Object.assign(
240
+ messagePayload,
241
+ decoder2[command](
242
+ // detach buffers
243
+ Array.isArray(data3) ? data3.map((data4) => new Uint8Array(data4)) : new Uint8Array(data3)
244
+ )
245
+ );
246
+ transferList = messagePayload.channelData ? messagePayload.channelData.map((channel2) => channel2.buffer) : [];
247
+ }
248
+ messagePromise.then(
249
+ () => self.postMessage(messagePayload, transferList)
250
+ );
251
+ };
252
+ }).toString()})(${Decoder}, ${WASMAudioDecoderCommon}, ${EmscriptenWASM2})`;
253
+ try {
254
+ isNode = typeof process.versions.node !== "undefined";
255
+ } catch {
256
+ }
257
+ source = isNode ? `data:${type};base64,${Buffer.from(webworkerSourceCode).toString(
258
+ "base64"
259
+ )}` : URL.createObjectURL(new Blob([webworkerSourceCode], { type }));
260
+ WASMAudioDecoderCommon.modules.set(Decoder, source);
261
+ }
262
+ super(source, { name });
263
+ this._id = Number.MIN_SAFE_INTEGER;
264
+ this._enqueuedOperations = /* @__PURE__ */ new Map();
265
+ this.onmessage = ({ data: data3 }) => {
266
+ const { id, ...rest } = data3;
267
+ this._enqueuedOperations.get(id)(rest);
268
+ this._enqueuedOperations.delete(id);
269
+ };
270
+ new EmscriptenWASM2(WASMAudioDecoderCommon).getModule().then((module) => {
271
+ this.postToDecoder("init", { module, options });
272
+ });
273
+ }
274
+ async postToDecoder(command, data3) {
275
+ return new Promise((resolve) => {
276
+ this.postMessage({
277
+ command,
278
+ id: this._id,
279
+ data: data3
280
+ });
281
+ this._enqueuedOperations.set(this._id++, resolve);
282
+ });
283
+ }
284
+ get ready() {
285
+ return this.postToDecoder("ready");
286
+ }
287
+ async free() {
288
+ await this.postToDecoder("free").finally(() => {
289
+ this.terminate();
290
+ });
291
+ }
292
+ async reset() {
293
+ await this.postToDecoder("reset");
294
+ }
295
+ };
296
+
297
+ // ../../node_modules/@wasm-audio-decoders/common/src/utilities.js
298
+ var assignNames = (Class, name) => {
299
+ Object.defineProperty(Class, "name", { value: name });
300
+ };
301
+
302
+ // ../../node_modules/opus-decoder/src/EmscriptenWasm.js
303
+ function EmscriptenWASM(WASMAudioDecoderCommon2) {
304
+ var Module = Module;
305
+ function ready() {
306
+ }
307
+ Module = {};
308
+ function abort(what) {
309
+ throw what;
310
+ }
311
+ var HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, HEAP64, HEAPU64, wasmMemory;
312
+ function updateMemoryViews() {
313
+ var b = wasmMemory.buffer;
314
+ HEAP8 = new Int8Array(b);
315
+ HEAP16 = new Int16Array(b);
316
+ HEAPU8 = new Uint8Array(b);
317
+ HEAPU16 = new Uint16Array(b);
318
+ HEAP32 = new Int32Array(b);
319
+ HEAPU32 = new Uint32Array(b);
320
+ HEAPF32 = new Float32Array(b);
321
+ HEAPF64 = new Float64Array(b);
322
+ HEAP64 = new BigInt64Array(b);
323
+ HEAPU64 = new BigUint64Array(b);
324
+ }
325
+ var base64Decode = (b64) => {
326
+ var b1, b2, i2 = 0, j = 0, bLength = b64.length;
327
+ var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == "=") - (b64[bLength - 1] == "="));
328
+ for (; i2 < bLength; i2 += 4, j += 3) {
329
+ b1 = base64ReverseLookup[b64.charCodeAt(i2 + 1)];
330
+ b2 = base64ReverseLookup[b64.charCodeAt(i2 + 2)];
331
+ output[j] = base64ReverseLookup[b64.charCodeAt(i2)] << 2 | b1 >> 4;
332
+ output[j + 1] = b1 << 4 | b2 >> 2;
333
+ output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i2 + 3)];
334
+ }
335
+ return output;
336
+ };
337
+ var __abort_js = () => abort("");
338
+ var __emscripten_runtime_keepalive_clear = () => {
339
+ };
340
+ var timers = {};
341
+ var callUserCallback = (func) => func();
342
+ var _emscripten_get_now = () => performance.now();
343
+ var __setitimer_js = (which, timeout_ms) => {
344
+ if (timers[which]) {
345
+ clearTimeout(timers[which].id);
346
+ delete timers[which];
347
+ }
348
+ if (!timeout_ms) return 0;
349
+ var id = setTimeout(() => {
350
+ delete timers[which];
351
+ callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));
352
+ }, timeout_ms);
353
+ timers[which] = {
354
+ id,
355
+ timeout_ms
356
+ };
357
+ return 0;
358
+ };
359
+ var _emscripten_math_cos = Math.cos;
360
+ var _emscripten_resize_heap = (requestedSize) => {
361
+ var oldSize = HEAPU8.length;
362
+ requestedSize >>>= 0;
363
+ return false;
364
+ };
365
+ var _proc_exit = (code) => {
366
+ throw `exit(${code})`;
367
+ };
368
+ for (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {
369
+ base64ReverseLookup[48 + i] = 52 + i;
370
+ base64ReverseLookup[65 + i] = i;
371
+ base64ReverseLookup[97 + i] = 26 + i;
372
+ }
373
+ base64ReverseLookup[43] = 62;
374
+ base64ReverseLookup[47] = 63;
375
+ var wasmImports = {
376
+ /** @export */
377
+ "d": __abort_js,
378
+ /** @export */
379
+ "c": __emscripten_runtime_keepalive_clear,
380
+ /** @export */
381
+ "e": __setitimer_js,
382
+ /** @export */
383
+ "a": _emscripten_math_cos,
384
+ /** @export */
385
+ "f": _emscripten_resize_heap,
386
+ /** @export */
387
+ "b": _proc_exit
388
+ };
389
+ function assignWasmExports(wasmExports) {
390
+ _opus_frame_decoder_create = wasmExports["i"];
391
+ _malloc = wasmExports["j"];
392
+ _opus_frame_decode_float_deinterleaved = wasmExports["k"];
393
+ _opus_frame_decoder_destroy = wasmExports["l"];
394
+ _free = wasmExports["m"];
395
+ __emscripten_timeout = wasmExports["o"];
396
+ }
397
+ var _opus_frame_decoder_create, _malloc, _opus_frame_decode_float_deinterleaved, _opus_frame_decoder_destroy, _free, __emscripten_timeout;
398
+ function initRuntime(wasmExports) {
399
+ wasmExports["h"]();
400
+ }
401
+ if (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, "wasm", { get: () => String.raw`dynEncode013bc58350c1ŸÉð|@|O€*X–Ø3R}@³ùÆöÁš†•ƒ¤½Cu­ÙFõ¶=}Vò–nою‰–X³ˆW‰~‰aGÕ5? Q= Ú†……Î…N= ‚W„ ƒeÇ¸ß3í=MÛßǹHÜjLvïêÀ:m°‰¹30‚‹>ÉX!¿b ýŽOýn
402
+ ®Fj{øú¢ç=}(ݝñŸÜnŸ moǰ¥à•eò?È×µh
403
+ ØW¨;Ñ aØX­æU{¤øàÖÕÀì·ÝÌ­íø±tâÔøeVO÷PÉ´È~ÃòsX1´ÊPyK·ÿ™ŒKZçµ ›W„Ñ¡¡_‘ ‘dÍ•í+]Õ~%Yïþîñ ¾Ú·”p[òß ¶ó÷y lhnn«²ù*¶Ìéñ®ï(éÇÃRÊÆRÌ-¬ÐoÒ”Ê2z+ä$‚:ÄsxÏ#Ït!MlBqžš§%Jè„ ƒ®Ä3ó°á¸eÅ_Ö=}iTÐ͆mo †ðbMpžl–¬E›P°e,¼Æju®ix>#}N€gd™ÿÇÄbç9WZÇ·n\†Öá1ڛÈt.ú6bì:û† ào¯ú4Ÿ“Ïø ü­zå¯#ÆkŸ‡M#úÿ9›ë:üÒÝëÚà†¡d”•%0ÒekÓ×mðƸ½ùÿ⇿Ò9 ›ÄgªÕÂ%ü¸» HÁMŽ#Âqˆ²~Œèn¯ Ûa_9j= ùÿR™èæÊó%Mƒ
404
+ ’¨,Àæq%98‰a9%T—˜2)´z«9gsÒ‚Ö!”ZhRõRێyÕ²ŒÝ=M<Öcº »~VFÕÖx:þrޑðnŽ£x¦8.è†$K9þ¹úSnÍ3¦ˆv…üuºsÕñ=}œ1—=M5Zʕ¦CÿSÉ2×qÒ««S†˜a»ù±(¢º]ÀmÍh÷/¥3@sns2 –%7ù-Q|nÏoöjYÛ]}à2{€EB’êÎ6ƒ>ÁbÄü
405
+ á, [DAÐuùjeN‹D‹ EëÔàZ‘ºlq˜»J /˲ájº‚ßCÃÝ1 b)øtN7Ê=}gÕ®òÍá§8²kDïû¤åÒÅóºc=M²= aË.ooèf€.QZj@bñ>qV©?æ• ƒxñˆR ô|_xw ê ˆ¸÷È¡ö"C¶œ2[¼‹ï¯¸©K†ŠmäºúZ€…¡%^°bóþ»-¼Ú¥ZIŽ(pþ…µS%øµã*Ò±8f:t¡éþ†õz¶<Äfñ*žöeP8AÓ¾/g×\С1Ï"= ¤ûGsW_¹ÔÈX Tãà‚uT™íEKPüݸ#åB¢ñ?:µßĬîFŽI8QY;X… ¶íŸ¦k{|¦éíà/fªi>´EÈoK= Š6¼l„Ör²ÿ*YǏv앭dàG{Ö,Gz½.gzSdïV%…’Š˜‰z“¥8¶²bO™¡2\nOžßV—¡S2KçK´”žUûu۝Ÿã~„f¾K)ÊÖ#´?#»ÅYƒXOøò T™CB}LUk,kÍ)]ŽíiEŸ^ÿyW)Ê»³= ô1_½úÌÞÊçýS¡‰
406
+ »£jŒÆkžh Ð1˜G<è^àÙç?…æF¦Ç/ã«Eý6ZI¹tšl.‚aëül|„!&:MÓå?N@øËœÅf 6cì$w–,3~„17F=M𸳞°a‰õu\9æk ‡I—&>V®‡Æ/Øa´ †%¶¢],ÿ:±wäé¬áS¥FK±U¢±ÓPóŠßœ&“®ƒe€‘= ÍÍܯÏ×À@= Ø‹#‚Ðk[NCó÷À‚ÄÞŽGQRˆcnI}HGñ—\’ç­= öè^áygyDԋa©D”¦„…'ߣMߣPI¯à¨=}˜=MUÀ¸çy 9W½LšíU·ôzwzÃsÝZòŽÓ3ŸFž¸“—Á菣âƒÑ–’nՙ%‘Í¥k…á®=Mˆ×ŸGTÀÊøfëM-UF‡;ŠuåÙ#…X#‰—
407
+ nˆ©ï֟DÅñ¸q ’,Թи;h¿åñŸ#µNÓ÷¸v} *ځ‡_= ãýØb6N–=MH§'®Iƒu¯78˜–‘ªÊÝ#42p´[/ƒ¿E= =MxƒåÄV§Ým©3?;bô9fb÷Ð'¨È˜IS7ñ >¬IÍÜK tçքJ 7û6ߥA/|BÏ›=Mõª‡w¿T¼91óí•ÒèœÔ_6»Âõˆªvg2ý¡‰õ÷Ò=}Å3ýXm²¬bˆÛ}U¬0œ¸Ük~e“
408
+ aY¬ÈƒÛ•µ¨¢–0N„ñ¬t³VÉhÖYvx§˜"ǘ5\N'ªÂ£æKlÂ?þ{m¼‰ôê±ñÔ|L„m¬t_œ2%¤E„}Ù>›ÎFûalSXø²tRªÀ8 ¥£Å˜š™|ÖW›(Ù)\3Úwåì:›oíý±Y4ì©géµC³¨Q‰\ÍõMÕ„
409
+ !J½6ë:ËgípoÒ=}I=}ëS¯¸…ƒž™F=}ÙT__U‰¾&\íÛ ¼Âkg#ú Ú¡ÀsÏÔTžµ³ÑËߊxNÉæGç^4Ñ¡%.¦U±O[ø¼4pͺš7܆âªcÔ¦¢:oŠu¹8ÌzîXfœ¬56DC´Þ]ӆž!=MOÀՉâGÖӝ«0¤–¿‘Å2ú
410
+ éηNó“ÚÄr_Z)6y&2^F|#²ì‘36eòa¦rcLõ5Hö<r¼J!í¼©DøÓ@¨åPóˆfÑ£®›·§hQ®õ ½‡c±M¥W,ÝàŒÜ««¿‰¢Vmù| ˋ·wj$témè±°&í9yò‰µ“fæuC”:‡E@[RX\.qéuDýé(‹iao»]W5?I!z®ž¡±âàk—Ëý¼ƒLó–FµUM¨cEu’¼üÃFÔì€<@y´ÜøÆ#y«™µ‡à dMå@„šÛXüû¼á¾ù[CHºÀ[4ñ5z:ӆàV[B•Ò/I!ÕÓÂXj«ýH&o³©sFÍ&-ö«7d\X#>¦€yñÜÃMG”c~#‘!‡T ütŽ? ªÌ·«‰á¨É»ÕBms¸Û®0úBšjÛ(ƒ^ÓÅ®¤ÛF¹ÐmŒ›a)'¨ë(²ÄÞÍm²¦á¡B„á|”%«L¹a\×Ub= -f‹®Ž¢Ü¢«GÌSÔxÖXc‹Ãȋ‹ŸœŠÄh½4e#"‰'…;P >Rõo;%tÐC$g%Ä>70* *©cX— !C7€yôîËtO'j?óíÛµÁûH= I†ŽróÛ= kòwi‰J]€]þ†ßY÷{šŒŸmûpLÿÊe•LA¾À <½å…i­WÎ?o©t¡caâB¼iBüÛڈ¯:_î˜OJ7"\¥^­EPHQ”¼Cõ *{ÎÁIÅŝ$ÉVÇbo]XÆs)^‘H—²®wójÔÎE“6OÙÿŽsRͨEù9ž/²OÉQÿmåŸ«õ‡ØÆœZa;ˆÄ{ <}˜¸°Ró=MÖ²ý‰Üz´|´†pµÛá!cï‡ Æ,@zÃTŠ«¶d ³åoÙ-KŠyÁÓ4gß-²ÂŸxÊØÏ\@‡q&}eÔÂèŸ\ßÍT1Ï\kŸƒì÷Úw…é\À“Ä~<à¢e«4E¡/«Ä­aõu½=}l°Ã˜Në/J­å=}ÿ®!.N‘Š8…Ær)HÖ43¡C3Ôz/N :
411
+ Ú7!Z†‹1Þqöž)M%"O7^+TɚêaF8øc’2ú%ù3}Ô²dU(™³͏Zň±£y¤aŠf¿Ï•][Hþ”s·Ù$EpFæt4¦$V‰ú
412
+ í!hãV53øKéâ=}Nå22Úú"AÃ5£áª6ŽŽWÕæYôȂ^ AÜÍ)ýYÌúë¾a0= ºvéèŠ:‡7“Mô=MWsE²Š£²ÇL¿òÞ² —ܳJ+= 5æ+,>
413
+ ¸M÷‰7jè;/_ý7ãzÈ)D÷·Ç4*È#†Ú¹"ó­!†z0 º—®“еZ*Šìx®
414
+ R>sÚýP7Š:ƒ¯ZZ=MŒͅW²Dê6Ó^Nq= fÍbN¿VþÒª£;û<cVýî’媖“6§7dËÃ-²us¶Ò¹%·iÄs4òf N…(ᨔ|õ-yZ$E)—¹ï5¶Wí]Q\·1U9†:[-zQ¼—É7÷/þžiÉõ ¿«Ob)Iµñ0
415
+ …lÁNpʦË-+Kfø»
416
+ cù@®W¡‘Y,îuC6ZK¤é‰Ï²µI=}= óáÔÁ4´-ƒõfԔmõVÛvFÞÀç*=}éåú6™î®£³úÄßy'GD1dƒÕ±È"šx^ù1˜)DÚ'öŽ–\©^6Œ§ö_гîªZ|¾S= @$^*- 'ªÈÄb7ÎÜt7Z4©ö§–É…šU•hY{ÓÚh£ˆ ±TޗÁÉýҎRŒ‰7Ë †¡t¨‹<#Ĩ¡@EK7†Ïb3Uri)åw –=}ø»n#MMuœåÛ™Ä œ ¼ü‰÷´ÒuâÆ8¯¬œ»R6‘I¡WBòîtžnP=Má‹-0óà¤ÕƓ+¯KæÛc„âÑG½þÛÀFä7"ATMáu+mø ¼?ә^Ê?Ts÷ÁR7ñ³!åogã _ËRª«J$¼­Ž‚nÇ ‹h‘ ýõgcíÿ·ÅºÊ§~̂= @<Ûx¿a¥L¦ÃOŸ·—òi½ eûž…ÎL~tÞ/ˆ'ž…—­=M›$x@½tZŖYÖ&¼£]6o¹åۃѕv‹àMfgp£7ŒÇ6ùßkØ5˜i>9àlÊ Š>ƒÐ7w)ý;³(JKLª.z7ðfê2jÐ"£™Ÿ.SˆJ®“.çŠòìV\3(ÎÍ­Êt"´»µ¾¸[Œ
417
+ ¸8Œ÷Ê+¶AúCñ&ÿøH]÷hly^Îàî ®ðgåA‰6í”KÊ7ÒäGo¿:ƒ¥G[Åþ¡«a¶GÞ¾Ž!â
418
+ =MnB»ªÖŽ1ÔIZò2»JkëÆwùºÅtªŠ’¯xÇ»×utŠ#jà:æî‹OÒ6P¿èrñË×ôm2¸ÓJ±*h«koâ}»¯£F÷§÷¸”#aƒ®—ŠÅˆ.ùÌ/³3ځ9Vϗ[³22L[ŸÓ,ö«W &$/U›Vq* fÐ;F°®/Ѧ·qo:SCÚɼñ|¨íu09é±|Þ'­ÏYÍ. 5Cm;Àúñ=MmW8ÒSŸM³¦äHmsA^mÞ¢£Â©}‚oO21*‚ÒÃʋFbäT~¿P'7ÑDØÖW®äO{ŽZ»ž A ؄;t£82Jb^“:®ÇOß­v@r*o:×>·ûxGÌt/ë*Š”F:7ÝÁwd¾º›£D´{¢= ´¾˜3EK·‚<MÉ¿†8ÂìiÔÁ°r6Ö!F{'H§Ü
419
+ y¢r‚Ín(2Rƒ—æQ{ Û»Ìg{¸G%~»¥QÜm$B˒¡[Ú®jþXè59[ô
420
+ âRAÁïyw—ìüwrz˜)yhX#p¼èt!’1‹~^ h6kî^C6}hpBŽ{‘£Q5—x¿ÁoН= à ˆ£É<󛫀¡ìè31ÜÌç±3X~:ÚÂS~«3/÷9ÚJ8Æ~­^\¨Õ’ÀŠvȚØýd9zX|ÿ1¨‰
421
+ = S^bÅ]É:×l÷EÜ1= ¦¼Ê
422
+ T4’ÙCéhåìcÅ»èZ³}!©ð–:~^¯ãó*Mï8r€Úm}6S3–# ùÊ(%òYï¬%a¶¯N½Ž
423
+ ï˜õ­î/Q ½É}I£Û£þ×ÍLtä,QMÊÚ0la; {Z½¥{é¹3§£:Nj´¸ÆbýÖÜÊÝizeµvýEärìY(£Î£Ô¾oþ3Š9hn,9øÚ¯Œúõyä¿Ôb4q
424
+ ÏTÊî·ÑڝQÆï+zy¥0o”b;¢ÀŒï­ˆüÕçIò‡õ[I"îšY°â‰p×AÕ ‹# }êN92‚Üž'Ú=}Å®Õà¹Xg[9„ÿÐ58¿ŒCke.ÓÏ#êzü=}ÒGkÌ%Æ"èύ^q±R3
425
+ =}*@Å@¹æÛir·÷³¸{Ôd«WžÈHÒ=M®Ôæ•æa!RqÄםóÁ—ᯍSÛ®?Ãëê ¨.ÃW§r+TSóÛ5_µ®cT8_WqP†ãtå!Wü= ºmµ¬È
426
+ Ò+ŸKq¢¢–ãgõ ËÁY”bHG@¡™yt‡]NÖ¥¼~0X+ûx85&Bùž2—×Ûßoç¤›„AŠ:$'áôÑÀ9º|:ª °­zï:— ­$—Jo¯’«Ë›ÜÛ÷àŽSWîK5´ÁË$fÙÓ¨Ãޚ1£L š.uïÇ-ê{¹/&ê֒VÆcí[>£µآŵûȟ{-VÊm_°S›³òÀmªŸQ©FlaÞñíÏW¬D©lÑñ)ðss½ÎÿVƒBt LªS+¬KB\;ªå'þmd'=}‘ÈnÊu&þÚ®4Ps±ô°ñZ÷¹„(ÌýlÜ*M»N«Ïö:[Վ.lrP޽0™w¬žƒ=Mâ×sWíQx_ó‘?CA'
427
+ Z“W-òªi±´¥²ÊMZ§æ†„dÀZÐùõ«š˜óZ—ófÉÑüÔè­\rN’ÀóV6Á69f•~6dOgD п”o>‚‘é#Y¾u?ØÞœØš-Ù±¶WE™ ¯=M^Ïè–bȽq—Úƒäqj ‘r”œ½ZmFïâjʘ4áÃ1XÒ93Oʚ´YöcÛj¥•[Èñ£@!9+ÿI™ üb•Fu#PB©ž
428
+ DÑÌYíuÃàÓ+µ"—8“q1·ìÚ¸óTü-¤‘¯ïiõæ)êI÷ïсýÙ¤†£.У‘Û P‡¬A-|¸ëu¥ätj ì¬ÔåÔ8O¥ §IØqÍB¨|D8xò)ºmÕCڒßÒ‰j&ç’þâ&}D#² –Žš½Af9«‘œ ÛБÑW‚—ï^Àþ°w4Ì÷ÿ䣁–¦›ü-yÑ‘ïc®Tú÷5YQp'ùÆ×Íçj1vaî@;åQ‘ÃÀ~¶´‡õ|Ÿ}ñh×ébÔF„4\BÂC&ÿé>SB0qç=}„¤+«mÜp®¶-[—j7ÈÁ­(’bC´=}CѼ±‰§‰ =}Êx±µn†!üÍ@je ¾Ÿ…”Új¯œq!Ró6™×üv$2ÐCÿÞ2!ý^o›äuÏtmQ»ý)ËgÏ_¦npËv õâ;þª«âÍ×;sbŸû–ûoD³auæ³e<=}ÿaSªrýô‡:kû…Üuü>YÃWa³'ÞF{À¼‚ìrag‡ÞP-n£íñN¬X—ª½Z43<yþ²]•¡a®€‰ãˆK[³'· h~ÚW6xòv2ß:.Y¢vÐ|°3‚_”+Æ×@8±+p €e+©Æû |­Ãˆ\|. gè+âT%ç#0ÃêÛ|ò4Õ®ü= 6©Q?ŽÐ¾ô‡=}V–nqæ…ö«…ø{Õ݉­£y"ërk•Ün§ÛVK ý¯«¼2Ìäí½÷Á_9¸­O$6GÌljÜÁªYý»ï#ç[ދ&0¸5á# p*zÄɦ/¦†“ßõè{š»ú-%Ç Ž.¥ ×¾A?Ñ¥m0!{eõˆR,nÖ° íe .ˍ= \pÈÞ=}4”½²N\xÏnYÏÁÏ®»Ö½T¡Ðº.„^¿€èÝۊœ.@¸u9¼p֌Z•¹ÞÐöxjC%fڃl1 ÷þ¬Ñ­q…â|Tí*mc~‚
429
+ 4:íd;8Å"7Jî^óðP<ª4 ïî‰rضgcŒ
430
+
431
+ m©°áԅßjf+‰áˆÁCˆ®êAªiO!Ðp8!1ǙœÒë-J‚œö9Õp+mz¸ŸŽ…K#€ôxpGS øQP@c1)Ó ¢_·’=}ºøÁ€9VÙ£Þþ”ôŽbF0‡†C“Š±œózHþ, ÏÊ?d“gºŸPÙ6‹ ì҅òÐMþz’²ÓR½Šœ7d~t¾™óÍw¼äN×3†lVªk ·6­O@*%1‡ð®Ðùã͸iæ—hÔ3é6šåº¦•ªÐN:A6xð†–éÝË Œ=}¾\„š&Š¿Š§ß<Í=MS¼Ê¬ü8â÷/Þä:ô*4Äꃯb(çi@ñ¼‰(|«¥M$.'i3ÖL>\#qkºýþé–;3éy”M)"N\>'?9.ۋ6c7síÒÛ)°tU9QA5zòfvèð.+þèÃÐg?€»|îb$±)|9äáà’gJ…aJù[ÿh:©rÎxò¼…ÿ*­ h5z«ÅضKÚÛ¯èß«Àú½¾]•½íDØÙ¼mñx½E¯T£E·*%eúٚ=}å>òGG7Õ.ì(ö,(lÙ³‘¶°çÿßrê§@óOcZßëÏ/m|Ñ4J­ô-@dbºX’„…­þx.I*çÃ3†Ÿ†éÙx9dÚ*zQÙP;Òö›nk·—µ×ú­¤îB@ÇW[3îÉ"­Lhó Y["nÌH8‹<^¬ =}µ«|ͱ^·+„¤¬Å/3h^”Óìçç» *ãöøŽ5a¿3uýñ”Ì0 |‡jW˜p.m˜Þ.˜MÉłw*iìe|ÂSÈÊWÒ£é܅…Lb–é4–^&©SÉ«°çn‡›xŸ¨Jg­Ä9°XXî=Mƒñ”Ò?Ñ¢öN¿= 
432
+ „AŽèWÜ õþ5¿Œ¡œ~ì "3nßÐ׿™â¨Bªœ3ÎNdֈ”b(,,âÿé®w䨏Â[ ”þ4þè|Çaán?C¦°¼èŒ{Üsîb>ûåxmîNúÿZ"Lˆß+ŽûŽŠ= ÞßO†…üwí·™¨Ÿî®Ü_‹RŠä± \Õ싱g?Òst¢œÌcÂÉ,ÊE9<ˆ{{ì20J”ù l{JDE¯= JõËƒaÿôÀ”‘bàè±Ôˆ¥hV>¡ %á:ƯîÈ%E3-8ð = öüönÑ[Q_fTp“EF€c½´ÇƒÖýc§P€ÄO€OdâŽ‹‹ +I„ÒRƒ%σ7 ¦Ãe¬ô®9¢2Ù*4
433
+ EžòCñÔ·T†¦aG¯a*1HŽOX®Ï=}J¦¿†JæÂ mœ¯Jš1«uð¦JJw
434
+ Ät̕ñVÔkMqیě=MTÏ&ïÌÒ9‰}¨â—nz™ìŸrµ³¤ñæ4lÔ=MΓ7l¾É-¿oœÐwàâf¯RìàÅXÿ“bÃfõÈS$y^x{u€—=M~ÿõ K¸x}ϵRÌ&¸ÿÕ Læ5; ¬©‰܏¤{³«0{ÿ¹g«êD¾ÓWFäQ ù—]±koÊBÖUÁ!ìö›rH~.LHþ wq>nGžÂ›SÕᛖÁÜ´';§§SÕþïM]•Ê"p'­ÚÅÞ«‡€äÕãZöêAè(¦ 7fa›&ÁÜ´§BçoGžEñ¡SÕ±üµÁܘ£1;Þ.t±aƒJ öL¥o:“]ôáŸÉÊ"¨ªh쏭*GÑ=} †1Ù•’BW'(–ßk{­T΀¾!ñ’ i2k˼´•wô|&¤Õꇂ·,Ú=M™¡oV¡î|8H€ÔùK$¥J(mˌßÝïOísˆ¹Cÿ½a”u^‘<ɔd•ƒƒó/%Š›í²Ýœá'_dKÉ;æó}:5­®Ì?9ÈdÒ¯Gúa’}{=}‰¡bG‚23bؒ26‰Þpâë@QÃÞoÜ«™–í¸Äî5…ß:¶9¹4¨·ó5}A·~¯m¥©ªs™{?ÓüôZ”3r‘èzÔUª¬<ur¥}uµmT{“~ƒc3!ºù(hŸŸ$‡ÙÄ5„!8Ýö¨疽ý½lÇ·ü^VfɎ£i§³væ·3ƒBmŸ;«­ä³ãVÁ©Òò"³ñëíëß§T…¬ý¦CÝHéôtàÔ1¦<¦še¶\qÚ$9­œ2¦>‘Œ-oO
435
+ !ú)h“;qS£Ç@²ä™ÃԊw×Õê99© ¯”œOñ^á|mæé4´™áíiñI¥\¼)±Ù=MÛȎ¦c™îõy–4Œ~1uh\é=Mòðs=Mˋh瞬ƒ¹Ã§ Œ¥ Ò$IºQfK·•ƒ|ëpÆ©{Ù3?œñê‚ÑKòV¨ôÿ½ªÝyÎ'¯4oôØäï§cXŽ fy¬q:ž <|µ…ÿŸ9š$9jÒ[ÙÌc#KHÜL4&‹g|ÎÝ&°¥ô££ŸÖþ(µØ€2u”3:¾JptŸjb˜^/X8½Þñ!°.^Î97ÚØ úÉcDÉP–0ó ï>Ì~y5ïÍ{ÿgµ'Næ¤ö¾+Ùʕîiì–üXRjàF1Ïñ*
436
+ >Œ>¦›s'ɟ™Øð§ãñ¥œA<uÍ'XV…÷“Fdœ}^ÿÑIL֋™Ó AÅÉL^P?Y©Oð)]i$pÿõ}/Là)[­Ø“k¹Vìå6ÃÙYï‡0ƒIß#³{Ç(ù*1$q?àôb;MìÁÜ´§=}qpGžv›rH~.Ó½kGžòû1G~.pklGžö›–ÁÜ´'uko¤\sñn}}̐_ÜhùåÌ7‹oʨ»èVÁ!ì›àœ£YV½èTÁ!ìL“
437
+ kïF1—ãËÝ}ôÉFàß2¸½òŽŠ¿áW±RÄËÐðã󾘇!òýù©
438
+ N~%sL¬cv®)iUïJ«]R¸yJ‹r\xÿö\œPƒ¸„‰i¯e¿)–JßÌÂM§Èñ–I
439
+ LUŸz¦
440
+ 1µØ,‰5ôq,:
441
+ EC0P$θ>Â쥪+8ÌÀš]RPļ£cÎü‚´éÿô‰ÚĄî?sÜ$ÿÆSÇDô¸]OyÎ-j¦*<a¬ßıÔ)é)%ÙéTGB>]åC½;DbM_ìO˜ÎOCKà˜»O cè ¸~)½=}4׃«Ú¯Ù2‰=}!÷´âøŠ®&Òsªï6³™ªh
442
+ ¶**8º7”¨;Çÿ2Ù»ªõef^n^n^^n^^^y˜ iµÔÙ÷Ä>ÍÒ<Œ.ø²±,ŒÀ6<
443
+ .VRF é üÏ@¢®gsÖí'UQ×tF ×@¢¼@¢ŽQ‡Ü›Âûd±û‘xªÐ ÉäH§¸Ú†+
444
+ ÍuBý*
445
+ ¬E¤´a•#±¯uÌyÊQ”åÑÏzâØåjš¨sPðÉðn±Õ¼£ááH¬óGsz„‚¶5$>àAÆbŽT§¸ßäÓB÷ûÀ‚‹˅{Ž’³á…½À5ÍÞæÓ­«Éz5%Úþ„ޱc…*|ð)o÷ ·Kôàþÿ~ŒÙc0>ãvP«ŒA°K8·¡¹ÚªÑÖ·ùgƕwƂƮ,céuÎæ´ò'•ü
446
+ Èeڗð—?enojÉGþ±âRÙòõòõ 1‘~%îPozá>zwVÊuR ‘âÞR†[¯¥J%ÕSæWT_Ñ7˚Wø1*¡=MÀYµ:¥ð•ŠZ·üø¦Âõ3JÂ5ýü¤Füœ“ºQҪ֒ êBvQTŸ²ç‰)–ŽÛ
447
+ %çI¯«ù
448
+ õç°|Õ ïiۅê~b¼ZQ&ûÕN²ùC²(^Äv¥Äëk
449
+ §.øŒÇ‚ü
450
+ –Ð|Q= ˆá& !I$±bö½Âí”9îmÔ ¶IyÖg×!ļi^(¬³óŠx}5'&¶Ž2ÎgL~à"Ùϐã›^ð“ãD~šaíBÄø ãSŒ þ<@4¥è»…i䉆b#ïèUÑUhèÏ왪L[ÙQ]©â_H•i_¾°Y™îœµ7vn¶ieՌØÈF³Êåš,ŸètK™ýKÉý™BS&ØŘw»0¤Èlûͼl£[= ø5»ƒ]›a8b„ȐUÎ-,‹zDÜ«dÏäsQ
451
+ ¹.Ýõã¡c…o$'ð§ é‘ÞT-¦æm&ُŒ±äÄ1ÊÉLC|($àÛC؈³W/¸â ÉÇ@âAt‡VŒˆb¸“5Àœ
452
+ Ý%‰ËÞËѼžjÀß¶ÛN¿2âaä_oÃ'°^Óå‡Þ’pòÏϒýóJHð¨6ñ â×xà»öX5¯;|J È†º©(Sèþó‹MZìÞ+à#·7¼£W˜»©6zªŽ¯w±ÆAƒHcËæï‚øÝÈ­ÐF[þ‘\…Wñ£Ò¨Éýó›ª<D šéä;$-=MõmN·çeF ³ï²½öaέX´.&ICÃ~üK NߓڏÉXKè‘a2C[ñëÇY³Ì™øöµÀvޞÿRë>SJ“®sºîÜwûöHÞ [8Y/‰£ä2ϾÖr÷2ûFI÷@+óWg#7,åûŸd¨Œ×ÞyµOÊ w놾B-—~ö×/X3Íè|êÊй"Ê.A ¦ ó ö‰DYêÖDJ»5èI0*U»}:ƒ]\€X]*»‘>Béúûücv= ž}#å
453
+ â˪27,7]òÛ¼ìñýWÅ8'¼ êe~»7Œ¿‚ªFËru•ÙâWë Ä«=M= ÄÏÓXI–óoN8->Yƒ/~6‚H_ƒ­Ð¥Ä𠄬ª¢c]d)Má“lúr57§k~¼÷aÃÍL}WE;ÄۊG~Mê榷Å'D^ñ<™zJµŸ,ÂÅ8ùÈ©^ζËõihê?´àž˜’¿åh÷œ÷D3ˆÔ2ëh™ð"èç°í½0•°§Ä ëPHà:Yj“u™ûŸ])²® ØXÞÉçœ]ܗ‡Œiù±Zp}ZLƒ‡¾r
454
+ Iˆñ>ˆßv¼>O¡W}kb—ꓞîô¡AIزuï֎ãíå¢Úpv¿!_ÿA¬¡!ò’Ë51@B¯~¨QÂQ¦G<‘ÜclHôµ†Ó˜Ê¶=}©”T¬3Œ*ÂDà˜"ÃsI&=Mª p"EéjÊ;їÂ}¾–¯˜,¶. Þ¦òòޏC!^ kŠLØJ.Ð%~Á:ʹš:xJ'wµ+Šz³TÊ% Â+6zjx¯4ÂgU¯¬ç¨ÀZdútÚ=M“¯^U¦r–NPÔæ„O£EÖ÷i§Â*ÄZþ^í¿ޞ£‚|þÁ|:y&{6g(<«K-•Y®ûðz©m-zQ€D¢ÄÃŖl“s(Ù$ÅK-ë3Îe´Ô‚j - ¼µËüÍTITÐ)¡âZW‘äV­ëã>Ûß#ÜÆo•3<= 2ӂ£¬è ZtFtLˆüªó#Å Ct-é>Œ¯„¤Ë$¿ªBe—x„ ¦ £õÌ!Ég©åïÍB~Å4¬}­‘ÊÕåÄÑc Ÿ©þ{¢ÆˆTêU!ҕ,Ph}ä~ôçˆéU©h½Ð=}š_0©ƒïŒþFn£k¨ÓýV‡Féýïc=Máv-÷Vn= v€¹Å†g͓¸^*5Ý$¯rÜ ÞRÄK&ÊfíåÃKÈÄA¦ò¯9iië:ٚ0´.šV f$= ™¥í. òù™ØË„ŸMIƄ«¦Ë•†‡ý0ËõW6õ“ 8 I¹]&kóNg–—ì3Û¶M²«hžc.‹ùN‚= TF%É1–=}Ô;ˆñ_•Öº6@Z² î뤋žpò—6]©rcˆºa¼o2ç¶á¡Y甎dDˆÌ±H×6íãí/f¹°֝#͹G=}ˇ¬ Q°Å‚w“õ ‡ùYY$waìÿ¿³ —ħß³º¸xù4ÐøÒ¯)Ãé*-± –øÐVö–F‚éœñ#œðj^´¬N Ã{þ0ø´-vHDšå)LN¡ñ2¿ÇIܪZ{‚Ñ ë:B6ßè>Ø=}ðaÃcJ-Á_ëâÀïþ‹Çðï ð^¿åN]ÆX¦-Ô¼^&†¢j~óFÅÜSÕß¼l bR»BØöÂÍ^‘—<p$k(kCÚç§=d{()ÌJýv\ e*X€É’Ž!¢)X’Â[¿ëö Êü¢JãÛW=}±«öuï^TÔâ«9¹O$ß֗Y€™‚°€LtZؖ= qåN›2UÔ}îÓÆ¯¼‡É‚à mÉM1g%²½£hÅq]„÷•h¨oÊ$¼e>B¥]e^Ñ'QÿL= ó‡¤J¨yɏ õ<ÛJDá‚hGƒ³d[bñz-wWªxýÙcö…cÎPÆx|«A’XÚÎɊRLæ›3‘cÁ+ôšäŠ\0Wyâ?î@·a‡º3z¦ÅÁp³ “‹=}"  Ë= L0¨ÝK¶Úõ“pi¬Y{¸#ø³[¯zãBw¿‰øØ"å³ò (Œmpß³=MI-Ûp´Œ 69¬°Âe<JíªíXy¶)›kô—0¦8»ýmIó%SœÑ'‘Ov³]ó§S—|M òsz
455
+ ËÁ..ˆœ#ç¬A<ð<†‹£ãOàŽ'Ü\ò§"…ùxÓh*ÅPC~
456
+ Òá‹(a?-ÍJtUÿU?…=}ó
457
+ lÖöa­ß.Êl.f#þxñü÷D²WdÀTæ7ÔÁ'r¬Yï6£ëö“šƒ&©ðÎ'ìÎð9(G©òä:·kãúñêU‡às±=}àۄ€¢Ud¸ !;PN4RÝõ EK妋í¥ë iuõ½ïÕ©?sxž&Ì˔jï=MÍè£ÏœzÞ|\Ùâü%Ó§¿Ííƒà±Ço³×Op{v„µ²Ä=}ŠÅ/Q£Ig&[UèY}ˆoòÄ©.¥––>½öÔ½Ãd‚RN:Î]åj­W'ÃYÒàßEqJòuJtB‘éd‚IvRñyÂÖe?íb{æl‘WÆû°uÙ3-ÇQîfSÿ‡K²sÉÃ$mm!¼MTª(‹·Û-Cß?-\HXÚ=M \é¤JÜô¦5ta,}Z±Í¨JÃÑX¢¨šÀÌÝÈFk@ª) ĜK®YvĂ}™<h%&³ÀCn¶ØEß#êöp»žn¬ÉäNŒÓ²WA>t@f½l•oso{'òɌ™Î·ŠøðŸÂ§Å¶=}ÊûN…J%ú/ˆ%:pû¹=}'µ»K€'@'! åj1l?3XF–<·Úå¯nûܹjAÎFë »è®ò;1û Ç÷k{óvîžæu{°q±ûŸL“ WùXöñK™nìM¼0ügUi©X“²{¶vÒüËuÜ| XkېŸÆm’ø÷af?÷°ªB鏶@G#fˆç¶ÛêHßQ¨õÒ±Ëà¤à0§H¿ÊÑÌç* WyTf|éw›¼½2=}®
458
+ ‘ÅÃÔn­VãoM+¨±fZò|ws´+ çÄ6Kd3‹JÊl¯Éf¯}Ä^̸¸8'Ãx[V‘ ¦õÉ&+Ó\ÚÜ]©ÃIÄ^©u]Œ3œv'?—êIÁpSy„mÒÙQ#Â7s濐•¿ÕÞý€èIt£1ªÔ=}Xàv$Õn¬Æþç-µ,Qñ*À·7w ʾä…û¤z°á×K¬¿ÐtÝpŒW‘ÌđÌÂT óBGJ¦XÄÐÃk܀„•^étpï3·Mêo¤"Æ»(­ÄŠ~jr¦æàè¨Gñ‘Nß(1.©iõË=Mƒ©”ÁuµSKù¹ãÝР…~Œä¹s;©êѤ”‡rw¶O«m¾ù–钘ܡ­Ú¢”ÒÌ'"°3³ÿM{v*W¸¶]¿ÿôèxBÖÛO ï= ;n¹Îf;7:•ÝÇ1½cÞ¾¼W+Ã3ƒ¸)ÿRHñ¢Þ‘Ùô¢¨ç‡t[¥Æa£hìl, ~˝äÔ
459
+ 7ª=Mû’-ÅàêÒxýað!”gGÃÿ³Ë_½)“ýŒÚÅÜ %#ay!WÔxÀÀÝåTíϤŸ¹®ø;(gU¥´(؉MȲއ†‘:•gªýü(Ï0BÝc×éË@¹¦jœ‚Îoy쯶'½‹a>õiKÂÓ÷Åc$Ããöˍ›ûÏy_UÏwø—‹{ÿm«9’? cÞT#‹Mê8=}¶Pôì_’#µýì7¼c%?gÎ}Õ›üé։ÿmNЋiF(ã q…çoxh>—Nä«Ï¤&ÈkûÈ´푅´¿ª€Õn?èÀ²ÆšÿÔxoÚi÷ÃÚ
460
+ ˆ]Ø;$3DƼ„â‡W2ڇÝ= ÃBdŠ“Q}ø’……ޱW¢Ü ZUNשð´žrr+Ëϲº$)¨†˜à>ê=M&Èt¬—Ë,º/ê|ÈÇ*½“U®î*¤ïŒßÚ=Má!$92™ÕávJ›ä
461
+ Ž†°ò5gqa:#D8¹ÈX™qøë±Ã:°:ôŒ>+˜K¨U°*‡ YnçÑ:32ùuÀ"öë%Kæ˜P”¯]vÎ%¥§Ñ×@“üþ±Y×Òd !ÀÚ_“¨éH8ÄgÖí˜Ù«´‚äñŸ«TÀW4*…½
462
+ 4Gœ?†ÊRÛÁ[ý©L@§÷MyjÐΊôzG{¯ZŽ„ÏB¼[UGjmGÑÛ†cK„ÔÜýH¢>Qì"^Ý,XÇȖ~ÿ[ ÷â‘ÑÔ«Gï—/ò[3†Ëm<¡IS?º ‡+R|+¾폽ú¯e3Æ¡½úC½zÇê@ºÌ€M7ôx÷cC9µAç_3ÎRÉ]ÃÊÃ}üò¦?ºˆD9“^zΙqü:s2k½¸|œ9½†¨´x!{hԕ_‡iû7ƒ-wýsÅõ»zz¼S R÷-²ma½üDy~½E
463
+ Y¶:q‰gWýURDÏjr¥ú>ÏüP²¨!ê=Mº_¦æŒk„ÏצÏçØmx ,17Jds!¥žá¨mòmƒý}ƒÉÍêŠÙzZ‚ïƒTòŸ%‘¼ œó—õ‡Ó”µÁQ†9Ôõ= §ò‚UB~Üáìsæi_.zWb$fc+îÏ$vD3ôì i3€u z?ªD/9k¹.r¬ó)£ê‘ðY8üš¸£"BÆÁ‹£˜Ô¹Ëd¬jhôc¬¡GÐ×5u³Ð5è\é4-››ž–ÊsàlT2”ºá¥øÉÜ6n6°˜Þbpw !×^ßdžeÛ,cg rääÃq’È·1¤Å^™o8“®â¦dæWÂßTÎaF1sºíD¶×ø’Ÿ¯
464
+ ’†Z"Ü/èœïúÝ aè}Ååãòl‚êÉAîÄ<ó˜ª}V=M“bÏ>Oɋl¥+ì'U¢ø¨Ѻ?ùZ¦ï³»ºÛI©³+Èuó҅›ÿ1,ܖ머Ç
465
+ Y=}Dµ”¤ç:¥áTdL÷ϠG4¨‘Q¾îm1”ü-‹ôîûYV=}æñoF§É·mO„¯¯tÞx= ¥(…ô‰Ù‡¸ ðXå©Ü5‡XF!mã^½……³’'5ÁïF×¼å×eÂc­kyß<QÞ,hòo·âªãÁêº4 :¬kçÑÖñ•™ã‚NP»QÑ Xy°( ¯°•ºmö8tb[°‚–…rH]˜=}d›^ؘKäà=M §¾”Ûäˆ~ŽRîûYpã¥A–©ð©qpµî 3 (bèÜÿÜùˆêfÝÌ®F°I0H—ê²'/e¶éàÞ,Q†“:À)#Èi=}$\Ê\ÿù]̛<ÒþMÆ¢$¤ü˜o1X¿÷9ÇHLlÑkÑÌØª6uG¶>²Ï–äT‚ÝñvŒÔÀwRa]÷pxZì¹ð>ëꈤ÷ü= ÌJvÚ¬Ø AŽÄáŸÝfçë]„þúœ·ÚÇVêym3pÊÚÀDzÇ=}U"¾îÇÐhŠP8ˉ¹ž r‰8_Œû‡L.Տ”ìÑ^ªŒÐ% ¹˜òŠì¥¿4‚L[ùˆ“ɍcÛí8Ä@Ðhå1Hå™ãYf¡hê•6&‘ÈÔ¹~åAÇÿ¶‘ì™ï–­½,iu¸„+{
466
+ Û0Çóæ8ÕãѨz3Žz?Nýhg1ç^7ȗ·= ž\ؒw‘a—V5QÅ¥Fö›ÒÂÇ©’•Q'³%cogžßgÓºÂò8_uÚ…ó.ǹS¥©†Š*¬h´ƒþ¯™¬€‘²v2z-Æw &[”ÿbIû^>;?ùΫ«ˆnTj‡ÅJÑQëóÈãÖ_öÔHeÞ®Ëtǂ¤S‘—žpnáøó¿ÌuµØ~‘YPLˆ½y4æÑ;!:«¸-ô"=}ƒÒˆ±˜§»X¨™‘Ýñ¡Ì§>ŸUâ>•Y㎜¾"çaFfe´·‹6e.Ã$NɌÔÃ_ü÷ÛßË:ücóŸ'¬ð[øé.‚àú‘/hè#Nyq*¢½ûÀá̓˜ž¦Bq!9š…;ögMgùÊ«®„ºÊ$£ûÌ̤ŸK’[Ïnv(ó„$±ã‚âÉÏ-
467
+ Œú{ÂÅ,<ÊT8ö¤Œê}æõq¤!aü:ʨ†Ôû\¹I}ëT5Æ\Ïiÿ0QEïµ*€ñK’Œh7b¾gæ'ÐÂdƒ–[§ˆhsYàm£¹KP®pýîöñ輸[u/Ú¸= Y6 ÀYu÷²Ö™ŸÖ]r[7„bmj¨'æjòà†’lMO* nj·¤ñ1(*TىZûÇIîiÁ„þ’.ÖûS6Õb6yYìÒ$©iêã‡â{Š9DÖ[™0t *4šÿÐzº0ð*µÝJ7НRbšå‘§ ‚G'Ká
468
+ è2xêy­.êä‘:kñnËÞ8ÖúuŠqhÛâ|èä(Æ5õ}v÷ƒêÍFŒ=MîX鳓mî´ü|pî´ÌõÆÅµÔ÷)jžDo…L¾6üc€Ö•tÞÔ,Æ3 eð_—‹Äšϊ.‰3ˆ,VöHDNå@ÔI؅hÈ1¾¸Šô"†§wt]CˆŽàñìßï÷\kò†§Ëkž¡—áŽÛØ<vÐJÞQi[ƒǢNª¹˜á¥¹$­t¹Ða‰&Á_r5×hzM8%
469
+ ‘Îf93é.¸E¿ÒZ_=}̯ܛµ±œüˆù×fó ùž2½NQXE‰‰œÿZ ìt«î9’^z?êfô0Hf4†ê‰†êfá¤>P^^'­Öâh䪽œ
470
+ à§÷Ê‘Z4t¯.®'c™Î÷þ!%n/ =}¤‚=}}Ú²SpŠêw½ËÖPçT¤–õßª—›U‹,2õVuPT8ÌÍ!YVÕ,,]^éyào7=M™RÇt]= ….&ùdDÒh­P\Œã¨›-FRÆx3´¿¥ûOªÄ:{·ª7A=}ÛEx¥=}VîAOúõL*þ¥ÑÚ¬,t .²ÑO·(—“ùqò×Q1 Iì(é¡U©ª_L ÷¼Ü j–mªÑm_{ŒÞQQõÔ}óköJ%¡ÚL£²ÆÓ uŠSU#zÓ*§ºl¶8BÐ"@b3ôÚzbÛvÈdӟÌg&á­ê†ühSÍw3È[©tÄn*\2¢ƒ¦à
471
+ €v6ßyŠÜ0Íw)à×莚S{Ñ.Ò¦Íæ ÙbµîÑ<e„á_›ñB.½®u÷\'&nRTx)= Í=}-ˆûô¥Í.>€éô5) 'ý¨êëšçõª·õžJ+•mvä¯1= †9×µÄúb3®:†OaÌw†’;±QãJt= .÷g)–^=}%9Òwq9D>èÅí‚:9º_À$˜ÒÁ{cŸžÅ?°Nzí’ø~ÊY8Ä)#ˆ2b°µ#¢ix3ñȆiæ9“z¨ÿJæ“äë%<êR MÑÄQ†Ö2Ô–½aôcŠ5}t5ìø#Vñb Iò‚†j&=M¶Êwd!
472
+ –é7™[ÀÚU*l6¸ïÙ©¡NIn%ä Ì%Gù‘Ñ6¨ uo•·6Å)=}PíÎîT=M쪇¤){èÐSX&P2¿Ü ÍvHÎâ¶Á3ÇÌð¹õ•-„êÂâ©s¥‚Ÿ¾¨ò-õ£seø«OۍˆÝ·ÔnW@e¤l4¯ ÏÞ¾Qj’AޕiòÈë,òPGPñ¾ŒwfQdSu^ïÿ+‡l©„ª£¡Eõ£){æ ìððõ⡌ÿ¬ Ôé
473
+ £“’¶p™œ¾lø…w³”= ¡Km=}û5HàI§Ò–%S5x÷•i$¡;ÈwßôRxfaðZj&—h6æ‘é+4²èþ"ñ­Ð
474
+ ú¤ UÚª–ô‰Æœß ‹Ø°†;¯Ê¹¸ùʧÈÖßoÑZ!ޒôÙÙʙ˜Ã¾#·/ÙÀ#P±/·/}¯1𮶏zÉöóýaa’â%
475
+ â]
476
+ ÷^ïCÙã¥þ]÷FvȊ­ÅHÒJŽ÷†Ùñs¦ÖGúìtp»²Xæßñ 3ÞFЉ}ÃéD½~ÚkíŽ]æd®ã±êµ×èÑèq1%¹ªÓåˆÌǐ-ù˜µ“Fø•I´ðìeò3ëí
477
+ #1ñ)ì”)žÞ÷ÔÊ0­ÐÊ­ÈÊЭØÊÝ÷D"¢×ûƒ>öÑ X›>>>éÍ5u²m¦œÌdlÏg=MFSôS…QÄ@ט¬Gó^Ş£y©ZIdÉܟÌý—wË}E‡¬G0Tò0RñSòÜsÁ¡¬ßâ= É÷Ù¨+­•ÒŸ_)ƒ•Mv«<§•(ÁQbùÀÇ=}Þk¨jlŠ¿ÐŸ±ðØ÷ÙjÕ²"éñžpÑ¤Š“ûر¸Ø1\’†âÙ= û ÷áùTn¯8 1˜¢:«çùdõ¦ÖÝ'dd1&"†w2u„‚ù“†$Ì$Ì%üžÕÉïÁᐝ~’E£ÄâŤÆÂ€Ú¤JÙ©¡¤î= Wxòý%=}QÚÄ­šöªÖþošpgÇ Xr*—ôMR…#ìmÕ§Íœ‡˜õp-¥ÆÑaòÿL¼šÿÑ­͖±P‘3;‘Â^šW])³Ï ã™þm¨8e»êšÈÓ=MJ­„šUðPmr ¹-=}® Äy H LúRX(,Ð:‚Ž= Õ^',Ön¶j—ØÜiPW2(ŒÒ7©<:™4Ê:2N¸ÍÊ8²Ï.ýI4·I†"k¦$ô‘q{š øâ¹f „ñež1hªQ¼[_é2Nƒ™È´jQˆ°*YÉîÍϾÿÑ
478
+ Ív@ØiúŒ!zڛ.>ÔZ³b]@ëúž“²çÝ+‡ ÑFPž†¹»áEZ¥›4œÈJ- Û£-ºzUØÛq3= Å´Ôw© P±-ÊQÊfYcÊ×Á_~%*©{غ)àŽÀ҇÷„ø'Öd¯Ý²Yíì»Ço!LÍ9ËË$+À5)„OŸ½È¯¡Éz؍ŽÊqAaûԊ“4IæÊxâ&[CÊ.¥iÂw×9iWœŽ°ÀC¸(^'‚©‚ÇÊTºL±uvý‘ÀQÉënðÈ¿œ·ö!CvH²’ÇxÎÚÉ 5ÒŸÃy¶ôÿúÍŎ-
479
+ †>ÉÿHìæ U4Ό¯þ§½ûmÁȔÁÈ&mG”x¹¨‘¾Tc²Ø
480
+ ªŠ|ð(JK¡+BN©ÅÝácÕ®ŽO©Å݈Œöd}´sã¶Ð©~Ýî#{µ/ÅÚM8özÂ)$WÜbªÀß÷Ùϲ‰$Ì4Tú2Ö©Ÿqƒ¥VµCÙ%<PÓHùQ^h ?•ܳó‡Þ38_Ó:Mu´[‚@ ®œ2 –È,q~*:C”Œâ©µŠÏ¶i¡Ø…b´_õRàag÷†֣á=MI…Ã(\|MdX^¥–dÞH¿¯¨®ÎEWöroODlÙ¶„£¥²‘r±í”òq%@ˌ}\âÇi"PÖ ›àÂôÆß®YZ¹£Î ÞLð'7}=}:‹¢ÿÊ$¬­¥’ßÐ:£v|Ÿ M,¯ÚE¹“y5§ôŸLšóx*Ó¶¢’—…•ð¢©½é®#;8@ðn5;˜…UŒ‡I¾…w$"-ÎÁuµíƒ±ÜÚ.Jû2¦Ó™Bì+²¢˜!Qȹi¤†Öù‹•¿ìà ÿ¹·QlBa!¤kh)ý‹¹Rª ¿}I2gԇ×BԯϬª/ @õ¦*;iÂØëފpݗ= ˜ÝÃd$= ?¦OržQИŸ½Ì"x¤ÙR ²fòW*s8|¼¸2‹†Ô ‹õ †ÂcÔQ´µªôÚ<…ã6Ñ?{Âj®Rj(ÏKáW뀳½Óې[¢"ka喠k¦Ðwï…­±bëýF¦ÞàYvôr€H¨Z>èç/‰Å”¿ËTtºã#:}@÷Žæ(2Ö}væ}” ÑØI‰xÕ¨N”ÏxúÿIMc޶Òå—wšt‡J»Ç¢Ð>Q{‡Ôòh.ph.ù¡]ƼÔ¹&•¯áMÐy]­LÌÆ¥µÿ³·á*ùPŽwãSÛ|">4·[U8
481
+ I‘®ð,õžï4\\A ÿb‰5+]Q—RL&5ãh£\”ÆE!ƒs1Ïı+2pӆôύ9¶ÖŒR˜¡¶m)5!^PqÏRf%\€hR'„ñ›«òSßî˓††ÍH3íÿÌ'RݯþÙJñŠÝ©–\\PVQÞ{e‡wjÍî=}ƒMå uçbÕõ·Ð?˜Âߙmìš\¡2΄‚d©E•G¥G= Ê}-ƒ¶Ùw¸R ¢zy(Ï¡Xê¿q½ö±»ýø6›v›ÞÄ7«¨¹Ü Ø=M†Õh •{çÓ]ñ1)%Ðj£TNˆqƒõœ~r¥à×õð耥®x¹BûÛèbÍ¿–‚õ-Ò¹Òæ\¤_BAý‡Q±¨4²”|×>9ŸWP®&ÊëMèØ¶&{ÑîGb¢è¦=ME…èÀ¶eî¯a=Máә€!jvñ‘#ÝÔ¦–D¨¯|;ÈRRj"éFÅ{1ÿÏr< ŽÑÄwöžå¾zÈù’Çy© ­13'&7x.uzØ"
482
+ £JßóÀ@ƒ ù~TMS°@Ù\ê= ‚óe%Ñâ§mþ÷fRôAäêtjõ3I–á‹rˆ4&¤×ùÍÜ´¼Ý|Õ¥ñ³˜çBäœ!vØéX˜x˜Õ²§DˑR<˜€=}~aXuä·%Ì Ðñ—+µ‰Á–º
483
+ %*g(X’ⱓ3÷ñX0ËOÊGË>Å=Md[[hg®1·D!v&/íjoô®bü= T?iBÔØ= ªX+óq6Eôyˆ‹ã a·–ÂXI¡—ª“bp¬š{•q¦-¤É­õ¢ÀÕgÚCD®±±¶ÑNŽ™?fÇ¢Ò —žlÙ­˜ûnHê¸!zþŠT”Š”hl¿VÖY5*Tº=M-füfè/”4;)
484
+ «€é‚áh»¯Ü’dFÎrhÈûåžJSùáÎW¾’^7<gøò¬
485
+ ÌT{Ž(êw€q¥â~-ß§“O yú^’yåæ;íšÎˆûPyÉ?÷øÆñʖµâþu¸|pa×ÅÐøj&
486
+ >‰c*Ò¯1ˆ½xÈ«µwSîÃðIðO3XˀKÉ(tì66þ<çÊñ2J /bÝ}täëåq¦¸â$à’±™­G…SC°Þý§îá.èKëí
487
+ ‚a„/–Z¸ðWöI¦(|R)dzÖL²,¦Þë™J¡±âM ô{ֈ㈨Œñµ«¯Î'~7,[‡‘¸ˆÌ,:Ø'zÊ9WÊlœLA—Ä›ÊK/x¼<Æí·1äÕ:½Ö¦ }ȗ¦qÑûŸÚá~†p.
488
+ ž
489
+ -Ù0ùýÈ= H3Âm°nOzªxŸB 4$o÷·V\…nÐà‘+“wÅV¬–® âhþ šä t¶5Nþt*6FΧû¿¿}¾Ë\¥™^igi×/._'*öÃq=}Ì=M½£á9 ?LÕÓ&­s”Ä& Ø>:Áê7žWP7'z4üºÓ‹.¦0àr"˗Nͨ °Yñ!Uñ€¤¤Óƒ&¤0 ;ˆäL= ÝD¨ŒKÃ÷Ò¿ëYžF‡Šb#2¹ôñ¸ÑÑxšì¾[/Ë·Ø¡ßyƒ9? 7s*‘Ž$‚OaìÃ=}ºñËÃàφ¿ZCəà×å…}ÆÏ³ŽÃyÈ"¦ø7ã L1 äÛqhžlfó=MȨÐZ^sfú싹ž‘9ÈLsrÂÝå|›.Á%Jðó•×zƂZŠ™¶C÷òK‰IÉÕkd
490
+ Ü„¹ Ú·/v’Í6²å®v±i·4M0ñ•d*-ωÿFËÞ,X,K†îºi´å÷¹) Z6±ÊlãÙ, -G¡Y$ÒŠ+†•þÒ"‡ Y8 /©txÙ $”îæ±
491
+ ݱZîÊ'bG0}av1„¶µy©"²'ä0ô-^1‡Äl“yž"â(-7p轕þ<Õk5}Jބ¦ýé":­R톲g:»…®ðuv²Io¥ÇUÝ{èÐ!Õ"fl.šW²½'š>4ŠN¨cóxí *ÃÅöèžì¼„qi‰ï hò7Ÿ·UÚ£«Ü…™ ¬g$ÝèŒõÞ¨îÜ1cÌ(ßçÉå^cãÅ- %Q>ø$Î k†Kœÿß·µ‚Øæ¬:è¼Ãƒyz…µ.R­wÃkÈ Ú,Ñ;Õ¸»^O¥' 
492
+ ræï½|Ð:¯7Ú=}|ù¦õǃk'ð¯÷0ŀ·ÝŠêwµ˜²xï.WMyH¡Æ=M
493
+ څÏò©ì/3_˜šÖ=M ²ü|a÷²=MÄÙ¶We©ÏäN™¹?ï×Ñ^W*s€zý~†N‚櫤Ôèímܸ«óŸä³›Ä´q9òKKZ³Û]ÂMÞеuڝÓOôxIäõ„x¼H&D'#È8Æö¥ÃrɄi ª°ÅÎYGy ñÃÐN†X۳ٗªO2¨X„¦Y=MÓ"¦&Æ' Zô2’¸IÓÃw6-®›ÐŽ€¯SïÉ÷ŠÀ»-Q9ÅÛ¡TV\å>CÇØ¡òo[+lžÞéQnU¨k®ïn ³_Λ>ø 9ß-§¼?A(QD]>ýßOɪÝ:ï´hy'„ÍRÔežL ‚Ðĺ”.jÚ-j̺¤4Қ(põ§°7­>‡ˆ­·G|wÙP¦êyÉ[YÚ/›Þ5?½³wòžZ= V}Äú;5l>û(ôûíy ¬Ú}bT2W lI7&Ò´j~®ÇvbñÁskóJ¶ ‰@æޜÚÀ"ÿ±
494
+ ՚›™˜±6kVñòšòpù¸ÅªTyò½ÄE&ƒÞë^“·U—­I¼HÍeÈÝ'œˆ©L½8"ýÓTƓ#…Pº‰€n…C6ÉÏàWíPšÜ}9ÅŕhoÃ'ÃR9«“žx˜®]î*§__G¦TŽtòÛ×ΕJ}Þ(QjÈü³å /œìúJ®ó·ÿy'N"ÂÚVô/%7IEô@äµ,»jlg’~=}UQÃÌÉÁ dh‘È\SPbTzÒUUÔq‰øÖ±ÈÌGÕY.N ¾h=}ÔãiÆw{ÈèLºÒ;·$—­k¥ç<”p‹®×
495
+ *¥2ÕÁbÆeý‘£³å–¢ØRŔRwîé'øa&a-þ*Hl¶ba”iç%¦/EÐX33"ݳêé|hÈp-ÆVÊ7= fþ‹j<ÚgG°¹ Êp8ÆAºšù ؼó–U7€S7hH9]G9ÑAºLAº†¾ú êB3HBºSrW7s›¬ÞüšnÏ}é얷ïQA:Q,ÑAzPfô3cvü–€žø ¥Zð>ßüfÇhÅ7 1¯ÃOEã®»gat|¸ @c¼âp³Qû¤ºßA*Næù i¸O²œ
496
+ ¬ÒQP{{ˆ×ºÅ¤ê3TðÒAó@U§”â¤éóä+ƒØÞ?Ò×â0TØq©ùƘÁ^úÜùëw©g-ÜÀ\¦ùý¸K¾4Nï×ÿ.>Oª²\Åm>Â,Ò"·žÇK™U3ù² $4Öùà ÐäO:»Šȕ<ԑøƒæU=}ĨJŒ¥:€¶¨éŸÚêòϊ§”àÓÆx¸˜íˆ0ËÜܱèüx"R¹÷l±Im°¾œ•3w€AŒ­ðœÄ(îB·2‚†)7d×ÖÄê71÷·[çW.©ShêÞü6®”àù°ŸíNVRŠ‹-0S5"aÄP*{ 3[9 vcXî= ¶l›J±øÕ¥4CqèÈ´KõŒæk >âæiÚæo'ÇóӍÆö 3!7ìŒË¢Ö/õŽïæâC²,ZÝ')í)ŸŸ¹Þ!iöFÆð¹>ŽïþTTwjd–æ“äsºRøŒœ ÝI9”EyFEÜߋ¼X?«Žd Nö&gʙ6„/œ ÝÁA:ÂR§5Œm1¨|ÊјO ë»±´=}3y½>i )JFߥöÐ!í(¸×VcØS,£àe]ÅÛÓi¿cZäÀcHò«¹µc´…ª“y¾/÷Ò18Õ÷¯ìHyñ‘²Öð•ëä"ÙÈdBt 8±YªJ2Ûx6×JÈréîe)^#!¢ê;-WY„û9‹ÚS™ vM¹“Ù^4<Y„ÌS‘¢ 6›wšÙh}ÿn’!c ô‘N*5Œl~A¿â¶’¨^2¾-2~ÂcçØù-£ò)¸Ë…ƁªºtM~á*#xbÄõËD{ºöüuòªž19NLO)‚LªöçªûYP‡ô8z:µ4ǁꎺºï¥L}抌J×U¹†UJO( uóyx!PÍ<"= ô j–·ÆèÆé¤0É©òT©‚Ÿ¥ùÿ¡Th-íÓ½•3E¶ó19O[©ÕWš«IoTø~ÊCN;Ò <X 
497
+ 8NIY$'ÕJ¢¡Ô·¶’¨î2.b8¯²X^ډØJØïPþ6ø,j‡})—S¬ ƒD­CÓr¿ÈŠXYìt‹žï†¯³§[r'÷tªìbWŒÊà|hÍj6;æ•#1Ä2à
498
+ Ϩ]ºÄturUÀ<xdS§iÖÑÿW´ÆHð×'Åæßpº<˜}„sæjñ× jþŒ0LÔ ì¢[$;3‚_KT%‹'U침®ªðv!Ÿß*þÒY§¯¾ïÆ·¼²·‚ä‚= <Ÿ2üF Ú¸
499
+ ´ñÝÀ—úÇɞTãN>ås&j•uZ ´­¼‘3‡€Rƒø“Á&~ë\rÑPÊç'iIc €šY{ªþ]»âæãZÐÂ+~ðZpj ZþÃ×ûÁ›7îßpräÆçýÀûqEâ¾,¶éV¬t—û³¦.ø
500
+ ¼æqÆQƶ—ö‘¸Ó¢°Ü‹†bKmjgøÃÖ×®²T,fIZa
501
+ ]Õë´U»°F°Ý³ÑTw<hҎühÇ üE’¯ÐM˜ë> †É³Tä©lW4QJÂs©r'©>™ <e Ò¾Ys¨£¹@¾f¶ÈžƒýíZŸ1¡DØê£Ù~Ò>ÞÅòñ›2aÆâ2@gÕù‰ñdªÉƒ’#¿.ÙN ëÎr:·Û-tŒÉtÜ®½¯”qµŒƒ=Mû|…èÏï±Ù}<L —%†?g xÐÂf‚ÈM¦Nî~ïîð 
502
+ Ó^iÙÈÀ­œK÷R˜gЉÛÅ%šÈÙ¨Þ¢×Ëp¡^gZ·tޏã|­z£*Ø*2£Æ1ø+-[™£çR°bb§ž8«šsê,f­µ\±aœߗ=}Øèݜ™(ÜÈkӅà Ô>¦½Ø©”³ZÒÐ2ˆu‚˜AjXø1øLDâU“¼‘,gFV¿—㈪–ƒèíB-ÞsXw­Nc³”™RI+ Xjr<ä-ëèn‡ÑÚå©|ˆÃi!K1yH{ob iµ)VÏR¾ çh¢Ë÷ޞ¨vg §±™<EøÅ–¥Þ¿/½=M³,vá ©ù†4ûÅoÑÒѪ~&3]i霪@„óÃÓKíÈí厲.e,ÈþèJµôز'|bò6p¾øeKß(ð¥ÖnÄÝhóîú‚¨& ù•Ùî„xE8ó‘¢vÛÈñøMl¥Û|Z¶Œ@Õp‚žÿËϐåˆÑS€ÇP²¶­Ï³hõº˜Ü!n¨kÞ݆m7áü²ãüFrðýâ.s&ò_åì$=}U@•ãœ$üD%ZJfo=}ó“´‘(c׊}^a†¥Æ·ʟâ'Bú5
503
+ ª}"mù¼Ñü?W®’ÑCh‹Í©"݀Àù¦ÇEgIË´Äю®ðRÕfËøA+ö© ø‡P‹\GTuà-yAQä?=MÇì²Ð®$T~nšÐ¢òG¤õph0¤¶Qs¹ùœ¶­”1®öD ý-–ÝZÇ|陝g®–<pp ÌE„ÑÖÛ|AŒ
504
+ >Ö>·Aäނ¡ï DïìoàÈ= ·N¨¯BÆïìo‚Vìá@õvÖMAã@&æÉÀABL'?ʙ¾š)à¢Ñ
505
+ +™oëR¡ÌÑFŠ«nv5°ÏÙ%åiùEqÛëXã÷†míQ N1Xä!Hc
506
+ "°tt­bïØ~Å>)qcÔÒ­)Òqv}ßÈýÈQõç¡.’”¼º|џÿï¦@Ðo®uØ×½|:}ÐŽpܒ±·ÿ֞·Fy£(†…Uî¶K;¦3>€Y@Á•è›SYÀtۓQèyM‰©>ÕÁ֞%ù¨÷¼J^ ¯ôtBíü³m¡V! ûÚ/QŠA ¿¼&Ñ/R¿qWœ.Û¬¼ñËÊhTÁºå{†Ãâha]NÈÆPÙ9;bKŒwF[„€ñóƒ+²æe²ÊWe…Ì^2¡ã>1‰vÛÅé¶x Ø÷5ƒ¸©ð„i=MiMH!UQ5çŸR/ EÅÖm³Úöš¬ûƒF¤ÑZjå[ÌrP=M™x Ȯã—ÄO/ÕÈd ¢Ø4Wì=}‰·'~T "Ô¶°'ûóu‘3 •ý îçž&5MÉQ[7s¾¾¥©c"cë­„¼'lÕà{î¦ÿVÙè“OÈ
507
+ YAM%£r¼Oªœ6TEú ?!©›ò\Ký©1d¦ÀÙ;Pª’>kdÇjmQ=MßRD>_®ðŠ/by©§–†9ËM¸ „‰pð';hõîêe;R¤¦ÌŒù³ô @—ãÛö‡a'Ã%´#= ¡¾g»ê°+9ߗ#,³è~>1[ð@÷X eñ¸ÑšÊ+>ý»—ÃF;[aÿâ÷™wKVÍÚmÌ
508
+ ? ô!¯Údiø—<f[2Ìz\Y8›RÛ尉CW§FÆ%â3ìÀY-lòÓEðÙ_²ÞW{¸£ ®(_4!¶€WXx_0cŠHüÜœ|ÔÑG¦BKÑrwî?•¦'Ô Ä<­Q[YE€ý'ÝWÛæ8T¯ kÓ©€Œz- …Cîr˜y­´OÈч”‡iù$I‰‰,ò,Þ¬Eà¤ÏÁ‰{ Ù׎ œ¼Lá ÎàæìÝÕ¾ã XòF0ã-¤·rê!nu[jZ"ޒ¹ûq[˜cJkÏÑì‡ö14kˆòo«Ûz䩁u¢2Uúu}!º©ñ6øx¯‚—ii'GBä«XÈp7› )D'׿Wm2[)’íë8éª5DcNçZ),‡,ðš+»žŸ­6ºÂìßÇ:Áâ¸Ù3ZÀ+¡³PY\®’ßiŽ?ns–(Dõ¶ÈŠÇÁºëO •Ôg]eLÓåW‡¸1Ï",{4e­æÑ_ÄöoÅ<7?rLè‹Â¶±Áç&k=}Î%L …Λ¡)Q¦[õ·E§k \Þ,Rø§§ Ä×åJƒ‰† þ ALʭÞð¬Š7Iã|ˆ’X¢žI=}¬#Vúo<µ;ג²®w÷ºU")LíîÈÂNúE‰nMVŠ5P³IH,6~)Øeœÿ0¶¬= 9´MjR\þõ˚ÓMVã¹I%-ªcöÇ.J‚ŠJȃ•Îè=Mä ÃõV$õ1¿H+å<Tz?[«bú{·>µ=MÄHÊAN¦É{cðþlÖÑ-3۔u¶šPö6p1Y9ŸU‚ÊöL„­£¶¿l3ŒÇ²Ãð{¼‘•Ê”'h1yZͯ8ƒú>əJH’¨If~«þy3³ð½Àj•þ= Á«t;FÊ^ R”³²Šc#“ðÓq%ˑ ±Ž¦½—çcÀÕòkwé{é˜ÿM“èŠfQ ŠßßD¥œð¶ÎSË>"ÿmå(†<…çó£âüï·B-]²ãñ€ÜGþ¾R”FÃbg®”Ý.ì¶§ÎN\y©½ŽöœZshàw0ønÄ¥X¶ßù”’ F³™Ñ´‰Â¥¸µ!ƒt\=MIÔ±:S
509
+ †¯E•*t9|§ä‘—Å›6äÃTï9(×ݫ՛ôŒËWɶ©òó#í7¦â‹HoëÚUfðd0·hWÓc0¨\0Ë%#°´¾½f?[´Öòp‚ŒÕ-¿HuH',œ4\âæ/=M]=}yÌâWi¶û>žlõÂÆq+IñA= =}5ëïx©ŸÆI $Cùó8Ÿ{’Ñ·o8õJ^¼+¶–—è"Ï\ëli)î2»B¢Ã tÁ=Mu/g~k ‚ŒY"Þü=}à42YÑ콌ÅÈ9’$sS@7ëHë…¾lQÆ
510
+ 릶舿•ÁÒeÇ£'»ïïZ4ЁzsñNŽùá·ôá‰= e˸¬f&‘à‚ÔD‡IÏÂ!6[µ¨›Öýˆù«j+ad‰š´_R6ÂÏóâÏíð'”záaXƒD<Ç
511
+ ¨Çä ni?P-oP桬-ÀÝóïM/Д‰-¸½Åã<nyµ WL(‘H«3õ<4•!:9Ù²©Öh+!8N¯ûÅ(zæ9‚B*úŒ¦oL´V^ÿ;öKåSëÁÙRÓE²«W_x7kÒß8 ð!ƪ› A[ Qřôy²Ù°wyf=}4µ'g~L´#ÃÕ÷5ÈÛ#œ™3÷1¬C= J>蓒GLÂ=MîtºôtRÏ?Ùô—yŽê1?´u
512
+ î7&­0L÷z†ãE¼.ʹN6)6?sG=M¹?BœE.WÕ³!çÃÓ„
513
+ zÎä}"ú3Ö¢/µIê"þøÍ¢DZ (ÕÿIõ҈ٕ TIzL0fõjûNHÛû]=M£WÐÓr@G™úi<ò,¾8b™o µ¸ê ÐN؀9ޝ.eáVHˆ^cxùê<÷p“Ƽ…&ÆmQ6þý¥XÖuE»Ö&´Ù<¿>Aö4K‘Ÿˆ†®%ƒÇäwi‚õ‡“/#oF¦5B02’4¾ÞCYZ–©eYêgŒðÂú‚³GŽ€œ–[¼°þUõIkòŠsø0$­zY6ŠÒÑo<ñoå&“&›w÷Œ*Px4H<ƒÁšë rº?¯€WìW®×î3ˆ¤öÚ6•Ét´WÕ\.ô<¨ïmÑddòiV³1;JU&æžI4A5
514
+ 9Ùz.ÖÊ¿>9ÂgEb§¦Vžžá>¯ËE»£ÀÉû•ŽÃ%TY%yrßMÁæ÷%n SÑZ "¯Êš×H}Oþãmx„9:M?+ ÃpY¦*þÅ2³…æÏ«à—jð7Ó6T³Ó6Jœ“9Ü óÚþT2nꎌ€²¾·< ÆÛ!÷+æz·¿ä¡=Mô̘pPýØUb–÷_â÷RãmŒ†Î51Êï}·?þ³ógk'X//³Aþ0ËwfÌò›Yó[èu!áôÓ3$dY[¿Í)¯g$‰ÂåÈ7íHE¬ún~ÇÊB'y&LãëÅN¼ãс>¹µÓžÄ¤…50ì$’˜’9¶œî&!ò8mÌh¹Yº K/wºyÿÃ6(„— &<Œ {¥á¹«?'ç(î£ÝŠf(þ§ÝÒwD¬]sãµD—gÑEŒ¢x¬{C[Zý>>VvÆåLH€×’ÝîųgڒëÉÊX랧‹Ú?¸ƒ)Esuy¥Êu
515
+ Ä~žÙå8[ÈÛÏÆÕ>\È´©™@âñXÇGN%@ÝOþW™ÛlÇ ìu½äöÙ:ø–Y瞧pŠÜãr¬®2(‹¬Ú½õâê‚G“×—{ÈcxQ«vºx©Oÿ%ÙÁˆÆõfÈäL>ZUÀ¶JÃЗ$µ=MHÒ¨Ñ(Én7§4:¶¹²Óñg͵…_Mý'^½Ð}=M\¦„E”³-}ÉYâ£wž¹—ɇâGY\‹½«]‚‘†=M­
516
+ çªrŸò¬&ÐÍ੗îórÁ€Aìà֊P€ ¨Ý°ÔìÑîa´¸Ïë¹è{¢°µ¥Þ2x ‹æô²â‚ú-~êì‘íXÊ%ÕÂv
517
+ ô™~)hbüXµ¨Õ4~ìÑ_ÜIϦž 닣Œ"¤—$#ç=}ø5( yW1N’a.Ðêq)àüfхüpà½fæ5®y\ = ú/+ƒ
518
+ Ï8«”âPŒ
519
+ ê\Ž.°û‚•é+<¦³™ºcËJš@Ò0“žˆÊ°zµ$&“EĶÁϘ2(³ ™dö©´kèqTßù*™ÆÊ°ó…ہeÅk»)p;§UyJ¨ëž¦Yò€OTr›E÷%´eTr›ET¯Ѧ0aZˆÞàò¸ãl²ž¨%Îñè‚4<¶Eˆ¢X‹Äëf¡Lð}ó;Ì}= Þ} ÛËðQZÏLÒ¨!@Ȧîö¤Õ5oöüoöP â·\îÅ¢”<®w}fÿ¼T¨˜T¨ÛÇ­Æà÷öÂÕïh–vPöG’6ì PP-nðþ$ôpŠû_~=MëNXØínîeÛÞµ[mª˜4ùG€Šl»@i5ï9¾lX© ëîN«6G0´÷#J¸å×ï…>RoîPî„cV¡C.°2Olèo9 ¡üGü)g€ëâ[¥=MÝÝÒ£“â†)îr|ŒtSZK†ÀpX"fìà§»¬= HUmÍÔlôa››2Ví9ŒY§¬k±W¡ñÍjéñZ¹¥Ê«ú\ɆL)zfBÞ<_^€“>œ‰Ÿ¬°p¥2= ûì„ÀàÁð„uäe«¼\{&;Ǚ'v•¢»†óÄ_¾¸—ÐAÕ%H<J¡Nß?߉j•Ž= ¢©'a ɰi>• ;uËD¸XCï¦$;³w“DÑRùJ®ýà/Pä%²ðš‡~¾à§k)ijr$R:ŠY®¹xv6ªÖJ&Cրç}È´ÝÖ\×?¿Þt¿ð¨×´€]kôCÍnaØýš¹õúäøt8à„v{ln3û« ÓÇmƒË½×µ¡zü7e’ÏøVÙb†ø@FE§,‡î9 }~T)ɪ¸C•·-¸?zR€f;êÈaŸgăî߯m7JòË3aJˆÒúã¢9ˆ¹I¿‚fWÇçŒ{%¨ÐÌI¡1Y¯Â
520
+ ½–Ý:÷M²ipšÌ²õùÇqgܖ5«w¯hI.[+¬Å£Ôá–j¯Ï´^8Oµ­øþÒ¨qÜ? X÷o5é ¢H¤èò¨@¹Ú2žPY5¯DèFþRwyŠ(Fg58ÿ'†+ DÂhÏ|†I¨EÛcD¤J'K
521
+ ËBðö:ò= ð,¼=M,yí¤l£bí—t–‘¶ìpE,›óÑ¿3œÄ$Hšr§^+5ÖóP¬0_‹V®F¦=}}ä3yЏñé%HíÓHÊ;陠Ä}›<?zêÀòp1W§0ÆuáãE¬š/E¦ÒZ8òÒêÏÚû„ïöí°¹˜‚!º6äBÔ:I*x5K,5(ØjzÚºP~q
522
+ \\=MçEW^‰³æû;)š!*ÊÁÍ¥8(7 š8ævuüÿIסÞEeo OôCúÞ¹wŒp£t-¨YŽÉљ}ˆ¾ÁJ ç¦B¸´¦þ-â5hô ëG
523
+ †RgêUjëG¼CÎ0šíǑ‚˜NUjPä-:5ړý,Žoáé-¼ðr]
524
+ ñ|â39&9¨oŒe¼“qôä nñ¯‘Ë$reú¼æ×Ó<Nˆé ^Mŀ¨Ð~Nët¥/Shœ6š‘&«}7©‡ÃÔñl­ÙZÞè½Ð¹·ãU§'Ĭ¡ÃŽ>²®Q4!iÀéc¬ø—{ËtÔU3— 7-_ì,?UÎì ;p¿ž;PÖ»•õ'šcî™Ñj1çjÓ
525
+ «ÔŠ”%àõo þvìÙ!íçsŽÌ˜í" >ËfÎDL(D\ÏCcð"‹…Wà±{d¾]³FsƒHÄ´wý6= "ÛèÌOÞ'‡›Xñ,½Øä¿±QÆB ×ƒŒ„©;‚ËÏ—ã®ÞY‡ÍŠJóUýí ~t›©V–‡~ÒlÔ{Ù(¡Dk¨!§Rr‰N®X3ªÏE/;¾3bH=}‘D¸ÿUùh›ˆ¾»‚nO@äDø–•·ÎsËÒ ýV×ׁ/n-‡<¢ÝxTcɚižªm¬Nn—äÑì–Äò¿{®OÁ2¦w0cmwˆ§Jaq\c¾ð֓AQÿíÁs°N¦ôg€v2QüûAÆì‹úÑˆÕ8{æ%!¿Œ1¦æ‚±„&ßғp±„¶ÞD3ǪtV5'Ñd•/×ëÝH°5Þ.Ï ¡È®,­ÿ}þîphËãý7Ú7"ù=}ýûö\‹¡‘p;5ftñQŸ¦¯WyÖ&$Á>GÂU—®µº•Âåqöót¹˜7ÃïçZ–ñ67o@Ä:@¼™­N6­eñÀµ,ðË3= ë¾p¾+m,³Ão ý@JæAtªž¼.í}ö­©×íLs= ¨*š€R1ú¬tar!ù %þb^ø€\ Q×ÖámfÏØ¡àdÚº¦Wðœ‹]íÓ Øa¨§¬oãπ³ƒFÂZJõ˜Ö2Akæè[&õmDÞUÝ änç€ò™mÂ0
526
+ áà‡®¥ÒDÕ=MÕí/•Š—˜³²ù+)ç+'&RIÙn0õ¨[<:ƒOòëøÍ!І¦ø±¨úÈßOˆ¸~јu>ÿ5lçFùŠD"é¤s²œ‡Ô!ŽÒNU§mRu@â÷pÿÒ™»qRNlÒ÷Qv0¡8ä¤ÿƒP.ƓÌkоògŠi™h””U‘c=MÙ= úƒÓ Š9@ý6ôB²ŽmUn(ÀÕ
527
+ ý )C!y‹'¿Wgõ#ïÜÑøÃ§«ã3Ôۃq¥m×3Wɳ÷.}Ax$«Üƒ9hÊ{ç•Õúˆ²­t]¨oo¯
528
+ €­Ì ¿Â€§©ú,ê÷,M5)AÃN#Íp kÃm!?ê [„%¿½¶•¤¨{b>Pª…nH0%V®Öäç˜Ùv×þ0·}ô‰WOÅtƒ»ŽMÌ=MpeˆÕm¯WñÈtübš»½iØ3#sgHÙ,ºÏÇ!Êû[ñG¢s ¹ä‹fI±E]MŸeNš¸¿FÈVy4®È[ˆ.:=MÈ­G¦Ãäœ
529
+ 9¯ñ‚:)ÿÓ9Šœ5M¹AR{™ë呖´—Y¸43ÓÞÉ©/YŒ¦Uµ!­Ÿ)rъH˜£;s1V8ˆ
530
+ ˜ÌO*Gã0d÷@è5“¢„öDt';>ÁƒÿÝltÊÛøž ZŒ1æ¡e,+©Á Ž†×Þ ÝâjÒÚ9»DbÓåHS üìƒ ±H51˜Ž q|¶íÂ*ÑÁ^ïªØÛ’b3-ذ=}©}ԟ{?jtÛÁ5ý¶?Ðô™bXÐrhÞ8¯ðW"ˆÚéî¦ÎNûò;ÊB¶Xê/<ÿçÀk¿”ÖTgm÷ùŸÄEDö‡°“gåXë&_/™¡¥4Gö7ðÃMf9㍥G9ˑÏœ=MÀaQ™h±Xì"Öô‹ ï[•ãGŒgnâ_dU}‹Æ“°}€[íá–Àýí4‰Ú ùù@Ë¥˜š= gæý‰(p1ÇGuÆ3ìŸâQFÙôLÉè»áUJÔM‰£'ÇÔKöÖÀQŒ£õ:gxq/c/-kMpí¯ƒ–J‡…%Ö!§ï<‡n§«˜ ¨Ø•RGÿøjõqY!•˜’±¥¶°*ÔYP9h = ‹¯Þa˜]¡¹ "º¥= Ðh·šž›¯fGÙOéve^E¼çœ¡öãH1¯J‹äèØÈ0¥ Ä[‘"³ïys/֐¶¤‡nR<Ë"c€g¹UÌ­a£¼¨ç‘‚‘­Æ³fuåÖ[›—÷J‰Æ¢9|‰ƒâ@­Ó…D$Á= Úُ)üËæI sm™Où…ÈkþRòI­aëËlÑ1:Íi{¤w­²E¯Ôó…m¦7kZÚÈšY{øSeõ4'n:Ú¬(:ná:
531
+ ×*BåÓè<´wCP!—„ØpæÎ¿çÎ˰%4E9{xÁU[ø©qéÒÿ­gÑwæ¾= 4\‘Ž´ÉB-Ú©Ý0ŸÓʏ¼h§HeŽÌ:£Àøˆ¨]Ÿ-B„ÕÏï2w3‚xÓ®º°ùÊêDÊÒæyó‚lÇpVÍ^µ¦ù±¿„Ów!‡6Qòý*ﻒFkª¦;ÿÛÞ¬¹š¦­ÜÖLÒ×óӅFˆ<ÙäfÒããš3|À7ñ êÒAu»ùª$Õ½ð3诃ÁO¬(µ+6ŸÝ^䒀“ÕeœMÚ\ŒåÄôä>¹š0Շïté¾)‡xêl©Èû\&kfÍ5[~pŠŠv„9¬ŠÊîRï:ȑtÅ㜬äiÑ]Šè#Pˆï_ÿéA®Þ²‘#¦ân\‰¿³âŠC´w*œW9ðpð’‘O®Wš#¡F-C(61ÅõfÃ\„¿Y´v¯•»º¥ˆÕdî ~¢;Åvʺ²¿_1ðµmˆjœW\6"h»%:ÈðäZÙ¶‹–j6%XªíŠŠËr7{OÕhUsWvÉÃVã"ƉŸsë³PÒB?Ï~²Ìƒß x£z¿t¬Û¬´ˆ ­"¯}4åàwK·´Õñ°˜•ÿJjýŸ@_ÉÓS·~Y¶‘Ö‹™&÷+AY8¦ª¹‚O4Ù¾ßRøÛüYl£Q¿þ“Ýwþô9¨¿ÐZ‡Ùª¿2j 6¿ìiîF™ˆ—6{žíT™ jΗ&^-·ÃJqjqy~l‡ÞS!ºdaâ¿bŠé[¼‰'™® NªI²ÀÌJ€•ùN›Ô ?/7-¦t‚Iç´=M†¸^\ðÚc†Ïß%|Ú8µ ¢¶,G58šJ58M u=M-ýúÁ›O0zªÓˆ»®o%ÎÿaNŠ=}ƒOï6.j*ÄѤžÚ9[q³èr.üS¦¹Äæ1”ã1Q¨š™óúˆ{ŠÆ5^¬®Ÿ”$:}—i–Q 9ØT–Iáâ¤<<¸4@ífŽyë¼EæÓ!×ðk_8*6= TŒ¨DΝ/®¯†!ƒð½-ѝVª¨´[¯U&TyðӔʚÐ=}cÆÒ:ç‹*ü£À¯k»“EÊ>õ Ñp¦éiÝ5ÓÒ¢ ¤@·Ëôe’p Á#qú®×n‹Í÷â Sk@ÑÂ?3pIÑAk¯»×ý ½6÷þ öþ°@2Õþ0±Â&D)î7d±B–M:ÚüE¼˜
532
+ )›f=}6i9§(Iñeë¨9)›&=}6P7tëvÁûùÈz±BOâ3®Ÿ²ëh¼¸×zb±Bö”›
533
+ -")›aë.7tðv“= ëJ,"9üIC'gºYX'ÛGñ×
534
+ ž[¼àFI^֚‚Š\­òlñ äÇÚwƒ§ƒªÈ¬õ•QWF¾ßÓfá%})›¶»ä©q¢^âè¸F‡‚~aR9;È<Å3,ÉRO[P{ñf{†;ø˜<m<Oö=}¯@ëõf{Š;Vö=}gD›¦’»Ý…D›p{õ; Ðfù4A'M7ìU÷¶¨¹ì;YP[Pû8ö=}ï?«¥’»‡;b²@#Eÿé;x<WP›„;±@C±Û¥F;ÜV °ݦù˜‚ˆ=M°n °Ï
535
+ s¹&®7ÊúfÁ:'ö2"Xö: ö1¢Xòz.)ó8ž*Éz7)ó88*ÉÚµ²9 1䮫¬6ªSJ=M§D;˜Z3XVš^hÄyçäÐ=MÍÑn çpŽ­Þ§¦ ô=Mr˹ Õùü/·õ×fMkåÒ¥—Ü(Úµ"2þìœÔèr³Ýªƒ2ìV¡ôÿóQ
536
+ è ш§~-]DþÆOjÚ¦xµ5è5ù°Aðóœß%}+à„©¾ðѶþÏéXŽù⵪,øð¶o8D®4yÇØ5¶qB¶2Ùúf
537
+ = ß˜å6BË%Zù˜zT@—çº'ZDÉó±OýÂÁòÊhžÖð&Y•#Ìo€ÿO- "d‡¶ø!= X¦_QÄA³/×›¨ =M¢-,’ÇÁî¯VŠñhK1DóW:‹²­¶5Ìó•ðu£LnŠ7ƒÔráÔr%Î.¹ÞÃä{C<ÖÈ]¤NýxC:ůn¹³/*¸"£sWh”¾‘Ï+Æ(³âóÆYt<0j]9LMs‹ScÒíß r¹aÍ3 = †,­ýø¡šU¥9^f,u53Jµ­ìí‚Ɇ³A•ð#ç¾õH­¨hüÁŠTJt¶Md°JÛÝîtÅ+~ÈsOg›gËóÊ$«c§-,uY¸Ù—Zšý†Ún\8Ÿ¾—¼âéA”#¹'à×Áàò&v¹É>=}7#PbWU<wíî "ÜV]Åx%U£¯–ð]—ÖÃçv▇õ÷/‡S±@Ýˑ>DiT:”ÿi˜Hiì+;HQ™]
538
+ ßãT„´j\è´gl2X£/+SÒy\+#ÈÆ…²t„>äÏ(ô‘%†›˜–²ÞóuôëÏÈAC¡ON¾
539
+ •p¥qTXü&ۖCæáÆhLH\°<ìñU›*ñhÜlÙWîtx焒‹ƒ‘ÜdŠ¢4ɦÑèÕ æëdwž÷”Hϒ~~äÀƒ/µ‡$ûE2à¶ KÌ©’KcfB°î»Q'ëÏà~¯¥+Þh\3€víÈOÿú¾ívUÈWí¹ÊIWsVþl .²0K™²·’&%÷?=M”S„Ý„ì^jú)rŽ)
540
+ ³#eó§þ'6- βÿ²URp‹§/‘c°,Š}êùzI 5Ê\¦r(/rí ³ZPRÁñÁŸo;ë;T"¯æ*£þ8 u.1= J¢i–Y8†KmÙ:E
541
+ iÞæ½õíÿòè•ÊÁ|š°±ð0¨]ï°s!ŸÊ­Cp‚:Ýx5"( z¦æ/Ü<˜Õ–,¨9cÝM9@•4= ¬À=M=MæãHóOŸתʀ*õD¼Ï¾j<•·’WŽÈ%Bd,´?x\W”¨ÞË=M/üÔܗ÷Ía¼H*òûGm­4I8ÖR²¨—÷*NxÇÝeU¸I]îÝ[Çð@ŽfzcŒ:Ïy÷ÓgيaS炏‘žy ½DP0†D'= 1düŒ¸ø‚~€Î^.ä×z+GBû0‹<o= È¯(Ôí{DŽM¬˜Õ†«-u˔‘á3üæߓb&›hX ¤(ÛæÄCYÞq 8K\s‚Ìðd؅ëÚðsv›Í
542
+ k©ÖlVlXÒÛ{5ÿÇVaN“îç5³¾YRPô‘ä= wµb^Ùp\= )mbV= h„°¦á6u Õbæ•QŽ!e°Yª¢‡ñN™¶ÄLü,wÆìh—‚-æxAûQÚ3uÿ\\ävòe¶ŽOÏl8%µaªËeÒjö½dò‰ìwÎÊãtÒ§-´×¿‰ïYY¦Ë[Q=M€òa:ŽyG/bÞ
543
+ õ†¦Kz0læ‡ð¢^D= ^Þoâ‹Û²@Ð÷fãÏ0)À.u­ùa¥/iÌ e¥ÐÈïU¯=MMd­ÍÅtaæsóãôV„ÒpÚê³SäÞ?q–¦¶]’­î¥úpUäÙë¿È¤ýQäù‰Պ§“ =}³‡+VѾÿü±¬Ï:"O%oo‹@ú2¬l»{p©®"¬ÚÅñ,¤«æÆZ\‡9©2³Ø£±ä0íg|CÍDP¬cËa8»@¤„Ân‹àU'­Ö[¦ÙÁ×ÅdÛ¥Æò&G:r ƒ¢x:j‹$¶–âD¨Øaﳸ?Æÿ7¿j×-oúFÆ3>}U[žé>#ï’}cÐå'—ÍØnÒe!,gª2z YΰV
544
+ u|êÂÖãmÉçñ’u1àX-ªbO”&dŸùo‘Vˆx€Íž oÊÄy­ãhúkä“çË!¯äŽÂÏ ©dŽá_µÛ†h£ôY,É¥åK4 zC\Q.aïE,#”´†é6§,(¡ú$-3÷ÀڝËz¿^j)hâù&ð4‚³œRĸ³êPÝ¥ó1ýÄ1w:= ñè>éÄï$z$Öh„[܆½KVˆ?F˜{ÕÀ¡Rö!;|ì ·¨oF›*À~Š<tK€ ŽëØ-vçדŒÅ˜d,?ß?1ֈó’¢ÓÔ´¡9nöwö²%Ăg¦ؽLd§Æy€ÂæÀÝ}ŒÛå“ß«ÅR--€­†´è4i®Z.Ñ<BAóI³œñGrqðqhp¬pô¥'©· #óÜÿ«¾ü¢”ëçeÌ%Î&„©ÆHe TåÎ/]ÄösɊK¡ò@§¼bzIJÙ6ОD¢*œ8ÄKUˆ1 2ùS¥½¶ñ±’¯0°õ±a7÷ )ùé(J'úîúºöåòðqñsò'¤‘rÀqØ:¡7h0æ5½jÚb·é76$1„ZÚ¸‹¸#³ú8 2ò€úº²ø¬€Þí,¨~‰þ½ÁÜHX0ò&®%Î%¢¶Jèrç&0ãY´*Ä|‡û= ƒIÖý´·ÜÃÀ¿·IÒÂì½íH‚W”NLŒñü¤p‡LbÙ­ç
545
+ ¶¶\xïәÍ/Ø~§éˆº„. §oØùÇNjí!Á,ÆÛ¡õÑÉ{â#
546
+ ¯[¦÷AþB´]h¨ô¬
547
+ F= ÞïMÈ¡Ü{ñÎ=M
548
+ Ê?Æy•€–ëí#žUn•¢ŠŒ§%©Bx?ôÝ¥5oØ¿ èù²ø—YûÅ,º/÷˜4¾ƒÁ‡LJp pïÁ1ƒ;3k5dXY ZÄ\ŒzøÚüö|ºˆ/²Õȇ [Kp˜‰*â
549
+ Ƀ• ¹ü³ wŠ6]f0KÄkÿ}X/’õÌéÂ^B]Pe{zËB¦xæÓ°ÂÀ5$Ue#˜ýɇǂF$%Yg©_µ¾EupïY6&Z]YX'¨%÷ô= ¯AbùÐz ’5ybðp]›z¸ÂÎàY±Ó‰!g76ǸYw¥Ö¢”‰j¡:1.˜p8v&ò)½Êsƒû|gWì45s€§ceEóÃ~E?C0±ò¸´µ,{•'ݤ¼)^Á•ÓƒO\ÿ?·YÒþ¡Ü%Jæ)÷ë^¥ý|¡mL "íÌ2¬LŒÈö¯%‹!õ Æ¡Á3¶uvIìÓTV#†_É,ðÆêÑW‡—s O‚´ÄÜYþè[¼ËƑɀG̑)ŽÑá:•5+ø‡ j&JÙø[ð1ÔðeÎÊßĞýßøâ*Ô5Àê­ç/|> seoupö/ü¶ìÄè’3%X@ЪàÙΐ„öFéznsÁaXgçµ¢›©"Xø){Œ ø·ÿÿÀ¦±˜¹-|¥m=Mº© 7Vêˆhxbi‡¸åà{¢:f²!T“u@iǘ4‘¡)siw¹’üèrÁEBÚ4,¶ÛÁ,{âÛótà²&HA3
550
+ Ùòúëà$ûŒ™ŽJPªkî/Ùúo #Ô%AÔ¤Ф‚…)ùñï,CÙö%#ôBZÇ‚j—Ò´-ýÎJ-ü îM­ 8Ÿ›y'ï v‰·¦!KOôd"} .
551
+ !þbg™²ë±¨.{¦Ê„®Wx.ãü·ÇP–ÊO™¸7 “y­¥¼7ZAt³ˆÈ…y²*žS¼FT©•l—ãüÇ{F_Ÿ³ó«g“VlX*üiDÐûõ“ û&c€yÿ|PžëUÃQQ½j—ۀ½2[àa}ûêà莾Î¹_Ž ɱ Y›ZG„³X²œÐ±ðdQˆÙaEÆìiœåñ]ÿ¬eZ¾{p‚ÃuÁÈýWÀ¬}^¨ sh¢¾9ªÌØc“BUŽ’>°K±Ìw‡Y ÿ‰Ã›U뛺Ë*Ö³BùN«›²ûmE®\-Ã,sÂE¶û±B+XaάTèý;r+—û}Ñ=}9ï¸3̲§\@’Ћ6M[¿˜Û儗óHÚ¼¦">ø¿›.ä‚–}ˆ£ëW|¬:¯aŒ¾ä\À»É[¦Ü넓]u‰ C³SŒâ؅q·…Àõ¼dYÈÀ{໣ô£÷#ÆW©>Ïд§\âŒÉk{]ˋ=}Ñv“]Á~HtŒÆVDÞT»Óý›U ]“³·V«R/ÙEÎê ±å?oþü5Ñsˆ±{}Dvg‡¢Mÿ;A¨òš+j«2ŸkòtÝO  ™ëDöÄ"f,b«Òùn·fbÙûýœa'$4¸d†R‡ÖWM!'oýü µ ü…†À»ÿtgòòp¸¤³”°ø'ª6òéšPlvgû¸ßÈ;ԏÚ_³#}!ñ¸B2Zy³m©Ÿòt¼å”®Ë²íL,Ä= |{Ƹυ†à=  Oz ƒóCºšÍCšš†*¤ùŽÐ¬J Pášd¶Ì̐‹ÙPPÜ-0x:å÷÷ë(ÐfÀ¨’é÷ Çw•‘ÙL²$#Üè$jE®šQX¥6øç÷k2€æ¢vêùe£ù0£œ|¡(&çºùcóŒÙP’9õwŽàçÅë/04Qø´«%c:ÉÝÇçÇÞꙢ ¸øh]¡ºÞ6oê篅2žré‘$ãCûT€¯¤máùÐÁ&l…¢¸ }tÒĤeÙzƒû}¥žÝÀݤuÈúÖ¡ã¤é³¼‘äӝM+ÁŒ‰Çò/t<"%H¨—Å|ôòyûüpPÏ7,iٌoî¶ÇêåÁ8ÈsÃJýkò:7»ÀË@ýÌ™•[{#sA?}F{ÍD „¿‘»;LSHY(rˆPÒñ2ÿ4ÖÊ&•d̞7ág•ì¬ꀒå¥Öÿ뒵?
552
+ Äë0 ä-BH¥{$sqŸ¹'Á(úQš¶+ᔊqh³‘B­Yæ¬ìÀóë@f±Ošöš¿TG­-I”ï­~! ½FrÙ÷]ўA
553
+ “ÕËñ*´&aÄ}$Wm¶¤ý^€Ò*qN>§—b•Íï {™¤ šÈ4ͼ1)N"ÿç9ø7 îA}eò°¼»p–I8¹4
554
+ ’š„äôø†û‡5ù÷Ʋ™· níí²IÕNø±nø:ñ”ߢr¥'ÿ”læJQ˜¸3hÏÓJ°IÓTÔÓ¬ß#¾òMä=Mü =MÇ= D$B‰Ð:4åÄnZXKqj¥þ8ôR*ø¤QJS)Tí«°ÉÞ@àPÊ&•kÌ n³-ÈvÊØø,ã鐊yýnŸ‰‡5)¢éê8aÍe(wa™õa.¤}%f'bɔִß#8rˆÏÙý¡Ï:ϐ¤6Ü:¡x~f¦ôì&îÉQ™¸“êÿÑÉág™ØñB)Î5‘…m¢7/4ÎnI×÷/ëöÙÛ̞b ㇰ7'ZŠz„P^÷âãr(8(Ðöp*9’Ç/ØTTú\®:®GyÄ4«Ê„ ÄK‹=}4>f‚Ê,Raá§z¶6.³ m:øûCtìÆß§}H—Ü ëþlVqdt«yYey^ ^ñ˖?}HQ‚³Hk&œ6ãÒL’ä0Ÿ@Ü[曀º© 9Ö3°$°¤=} ‰ôûæÂ]ÔÈ¢ažqÙaˆùa$Èͧþª‹Ðւ8’YãêOLu·iBéA÷Ú[!p4Õ^•îÇ'»ï„ÃŽòdR{ƒu‹´?îôª¿H‹‰çÿš…‚?5Î/íÀœÿb#ž\ôLjÔ)ûJÌɟ[¯7šŽ ,º$ Íh‹„<xA¥vAWeû˜ŠõK= ÝM ¤<lÇrK'DËT­¦óC!òÀŸáÑ;0ÔÇOìG"ĝ®%e CjÌE“&ƒ½Z »Y ìԇix‡-ÿfäÀŸSlȕ†lêÏÐ >³œ©Ï¼#p¯”zùj D[»ÃÒk:Šÿ†%ozԋ{эלAÀv™^äÌý&§F‡ ¼ËWsæÔ5‹= Z-æÜI!0ANH¾üûö›Å¥!”¼s^x¦lŽ–éP˜õfØpʋ<"<æD‚“Tç˜Ôè  Ë°ÎŸÏßÀύ÷>𬻆ÆISopJá:
555
+ NÜx16;hi ê–ƒéßÓöO÷ÀUG›(GñÞ_kÜ,Ý·÷Q¢Ë|¨¨Aa½Ëc¤ß©:À7úå#KÈÑôƒ¦ëc%¼#[= à+Xß½œÁ+EúD
556
+ :•%RÌ^ôÙoâÓâF‹£ºÞ›p£½±Y7-
557
+ X yk~h~’†a—[Í|’|Œjd®%ï©ñ8.æ½ÃkóAÛfûB™è‚Âo÷Œ—|k0²Ìê¼J„ÝЏyùDyŸ3«÷9øí†¢®ÉWÍóµ 'íÆ!Â3ɯ¯ëîì‹Ó$W2·63/™ Ž4bJ¡éÆÈEJÙ*"¢¤§{k:» )v™­ù3‡)ônÐRªó#&$YSzhwœ&üX²W€ÚANrg?÷ÐÑF­ž­†î]÷·˜Ê“QÊîñ:¬ã7£½Ýã7ÃÃïQ=}̓‹#íÓ-çšYzِ·³¨ßM¤Ä Ûv–3©”ÖÓS$òrmd\\]› !èúјw×ð4¬|"ÿ¦vÿ“Çë¿7µ'%ª”¦nѧ™ï= %Ý% ¡ÐúêúÊʠՒ¹¿êÍ}Ö§¤$Î9ï^bfa¡¿%05º _áêÍìßc m21Ø Bëº÷§ýИm]Ê_3= ,Rÿ…àÊê½CÐMìBÙwNÜÕ¡æÍMÐòÇL·vïÌ8I0¾°…
558
+ NR鑤6òڑ$4—qÛðãjŠR¤Ð.î w‹u؎„ü˜mÇóþá¤uÖ¶¿¡#˜¿³É‘äԝWÿcBaHW6G ?ÇdBàx^ûhƬà4s5ÿ ¯¹ßlÞo%bPÛÜ[G.ËCS‚?#SM]<×¢¦ú^_c«LFŒë{G]€FŸ<^m¿…{Ë<=M=M×zêúó“²ßl6žú)¦­qN–àeÎC.DQy~­‚°8'£ª6•8"øöò ‡±®YnË_«Ü;´Üå>#4ú.‰{”˪BƒM…1}Ú®«/L8³®z;êU”û,¼v­{Q€ H+zsM¿¥ÅÍâÛ5VÎR³|ÿ‹Ä»>&’ÅÔÔ2pƒ2r]•³¾›9Xêh9ðeû µë{À4;nŽNž^~>3ÎÀOÛ5ê:aùëS@sû’iZ´ë= ‰­*(•ò§ü;Jb¦F^lÁùr7°"þv=Mé•훡£ÛÒÆÞ(¼!mDdìÌè\ÇG_O¿\i“û~ÃÈKt›Sà4dñqLì5wÂ8'S诮¸?ØM ¼ãÚcþ\_è/m&)ý#ì“SƪÚk%¢ӄ¨“j¢éÔ¯ÃVâÎȽCœâܨò›ã Ï^'Í8=M ¯•ÖÝ*>¸¸ž'6ÿW{mçžCêµaÒ") xؔzà.º]­lÚÆp‚:ëdI–3¨¥›†ö¸’‡ºë¾L6Š4+HvöÈs× 4>óX[2*o²X–þTw3NÖíáOAU¢¶ÕñE4\(-Ù4.ªTr§ÿvTÕ¤ 8ïØ%p/ޝ
559
+ ZVm‰ÝœÜ)ßlðz§:8W^s=}qMnΜ‰= [C¤¤øÎäù3ºÍ†'G:âà!OrVFžCO½Èþè’Aƒ9¶‡2Âæ–ávàOÉ0–õùÏ¢b‚‰,T x {ÊýŒšòÂôD|1¡M—󮆦ö•¦:‰×!mƒÇ.ô§ë/¯o˜sï© ÿl~Hÿê4
560
+ N çB#Î}yg~+
561
+ YDø*
562
+ â
563
+ Ók‡¿%©9õh Ãy.êçþçŸ/U¸†q{¨ ¼?%·Ñ§h{ØHÀÜaw¯¶þ£¸I%©4&ŸflJ°ºåeƒÙt¿Êohj2hHSå
564
+ €øzU)bÂöccI%&3-/=M ¨È«»èéöHY¼Myîîï¸å9ÊxìN(ˆƒY„¢Öt)‘5S‚ZYÒ)ÄØ›aM«Ó˜L àۂÉãd€Á>¬Î‚Èú
565
+ kÝÙjPäÙmi%©µ¯·,«xIÝjjáÀH^Óx&øžlYmq㘚YQaвoM»---ùà9~/TwÕZȲ<Øî×m’(ÚÙkÂÖK—hõ!PbÎ"µIÍ¥ 0°ºª·«©2-KbôÓJ¤/¤ ÈšŽÇ‹¶³W°zŠT~Õ
566
+ Èt㒸r”ø¨j®"H”ãòø,•µ»Ô;ïɊÑsVl[uú—o¨óÏ3,á“÷:[ö&±¹¸G6þ\ђ™Zn‰d&ñ(Z*)<1l!OŠòÚ²·èœ!©žÃ®T¯%Ì»iP°€Úˆ ‰]ŒîVy¾©A¾)¶ÕîÃH2&䴑SFYð
567
+ rŽøÈSSxèºØ“§b!m%Êõ¤NAMW(»y9Ôîÿ“Æâ2"ò¢R=Mâ…@8#%eÊè+ŽÅ°#µœÑ= –"Él^sõ¦ˆ&ÖÅ×3„5—ø¢o\¡.¿]ÔÔÐ(£*Û+ãÿh«ö‚N¼¸^@ˆÙö3qܪç‹ 1yün!€xQT““v4 .ÝÑè“Ø tj¯!7Cÿ}ÃLQݸ'y‰j—¼…¾|džÃ’§!X@\;A5êžúîü>e¿$wo.~î[œZöÒ$«o—©JêöÂ"œz:”Â[ázÕä
568
+ {»= §“+Š;æZW}ÇÒÁZ{þ$&>§›|@!/¼È( 0¥3UyêB&)$M-Ô¨T¿>Í·@Ü_sV/Fum¦g=M-“…A#k߯^{%ü1WOtC¯9µ@Wá]kHÜ
569
+ [QQC¨@_™)Û¶[ä~Á£i\yM{‰W̃¿_ƒÁÇ ;ŸÄÁ]BɽÌE´òöKç+ ĹžØ‚GðoÒ$ãڝ޾>÷˜Ø'Á“ÓƒØl\q­)/ Ä9©ÞÁJSÄôC£~Åã4îá?B5óÊYyÿýÊ?Öraèŗs¶Õ uƒ½î± ßé–T.7ÔÎb4¶ô{!¼áÜÔ$¦Òj”o¢µ#¿¬Yžc çN‚2(ï¬%àLFýâA@{x¶t&¯™ ÜØT¤&N‘æ!Cž{)1(֒jØjisÔ®³š…O-é²^ɬlߞÄÑH»ÈÌtG{įOx›ö.f­’§„覥.GòÇ"s:Dõ;€:e@wktwïy²wWÞÙw -w9Á,wÖæKx@èex¿ýxŽ!ŸxLĽxÂÚÎxíàx ùóxuúxêxOÅ2xI= By/MyšlZy£fyÅsykyÏZyú‚yÉ«yëÒºy–Ây›JÊyÓ Ñy´Ùy«)áyVêy6›òyLöúybyòÝ y³eyÏöyGŽ%y(-yAÄ6yùK=}zZ•Az_ÚEz‹IzfQNGÔ>{׌WûÖ¨‘±8í¨ó˜Èô¡ñ¨1§¶ñړ±œ‹Jma1-Ï<ÐJ\Žt=}½ ¨ëIÊ0Ôr SØI!×eî_"ØHý¼\ä —i«ÞíûÎJdyS5ΓVÃèC"Êkm=}^íc՞âžô­nÙ±¢NôùoT”³eYH-´Å×å5$WEÛ
570
+ í‡É—ý: q–f®Ó®xÒRV-ƒ
571
+ ¢K@"PgEŽÝ2}ý{PÂÉæc#Þ!ì—Áx¥é·‘n³ÓÛû’«sšk¶Ù±|n½Ù²?N™CYøQ'9_c4is6†«6ÊÛzüeƒ9ÊàŠþŽ$\QQpp4bԁUL=Mâ#f¸Æá=M2£c”D¿ÐXÐï·LƒÚ•„ƒÔ®Á:ßùP͊5fÓ,–U2âo’¤ÉÊ=}ò—^ چ Jà5Ö½ƽdbß41FI¨Lהd#pŠ«ï‡ëC™âDíÞ@ y=}ÔÈìɛ¹ºüÅñ½Úºg厎¹–Àž¥7qåTx–Èò‹®u™ˆ¼öÕÔ5¥0nòùÕde©—‹Lò€À¯PÔÔey3åsãê‘¢PášÐ·÷ä&±= ÉŽÐ÷…Œ-û|„ʼ…8‹³’ü ¨Eo†O7ɏ ƒü¿qEe.¬Ú
572
+ -Å·—Þßï™ynÖÞ´jʙ&.C
573
+ ÞlÊî˜.3ŒÐƝ¢i©®«àé¦iš«¤ŽItt7[Â!ˆ®Ë˜¡ '§¿ŸŽjVågg¢lbpFfggz¡m®‚aaÔÔS#¡3d¾ÌnSg
574
+ [¶A&=M$óuØÓ¯Õ2‡â (o7âßÜËúº­·2äjγÛ×㶞$lÑù‘žÔ/€A¦ ³Bs}üü‘àß=Mæ¢e* â ^jÀ ¾ŽS²^Ô>]TÊL“‰Ý§—MþÎ öÌG€]é>MÄtÚû˜´=}¦vb«&{wLL,soÇ¢Õs¯× ºX×-“7‚Í®tÁjäl§T~6H §®Ã¡¦ O¨b¬è’OÚ1ÍX„ÖC‘Qb½x—«F¢¬ SòOœÀ\–X°‹!šI¯ŸC¼Ú¾,gC¡®Ò›=MAìkà ¢>TZƒœ ;)T<CÈ;õÏ6ðÖzN‘5rÊT6·lñ14ÝJ¢··7 ÖµlWä.ݑ)À3%?ÀbZ:´« ÝBÖ³«øØÚhԕ)©oÖÖ铑ó ãÐFaà w¦%ʉ‡ç*¿‹v-1Â>’mXS3 ÙrD1G¶©8[vo©íûÑȧ q¦ÑJëá·éP*••¬±×= z–‹T¢ü ¶‹$?xIÕ®¬ßtQÕìãàTÂPá¿ÔËP›}./=Ml¡M^IïkýyK
575
+ "A²l©¸Í6%ΔçÚJõoD=M lXÑI|®Åq‘šïóVßÂ^ՏGŸ† S·šÊ¡÷6£ïòÊ]ìcÁŸÊ_4 CGG‚‹u²s,¬ ºS6²J€ö‹¯mÁ«%›©ÊU‡™[H_=M¥[&QH{0øzŠ÷5® žz—V2^s÷j2/œ‹ywÊ*È!̙ï(Æ,dxÔ¯÷Bö1ûuðvUöôV5„˜±ãF±\yõnf±°]ö„bÙ@¯ õIÃÚ(Ù¬.Œ˜ÑUþñ‡e§þ¼–èäS Õú-‘ozÍX–-ê@ŠÑrb5¨nEÇÕsädVjrœ†a3p¡üÁ‡7Ëq¡HlÖ»qÒ%Ž ìy½&Lô—¾d9N?J;}{<;í¨ñ:ñ¨ñ˜¢ñ¨ñ¨¦¦‚:§V>E–+µǚ¦^žúrtëYb4•µ‡çü{òEðôÐϓÏ^ô÷GDMEPÞ™Ã=}Á¶"Ìùtҙyƒ© ȒA<V=M´ÑÚðd/«ƒ]ª¤]F„ÚX‚Þ±Gª‚®ŠiÍË<LºF^åp¿òнŒgEŸ!À;¡5ÜùҚéÏg-ýо ^6)7¢eªuì_¼Ø1g¯ïà§áHF çã%¥%Â!¯†n iNQT\l˒º/dêà7½Iª½ï˚åAP°™°ŽžXPoÞÐ˗ÞCˆ´Q0Ï^.ÉGîÞß#öÍ*:Œ¦:üº -6À'ڇ5.Ø> šÔ­F-ÑÚëS-Ìï÷²S%ú65FQ ·…”)~õ$,çÖ«¾†„’cËøƒ3¼®Ç$¶ÕKÚøxý(PBt–ñR²˜ƒØ‰=MËhB§['èþÍpÓ èç=M9)˜ÿá‰.´¦pֈ’¡[t·e27aÍ7§W„n®r©sEšÂ«µ{×í5j Æ^¯‚áónPƕ€Êš°œ‘ô“õá‹'ÒM4ý‘ÿÅé=Mœý^šè0Oe:Ø¿²ÑðóîcºN‚NÀ5W€,)ðÏãF9hu;º;»:FWÀx·x±ªx˜Oxìxô‰‚xK&tx Ágx{]ZxgøLxí’?xð(w›Rw±…ówF¸Øwmê½w5üŠw9_UweJvÔâvvi¸ô=M¬öæöáÇb÷¼d˜÷Ä÷Ûkß÷'8ù÷î÷Ñ/÷lìBøÎQP?ü>›SAO{ü™¨ñ¨ñ¨Ȩ5jñ¨q*\-ºTë§ùSUêL±„ô}ÿPd$4ƒ5AøË-Ö* ƒ@tÕÛa(
576
+ ¯ ÿN„ íͺzs…WJ$c+LîjüMoz…ñP= Õj$krŠ1"ÐвÍyð„uŸÆ²ï82NfÊ:O"z«6 Z=M²:ÊŔJ…•µNðázfAìܳcn‚-ÆlSÉb± ŸÙÙÚÁÞ&‡É:sÒêÖQk‚¸l¶-ҌpœPr­¦>6º½8(—À™Gtƒ΂sª¹×¼ÐâSr WEií$E¢UêNv.q*ª~$\*w¡´*âóuz^¥6F™ù_6¦ú vG‰·²Ú7‡çêwɐû$÷Mʺ‘\‚‚Ðÿ%WÇ 1ThÁ¹âþ<˜‡=M"¹»<Â1TLŒ¨‡ûFŽ‘1p¢Îð@”†çãÊò!d–g–'“: ¼F8Ø3ԄF—ÄG²ÞŸÚBŠ…@ÀÙG7ÖÜEy£J-îÀzˆn>Ä0D5K­M}4:‹sɀL3šÅ„ŽoZ-/³Ñùˆ7z„¯e_fÐU¤/ZÓüE‡ÂŸèÚþzþ-{zÚë\À=MhÖ¼= Gc€ê’t²Oek:öÅäªå4*•‘ê^íùÙi½<{é?<ۛwñ¨ñ¨ñ–zñ¨‘
577
+ 1Ƭùðžv”¶v97«2j€¬–À.:dÍMzc‰×8ãCqU¾7ºžóv¢g‚ž+©Wœ.‚&?-§bÍ2þ¹šoÄ= gfì0Ãm’VÓªá:å-¡ÕU½4:ž°1ª ûy–ά•wwáÀª¾qÁuçõÝþ|˜%W0s3ÈY†á&Þ¢»h>éhotÚYUÌ÷ýÓSN¹¹¥ý¿áׯp~&ÔTj’ÕŽR¨|.^Fyiìÿ\ÅÚª”œrÕò™q¸¦~éÿÑê¨'ó®IÜ٘•IÏZ®›~Ü^ºvýubq‚sÞ±þԊ½F¦’áØ®€âH⊩— þkJÑ9ü|Ё/÷s¹Æùoª‰2Óþz·”®ýÒÔ¹·,ûJ9woE[%‹;Áļ¯9Wƒ}ªK&н$”Z *K‘™E¹Œc‚ZÂ-™M@«ªI"÷²?ª
578
+ €«[vÍÚ©mènÅX*ÞÃÙVˆÙŒGrò«fÑ¥´g´Ä¬c9R=M³9óN
579
+ À1?a9Ùûã_ÌÂÎÓnrÄHsç‡gÀÀ֍#í† 7 ¡õßlõjÈuʯBT"Ðü¾Tµ¡M­[NԖQ¹¶íc«!9§)•!ËøqB¢¾—uQ ä͂wiùªyÁÊ.ôŒ˜»)²@W‰j4}×=}ÆSîòÓƝÙie!MÁ6…cô–ý7­iÐ=M#’(h —e‚• ä‚ —fã[-·@)ÐOèç*ŠÐ·¥éÝ4:3ÀŽöôÕrÎ¥ó™~#Òp÷G瀴˜hÎzŽ=MưóvkîY8µ½MV û ,Èçè¤ŁeÕS¥(҈ÿ¶oÎqæÔ¾rÖ$E¤œÍQaw¥Â㑏‘ñí7„f#qÒòŒ-ëÈçë±qj£b(v”XWÓ|þ:uSë%‚b–ØÐö+g#ê˜Óx(€›rˆÎö”·øVhY)Ò/ÛòàJµ#,# ®ªjÉâµT6éRy‰Š)ž4ÀyiÈ*b= ùZ$8Ÿš'"ì>'ÉU†;¢Aë4¸»?*|ù£XŸ11|±9mÃÜKzŸG,5K€-\¯™HœsÇã¯SÀþóØZ5¡SVÂLGF‚cÚtý&N^7³²?˜xL¦Þ€/°Ã끿 Lr™Ã3‡ˆ×S±lñÃçªÆlÑ‹)\ É¿êA_‡—^œá—}üjM5y…óœd ¨ßϨPÅ৕^ $„dš¸dà1ôÏcPTh±m©À[§ÂGîTméêά$ÃGÈæmñ9_žFTbD3UC÷²O FQS‡Q«eQëªM#WKÓsˆ]<Î0=}f±DXP#ZP3)íûÇ:C‡4‘j=}P²@]YFïùKó.›
580
+ Ú=}-
581
+ GÇ>¯—<OÎñ¨öüöì¨Uúñ¨ñ¨ñ¨WÈ":ª *Üz:4š *ÊúE¸:cg:é4|Ü nÀ!rPýŠe'áKô‹ÜƒÀ´EL<E¶öe¿£4‡æø¡ÝaÕtџaøöT6úa·ÊÔÓmÈ;NbæÔ° ́÷ØÇ÷8©/e>
582
+ ÞGsÑn«¶ÎÙhŒµ –%$ïƒT‚XV)¤ôàˆ†ÄàU…/7:.cƒÌveù_æ‹øcýdæÃÒÀƒhŸ8=}I¿P 2¯y âÕw±žۗYøœ¿šINrŸž”hÖt”xÙaÔW’ ¹gØù°=MÔÔׁ)õ±·†ücd§&ڇ)¼_Q”_LœÎ³=}™æT®jÉ+¥¬çìÊ ·‰G₎¡ºO.Ù­ñ§_€+hׄœpÂ-³­C"‘?ÎóvÃ4â>T°n»Š8Œø.~2ÒYú·“4Ööº÷ó/Όwc2üØ»"©_¬0÷Fz2vn£ØNÊ¢t=MŸã>‘ô1/CñÞµšó‘ŠS1þÁ‘çï řÞ6íqäJçµnìj…(¼¬ˆ²ùVõlûðf°æ±ûð‰c®uMÍ <òQ(ijѬF+máp4°– -}FIª‰®¤Á%¸N…g§À»wí£Ã(%5Jè€Æõ˜‘Öˆð“,ùAúb‘¢~Ê¥×õ“@ú7sçÿÝàPkÐ"/íiþ®=M'ُÍõ腋·†l‰Ño“3’­±7ÍZ¢ù͚ Ê:&Øf0—fù϶Ú&%ʀŽ8¼G譒•Ïú= œê†ö*Ò  æF­51””¶%Ï?§zi¶RYÌz^J…ؽ¸fŸò“/\2¥ªÐÚr7.&Ÿ-í›EtVù•²•_Vg!Æ)7§TwªÁÙež6‰Í´†øŽÞàÿLÍTq}UGͲ5QG ªÌ'ï Ì֎öž÷¿jÃËúp½ÿºëò_¹¯Lғvä³÷ê×#=M˜ˆ$[@z•»ã­œ’XŒêaÅ1Z¾;‚æt©±Ù).ب§q¹óhñ¨ò(ybJö'hJ:ø¸³y1¬b9ÉeVM]°4eSøO͎*Cxæ@ÅýäÓ¸ýoÐÈýÍ(Æ@H"¤}
583
+ õ‡Ü‡h{“g¿¨À~¿ÑxX¿u$õˆ+ãpq¬˜§i)çïQ½fï×Ve¶yˆã-Øîî‰6¤¸ÏÑo…š–•,ȄÈbýßJ @=MûHn= 6 ˆ3Q¤ľƒ²„%֕bèÐ)†"öúÑ=MUàß¾¨Íö}ØâÉ#ýÖ 2ÚNB­ŽL·¡xY[Ó-)2,–”·ÁåxZëÐÒU3+ â½³ëŽ_z«xÙ
584
+ I„2ٟ.l€÷ô×BYc" Zâ¬Fø”wj©i™î»v—êåj"‚è‘,jT¦´ü5H—óíÔ9.ð²,&™¶ô–<9£œ™ýÊ,|j‰-ÅñE)l¿.¥Æî—:=}ʃæ!¬u©ù3eê·¾òv¯Örnjy:I›÷7!zê³6º·2(÷$vi˜9z×:ý†‰r+¸z3Õ°ú4tˆ7´|f
585
+ o¨BÐ(œ=MŽ@ªœ7ˆHˆÌU+ç ÿ lXÌìáNï*½Çé#’Hax몙Šg5F²˜6Û£–š9J¢½B[¹:{3°SÇt|~Ûð®ci:UÁfÉ^Ûð³_ʂ|––Bèί ËYú&žs~o Vœœž ¢N£#ÔÜyWrÑȁ˜S—¦UƂÁ,i¯=}¹ŠÖÃIBhÛ¬Me董S©¾&1=}ÿn3‡a÷𦯱ó¯Y(:"»¹zXÜÝ)ÇFø˜KwýPbÇ+­çv)“µ›ùDh-½^.Á›(¾ª¸L©%¨ºó2J{ؑ[¹:Dÿð|+õLÇ׎\Óó\O&þëdyWi=}À~]œ2vM–逜£/iÅüƒ"“/Åþþ¢¬K²ž²¡=}=}‚b}ÓCþ„«‡¦O7´Õ½†\®‡þö*¤sú¤Mu¶ß‡žuÙè{ݐa·Z Ž¬Q=}µ¡^´ŠqYI±ü3—·ÀÐgJôe4£ØÐÊ¢ØE ž™<‘£P]¸•\QñOݘ™Lߒ€óO“Ç9"Ŭÿó?†ÒÐÛ-ªD/^†,ëíO’6ÒÜ~¹T…&›q‡A(—T}
586
+ ‹”Éݛtl àWje‹W⻵@·)dëÛîMåñ…WŒA= ±e,î|Äý¹]Gç¯JRœgݟìÃzö'Ìg÷i6nLÚzÃ9\݂.z7ÚÃJ¨]ø9^=MÉr]ÔÅ__=M-G̅ˆmé’=M4…%ŸÝ_uæ[º²@ô„•‰úòƒ¥fÞ¹ õåÏÁd\hðM% ‡ €ïjóË÷^F]_Úŗ-ã҄iHÜHJí£6Á‡íH
587
+ [ â¯…ź>·¤Ÿ¥‡†]1i¼!†ìÏäR~õc=MúW|öÁŽ»¦c¨hDáôV>¤óŠ€r¸¤&NªÍÙ´=M6)æÐBد¼^= ð ñ/$Ò+ŠÒçyÍ12كŠÊÞT|ž¾T0dqÜßQ~UšáŠÖú$ àӌ¯áµs(Z…öâGÝv²6Î6ùŸÓÆÑ)'‰™¯\”ꉟ¤æ„è¥/±¡Bm¬©žLôºÔ1
588
+ $–¡®/= ..3šº°ÒénY—Ù&Ú¢tȐ' NçtKfZõÂhä-îGÈÐ'õ€ç£Iv¸§eæ iž^=Mn”Ê“¡Kû•ÂvîúgÓ)´^ñ¨‹¡=M¾Àïäëç¿
589
+ ýt$Ñ+ã&d”µÜ´0OÜ¥ÚÊËo³Ûëõžèȉ¦Öî= 2e‡W®æ})’´Ñ&„õ€„¸¢†%ß…iȇ¸c´²5\6¤«îø4*6^31)¡·ÂØHŠ×ø!?.æÖMó*9W)¯‹üö?‡"V¥!-iQ†³
590
+ æ³íÉ#(7üÌøwè(kr­wZ‡!+3@93€Xé­ÎvHô
591
+ FˆÙ-Áì0÷7xzn-fÚ,bš6ñÄɧBF–PwYÝÉðzpL™DúÒ¯€›£J31&Èæ6š4;kYǼrÂ]n¦?1奍˜OGm{0•^g(¨Å$! 8uAb¸^£
592
+ r–ýA”nSaýQ®ú^ÛÚNEbóÌâV=Mþx xF‚þ¸û÷7ë¡};É1H}"›—çC­ s©“]9¸OgQû_Id¢ì hL¥Í+Œƒ|8é'Õ?ø¯?)ûëjÔcãºI1Q] ™Yÿ4³öñ;ÒQ}tôCfƬí?¡%à‹˜Å¹mgnË܆ØG l­¸j‚:o@Ž@§ØÐS÷ˆÄfúÏ+]ÐÄsì’ÿ%Ö]WyÄsg‚Öƒ%€•òßf]”‡Œ&L@ „tTiÏ ²æmõŽŒ}xõPêÄÀ¯²·y¤¥ þg5¦Ù|Æ¡ßÌ ŸEsÔ{ÑÍò¦OtF^PQ‡Î8d¤ør€ê«âf$ o¤ãx8x[Ë(‹†%ÍtÉçnÞÔ6G$AXݽϤmÃi2Üiyd0¯‚…*߁á.9žŠ*oíÁr‡·2Ã(s´ÈÅz÷zY¢Á¼öÔ°ç0}Ñ4µEö‘Ö r5l®Ä'1Æüç\ã>ƊøièLï֘À|e¨ùRB’aEHÐ¢MßÏãØª$Äß=Mç.Œ·–¼ªnD õ´÷"T·ñy)5¹’ùÊÊ(·ÕJϘLr4jŠô*2÷5=MŠù#¯v#Ñå~¶¢z>õ8‹ŒySæ É{Úõ«:£¿!ÓrYŽØç µÐÜ ×>兘ۓ&¼¤æ¸kgz;Ö0}Ë«]WÒÁþwqIM,[x@UbœG'1ÿôÃê‚(}/Q Ç“‘ÁÛâm¿p /|¼éBÐc«Q (ë3º(z2é¹:ºoû;@՛S?¿G†S‰kž«70>³r<ÞaåUGÒ;BAi¤°óGåÅ¥Û7BëUi~vJ;ãG}@OUm½ÛXKÁnnál!kýŸKe[kWG¼ëÃì½ìÉìÔLs4F³SÆAvÌ{¾š—™„€ˆ˜Ž†–‚’Šš ÿ=M  ˜~Œû=Müj[cowmuai\dpxnvbêÛãï÷íõáé|~—zswuil= hnvúóçíáéìôøöªϤn¢
593
+ š÷§ Õ°VrfSu5€a¢Rð¯/‰×u®9=MVñ'¶3r)w·58Ýő9Ä@ð؎!i–ò¨*Î"ªy¹84òÛí¸“‘°2ÇàV²Zx²(îòú_ øÞn†Võa•óÑØ6‰—ó¹*$&Jš:Fãs!p‡Óú±"Ì.rZø5/Ɩføœ5Õ8RZ¹7
594
+ ä(Úð³4³Îæbg±'Îʺt°=}F6‘Wó15zöœ8½8²ùîTòèu8Řz÷µ1Éfª‡Mv˜3û¥Ôp8û®‘&7´âyîÕâŠ8»á«ôZgɐ&Zësª¶@†ƒJۛ<K'ô®áP¨ñåküJ{«974žñ>Óëâ@\S@;ýnñð±æ§ñ(ñ¨ñ¨+ò¨ !5¶½ÔTT7}÷‘‰Øu°û¼jÿ¦°%æâ‰(ØLT7}÷‘â™ÃÛRðõµ$=Màނ²‰ÆGy0™âŠÚy³«ÏÃÛRðõ¯974^‚±‡ÈGaúºM:‹ƒf‰ÍcîKúD²àç?–´=Ms¯]ü‰oÓÄ·‡= r•ÄÈÿìÎRˆ}j©ÍÔ!¢ašŽØb„' ˆkÃÂO²Ü”
595
+ o-ÛÈsƒUB4 SïgtW¦I-ºô­ç= Á(w¦=}õ¬Ð‰prŽ4×¥©ðU–„›rêÕ½¹àë®h—ùâٶ虍
596
+ ö¡›SŠd(†îϤ!ŒÖ¬ÏGI.ä=MՎŸ°Ï”TºÃ«ÐLç}–¶ó¯!M\‰m¿„·} r”Ôˆÿðî҇…ª©Œû”Q›Q‹˜¡R„((hmӂϫÌ= “ÿjo1ËÈt•B6Óï"W<Én»¬·{´”Ù°ÿïø"‡ƒ²é̤!œUš‹¨‘¢VD()pŽ=MÚ¶O¬Ù€ÓJ²Ú0‚…6¶
597
+ ÇG"T —¡TÑ,Bx¡®ÉÌ ynU¨sˆq‚ÖÈ 7҃’V¥ÝÞFÒ$Ÿ®mԊ䡿ëÔ³±,í#þ¨Eu½!–%óu'aÔ¸÷¨uÁ+ÓÍiñ_Æ4ÐaYñD„"KZVÆI×b ,AmÙJäµfëٓ±+÷Ä#ü°-u÷‡"†¥óU§bÌx÷©eA«ÚÝ òc.4ÌA)ò<6„ ;*ÖÄLwb Áí×z¤¬–«×‡É+ô ¤Tív'ǺϰȠ”~¯µ3¯ Eôםiá+TñKé™lt¸ô~\"“Ãt·‚˜2“Òx_ò겇
598
+ ‹Ù‹= ÑDú ^q C$X%NžÌF?tü[a+LP›€qKəklxô|y¢ÓÊT·€ˆ²“ÎX_ñâr‡{Y‹@Qž<z >q;äX#>nnͺL!Eþ“üšï/¿ht|¡‚5j\eGÃ¥6&zf꺾ގyTTQê28ÞºŽH¼°@{ë±VñĨñ4Œñ¨6(ñ¨¡)®TòÙÑ$T˜ü¡ôO)”„ýÁµdOyGNùv„œùœÜ[:•=}Âýxý*ÔM¯Žó]'°ÎÛ¹v\,çSf’±âÎä'´fЁ€ëàƒLyҕ ((3s؃ìXBIB¾q×¹Í{ørñ+ڗ-·½¹oâ@® /]ãTªÁGà!7a³:Sˆ ÈÈ£gÖñÝA—Õ|ðh0£®ÔŠ˜%랍5OŽÆø
599
+ ‘ŽïH·ØrÌe¯Q(Ûá^Ð3ºSÏpß=}…ªJ=MŽâ­ s|²…¬W"ƒ™½¤’#͇lyÑÝÁ”À“˜:»uæPÛñ1TÈVÚÂÙÀª/‚I‡Ýy Î/§‡ï7|’òŸ±#m˜mÛ,ãFjG…~.¼)wº‹Eù)•–Í —Ò(©aÁ;¹6x)z™ÉfŸ¬½P“ ÃÁ¥æmºÉÿ¤Fp±FÄæUwíŠcÆïô
600
+ [S¥#,4F<C§ûš’4ü
601
+ Óâï3DŽQ÷øœOœüN¹´œf'Á éñwl@ÀÆ(:l¯Z?;ÿkG>Ô €h2¶ïY] gªp¢Ù"–9ÓÇØtÔvU U£Ê‚÷nÎ\”aŽíˆŸØyX=M uே$×)þ[gÁ„GÞëU¡œrGþ-kHþsçJ.ëºÁ$»;;KC}“l:厠›‡¾ïÓa¤nÈ=M¥Õào‡¤Õñsèâ´ʼ“SNìl ÿ SÅàlP–žg—'Èü“WÎìtž°)SÉ lXžw·'
602
+ >´œÙV.ƒ™t
603
+ Ø.‹™uŠ è.“™v
604
+ ø.›™wŠ!" ÷5wâÓyCg;œS»;iKKÞ£ý•6©ZÇaj¸²4¹±8
605
+ é"0µ±øÚ˜&즸±(é8°Y±ØÊ˜" 4°Z±ʘ2 8pJ±˜.7pбҘ.¡7ÐBö-œ’™'ʘ´ífš± é7B±0¾˜¸œ’ºb±0Ƙ¸ž’:‚±0Θ¸ ’º¢±0֘¸¢’: ¼˜y À˜¹ Ęù Ș9 ̘y И91Ó"÷¦ø¶èœh¦•Y1íâøØü”×× ”Øü˜ ˜ûgÿ§ç' g§ç' [FԁíÍÔ'Ÿc†Ô‘íÑô'°{R¯}r¯’¯²¯ƒÒ¯…ò¯‡¯‰2¯‹R°r°’°‘²°“Ò°•ò°—°™2T›¼DqSœÀT±SÄdñSžÈt1SŸÌ„qT Ð”±ngüP»kGþ U´•1-Êwۈ§$.7÷ºùz:Ú. 4"ù®:Ô"Ò´nº1¹r6bÊÎ÷͚-‡ùv4âÊ/Îù=Mš5‡ú$v8ÂÂ+L™ýгEšh7HÊþ"+u7I
606
+ þ2+y7ÊJ3m9NJ3q9ÈÊ"3u9É
607
+ 23y9:gD<»{;»kÖLýDZìøf<†J=MÂ/]8ƒŠ=MÒ/a8„Ê=Mâ/e8…
608
+ =Mò/i8†J/m8‡Š/q8ˆÊ"/u8‰
609
+ 2/y8
610
+ J-Â7]:Š-Ò7a:Ê-â7e:
611
+ -ò7i:J.7m:Š.7ñ"ºú¨£z Ú.&7vz
612
+ .67zYÃJÀ3\ÙÃjÈ3^YĊÐ3= ÙĪØ3bYÅÊà3dÙÅêè3fYÆ
613
+ ð3hÙÆ*ø3jYÇJ3lÙÇj3nYȊ3pÙȪ3rYÉÊ 3tÙÉê(3vYÊ
614
+ 03xÙÊ*83ºí—B@;»{K¿Å´î8–4¼QB!B.À4þ·¹lÓº‚-η= º¢-Ö·b:Â-Þ·dºâ-æ·f:-î·hº"-ö·j:B.þ·lºb.·.7.·/7/·070·1714)6?ü>}[;;;ëØ¨ñ¨ñ¨ñ¨ñ¨VxÜÈí5•&éï%U¦êò-¥¦éî9…ãݼqµcÞÁau#Þ½u•#Ý{„p‘Š ‚¸’†˜PeàՁ$àוÕ$ßڅ%¤àÖ]މz&Ήx'.‰y(® zďmaʟ=M_·ƒbƗM_Ô¥Á!Ô§ÕÔ!ÓªÅ$¡Ô¦ýߍcö÷͆fî×-†døç­†Ï3&ªø6=Mæª÷8êø4 6jìA'ìUÖ'ë
615
+ E&§ì½= ’«xҘ®X2˜¬h²˜ó¥V¨ò­¦¨ñ¹fèò©ÆÑ{@>§+{AH‡«ûB@¯ëû@<ÍãÃhÙÝÄdÉ3ÝÃiÑó]EpÇëþFtïkþDzÏ þErƒÞÉl1³^Êq!sÊm5“ÉSì¬'>Ç_”;»úõñ¨ê•Þ¥§ñôW¢ñ¨@"Ó¢ÿ$èP.Ï’ñZ¼4ôôDk r­Wkt’7"9ö= ¦î»÷nº™P>.mJ±Î}HQ?Û\ÂQWÃ{ŠDxÓ¾½GUë\¿_E#ûÀSI‹ü;MÙ'\ЕgD_ٗ•¬_M>à/Åj…m¤ÿыÍdßN’tƒ= ¾+j¤œ€KD ÁNŒSdÞJn7‹Ì€N±¿ÜàÃiÃKG\ָߎÊpü_͊v îÚ­5lZpožŠsuÅ$ؘWá՜»ôtÆ_T›ÅB-ÆF‚¸¸êsv5½n¢"’lëg|Cölü<Z]‹›¼F<ÿÛ|ýQŠ}¾dÉ3MÄM†—D_ѳŸ€S¶lþDz݋œÀV|ÿÌ»W¶÷D¢Z!sŠo¥ç¬bӘ_ͯ!Ua<ާËÚþè6= &ÓÙ}K¶C;ۀšà  Nh¹K8.•;™ üBSyLÆa8ô!JD„ï4˜±ñfR(€‹šHº<aŠ{.V«+n³ ®À‡zþýýøýèýðýÕë_—j'CVýhœw¢Âêyvø"…ÁžJ…úÉUÉVÊTÉ$ʤ@8ìÅçÅ'Åçí'¼9ÃùÃdêdê°–§YñµÿìFå”Ï­nèٍŠ= 2Xå„f„jd‰fpÑ*ªƒ'vMlQ•VØðrzæ[ò_øcè3«”¥ • •¢š› › åõÁ.èq²“x¥9½ÆQʓõzå%pT&IâÐYiŠh
616
+ ehäk‘%ÖMÖΕÍAPlFü9ðœÔì Ð„èŒ(̘ì>œøœxœN™Ž® †i«Þøñʓx¢,í~Ñr”ôyÕ°ócøë[ú“͕׍̙Ò=MÕ é%’/ä¶o2ˆ€'?i4@¢€ÈSvÝö^Až>}Á>ÊA ?hõ©õš(­Þ"ð™²õy+ï(‘vñÆ1©Ê%5=M-E-f-Õðpdp6VŽ޵~ń˝‹xö¢y7Á»°ûC£=M|ÁKa۞á˜Â†×ÉÙRï·×ÜЄSÉz]”“usöõ¶³´6354B??A@@Æ7uÜ"Τ…!­ãã=}ҕ³öYÕ[ßPÑ[àXÙRgu{jC^ýÏ;[œó8d5ЛD3:9ä ÷ÐüWë?ç·iÉ»nEó>Ù»rF3>¼{k+R¾/OkDM¾<«¨*ªñ¨wñ¨ñ¨ñ¨6ñY¥wÒ_͇e$ŸÍˆi4O‡d ˆh0o=M‡f(¯=Mˆj8Gmc‡mgVîdÖî= –îhî^vîföîb¶îj6®[B®c®_‚®g®]b®eâ®a¢®i"®\R®dÒ®= ’®h®^r®fò®b²®j2.[J.cÊ._Š.g
617
+ .]j.eê.aª.i*.\Z.dÚ.= š.h.^z.fú.bº.j:n²é4îËg tf”•NƒkÜ¿N„oìÿ΃mäß΄qôŽƒlàώ„pðƒnèï„rø/nkÞÇno1‰õ҅AÌNôPt$ø§ස'wvþð7„&·n ’µRÓV¼F(Dšmõ‡£—§¡ilnuÒÕD–iÎdâi.E®ž’€émŽ1—hÎp!ÿÀ¦((uÔèrb)Gë²¼µE͎ë~Ȓp±ªÓØEò²L±m=Mف£÷É0”×*8aüªN8bºÎØ\Ëýo¢ávvþXÔ)­¢Éö®ËâÑ·pPåèƒÈ¥h®Ô0[Žæ/èò•x$ð|
618
+ ȵªÑ|ÆgŸ=Mi։T°傡¸í&ÒÛgŸu]lTʵ!íÚp¾ÈNn§ñkÞ襦n'ñr~~W‡²p³ŠîÙ)¦¢2"{êJ1ÜùvªÉ/Þ8"“:xTbu&Ÿ¢Ù%'n¬Ñö ¬"´)ù{HRæ p˜éñf³È•êŽ.H¥ú”Jò% Ixàò¶/³ú™Z.^µº‡AФÔwbÖRŸ/íç™ÐVí¶–Á*->Ô¹gŠ 7Àçrk‡I ì_œO9åBxÙsä¢nñ6íñ¨E¶¦¨ñ(™ñ¦¨È‰út7¶º½ªº¼æºBB »<?sQãK×SATÀûAÐ;ν—Q¥ 0›
619
+ =}tZ÷= [Õû¯û;³ÞêBb©<­¢«2>:ck~)—Cé<¬j
620
+ »·J×Z{ÒûDÑFW= ‹C‰w‡[
621
+ M?òÐ0Ò@!‚|i¤q–#ˆg'ÞgÐQ.QŠFnvÿõ\÷,K9è\‰7g¿çIéXœޜ­:ÀDõ]Ã^]J€ËC ƒO¸…O.‰Ïì4q |qòtìaÁb‹îÓÞÊ1=  Òbëþ„9„÷JÍÃpŽÓBŽÇ臘ØÚÌÿFmg)@홼ôõ½…½ÂeL¦’œºÀwßUb”¾ùìAîhžzהÂ%è"ÿª%Ì"pKç\Œ= Ä´›Aô~¢± }:zF6Ž"¨xR sJ^!n1,·÷ÂQÒij/]ÙÆ¬r˜½zõOîǗ­½Ðf,fì–VÌøˆsæpÞr¦ü'Ó©þôÝX °Ï6²]n?>xã>µl0Ì6÷Z²)[µ\'ÁÌtBªXÀóµ?ŽS §,÷p+Ò萺¨Ÿ·˜ÞþjéÊÔ˗£ž½nq|G6ùÌV§Ä.‘#îòü/ª’º¶×²¨ìnb'Å7›r½æ1{XóR¡ŸZ­n2þ*ÊM«î@,C3l‹TÃü.ûªAܛ4‘KzW/€ÛÚÁ3ºë÷Ž[a@9&½Ö–h’”ãô\7v~ÿrH®®]½5[½¹w-§*K$?æ%uFóì_G2ÎÁÛÔ‡E×VkÓÔ(pŽsÔH‚Iby6œaÀÔHEnnnnî
622
+ ÕÕWš’¸0922hPå“c‚A3åWã܅›·G»ñm=}ñ¾D=}n “;˜¡HsQkBs>5#AÕɻҳ;®þBÓÇi»äKÛý¹BïÝb«”ûIǨÔG/ýgIQ;ÉY;'*•ÛRÇ>á³e‹fæ<â<o¸T[:H»®²> ¬CÓ¿®{vAñ7@L»Î…LX§ÄëLÀú@[©ŠZ¿!ß\®;ý‡t¥UKŽïUœTÂã ÒK6M¬²?¶Éû6>CõuÉýBMó轛’è]#¿^?^¹}‹6lĦu̓V|ÝL¾„wúÌßÙṙ >ÍñŒE“¤R<IL«Öæ?/ãa<Ù4—ûUãÀîC\-gR2òDì%ÀË)g)âÆ+÷Ô]%,´Luœ_!ÿ'3•l ócá•„ó©M× …„#ZU›uº±ÑÝ.àã€dÙ”øÙgž…*£œÓ×ö{É]@²wŠ|²séûb¸Ð§&=}= bã  e%+†PI
623
+ l›5˜p›‰U–âGäÄL#+d^©®çlV°SêlÜ2øm‘Êp= A¡ç¯ÔT˜R§ S™mâeÁ•›àä= •ïþM€¡•œ‚§ˆtªî¡m.¨#ÖÑ¥±¤pypÑÆ* ‚21³D¶±œø>¢Ô(Ãu³uŒD¢W¯ÔÄ'ºêÐ;eV;~Z»;€= »1A{{s½×ÂC%rN›ÌÛQý%†]ó|›KªÑüÌڅ+¤n½BâüޅH™T +hæNç¨1¾€œË7–sËVŽüê¦d¿õÉ>õÜI5ٖ>žWI¾ÌÂ+ÿGÞ®äY£=MƟO$uH€"pÜtŠc·Ázìø2£œ„áH´œØÑ/ó¡Ò/Ow¶ö‚Û‰FQ1'µ‹Ã6áÅÁ·RôOë<²­_¾µ°ý|”ß/öb=M†R©¡µg*5ыI6#ÜU²¸Û<n2ÛGºªሖ‡EW]ãt¿Àl¸-{+‰&å¡°ð3éð³¢ú¹Ù'7äö¨"÷ˆøýìØ‡èAµg#w¶L°ê7=}=M˜‰BФC&hé#ñ4ᙴ8 &2Éósnœæï î%í¢†-귐mœ|–h*¤–WåØ;AÀ>
624
+ @3Å[ЉûNhDîQFü*Ý?uJûØ6ë
625
+ A™§²Âœp˜[ô’s‹šFû .oCtï@ݘÚý‰# £=MÖ#ƒ‡wìîxýß½GÒÿDó|Ü}5jìÝNȰ5EÇ>ïvßøN’À‚ªfÈÆHøýˆ §åpª­( øç°ÓX–*)· ©T0œ¢Ç‚¹ÆÑB¿Ÿ¤iÅ5mtímhâ¡'»BNiÇ©¦=}{fLÐË+¡ùC}ØûÀÓ}qb³.x;ݎ<¸Ø<圢›‹ÆrEØø>¬C䇭‹ ·|ãKLQfäÕ6˜5av„TõÝýît›™Ð"¦6Ál¬¨6ñý>HG8¶  $  —=MøÄƒd»¥BGÁØÇ¼¹$=}¯ŸŠã)uYGz;žC}pd¿\|‘6(L=Mf_ï#ß«WÞ¥§fŸp@0N6‘
626
+ Š'¤sªˆQø÷Õ¬Åq¾>.øü·¢D5³T…áhÅ8zDvO= ¯óÝyàÙåFÆÒ•çcËóŒz?Ê5cèŠ–úë.ÌðÐޛ~†O Ë|¿Ó˜Q§ v)BHXƒš6œøöDއ¥„˜ŠkÒÚa¡cÙ7—¦x©nº¡6¾}®­iÏ<ÎWhš‘2 9's"IɎ<»ïX\#F\Ë_4F[ eŠÚ ¸Šø¹2øH$žß9_xì9i 2µšã
627
+ ã/¸Äyf"Ÿ5TàyÊ0îEê²Þ—€m6ëÞè6ðÏâ§9ž¬„k=}¼àt<ž‚¦Mdžç6"p_î3, oO3p"pw÷´/(1ñøs.íA/&ÏUÃ_X™ÍpÕ1hÌ80E’Qö„
628
+ ow÷!x.™AÜ"¢j+惡¦¶®ä“R–ow÷!xꔊpn…â#ðù
629
+ z AÍp\Ž0N˜HJê´ªØ^U
630
+ I€wu¸öôú!3å6³‹âVq£³¹´RN£%y10º:pŠ#\:J:b9Hµ7h_Ž:¢I9 _¼™µV,þ <` });
631
+ var imports = {
632
+ "a": wasmImports
633
+ };
634
+ this.setModule = (data3) => {
635
+ WASMAudioDecoderCommon2.setModule(EmscriptenWASM, data3);
636
+ };
637
+ this.getModule = () => WASMAudioDecoderCommon2.getModule(EmscriptenWASM);
638
+ this.instantiate = () => {
639
+ this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {
640
+ const wasmExports = instance.exports;
641
+ assignWasmExports(wasmExports);
642
+ wasmMemory = wasmExports["g"];
643
+ updateMemoryViews();
644
+ initRuntime(wasmExports);
645
+ ready();
646
+ });
647
+ this.ready = new Promise((resolve) => {
648
+ ready = resolve;
649
+ }).then(() => {
650
+ this.HEAP = wasmMemory.buffer;
651
+ this.malloc = _malloc;
652
+ this.free = _free;
653
+ this.opus_frame_decoder_create = _opus_frame_decoder_create;
654
+ this.opus_frame_decode_float_deinterleaved = _opus_frame_decode_float_deinterleaved;
655
+ this.opus_frame_decoder_destroy = _opus_frame_decoder_destroy;
656
+ });
657
+ return this;
658
+ };
659
+ }
660
+
661
+ // ../../node_modules/opus-decoder/src/OpusDecoder.js
662
+ function OpusDecoder(options = {}) {
663
+ if (!OpusDecoder.errors) {
664
+ Object.defineProperties(OpusDecoder, {
665
+ errors: {
666
+ value: /* @__PURE__ */ new Map([
667
+ [-1, "OPUS_BAD_ARG: One or more invalid/out of range arguments"],
668
+ [-2, "OPUS_BUFFER_TOO_SMALL: Not enough bytes allocated in the buffer"],
669
+ [-3, "OPUS_INTERNAL_ERROR: An internal error was detected"],
670
+ [-4, "OPUS_INVALID_PACKET: The compressed data passed is corrupted"],
671
+ [-5, "OPUS_UNIMPLEMENTED: Invalid/unsupported request number"],
672
+ [-6, "OPUS_INVALID_STATE: An encoder or decoder structure is invalid or already freed"],
673
+ [-7, "OPUS_ALLOC_FAIL: Memory allocation has failed"]
674
+ ])
675
+ }
676
+ });
677
+ }
678
+ this._init = () => new this._WASMAudioDecoderCommon(this).instantiate(this._EmscriptenWASM, this._module).then((common) => {
679
+ this._common = common;
680
+ this._inputBytes = 0;
681
+ this._outputSamples = 0;
682
+ this._frameNumber = 0;
683
+ this._input = this._common.allocateTypedArray(
684
+ this._inputSize,
685
+ Uint8Array
686
+ );
687
+ this._output = this._common.allocateTypedArray(
688
+ this._outputChannels * this._outputChannelSize,
689
+ Float32Array
690
+ );
691
+ const mapping = this._common.allocateTypedArray(
692
+ this._channels,
693
+ Uint8Array
694
+ );
695
+ mapping.buf.set(this._channelMappingTable);
696
+ this._decoder = this._common.wasm.opus_frame_decoder_create(
697
+ this._sampleRate,
698
+ this._channels,
699
+ this._streamCount,
700
+ this._coupledStreamCount,
701
+ mapping.ptr,
702
+ this._preSkip,
703
+ this._forceStereo
704
+ );
705
+ });
706
+ Object.defineProperty(this, "ready", {
707
+ enumerable: true,
708
+ get: () => this._ready
709
+ });
710
+ this.reset = () => {
711
+ this.free();
712
+ return this._init();
713
+ };
714
+ this.free = () => {
715
+ this._common.free();
716
+ this._common.wasm.opus_frame_decoder_destroy(this._decoder);
717
+ this._common.wasm.free(this._decoder);
718
+ };
719
+ this._decode = (opusFrame) => {
720
+ if (!(opusFrame instanceof Uint8Array))
721
+ throw Error(
722
+ "Data to decode must be Uint8Array. Instead got " + typeof opusFrame
723
+ );
724
+ this._input.buf.set(opusFrame);
725
+ let samplesDecoded = this._common.wasm.opus_frame_decode_float_deinterleaved(
726
+ this._decoder,
727
+ this._input.ptr,
728
+ opusFrame.length,
729
+ this._output.ptr
730
+ );
731
+ let error;
732
+ if (samplesDecoded < 0) {
733
+ error = "libopus " + samplesDecoded + " " + (OpusDecoder.errors.get(samplesDecoded) || "Unknown Error");
734
+ console.error(error);
735
+ samplesDecoded = 0;
736
+ }
737
+ return {
738
+ outputBuffer: this._common.getOutputChannels(
739
+ this._output.buf,
740
+ this._outputChannels,
741
+ samplesDecoded
742
+ ),
743
+ samplesDecoded,
744
+ error
745
+ };
746
+ };
747
+ this.decodeFrame = (opusFrame) => {
748
+ let errors = [];
749
+ const decoded = this._decode(opusFrame);
750
+ if (decoded.error)
751
+ this._common.addError(
752
+ errors,
753
+ decoded.error,
754
+ opusFrame.length,
755
+ this._frameNumber,
756
+ this._inputBytes,
757
+ this._outputSamples
758
+ );
759
+ this._frameNumber++;
760
+ this._inputBytes += opusFrame.length;
761
+ this._outputSamples += decoded.samplesDecoded;
762
+ return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(
763
+ errors,
764
+ [decoded.outputBuffer],
765
+ this._outputChannels,
766
+ decoded.samplesDecoded,
767
+ this._sampleRate
768
+ );
769
+ };
770
+ this.decodeFrames = (opusFrames) => {
771
+ let outputBuffers = [], errors = [], samplesDecoded = 0, i = 0;
772
+ while (i < opusFrames.length) {
773
+ const opusFrame = opusFrames[i++];
774
+ const decoded = this._decode(opusFrame);
775
+ outputBuffers.push(decoded.outputBuffer);
776
+ samplesDecoded += decoded.samplesDecoded;
777
+ if (decoded.error)
778
+ this._common.addError(
779
+ errors,
780
+ decoded.error,
781
+ opusFrame.length,
782
+ this._frameNumber,
783
+ this._inputBytes,
784
+ this._outputSamples
785
+ );
786
+ this._frameNumber++;
787
+ this._inputBytes += opusFrame.length;
788
+ this._outputSamples += decoded.samplesDecoded;
789
+ }
790
+ return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(
791
+ errors,
792
+ outputBuffers,
793
+ this._outputChannels,
794
+ samplesDecoded,
795
+ this._sampleRate
796
+ );
797
+ };
798
+ this._isWebWorker = OpusDecoder.isWebWorker;
799
+ this._WASMAudioDecoderCommon = OpusDecoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;
800
+ this._EmscriptenWASM = OpusDecoder.EmscriptenWASM || EmscriptenWASM;
801
+ this._module = OpusDecoder.module;
802
+ const MAX_FORCE_STEREO_CHANNELS = 8;
803
+ const isNumber = (param) => typeof param === "number";
804
+ const sampleRate2 = options.sampleRate;
805
+ const channels3 = options.channels;
806
+ const streamCount3 = options.streamCount;
807
+ const coupledStreamCount3 = options.coupledStreamCount;
808
+ const channelMappingTable3 = options.channelMappingTable;
809
+ const preSkip3 = options.preSkip;
810
+ const forceStereo = options.forceStereo ? 1 : 0;
811
+ if (channels3 > 2 && (!isNumber(streamCount3) || !isNumber(coupledStreamCount3) || !Array.isArray(channelMappingTable3))) {
812
+ throw new Error("Invalid Opus Decoder Options for multichannel decoding.");
813
+ }
814
+ this._sampleRate = [8e3, 12e3, 16e3, 24e3, 48e3].includes(sampleRate2) ? sampleRate2 : 48e3;
815
+ this._channels = isNumber(channels3) ? channels3 : 2;
816
+ this._streamCount = isNumber(streamCount3) ? streamCount3 : 1;
817
+ this._coupledStreamCount = isNumber(coupledStreamCount3) ? coupledStreamCount3 : this._channels - 1;
818
+ this._channelMappingTable = channelMappingTable3 || (this._channels === 2 ? [0, 1] : [0]);
819
+ this._preSkip = preSkip3 || 0;
820
+ this._forceStereo = channels3 <= MAX_FORCE_STEREO_CHANNELS && channels3 != 2 ? forceStereo : 0;
821
+ this._inputSize = 32e3 * 0.12 * this._channels;
822
+ this._outputChannelSize = 120 * 48;
823
+ this._outputChannels = this._forceStereo ? 2 : this._channels;
824
+ this._ready = this._init();
825
+ return this;
826
+ }
827
+
828
+ // ../../node_modules/opus-decoder/src/OpusDecoderWebWorker.js
829
+ var OpusDecoderWebWorker = class extends WASMAudioDecoderWorker {
830
+ constructor(options) {
831
+ super(options, "opus-decoder", OpusDecoder, EmscriptenWASM);
832
+ }
833
+ async decodeFrame(data3) {
834
+ return this.postToDecoder("decodeFrame", data3);
835
+ }
836
+ async decodeFrames(data3) {
837
+ return this.postToDecoder("decodeFrames", data3);
838
+ }
839
+ };
840
+
841
+ // ../../node_modules/opus-decoder/index.js
842
+ assignNames(OpusDecoder, "OpusDecoder");
843
+ assignNames(OpusDecoderWebWorker, "OpusDecoderWebWorker");
844
+
845
+ // ../../node_modules/codec-parser/src/constants.js
846
+ var symbol = Symbol;
847
+ var mappingJoin = ", ";
848
+ var channelMappings = (() => {
849
+ const front = "front";
850
+ const side = "side";
851
+ const rear = "rear";
852
+ const left = "left";
853
+ const center = "center";
854
+ const right = "right";
855
+ return ["", front + " ", side + " ", rear + " "].map(
856
+ (x) => [
857
+ [left, right],
858
+ [left, right, center],
859
+ [left, center, right],
860
+ [center, left, right],
861
+ [center]
862
+ ].flatMap((y) => y.map((z) => x + z).join(mappingJoin))
863
+ );
864
+ })();
865
+ var lfe = "LFE";
866
+ var monophonic = "monophonic (mono)";
867
+ var stereo = "stereo";
868
+ var surround = "surround";
869
+ var getChannelMapping = (channelCount, ...mappings) => `${[
870
+ monophonic,
871
+ stereo,
872
+ `linear ${surround}`,
873
+ "quadraphonic",
874
+ `5.0 ${surround}`,
875
+ `5.1 ${surround}`,
876
+ `6.1 ${surround}`,
877
+ `7.1 ${surround}`
878
+ ][channelCount - 1]} (${mappings.join(mappingJoin)})`;
879
+ var vorbisOpusChannelMapping = [
880
+ monophonic,
881
+ getChannelMapping(2, channelMappings[0][0]),
882
+ getChannelMapping(3, channelMappings[0][2]),
883
+ getChannelMapping(4, channelMappings[1][0], channelMappings[3][0]),
884
+ getChannelMapping(5, channelMappings[1][2], channelMappings[3][0]),
885
+ getChannelMapping(6, channelMappings[1][2], channelMappings[3][0], lfe),
886
+ getChannelMapping(7, channelMappings[1][2], channelMappings[2][0], channelMappings[3][4], lfe),
887
+ getChannelMapping(8, channelMappings[1][2], channelMappings[2][0], channelMappings[3][0], lfe)
888
+ ];
889
+ var rate192000 = 192e3;
890
+ var rate176400 = 176400;
891
+ var rate96000 = 96e3;
892
+ var rate88200 = 88200;
893
+ var rate64000 = 64e3;
894
+ var rate48000 = 48e3;
895
+ var rate44100 = 44100;
896
+ var rate32000 = 32e3;
897
+ var rate24000 = 24e3;
898
+ var rate22050 = 22050;
899
+ var rate16000 = 16e3;
900
+ var rate12000 = 12e3;
901
+ var rate11025 = 11025;
902
+ var rate8000 = 8e3;
903
+ var rate7350 = 7350;
904
+ var absoluteGranulePosition = "absoluteGranulePosition";
905
+ var bandwidth = "bandwidth";
906
+ var bitDepth = "bitDepth";
907
+ var bitrate = "bitrate";
908
+ var bitrateMaximum = bitrate + "Maximum";
909
+ var bitrateMinimum = bitrate + "Minimum";
910
+ var bitrateNominal = bitrate + "Nominal";
911
+ var buffer = "buffer";
912
+ var bufferFullness = buffer + "Fullness";
913
+ var codec = "codec";
914
+ var codecFrames = codec + "Frames";
915
+ var coupledStreamCount = "coupledStreamCount";
916
+ var crc = "crc";
917
+ var crc16 = crc + "16";
918
+ var crc32 = crc + "32";
919
+ var data = "data";
920
+ var description = "description";
921
+ var duration = "duration";
922
+ var emphasis = "emphasis";
923
+ var hasOpusPadding = "hasOpusPadding";
924
+ var header = "header";
925
+ var isContinuedPacket = "isContinuedPacket";
926
+ var isCopyrighted = "isCopyrighted";
927
+ var isFirstPage = "isFirstPage";
928
+ var isHome = "isHome";
929
+ var isLastPage = "isLastPage";
930
+ var isOriginal = "isOriginal";
931
+ var isPrivate = "isPrivate";
932
+ var isVbr = "isVbr";
933
+ var layer = "layer";
934
+ var length = "length";
935
+ var mode = "mode";
936
+ var modeExtension = mode + "Extension";
937
+ var mpeg = "mpeg";
938
+ var mpegVersion = mpeg + "Version";
939
+ var numberAACFrames = "numberAACFrames";
940
+ var outputGain = "outputGain";
941
+ var preSkip = "preSkip";
942
+ var profile = "profile";
943
+ var profileBits = symbol();
944
+ var protection = "protection";
945
+ var rawData = "rawData";
946
+ var segments = "segments";
947
+ var subarray = "subarray";
948
+ var version = "version";
949
+ var vorbis = "vorbis";
950
+ var vorbisComments = vorbis + "Comments";
951
+ var vorbisSetup = vorbis + "Setup";
952
+ var block = "block";
953
+ var blockingStrategy = block + "ingStrategy";
954
+ var blockingStrategyBits = symbol();
955
+ var blockSize = block + "Size";
956
+ var blocksize0 = block + "size0";
957
+ var blocksize1 = block + "size1";
958
+ var blockSizeBits = symbol();
959
+ var channel = "channel";
960
+ var channelMappingFamily = channel + "MappingFamily";
961
+ var channelMappingTable = channel + "MappingTable";
962
+ var channelMode = channel + "Mode";
963
+ var channelModeBits = symbol();
964
+ var channels = channel + "s";
965
+ var copyright = "copyright";
966
+ var copyrightId = copyright + "Id";
967
+ var copyrightIdStart = copyright + "IdStart";
968
+ var frame = "frame";
969
+ var frameCount = frame + "Count";
970
+ var frameLength = frame + "Length";
971
+ var Number2 = "Number";
972
+ var frameNumber = frame + Number2;
973
+ var framePadding = frame + "Padding";
974
+ var frameSize = frame + "Size";
975
+ var Rate = "Rate";
976
+ var inputSampleRate = "inputSample" + Rate;
977
+ var page = "page";
978
+ var pageChecksum = page + "Checksum";
979
+ var pageSegmentBytes = symbol();
980
+ var pageSegmentTable = page + "SegmentTable";
981
+ var pageSequenceNumber = page + "Sequence" + Number2;
982
+ var sample = "sample";
983
+ var sampleNumber = sample + Number2;
984
+ var sampleRate = sample + Rate;
985
+ var sampleRateBits = symbol();
986
+ var samples = sample + "s";
987
+ var stream = "stream";
988
+ var streamCount = stream + "Count";
989
+ var streamInfo = stream + "Info";
990
+ var streamSerialNumber = stream + "Serial" + Number2;
991
+ var streamStructureVersion = stream + "StructureVersion";
992
+ var total = "total";
993
+ var totalBytesOut = total + "BytesOut";
994
+ var totalDuration = total + "Duration";
995
+ var totalSamples = total + "Samples";
996
+ var readRawData = symbol();
997
+ var incrementRawData = symbol();
998
+ var mapCodecFrameStats = symbol();
999
+ var mapFrameStats = symbol();
1000
+ var logWarning = symbol();
1001
+ var logError2 = symbol();
1002
+ var syncFrame = symbol();
1003
+ var fixedLengthFrameSync = symbol();
1004
+ var getHeader = symbol();
1005
+ var setHeader = symbol();
1006
+ var getFrame = symbol();
1007
+ var parseFrame = symbol();
1008
+ var parseOggPage = symbol();
1009
+ var checkCodecUpdate = symbol();
1010
+ var reset = symbol();
1011
+ var enable = symbol();
1012
+ var getHeaderFromUint8Array = symbol();
1013
+ var checkFrameFooterCrc16 = symbol();
1014
+ var uint8Array = Uint8Array;
1015
+ var dataView = DataView;
1016
+ var reserved = "reserved";
1017
+ var bad = "bad";
1018
+ var free = "free";
1019
+ var none = "none";
1020
+ var sixteenBitCRC = "16bit CRC";
1021
+
1022
+ // ../../node_modules/codec-parser/src/utilities.js
1023
+ var getCrcTable = (crcTable, crcInitialValueFunction, crcFunction) => {
1024
+ for (let byte = 0; byte < crcTable[length]; byte++) {
1025
+ let crc2 = crcInitialValueFunction(byte);
1026
+ for (let bit = 8; bit > 0; bit--) crc2 = crcFunction(crc2);
1027
+ crcTable[byte] = crc2;
1028
+ }
1029
+ return crcTable;
1030
+ };
1031
+ var crc8Table = getCrcTable(
1032
+ new uint8Array(256),
1033
+ (b) => b,
1034
+ (crc2) => crc2 & 128 ? 7 ^ crc2 << 1 : crc2 << 1
1035
+ );
1036
+ var flacCrc16Table = [
1037
+ getCrcTable(
1038
+ new Uint16Array(256),
1039
+ (b) => b << 8,
1040
+ (crc2) => crc2 << 1 ^ (crc2 & 1 << 15 ? 32773 : 0)
1041
+ )
1042
+ ];
1043
+ var crc32Table = [
1044
+ getCrcTable(
1045
+ new Uint32Array(256),
1046
+ (b) => b,
1047
+ (crc2) => crc2 >>> 1 ^ (crc2 & 1) * 3988292384
1048
+ )
1049
+ ];
1050
+ for (let i = 0; i < 15; i++) {
1051
+ flacCrc16Table.push(new Uint16Array(256));
1052
+ crc32Table.push(new Uint32Array(256));
1053
+ for (let j = 0; j <= 255; j++) {
1054
+ flacCrc16Table[i + 1][j] = flacCrc16Table[0][flacCrc16Table[i][j] >>> 8] ^ flacCrc16Table[i][j] << 8;
1055
+ crc32Table[i + 1][j] = crc32Table[i][j] >>> 8 ^ crc32Table[0][crc32Table[i][j] & 255];
1056
+ }
1057
+ }
1058
+ var crc8 = (data3) => {
1059
+ let crc2 = 0;
1060
+ const dataLength = data3[length];
1061
+ for (let i = 0; i !== dataLength; i++) crc2 = crc8Table[crc2 ^ data3[i]];
1062
+ return crc2;
1063
+ };
1064
+ var flacCrc16 = (data3) => {
1065
+ const dataLength = data3[length];
1066
+ const crcChunkSize = dataLength - 16;
1067
+ let crc2 = 0;
1068
+ let i = 0;
1069
+ while (i <= crcChunkSize) {
1070
+ crc2 ^= data3[i++] << 8 | data3[i++];
1071
+ crc2 = flacCrc16Table[15][crc2 >> 8] ^ flacCrc16Table[14][crc2 & 255] ^ flacCrc16Table[13][data3[i++]] ^ flacCrc16Table[12][data3[i++]] ^ flacCrc16Table[11][data3[i++]] ^ flacCrc16Table[10][data3[i++]] ^ flacCrc16Table[9][data3[i++]] ^ flacCrc16Table[8][data3[i++]] ^ flacCrc16Table[7][data3[i++]] ^ flacCrc16Table[6][data3[i++]] ^ flacCrc16Table[5][data3[i++]] ^ flacCrc16Table[4][data3[i++]] ^ flacCrc16Table[3][data3[i++]] ^ flacCrc16Table[2][data3[i++]] ^ flacCrc16Table[1][data3[i++]] ^ flacCrc16Table[0][data3[i++]];
1072
+ }
1073
+ while (i !== dataLength)
1074
+ crc2 = (crc2 & 255) << 8 ^ flacCrc16Table[0][crc2 >> 8 ^ data3[i++]];
1075
+ return crc2;
1076
+ };
1077
+ var crc32Function = (data3) => {
1078
+ const dataLength = data3[length];
1079
+ const crcChunkSize = dataLength - 16;
1080
+ let crc2 = 0;
1081
+ let i = 0;
1082
+ while (i <= crcChunkSize)
1083
+ crc2 = crc32Table[15][(data3[i++] ^ crc2) & 255] ^ crc32Table[14][(data3[i++] ^ crc2 >>> 8) & 255] ^ crc32Table[13][(data3[i++] ^ crc2 >>> 16) & 255] ^ crc32Table[12][data3[i++] ^ crc2 >>> 24] ^ crc32Table[11][data3[i++]] ^ crc32Table[10][data3[i++]] ^ crc32Table[9][data3[i++]] ^ crc32Table[8][data3[i++]] ^ crc32Table[7][data3[i++]] ^ crc32Table[6][data3[i++]] ^ crc32Table[5][data3[i++]] ^ crc32Table[4][data3[i++]] ^ crc32Table[3][data3[i++]] ^ crc32Table[2][data3[i++]] ^ crc32Table[1][data3[i++]] ^ crc32Table[0][data3[i++]];
1084
+ while (i !== dataLength)
1085
+ crc2 = crc32Table[0][(crc2 ^ data3[i++]) & 255] ^ crc2 >>> 8;
1086
+ return crc2 ^ -1;
1087
+ };
1088
+ var concatBuffers = (...buffers) => {
1089
+ const buffer2 = new uint8Array(
1090
+ buffers.reduce((acc, buf) => acc + buf[length], 0)
1091
+ );
1092
+ buffers.reduce((offset, buf) => {
1093
+ buffer2.set(buf, offset);
1094
+ return offset + buf[length];
1095
+ }, 0);
1096
+ return buffer2;
1097
+ };
1098
+ var bytesToString = (bytes) => String.fromCharCode(...bytes);
1099
+ var reverseTable = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];
1100
+ var reverse = (val) => reverseTable[val & 15] << 4 | reverseTable[val >> 4];
1101
+ var BitReader = class {
1102
+ constructor(data3) {
1103
+ this._data = data3;
1104
+ this._pos = data3[length] * 8;
1105
+ }
1106
+ set position(position) {
1107
+ this._pos = position;
1108
+ }
1109
+ get position() {
1110
+ return this._pos;
1111
+ }
1112
+ read(bits) {
1113
+ const byte = Math.floor(this._pos / 8);
1114
+ const bit = this._pos % 8;
1115
+ this._pos -= bits;
1116
+ const window = (reverse(this._data[byte - 1]) << 8) + reverse(this._data[byte]);
1117
+ return window >> 7 - bit & 255;
1118
+ }
1119
+ };
1120
+ var readInt64le = (view, offset) => {
1121
+ try {
1122
+ return view.getBigInt64(offset, true);
1123
+ } catch {
1124
+ const sign = view.getUint8(offset + 7) & 128 ? -1 : 1;
1125
+ let firstPart = view.getUint32(offset, true);
1126
+ let secondPart = view.getUint32(offset + 4, true);
1127
+ if (sign === -1) {
1128
+ firstPart = ~firstPart + 1;
1129
+ secondPart = ~secondPart + 1;
1130
+ }
1131
+ if (secondPart > 1048575) {
1132
+ console.warn("This platform does not support BigInt");
1133
+ }
1134
+ return sign * (firstPart + secondPart * 2 ** 32);
1135
+ }
1136
+ };
1137
+
1138
+ // ../../node_modules/codec-parser/src/codecs/HeaderCache.js
1139
+ var HeaderCache = class {
1140
+ constructor(onCodecHeader, onCodecUpdate) {
1141
+ this._onCodecHeader = onCodecHeader;
1142
+ this._onCodecUpdate = onCodecUpdate;
1143
+ this[reset]();
1144
+ }
1145
+ [enable]() {
1146
+ this._isEnabled = true;
1147
+ }
1148
+ [reset]() {
1149
+ this._headerCache = /* @__PURE__ */ new Map();
1150
+ this._codecUpdateData = /* @__PURE__ */ new WeakMap();
1151
+ this._codecHeaderSent = false;
1152
+ this._codecShouldUpdate = false;
1153
+ this._bitrate = null;
1154
+ this._isEnabled = false;
1155
+ }
1156
+ [checkCodecUpdate](bitrate2, totalDuration2) {
1157
+ if (this._onCodecUpdate) {
1158
+ if (this._bitrate !== bitrate2) {
1159
+ this._bitrate = bitrate2;
1160
+ this._codecShouldUpdate = true;
1161
+ }
1162
+ const codecData = this._codecUpdateData.get(
1163
+ this._headerCache.get(this._currentHeader)
1164
+ );
1165
+ if (this._codecShouldUpdate && codecData) {
1166
+ this._onCodecUpdate(
1167
+ {
1168
+ bitrate: bitrate2,
1169
+ ...codecData
1170
+ },
1171
+ totalDuration2
1172
+ );
1173
+ }
1174
+ this._codecShouldUpdate = false;
1175
+ }
1176
+ }
1177
+ [getHeader](key) {
1178
+ const header3 = this._headerCache.get(key);
1179
+ if (header3) {
1180
+ this._updateCurrentHeader(key);
1181
+ }
1182
+ return header3;
1183
+ }
1184
+ [setHeader](key, header3, codecUpdateFields) {
1185
+ if (this._isEnabled) {
1186
+ if (!this._codecHeaderSent) {
1187
+ this._onCodecHeader({ ...header3 });
1188
+ this._codecHeaderSent = true;
1189
+ }
1190
+ this._updateCurrentHeader(key);
1191
+ this._headerCache.set(key, header3);
1192
+ this._codecUpdateData.set(header3, codecUpdateFields);
1193
+ }
1194
+ }
1195
+ _updateCurrentHeader(key) {
1196
+ if (this._onCodecUpdate && key !== this._currentHeader) {
1197
+ this._codecShouldUpdate = true;
1198
+ this._currentHeader = key;
1199
+ }
1200
+ }
1201
+ };
1202
+
1203
+ // ../../node_modules/codec-parser/src/globals.js
1204
+ var headerStore = /* @__PURE__ */ new WeakMap();
1205
+ var frameStore = /* @__PURE__ */ new WeakMap();
1206
+
1207
+ // ../../node_modules/codec-parser/src/codecs/Parser.js
1208
+ var Parser = class {
1209
+ constructor(codecParser, headerCache) {
1210
+ this._codecParser = codecParser;
1211
+ this._headerCache = headerCache;
1212
+ }
1213
+ *[syncFrame]() {
1214
+ let frameData;
1215
+ do {
1216
+ frameData = yield* this.Frame[getFrame](
1217
+ this._codecParser,
1218
+ this._headerCache,
1219
+ 0
1220
+ );
1221
+ if (frameData) return frameData;
1222
+ this._codecParser[incrementRawData](1);
1223
+ } while (true);
1224
+ }
1225
+ /**
1226
+ * @description Searches for Frames within bytes containing a sequence of known codec frames.
1227
+ * @param {boolean} ignoreNextFrame Set to true to return frames even if the next frame may not exist at the expected location
1228
+ * @returns {Frame}
1229
+ */
1230
+ *[fixedLengthFrameSync](ignoreNextFrame) {
1231
+ let frameData = yield* this[syncFrame]();
1232
+ const frameLength2 = frameStore.get(frameData)[length];
1233
+ if (ignoreNextFrame || this._codecParser._flushing || // check if there is a frame right after this one
1234
+ (yield* this.Header[getHeader](
1235
+ this._codecParser,
1236
+ this._headerCache,
1237
+ frameLength2
1238
+ ))) {
1239
+ this._headerCache[enable]();
1240
+ this._codecParser[incrementRawData](frameLength2);
1241
+ this._codecParser[mapFrameStats](frameData);
1242
+ return frameData;
1243
+ }
1244
+ this._codecParser[logWarning](
1245
+ `Missing ${frame} at ${frameLength2} bytes from current position.`,
1246
+ `Dropping current ${frame} and trying again.`
1247
+ );
1248
+ this._headerCache[reset]();
1249
+ this._codecParser[incrementRawData](1);
1250
+ }
1251
+ };
1252
+
1253
+ // ../../node_modules/codec-parser/src/containers/Frame.js
1254
+ var Frame = class {
1255
+ constructor(headerValue, dataValue) {
1256
+ frameStore.set(this, { [header]: headerValue });
1257
+ this[data] = dataValue;
1258
+ }
1259
+ };
1260
+
1261
+ // ../../node_modules/codec-parser/src/codecs/CodecFrame.js
1262
+ var CodecFrame = class extends Frame {
1263
+ static *[getFrame](Header, Frame2, codecParser, headerCache, readOffset) {
1264
+ const headerValue = yield* Header[getHeader](
1265
+ codecParser,
1266
+ headerCache,
1267
+ readOffset
1268
+ );
1269
+ if (headerValue) {
1270
+ const frameLengthValue = headerStore.get(headerValue)[frameLength];
1271
+ const samplesValue = headerStore.get(headerValue)[samples];
1272
+ const frame2 = (yield* codecParser[readRawData](
1273
+ frameLengthValue,
1274
+ readOffset
1275
+ ))[subarray](0, frameLengthValue);
1276
+ return new Frame2(headerValue, frame2, samplesValue);
1277
+ } else {
1278
+ return null;
1279
+ }
1280
+ }
1281
+ constructor(headerValue, dataValue, samplesValue) {
1282
+ super(headerValue, dataValue);
1283
+ this[header] = headerValue;
1284
+ this[samples] = samplesValue;
1285
+ this[duration] = samplesValue / headerValue[sampleRate] * 1e3;
1286
+ this[frameNumber] = null;
1287
+ this[totalBytesOut] = null;
1288
+ this[totalSamples] = null;
1289
+ this[totalDuration] = null;
1290
+ frameStore.get(this)[length] = dataValue[length];
1291
+ }
1292
+ };
1293
+
1294
+ // ../../node_modules/codec-parser/src/metadata/ID3v2.js
1295
+ var unsynchronizationFlag = "unsynchronizationFlag";
1296
+ var extendedHeaderFlag = "extendedHeaderFlag";
1297
+ var experimentalFlag = "experimentalFlag";
1298
+ var footerPresent = "footerPresent";
1299
+ var ID3v2 = class _ID3v2 {
1300
+ static *getID3v2Header(codecParser, headerCache, readOffset) {
1301
+ const headerLength = 10;
1302
+ const header3 = {};
1303
+ let data3 = yield* codecParser[readRawData](3, readOffset);
1304
+ if (data3[0] !== 73 || data3[1] !== 68 || data3[2] !== 51) return null;
1305
+ data3 = yield* codecParser[readRawData](headerLength, readOffset);
1306
+ header3[version] = `id3v2.${data3[3]}.${data3[4]}`;
1307
+ if (data3[5] & 15) return null;
1308
+ header3[unsynchronizationFlag] = !!(data3[5] & 128);
1309
+ header3[extendedHeaderFlag] = !!(data3[5] & 64);
1310
+ header3[experimentalFlag] = !!(data3[5] & 32);
1311
+ header3[footerPresent] = !!(data3[5] & 16);
1312
+ if (data3[6] & 128 || data3[7] & 128 || data3[8] & 128 || data3[9] & 128)
1313
+ return null;
1314
+ const dataLength = data3[6] << 21 | data3[7] << 14 | data3[8] << 7 | data3[9];
1315
+ header3[length] = headerLength + dataLength;
1316
+ return new _ID3v2(header3);
1317
+ }
1318
+ constructor(header3) {
1319
+ this[version] = header3[version];
1320
+ this[unsynchronizationFlag] = header3[unsynchronizationFlag];
1321
+ this[extendedHeaderFlag] = header3[extendedHeaderFlag];
1322
+ this[experimentalFlag] = header3[experimentalFlag];
1323
+ this[footerPresent] = header3[footerPresent];
1324
+ this[length] = header3[length];
1325
+ }
1326
+ };
1327
+
1328
+ // ../../node_modules/codec-parser/src/codecs/CodecHeader.js
1329
+ var CodecHeader = class {
1330
+ /**
1331
+ * @private
1332
+ */
1333
+ constructor(header3) {
1334
+ headerStore.set(this, header3);
1335
+ this[bitDepth] = header3[bitDepth];
1336
+ this[bitrate] = null;
1337
+ this[channels] = header3[channels];
1338
+ this[channelMode] = header3[channelMode];
1339
+ this[sampleRate] = header3[sampleRate];
1340
+ }
1341
+ };
1342
+
1343
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGHeader.js
1344
+ var bitrateMatrix = {
1345
+ // bits | V1,L1 | V1,L2 | V1,L3 | V2,L1 | V2,L2 & L3
1346
+ 0: [free, free, free, free, free],
1347
+ 16: [32, 32, 32, 32, 8],
1348
+ // 0b00100000: [64, 48, 40, 48, 16,],
1349
+ // 0b00110000: [96, 56, 48, 56, 24,],
1350
+ // 0b01000000: [128, 64, 56, 64, 32,],
1351
+ // 0b01010000: [160, 80, 64, 80, 40,],
1352
+ // 0b01100000: [192, 96, 80, 96, 48,],
1353
+ // 0b01110000: [224, 112, 96, 112, 56,],
1354
+ // 0b10000000: [256, 128, 112, 128, 64,],
1355
+ // 0b10010000: [288, 160, 128, 144, 80,],
1356
+ // 0b10100000: [320, 192, 160, 160, 96,],
1357
+ // 0b10110000: [352, 224, 192, 176, 112,],
1358
+ // 0b11000000: [384, 256, 224, 192, 128,],
1359
+ // 0b11010000: [416, 320, 256, 224, 144,],
1360
+ // 0b11100000: [448, 384, 320, 256, 160,],
1361
+ 240: [bad, bad, bad, bad, bad]
1362
+ };
1363
+ var calcBitrate = (idx, interval, intervalOffset) => 8 * ((idx + intervalOffset) % interval + interval) * (1 << (idx + intervalOffset) / interval) - 8 * interval * (interval / 8 | 0);
1364
+ for (let i = 2; i < 15; i++)
1365
+ bitrateMatrix[i << 4] = [
1366
+ i * 32,
1367
+ // V1,L1
1368
+ calcBitrate(i, 4, 0),
1369
+ // V1,L2
1370
+ calcBitrate(i, 4, -1),
1371
+ // V1,L3
1372
+ calcBitrate(i, 8, 4),
1373
+ // V2,L1
1374
+ calcBitrate(i, 8, 0)
1375
+ // V2,L2 & L3
1376
+ ];
1377
+ var v1Layer1 = 0;
1378
+ var v1Layer2 = 1;
1379
+ var v1Layer3 = 2;
1380
+ var v2Layer1 = 3;
1381
+ var v2Layer23 = 4;
1382
+ var bands = "bands ";
1383
+ var to31 = " to 31";
1384
+ var layer12ModeExtensions = {
1385
+ 0: bands + 4 + to31,
1386
+ 16: bands + 8 + to31,
1387
+ 32: bands + 12 + to31,
1388
+ 48: bands + 16 + to31
1389
+ };
1390
+ var bitrateIndex = "bitrateIndex";
1391
+ var v2 = "v2";
1392
+ var v1 = "v1";
1393
+ var intensityStereo = "Intensity stereo ";
1394
+ var msStereo = ", MS stereo ";
1395
+ var on = "on";
1396
+ var off = "off";
1397
+ var layer3ModeExtensions = {
1398
+ 0: intensityStereo + off + msStereo + off,
1399
+ 16: intensityStereo + on + msStereo + off,
1400
+ 32: intensityStereo + off + msStereo + on,
1401
+ 48: intensityStereo + on + msStereo + on
1402
+ };
1403
+ var layersValues = {
1404
+ 0: { [description]: reserved },
1405
+ 2: {
1406
+ [description]: "Layer III",
1407
+ [framePadding]: 1,
1408
+ [modeExtension]: layer3ModeExtensions,
1409
+ [v1]: {
1410
+ [bitrateIndex]: v1Layer3,
1411
+ [samples]: 1152
1412
+ },
1413
+ [v2]: {
1414
+ [bitrateIndex]: v2Layer23,
1415
+ [samples]: 576
1416
+ }
1417
+ },
1418
+ 4: {
1419
+ [description]: "Layer II",
1420
+ [framePadding]: 1,
1421
+ [modeExtension]: layer12ModeExtensions,
1422
+ [samples]: 1152,
1423
+ [v1]: {
1424
+ [bitrateIndex]: v1Layer2
1425
+ },
1426
+ [v2]: {
1427
+ [bitrateIndex]: v2Layer23
1428
+ }
1429
+ },
1430
+ 6: {
1431
+ [description]: "Layer I",
1432
+ [framePadding]: 4,
1433
+ [modeExtension]: layer12ModeExtensions,
1434
+ [samples]: 384,
1435
+ [v1]: {
1436
+ [bitrateIndex]: v1Layer1
1437
+ },
1438
+ [v2]: {
1439
+ [bitrateIndex]: v2Layer1
1440
+ }
1441
+ }
1442
+ };
1443
+ var mpegVersionDescription = "MPEG Version ";
1444
+ var isoIec = "ISO/IEC ";
1445
+ var mpegVersions = {
1446
+ 0: {
1447
+ [description]: `${mpegVersionDescription}2.5 (later extension of MPEG 2)`,
1448
+ [layer]: v2,
1449
+ [sampleRate]: {
1450
+ 0: rate11025,
1451
+ 4: rate12000,
1452
+ 8: rate8000,
1453
+ 12: reserved
1454
+ }
1455
+ },
1456
+ 8: { [description]: reserved },
1457
+ 16: {
1458
+ [description]: `${mpegVersionDescription}2 (${isoIec}13818-3)`,
1459
+ [layer]: v2,
1460
+ [sampleRate]: {
1461
+ 0: rate22050,
1462
+ 4: rate24000,
1463
+ 8: rate16000,
1464
+ 12: reserved
1465
+ }
1466
+ },
1467
+ 24: {
1468
+ [description]: `${mpegVersionDescription}1 (${isoIec}11172-3)`,
1469
+ [layer]: v1,
1470
+ [sampleRate]: {
1471
+ 0: rate44100,
1472
+ 4: rate48000,
1473
+ 8: rate32000,
1474
+ 12: reserved
1475
+ }
1476
+ },
1477
+ length
1478
+ };
1479
+ var protectionValues = {
1480
+ 0: sixteenBitCRC,
1481
+ 1: none
1482
+ };
1483
+ var emphasisValues = {
1484
+ 0: none,
1485
+ 1: "50/15 ms",
1486
+ 2: reserved,
1487
+ 3: "CCIT J.17"
1488
+ };
1489
+ var channelModes = {
1490
+ 0: { [channels]: 2, [description]: stereo },
1491
+ 64: { [channels]: 2, [description]: "joint " + stereo },
1492
+ 128: { [channels]: 2, [description]: "dual channel" },
1493
+ 192: { [channels]: 1, [description]: monophonic }
1494
+ };
1495
+ var MPEGHeader = class _MPEGHeader extends CodecHeader {
1496
+ static *[getHeader](codecParser, headerCache, readOffset) {
1497
+ const header3 = {};
1498
+ const id3v2Header = yield* ID3v2.getID3v2Header(
1499
+ codecParser,
1500
+ headerCache,
1501
+ readOffset
1502
+ );
1503
+ if (id3v2Header) {
1504
+ yield* codecParser[readRawData](id3v2Header[length], readOffset);
1505
+ codecParser[incrementRawData](id3v2Header[length]);
1506
+ }
1507
+ const data3 = yield* codecParser[readRawData](4, readOffset);
1508
+ const key = bytesToString(data3[subarray](0, 4));
1509
+ const cachedHeader = headerCache[getHeader](key);
1510
+ if (cachedHeader) return new _MPEGHeader(cachedHeader);
1511
+ if (data3[0] !== 255 || data3[1] < 224) return null;
1512
+ const mpegVersionValues2 = mpegVersions[data3[1] & 24];
1513
+ if (mpegVersionValues2[description] === reserved) return null;
1514
+ const layerBits = data3[1] & 6;
1515
+ if (layersValues[layerBits][description] === reserved) return null;
1516
+ const layerValues2 = {
1517
+ ...layersValues[layerBits],
1518
+ ...layersValues[layerBits][mpegVersionValues2[layer]]
1519
+ };
1520
+ header3[mpegVersion] = mpegVersionValues2[description];
1521
+ header3[layer] = layerValues2[description];
1522
+ header3[samples] = layerValues2[samples];
1523
+ header3[protection] = protectionValues[data3[1] & 1];
1524
+ header3[length] = 4;
1525
+ header3[bitrate] = bitrateMatrix[data3[2] & 240][layerValues2[bitrateIndex]];
1526
+ if (header3[bitrate] === bad) return null;
1527
+ header3[sampleRate] = mpegVersionValues2[sampleRate][data3[2] & 12];
1528
+ if (header3[sampleRate] === reserved) return null;
1529
+ header3[framePadding] = data3[2] & 2 && layerValues2[framePadding];
1530
+ header3[isPrivate] = !!(data3[2] & 1);
1531
+ header3[frameLength] = Math.floor(
1532
+ 125 * header3[bitrate] * header3[samples] / header3[sampleRate] + header3[framePadding]
1533
+ );
1534
+ if (!header3[frameLength]) return null;
1535
+ const channelModeBits2 = data3[3] & 192;
1536
+ header3[channelMode] = channelModes[channelModeBits2][description];
1537
+ header3[channels] = channelModes[channelModeBits2][channels];
1538
+ header3[modeExtension] = layerValues2[modeExtension][data3[3] & 48];
1539
+ header3[isCopyrighted] = !!(data3[3] & 8);
1540
+ header3[isOriginal] = !!(data3[3] & 4);
1541
+ header3[emphasis] = emphasisValues[data3[3] & 3];
1542
+ if (header3[emphasis] === reserved) return null;
1543
+ header3[bitDepth] = 16;
1544
+ {
1545
+ const { length: length2, frameLength: frameLength2, samples: samples2, ...codecUpdateFields } = header3;
1546
+ headerCache[setHeader](key, header3, codecUpdateFields);
1547
+ }
1548
+ return new _MPEGHeader(header3);
1549
+ }
1550
+ /**
1551
+ * @private
1552
+ * Call MPEGHeader.getHeader(Array<Uint8>) to get instance
1553
+ */
1554
+ constructor(header3) {
1555
+ super(header3);
1556
+ this[bitrate] = header3[bitrate];
1557
+ this[emphasis] = header3[emphasis];
1558
+ this[framePadding] = header3[framePadding];
1559
+ this[isCopyrighted] = header3[isCopyrighted];
1560
+ this[isOriginal] = header3[isOriginal];
1561
+ this[isPrivate] = header3[isPrivate];
1562
+ this[layer] = header3[layer];
1563
+ this[modeExtension] = header3[modeExtension];
1564
+ this[mpegVersion] = header3[mpegVersion];
1565
+ this[protection] = header3[protection];
1566
+ }
1567
+ };
1568
+
1569
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGFrame.js
1570
+ var MPEGFrame = class _MPEGFrame extends CodecFrame {
1571
+ static *[getFrame](codecParser, headerCache, readOffset) {
1572
+ return yield* super[getFrame](
1573
+ MPEGHeader,
1574
+ _MPEGFrame,
1575
+ codecParser,
1576
+ headerCache,
1577
+ readOffset
1578
+ );
1579
+ }
1580
+ constructor(header3, frame2, samples2) {
1581
+ super(header3, frame2, samples2);
1582
+ }
1583
+ };
1584
+
1585
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGParser.js
1586
+ var MPEGParser = class extends Parser {
1587
+ constructor(codecParser, headerCache, onCodec) {
1588
+ super(codecParser, headerCache);
1589
+ this.Frame = MPEGFrame;
1590
+ this.Header = MPEGHeader;
1591
+ onCodec(this[codec]);
1592
+ }
1593
+ get [codec]() {
1594
+ return mpeg;
1595
+ }
1596
+ *[parseFrame]() {
1597
+ return yield* this[fixedLengthFrameSync]();
1598
+ }
1599
+ };
1600
+
1601
+ // ../../node_modules/codec-parser/src/codecs/aac/AACHeader.js
1602
+ var mpegVersionValues = {
1603
+ 0: "MPEG-4",
1604
+ 8: "MPEG-2"
1605
+ };
1606
+ var layerValues = {
1607
+ 0: "valid",
1608
+ 2: bad,
1609
+ 4: bad,
1610
+ 6: bad
1611
+ };
1612
+ var protectionValues2 = {
1613
+ 0: sixteenBitCRC,
1614
+ 1: none
1615
+ };
1616
+ var profileValues = {
1617
+ 0: "AAC Main",
1618
+ 64: "AAC LC (Low Complexity)",
1619
+ 128: "AAC SSR (Scalable Sample Rate)",
1620
+ 192: "AAC LTP (Long Term Prediction)"
1621
+ };
1622
+ var sampleRates = {
1623
+ 0: rate96000,
1624
+ 4: rate88200,
1625
+ 8: rate64000,
1626
+ 12: rate48000,
1627
+ 16: rate44100,
1628
+ 20: rate32000,
1629
+ 24: rate24000,
1630
+ 28: rate22050,
1631
+ 32: rate16000,
1632
+ 36: rate12000,
1633
+ 40: rate11025,
1634
+ 44: rate8000,
1635
+ 48: rate7350,
1636
+ 52: reserved,
1637
+ 56: reserved,
1638
+ 60: "frequency is written explicitly"
1639
+ };
1640
+ var channelModeValues = {
1641
+ 0: { [channels]: 0, [description]: "Defined in AOT Specific Config" },
1642
+ /*
1643
+ 'monophonic (mono)'
1644
+ 'stereo (left, right)'
1645
+ 'linear surround (front center, front left, front right)'
1646
+ 'quadraphonic (front center, front left, front right, rear center)'
1647
+ '5.0 surround (front center, front left, front right, rear left, rear right)'
1648
+ '5.1 surround (front center, front left, front right, rear left, rear right, LFE)'
1649
+ '7.1 surround (front center, front left, front right, side left, side right, rear left, rear right, LFE)'
1650
+ */
1651
+ 64: { [channels]: 1, [description]: monophonic },
1652
+ 128: { [channels]: 2, [description]: getChannelMapping(2, channelMappings[0][0]) },
1653
+ 192: { [channels]: 3, [description]: getChannelMapping(3, channelMappings[1][3]) },
1654
+ 256: { [channels]: 4, [description]: getChannelMapping(4, channelMappings[1][3], channelMappings[3][4]) },
1655
+ 320: { [channels]: 5, [description]: getChannelMapping(5, channelMappings[1][3], channelMappings[3][0]) },
1656
+ 384: { [channels]: 6, [description]: getChannelMapping(6, channelMappings[1][3], channelMappings[3][0], lfe) },
1657
+ 448: { [channels]: 8, [description]: getChannelMapping(8, channelMappings[1][3], channelMappings[2][0], channelMappings[3][0], lfe) }
1658
+ };
1659
+ var AACHeader = class _AACHeader extends CodecHeader {
1660
+ static *[getHeader](codecParser, headerCache, readOffset) {
1661
+ const header3 = {};
1662
+ const data3 = yield* codecParser[readRawData](7, readOffset);
1663
+ const key = bytesToString([
1664
+ data3[0],
1665
+ data3[1],
1666
+ data3[2],
1667
+ data3[3] & 252 | data3[6] & 3
1668
+ // frame length, buffer fullness varies so don't cache it
1669
+ ]);
1670
+ const cachedHeader = headerCache[getHeader](key);
1671
+ if (!cachedHeader) {
1672
+ if (data3[0] !== 255 || data3[1] < 240) return null;
1673
+ header3[mpegVersion] = mpegVersionValues[data3[1] & 8];
1674
+ header3[layer] = layerValues[data3[1] & 6];
1675
+ if (header3[layer] === bad) return null;
1676
+ const protectionBit = data3[1] & 1;
1677
+ header3[protection] = protectionValues2[protectionBit];
1678
+ header3[length] = protectionBit ? 7 : 9;
1679
+ header3[profileBits] = data3[2] & 192;
1680
+ header3[sampleRateBits] = data3[2] & 60;
1681
+ const privateBit = data3[2] & 2;
1682
+ header3[profile] = profileValues[header3[profileBits]];
1683
+ header3[sampleRate] = sampleRates[header3[sampleRateBits]];
1684
+ if (header3[sampleRate] === reserved) return null;
1685
+ header3[isPrivate] = !!privateBit;
1686
+ header3[channelModeBits] = (data3[2] << 8 | data3[3]) & 448;
1687
+ header3[channelMode] = channelModeValues[header3[channelModeBits]][description];
1688
+ header3[channels] = channelModeValues[header3[channelModeBits]][channels];
1689
+ header3[isOriginal] = !!(data3[3] & 32);
1690
+ header3[isHome] = !!(data3[3] & 8);
1691
+ header3[copyrightId] = !!(data3[3] & 8);
1692
+ header3[copyrightIdStart] = !!(data3[3] & 4);
1693
+ header3[bitDepth] = 16;
1694
+ header3[samples] = 1024;
1695
+ header3[numberAACFrames] = data3[6] & 3;
1696
+ {
1697
+ const {
1698
+ length: length2,
1699
+ channelModeBits: channelModeBits2,
1700
+ profileBits: profileBits2,
1701
+ sampleRateBits: sampleRateBits2,
1702
+ frameLength: frameLength2,
1703
+ samples: samples2,
1704
+ numberAACFrames: numberAACFrames2,
1705
+ ...codecUpdateFields
1706
+ } = header3;
1707
+ headerCache[setHeader](key, header3, codecUpdateFields);
1708
+ }
1709
+ } else {
1710
+ Object.assign(header3, cachedHeader);
1711
+ }
1712
+ header3[frameLength] = (data3[3] << 11 | data3[4] << 3 | data3[5] >> 5) & 8191;
1713
+ if (!header3[frameLength]) return null;
1714
+ const bufferFullnessBits = (data3[5] << 6 | data3[6] >> 2) & 2047;
1715
+ header3[bufferFullness] = bufferFullnessBits === 2047 ? "VBR" : bufferFullnessBits;
1716
+ return new _AACHeader(header3);
1717
+ }
1718
+ /**
1719
+ * @private
1720
+ * Call AACHeader.getHeader(Array<Uint8>) to get instance
1721
+ */
1722
+ constructor(header3) {
1723
+ super(header3);
1724
+ this[copyrightId] = header3[copyrightId];
1725
+ this[copyrightIdStart] = header3[copyrightIdStart];
1726
+ this[bufferFullness] = header3[bufferFullness];
1727
+ this[isHome] = header3[isHome];
1728
+ this[isOriginal] = header3[isOriginal];
1729
+ this[isPrivate] = header3[isPrivate];
1730
+ this[layer] = header3[layer];
1731
+ this[length] = header3[length];
1732
+ this[mpegVersion] = header3[mpegVersion];
1733
+ this[numberAACFrames] = header3[numberAACFrames];
1734
+ this[profile] = header3[profile];
1735
+ this[protection] = header3[protection];
1736
+ }
1737
+ get audioSpecificConfig() {
1738
+ const header3 = headerStore.get(this);
1739
+ const audioSpecificConfig = header3[profileBits] + 64 << 5 | header3[sampleRateBits] << 5 | header3[channelModeBits] >> 3;
1740
+ const bytes = new uint8Array(2);
1741
+ new dataView(bytes[buffer]).setUint16(0, audioSpecificConfig, false);
1742
+ return bytes;
1743
+ }
1744
+ };
1745
+
1746
+ // ../../node_modules/codec-parser/src/codecs/aac/AACFrame.js
1747
+ var AACFrame = class _AACFrame extends CodecFrame {
1748
+ static *[getFrame](codecParser, headerCache, readOffset) {
1749
+ return yield* super[getFrame](
1750
+ AACHeader,
1751
+ _AACFrame,
1752
+ codecParser,
1753
+ headerCache,
1754
+ readOffset
1755
+ );
1756
+ }
1757
+ constructor(header3, frame2, samples2) {
1758
+ super(header3, frame2, samples2);
1759
+ }
1760
+ };
1761
+
1762
+ // ../../node_modules/codec-parser/src/codecs/aac/AACParser.js
1763
+ var AACParser = class extends Parser {
1764
+ constructor(codecParser, headerCache, onCodec) {
1765
+ super(codecParser, headerCache);
1766
+ this.Frame = AACFrame;
1767
+ this.Header = AACHeader;
1768
+ onCodec(this[codec]);
1769
+ }
1770
+ get [codec]() {
1771
+ return "aac";
1772
+ }
1773
+ *[parseFrame]() {
1774
+ return yield* this[fixedLengthFrameSync]();
1775
+ }
1776
+ };
1777
+
1778
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACFrame.js
1779
+ var FLACFrame = class _FLACFrame extends CodecFrame {
1780
+ static _getFrameFooterCrc16(data3) {
1781
+ return (data3[data3[length] - 2] << 8) + data3[data3[length] - 1];
1782
+ }
1783
+ // check frame footer crc
1784
+ // https://xiph.org/flac/format.html#frame_footer
1785
+ static [checkFrameFooterCrc16](data3) {
1786
+ const expectedCrc16 = _FLACFrame._getFrameFooterCrc16(data3);
1787
+ const actualCrc16 = flacCrc16(data3[subarray](0, -2));
1788
+ return expectedCrc16 === actualCrc16;
1789
+ }
1790
+ constructor(data3, header3, streamInfoValue) {
1791
+ header3[streamInfo] = streamInfoValue;
1792
+ header3[crc16] = _FLACFrame._getFrameFooterCrc16(data3);
1793
+ super(header3, data3, headerStore.get(header3)[samples]);
1794
+ }
1795
+ };
1796
+
1797
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACHeader.js
1798
+ var getFromStreamInfo = "get from STREAMINFO metadata block";
1799
+ var blockingStrategyValues = {
1800
+ 0: "Fixed",
1801
+ 1: "Variable"
1802
+ };
1803
+ var blockSizeValues = {
1804
+ 0: reserved,
1805
+ 16: 192
1806
+ // 0b00100000: 576,
1807
+ // 0b00110000: 1152,
1808
+ // 0b01000000: 2304,
1809
+ // 0b01010000: 4608,
1810
+ // 0b01100000: "8-bit (blocksize-1) from end of header",
1811
+ // 0b01110000: "16-bit (blocksize-1) from end of header",
1812
+ // 0b10000000: 256,
1813
+ // 0b10010000: 512,
1814
+ // 0b10100000: 1024,
1815
+ // 0b10110000: 2048,
1816
+ // 0b11000000: 4096,
1817
+ // 0b11010000: 8192,
1818
+ // 0b11100000: 16384,
1819
+ // 0b11110000: 32768,
1820
+ };
1821
+ for (let i = 2; i < 16; i++)
1822
+ blockSizeValues[i << 4] = i < 6 ? 576 * 2 ** (i - 2) : 2 ** i;
1823
+ var sampleRateValues = {
1824
+ 0: getFromStreamInfo,
1825
+ 1: rate88200,
1826
+ 2: rate176400,
1827
+ 3: rate192000,
1828
+ 4: rate8000,
1829
+ 5: rate16000,
1830
+ 6: rate22050,
1831
+ 7: rate24000,
1832
+ 8: rate32000,
1833
+ 9: rate44100,
1834
+ 10: rate48000,
1835
+ 11: rate96000,
1836
+ // 0b00001100: "8-bit sample rate (in kHz) from end of header",
1837
+ // 0b00001101: "16-bit sample rate (in Hz) from end of header",
1838
+ // 0b00001110: "16-bit sample rate (in tens of Hz) from end of header",
1839
+ 15: bad
1840
+ };
1841
+ var channelAssignments = {
1842
+ /*'
1843
+ 'monophonic (mono)'
1844
+ 'stereo (left, right)'
1845
+ 'linear surround (left, right, center)'
1846
+ 'quadraphonic (front left, front right, rear left, rear right)'
1847
+ '5.0 surround (front left, front right, front center, rear left, rear right)'
1848
+ '5.1 surround (front left, front right, front center, LFE, rear left, rear right)'
1849
+ '6.1 surround (front left, front right, front center, LFE, rear center, side left, side right)'
1850
+ '7.1 surround (front left, front right, front center, LFE, rear left, rear right, side left, side right)'
1851
+ */
1852
+ 0: { [channels]: 1, [description]: monophonic },
1853
+ 16: { [channels]: 2, [description]: getChannelMapping(2, channelMappings[0][0]) },
1854
+ 32: { [channels]: 3, [description]: getChannelMapping(3, channelMappings[0][1]) },
1855
+ 48: { [channels]: 4, [description]: getChannelMapping(4, channelMappings[1][0], channelMappings[3][0]) },
1856
+ 64: { [channels]: 5, [description]: getChannelMapping(5, channelMappings[1][1], channelMappings[3][0]) },
1857
+ 80: { [channels]: 6, [description]: getChannelMapping(6, channelMappings[1][1], lfe, channelMappings[3][0]) },
1858
+ 96: { [channels]: 7, [description]: getChannelMapping(7, channelMappings[1][1], lfe, channelMappings[3][4], channelMappings[2][0]) },
1859
+ 112: { [channels]: 8, [description]: getChannelMapping(8, channelMappings[1][1], lfe, channelMappings[3][0], channelMappings[2][0]) },
1860
+ 128: { [channels]: 2, [description]: `${stereo} (left, diff)` },
1861
+ 144: { [channels]: 2, [description]: `${stereo} (diff, right)` },
1862
+ 160: { [channels]: 2, [description]: `${stereo} (avg, diff)` },
1863
+ 176: reserved,
1864
+ 192: reserved,
1865
+ 208: reserved,
1866
+ 224: reserved,
1867
+ 240: reserved
1868
+ };
1869
+ var bitDepthValues = {
1870
+ 0: getFromStreamInfo,
1871
+ 2: 8,
1872
+ 4: 12,
1873
+ 6: reserved,
1874
+ 8: 16,
1875
+ 10: 20,
1876
+ 12: 24,
1877
+ 14: reserved
1878
+ };
1879
+ var FLACHeader = class _FLACHeader extends CodecHeader {
1880
+ // https://datatracker.ietf.org/doc/html/rfc3629#section-3
1881
+ // Char. number range | UTF-8 octet sequence
1882
+ // (hexadecimal) | (binary)
1883
+ // --------------------+---------------------------------------------
1884
+ // 0000 0000-0000 007F | 0xxxxxxx
1885
+ // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
1886
+ // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
1887
+ // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
1888
+ static _decodeUTF8Int(data3) {
1889
+ if (data3[0] > 254) {
1890
+ return null;
1891
+ }
1892
+ if (data3[0] < 128) return { value: data3[0], length: 1 };
1893
+ let length2 = 1;
1894
+ for (let zeroMask = 64; zeroMask & data3[0]; zeroMask >>= 1) length2++;
1895
+ let idx = length2 - 1, value = 0, shift = 0;
1896
+ for (; idx > 0; shift += 6, idx--) {
1897
+ if ((data3[idx] & 192) !== 128) {
1898
+ return null;
1899
+ }
1900
+ value |= (data3[idx] & 63) << shift;
1901
+ }
1902
+ value |= (data3[idx] & 127 >> length2) << shift;
1903
+ return { value, length: length2 };
1904
+ }
1905
+ static [getHeaderFromUint8Array](data3, headerCache) {
1906
+ const codecParserStub = {
1907
+ [readRawData]: function* () {
1908
+ return data3;
1909
+ }
1910
+ };
1911
+ return _FLACHeader[getHeader](codecParserStub, headerCache, 0).next().value;
1912
+ }
1913
+ static *[getHeader](codecParser, headerCache, readOffset) {
1914
+ let data3 = yield* codecParser[readRawData](6, readOffset);
1915
+ if (data3[0] !== 255 || !(data3[1] === 248 || data3[1] === 249)) {
1916
+ return null;
1917
+ }
1918
+ const header3 = {};
1919
+ const key = bytesToString(data3[subarray](0, 4));
1920
+ const cachedHeader = headerCache[getHeader](key);
1921
+ if (!cachedHeader) {
1922
+ header3[blockingStrategyBits] = data3[1] & 1;
1923
+ header3[blockingStrategy] = blockingStrategyValues[header3[blockingStrategyBits]];
1924
+ header3[blockSizeBits] = data3[2] & 240;
1925
+ header3[sampleRateBits] = data3[2] & 15;
1926
+ header3[blockSize] = blockSizeValues[header3[blockSizeBits]];
1927
+ if (header3[blockSize] === reserved) {
1928
+ return null;
1929
+ }
1930
+ header3[sampleRate] = sampleRateValues[header3[sampleRateBits]];
1931
+ if (header3[sampleRate] === bad) {
1932
+ return null;
1933
+ }
1934
+ if (data3[3] & 1) {
1935
+ return null;
1936
+ }
1937
+ const channelAssignment = channelAssignments[data3[3] & 240];
1938
+ if (channelAssignment === reserved) {
1939
+ return null;
1940
+ }
1941
+ header3[channels] = channelAssignment[channels];
1942
+ header3[channelMode] = channelAssignment[description];
1943
+ header3[bitDepth] = bitDepthValues[data3[3] & 14];
1944
+ if (header3[bitDepth] === reserved) {
1945
+ return null;
1946
+ }
1947
+ } else {
1948
+ Object.assign(header3, cachedHeader);
1949
+ }
1950
+ header3[length] = 5;
1951
+ data3 = yield* codecParser[readRawData](header3[length] + 8, readOffset);
1952
+ const decodedUtf8 = _FLACHeader._decodeUTF8Int(data3[subarray](4));
1953
+ if (!decodedUtf8) {
1954
+ return null;
1955
+ }
1956
+ if (header3[blockingStrategyBits]) {
1957
+ header3[sampleNumber] = decodedUtf8.value;
1958
+ } else {
1959
+ header3[frameNumber] = decodedUtf8.value;
1960
+ }
1961
+ header3[length] += decodedUtf8[length];
1962
+ if (header3[blockSizeBits] === 96) {
1963
+ if (data3[length] < header3[length])
1964
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1965
+ header3[blockSize] = data3[header3[length] - 1] + 1;
1966
+ header3[length] += 1;
1967
+ } else if (header3[blockSizeBits] === 112) {
1968
+ if (data3[length] < header3[length])
1969
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1970
+ header3[blockSize] = (data3[header3[length] - 1] << 8) + data3[header3[length]] + 1;
1971
+ header3[length] += 2;
1972
+ }
1973
+ header3[samples] = header3[blockSize];
1974
+ if (header3[sampleRateBits] === 12) {
1975
+ if (data3[length] < header3[length])
1976
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1977
+ header3[sampleRate] = data3[header3[length] - 1] * 1e3;
1978
+ header3[length] += 1;
1979
+ } else if (header3[sampleRateBits] === 13) {
1980
+ if (data3[length] < header3[length])
1981
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1982
+ header3[sampleRate] = (data3[header3[length] - 1] << 8) + data3[header3[length]];
1983
+ header3[length] += 2;
1984
+ } else if (header3[sampleRateBits] === 14) {
1985
+ if (data3[length] < header3[length])
1986
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1987
+ header3[sampleRate] = ((data3[header3[length] - 1] << 8) + data3[header3[length]]) * 10;
1988
+ header3[length] += 2;
1989
+ }
1990
+ if (data3[length] < header3[length])
1991
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1992
+ header3[crc] = data3[header3[length] - 1];
1993
+ if (header3[crc] !== crc8(data3[subarray](0, header3[length] - 1))) {
1994
+ return null;
1995
+ }
1996
+ {
1997
+ if (!cachedHeader) {
1998
+ const {
1999
+ blockingStrategyBits: blockingStrategyBits2,
2000
+ frameNumber: frameNumber2,
2001
+ sampleNumber: sampleNumber2,
2002
+ samples: samples2,
2003
+ sampleRateBits: sampleRateBits2,
2004
+ blockSizeBits: blockSizeBits2,
2005
+ crc: crc2,
2006
+ length: length2,
2007
+ ...codecUpdateFields
2008
+ } = header3;
2009
+ headerCache[setHeader](key, header3, codecUpdateFields);
2010
+ }
2011
+ }
2012
+ return new _FLACHeader(header3);
2013
+ }
2014
+ /**
2015
+ * @private
2016
+ * Call FLACHeader.getHeader(Array<Uint8>) to get instance
2017
+ */
2018
+ constructor(header3) {
2019
+ super(header3);
2020
+ this[crc16] = null;
2021
+ this[blockingStrategy] = header3[blockingStrategy];
2022
+ this[blockSize] = header3[blockSize];
2023
+ this[frameNumber] = header3[frameNumber];
2024
+ this[sampleNumber] = header3[sampleNumber];
2025
+ this[streamInfo] = null;
2026
+ }
2027
+ };
2028
+
2029
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACParser.js
2030
+ var MIN_FLAC_FRAME_SIZE = 2;
2031
+ var MAX_FLAC_FRAME_SIZE = 512 * 1024;
2032
+ var FLACParser = class extends Parser {
2033
+ constructor(codecParser, headerCache, onCodec) {
2034
+ super(codecParser, headerCache);
2035
+ this.Frame = FLACFrame;
2036
+ this.Header = FLACHeader;
2037
+ onCodec(this[codec]);
2038
+ }
2039
+ get [codec]() {
2040
+ return "flac";
2041
+ }
2042
+ *_getNextFrameSyncOffset(offset) {
2043
+ const data3 = yield* this._codecParser[readRawData](2, 0);
2044
+ const dataLength = data3[length] - 2;
2045
+ while (offset < dataLength) {
2046
+ const firstByte = data3[offset];
2047
+ if (firstByte === 255) {
2048
+ const secondByte = data3[offset + 1];
2049
+ if (secondByte === 248 || secondByte === 249) break;
2050
+ if (secondByte !== 255) offset++;
2051
+ }
2052
+ offset++;
2053
+ }
2054
+ return offset;
2055
+ }
2056
+ *[parseFrame]() {
2057
+ do {
2058
+ const header3 = yield* FLACHeader[getHeader](
2059
+ this._codecParser,
2060
+ this._headerCache,
2061
+ 0
2062
+ );
2063
+ if (header3) {
2064
+ let nextHeaderOffset = headerStore.get(header3)[length] + MIN_FLAC_FRAME_SIZE;
2065
+ while (nextHeaderOffset <= MAX_FLAC_FRAME_SIZE) {
2066
+ if (this._codecParser._flushing || (yield* FLACHeader[getHeader](
2067
+ this._codecParser,
2068
+ this._headerCache,
2069
+ nextHeaderOffset
2070
+ ))) {
2071
+ let frameData = yield* this._codecParser[readRawData](nextHeaderOffset);
2072
+ if (!this._codecParser._flushing)
2073
+ frameData = frameData[subarray](0, nextHeaderOffset);
2074
+ if (FLACFrame[checkFrameFooterCrc16](frameData)) {
2075
+ const frame2 = new FLACFrame(frameData, header3);
2076
+ this._headerCache[enable]();
2077
+ this._codecParser[incrementRawData](nextHeaderOffset);
2078
+ this._codecParser[mapFrameStats](frame2);
2079
+ return frame2;
2080
+ }
2081
+ }
2082
+ nextHeaderOffset = yield* this._getNextFrameSyncOffset(
2083
+ nextHeaderOffset + 1
2084
+ );
2085
+ }
2086
+ this._codecParser[logWarning](
2087
+ `Unable to sync FLAC frame after searching ${nextHeaderOffset} bytes.`
2088
+ );
2089
+ this._codecParser[incrementRawData](nextHeaderOffset);
2090
+ } else {
2091
+ this._codecParser[incrementRawData](
2092
+ yield* this._getNextFrameSyncOffset(1)
2093
+ );
2094
+ }
2095
+ } while (true);
2096
+ }
2097
+ [parseOggPage](oggPage) {
2098
+ if (oggPage[pageSequenceNumber] === 0) {
2099
+ this._headerCache[enable]();
2100
+ this._streamInfo = oggPage[data][subarray](13);
2101
+ } else if (oggPage[pageSequenceNumber] === 1) {
2102
+ } else {
2103
+ oggPage[codecFrames] = frameStore.get(oggPage)[segments].map((segment) => {
2104
+ const header3 = FLACHeader[getHeaderFromUint8Array](
2105
+ segment,
2106
+ this._headerCache
2107
+ );
2108
+ if (header3) {
2109
+ return new FLACFrame(segment, header3, this._streamInfo);
2110
+ } else {
2111
+ this._codecParser[logWarning](
2112
+ "Failed to parse Ogg FLAC frame",
2113
+ "Skipping invalid FLAC frame"
2114
+ );
2115
+ }
2116
+ }).filter((frame2) => !!frame2);
2117
+ }
2118
+ return oggPage;
2119
+ }
2120
+ };
2121
+
2122
+ // ../../node_modules/codec-parser/src/containers/ogg/OggPageHeader.js
2123
+ var OggPageHeader = class _OggPageHeader {
2124
+ static *[getHeader](codecParser, headerCache, readOffset) {
2125
+ const header3 = {};
2126
+ let data3 = yield* codecParser[readRawData](28, readOffset);
2127
+ if (data3[0] !== 79 || // O
2128
+ data3[1] !== 103 || // g
2129
+ data3[2] !== 103 || // g
2130
+ data3[3] !== 83) {
2131
+ return null;
2132
+ }
2133
+ header3[streamStructureVersion] = data3[4];
2134
+ const zeros = data3[5] & 248;
2135
+ if (zeros) return null;
2136
+ header3[isLastPage] = !!(data3[5] & 4);
2137
+ header3[isFirstPage] = !!(data3[5] & 2);
2138
+ header3[isContinuedPacket] = !!(data3[5] & 1);
2139
+ const view = new dataView(uint8Array.from(data3[subarray](0, 28))[buffer]);
2140
+ header3[absoluteGranulePosition] = readInt64le(view, 6);
2141
+ header3[streamSerialNumber] = view.getInt32(14, true);
2142
+ header3[pageSequenceNumber] = view.getInt32(18, true);
2143
+ header3[pageChecksum] = view.getInt32(22, true);
2144
+ const pageSegmentTableLength = data3[26];
2145
+ header3[length] = pageSegmentTableLength + 27;
2146
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
2147
+ header3[frameLength] = 0;
2148
+ header3[pageSegmentTable] = [];
2149
+ header3[pageSegmentBytes] = uint8Array.from(
2150
+ data3[subarray](27, header3[length])
2151
+ );
2152
+ for (let i = 0, segmentLength = 0; i < pageSegmentTableLength; i++) {
2153
+ const segmentByte = header3[pageSegmentBytes][i];
2154
+ header3[frameLength] += segmentByte;
2155
+ segmentLength += segmentByte;
2156
+ if (segmentByte !== 255 || i === pageSegmentTableLength - 1) {
2157
+ header3[pageSegmentTable].push(segmentLength);
2158
+ segmentLength = 0;
2159
+ }
2160
+ }
2161
+ return new _OggPageHeader(header3);
2162
+ }
2163
+ /**
2164
+ * @private
2165
+ * Call OggPageHeader.getHeader(Array<Uint8>) to get instance
2166
+ */
2167
+ constructor(header3) {
2168
+ headerStore.set(this, header3);
2169
+ this[absoluteGranulePosition] = header3[absoluteGranulePosition];
2170
+ this[isContinuedPacket] = header3[isContinuedPacket];
2171
+ this[isFirstPage] = header3[isFirstPage];
2172
+ this[isLastPage] = header3[isLastPage];
2173
+ this[pageSegmentTable] = header3[pageSegmentTable];
2174
+ this[pageSequenceNumber] = header3[pageSequenceNumber];
2175
+ this[pageChecksum] = header3[pageChecksum];
2176
+ this[streamSerialNumber] = header3[streamSerialNumber];
2177
+ }
2178
+ };
2179
+
2180
+ // ../../node_modules/codec-parser/src/containers/ogg/OggPage.js
2181
+ var OggPage = class _OggPage extends Frame {
2182
+ static *[getFrame](codecParser, headerCache, readOffset) {
2183
+ const header3 = yield* OggPageHeader[getHeader](
2184
+ codecParser,
2185
+ headerCache,
2186
+ readOffset
2187
+ );
2188
+ if (header3) {
2189
+ const frameLengthValue = headerStore.get(header3)[frameLength];
2190
+ const headerLength = headerStore.get(header3)[length];
2191
+ const totalLength = headerLength + frameLengthValue;
2192
+ const rawDataValue = (yield* codecParser[readRawData](totalLength, 0))[subarray](0, totalLength);
2193
+ const frame2 = rawDataValue[subarray](headerLength, totalLength);
2194
+ return new _OggPage(header3, frame2, rawDataValue);
2195
+ } else {
2196
+ return null;
2197
+ }
2198
+ }
2199
+ constructor(header3, frame2, rawDataValue) {
2200
+ super(header3, frame2);
2201
+ frameStore.get(this)[length] = rawDataValue[length];
2202
+ this[codecFrames] = [];
2203
+ this[rawData] = rawDataValue;
2204
+ this[absoluteGranulePosition] = header3[absoluteGranulePosition];
2205
+ this[crc32] = header3[pageChecksum];
2206
+ this[duration] = 0;
2207
+ this[isContinuedPacket] = header3[isContinuedPacket];
2208
+ this[isFirstPage] = header3[isFirstPage];
2209
+ this[isLastPage] = header3[isLastPage];
2210
+ this[pageSequenceNumber] = header3[pageSequenceNumber];
2211
+ this[samples] = 0;
2212
+ this[streamSerialNumber] = header3[streamSerialNumber];
2213
+ }
2214
+ };
2215
+
2216
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusFrame.js
2217
+ var OpusFrame = class extends CodecFrame {
2218
+ constructor(data3, header3, samples2) {
2219
+ super(header3, data3, samples2);
2220
+ }
2221
+ };
2222
+
2223
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusHeader.js
2224
+ var channelMappingFamilies = {
2225
+ 0: vorbisOpusChannelMapping.slice(0, 2),
2226
+ /*
2227
+ 0: "monophonic (mono)"
2228
+ 1: "stereo (left, right)"
2229
+ */
2230
+ 1: vorbisOpusChannelMapping
2231
+ /*
2232
+ 0: "monophonic (mono)"
2233
+ 1: "stereo (left, right)"
2234
+ 2: "linear surround (left, center, right)"
2235
+ 3: "quadraphonic (front left, front right, rear left, rear right)"
2236
+ 4: "5.0 surround (front left, front center, front right, rear left, rear right)"
2237
+ 5: "5.1 surround (front left, front center, front right, rear left, rear right, LFE)"
2238
+ 6: "6.1 surround (front left, front center, front right, side left, side right, rear center, LFE)"
2239
+ 7: "7.1 surround (front left, front center, front right, side left, side right, rear left, rear right, LFE)"
2240
+ */
2241
+ // additional channel mappings are user defined
2242
+ };
2243
+ var silkOnly = "SILK-only";
2244
+ var celtOnly = "CELT-only";
2245
+ var hybrid = "Hybrid";
2246
+ var narrowBand = "narrowband";
2247
+ var mediumBand = "medium-band";
2248
+ var wideBand = "wideband";
2249
+ var superWideBand = "super-wideband";
2250
+ var fullBand = "fullband";
2251
+ var configTable = {
2252
+ 0: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 10 },
2253
+ 8: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 20 },
2254
+ 16: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 40 },
2255
+ 24: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 60 },
2256
+ 32: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 10 },
2257
+ 40: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 20 },
2258
+ 48: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 40 },
2259
+ 56: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 60 },
2260
+ 64: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 10 },
2261
+ 72: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 20 },
2262
+ 80: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 40 },
2263
+ 88: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 60 },
2264
+ 96: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 10 },
2265
+ 104: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 20 },
2266
+ 112: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 10 },
2267
+ 120: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 20 },
2268
+ 128: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 2.5 },
2269
+ 136: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 5 },
2270
+ 144: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 10 },
2271
+ 152: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 20 },
2272
+ 160: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 2.5 },
2273
+ 168: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 5 },
2274
+ 176: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 10 },
2275
+ 184: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 20 },
2276
+ 192: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 2.5 },
2277
+ 200: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 5 },
2278
+ 208: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 10 },
2279
+ 216: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 20 },
2280
+ 224: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 2.5 },
2281
+ 232: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 5 },
2282
+ 240: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 10 },
2283
+ 248: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 20 }
2284
+ };
2285
+ var OpusHeader = class _OpusHeader extends CodecHeader {
2286
+ static [getHeaderFromUint8Array](dataValue, packetData, headerCache) {
2287
+ const header3 = {};
2288
+ header3[channels] = dataValue[9];
2289
+ header3[channelMappingFamily] = dataValue[18];
2290
+ header3[length] = header3[channelMappingFamily] !== 0 ? 21 + header3[channels] : 19;
2291
+ if (dataValue[length] < header3[length])
2292
+ throw new Error("Out of data while inside an Ogg Page");
2293
+ const packetMode = packetData[0] & 3;
2294
+ const packetLength = packetMode === 3 ? 2 : 1;
2295
+ const key = bytesToString(dataValue[subarray](0, header3[length])) + bytesToString(packetData[subarray](0, packetLength));
2296
+ const cachedHeader = headerCache[getHeader](key);
2297
+ if (cachedHeader) return new _OpusHeader(cachedHeader);
2298
+ if (key.substr(0, 8) !== "OpusHead") {
2299
+ return null;
2300
+ }
2301
+ if (dataValue[8] !== 1) return null;
2302
+ header3[data] = uint8Array.from(dataValue[subarray](0, header3[length]));
2303
+ const view = new dataView(header3[data][buffer]);
2304
+ header3[bitDepth] = 16;
2305
+ header3[preSkip] = view.getUint16(10, true);
2306
+ header3[inputSampleRate] = view.getUint32(12, true);
2307
+ header3[sampleRate] = rate48000;
2308
+ header3[outputGain] = view.getInt16(16, true);
2309
+ if (header3[channelMappingFamily] in channelMappingFamilies) {
2310
+ header3[channelMode] = channelMappingFamilies[header3[channelMappingFamily]][header3[channels] - 1];
2311
+ if (!header3[channelMode]) return null;
2312
+ }
2313
+ if (header3[channelMappingFamily] !== 0) {
2314
+ header3[streamCount] = dataValue[19];
2315
+ header3[coupledStreamCount] = dataValue[20];
2316
+ header3[channelMappingTable] = [
2317
+ ...dataValue[subarray](21, header3[channels] + 21)
2318
+ ];
2319
+ }
2320
+ const packetConfig = configTable[248 & packetData[0]];
2321
+ header3[mode] = packetConfig[mode];
2322
+ header3[bandwidth] = packetConfig[bandwidth];
2323
+ header3[frameSize] = packetConfig[frameSize];
2324
+ switch (packetMode) {
2325
+ case 0:
2326
+ header3[frameCount] = 1;
2327
+ break;
2328
+ case 1:
2329
+ // 1: 2 frames in the packet, each with equal compressed size
2330
+ case 2:
2331
+ header3[frameCount] = 2;
2332
+ break;
2333
+ case 3:
2334
+ header3[isVbr] = !!(128 & packetData[1]);
2335
+ header3[hasOpusPadding] = !!(64 & packetData[1]);
2336
+ header3[frameCount] = 63 & packetData[1];
2337
+ break;
2338
+ default:
2339
+ return null;
2340
+ }
2341
+ {
2342
+ const {
2343
+ length: length2,
2344
+ data: headerData,
2345
+ channelMappingFamily: channelMappingFamily2,
2346
+ ...codecUpdateFields
2347
+ } = header3;
2348
+ headerCache[setHeader](key, header3, codecUpdateFields);
2349
+ }
2350
+ return new _OpusHeader(header3);
2351
+ }
2352
+ /**
2353
+ * @private
2354
+ * Call OpusHeader.getHeader(Array<Uint8>) to get instance
2355
+ */
2356
+ constructor(header3) {
2357
+ super(header3);
2358
+ this[data] = header3[data];
2359
+ this[bandwidth] = header3[bandwidth];
2360
+ this[channelMappingFamily] = header3[channelMappingFamily];
2361
+ this[channelMappingTable] = header3[channelMappingTable];
2362
+ this[coupledStreamCount] = header3[coupledStreamCount];
2363
+ this[frameCount] = header3[frameCount];
2364
+ this[frameSize] = header3[frameSize];
2365
+ this[hasOpusPadding] = header3[hasOpusPadding];
2366
+ this[inputSampleRate] = header3[inputSampleRate];
2367
+ this[isVbr] = header3[isVbr];
2368
+ this[mode] = header3[mode];
2369
+ this[outputGain] = header3[outputGain];
2370
+ this[preSkip] = header3[preSkip];
2371
+ this[streamCount] = header3[streamCount];
2372
+ }
2373
+ };
2374
+
2375
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusParser.js
2376
+ var OpusParser = class extends Parser {
2377
+ constructor(codecParser, headerCache, onCodec) {
2378
+ super(codecParser, headerCache);
2379
+ this.Frame = OpusFrame;
2380
+ this.Header = OpusHeader;
2381
+ onCodec(this[codec]);
2382
+ this._identificationHeader = null;
2383
+ this._preSkipRemaining = null;
2384
+ }
2385
+ get [codec]() {
2386
+ return "opus";
2387
+ }
2388
+ /**
2389
+ * @todo implement continued page support
2390
+ */
2391
+ [parseOggPage](oggPage) {
2392
+ if (oggPage[pageSequenceNumber] === 0) {
2393
+ this._headerCache[enable]();
2394
+ this._identificationHeader = oggPage[data];
2395
+ } else if (oggPage[pageSequenceNumber] === 1) {
2396
+ } else {
2397
+ oggPage[codecFrames] = frameStore.get(oggPage)[segments].map((segment) => {
2398
+ const header3 = OpusHeader[getHeaderFromUint8Array](
2399
+ this._identificationHeader,
2400
+ segment,
2401
+ this._headerCache
2402
+ );
2403
+ if (header3) {
2404
+ if (this._preSkipRemaining === null)
2405
+ this._preSkipRemaining = header3[preSkip];
2406
+ let samples2 = header3[frameSize] * header3[frameCount] / 1e3 * header3[sampleRate];
2407
+ if (this._preSkipRemaining > 0) {
2408
+ this._preSkipRemaining -= samples2;
2409
+ samples2 = this._preSkipRemaining < 0 ? -this._preSkipRemaining : 0;
2410
+ }
2411
+ return new OpusFrame(segment, header3, samples2);
2412
+ }
2413
+ this._codecParser[logError2](
2414
+ "Failed to parse Ogg Opus Header",
2415
+ "Not a valid Ogg Opus file"
2416
+ );
2417
+ });
2418
+ }
2419
+ return oggPage;
2420
+ }
2421
+ };
2422
+
2423
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisFrame.js
2424
+ var VorbisFrame = class extends CodecFrame {
2425
+ constructor(data3, header3, samples2) {
2426
+ super(header3, data3, samples2);
2427
+ }
2428
+ };
2429
+
2430
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisHeader.js
2431
+ var blockSizes = {
2432
+ // 0b0110: 64,
2433
+ // 0b0111: 128,
2434
+ // 0b1000: 256,
2435
+ // 0b1001: 512,
2436
+ // 0b1010: 1024,
2437
+ // 0b1011: 2048,
2438
+ // 0b1100: 4096,
2439
+ // 0b1101: 8192
2440
+ };
2441
+ for (let i = 0; i < 8; i++) blockSizes[i + 6] = 2 ** (6 + i);
2442
+ var VorbisHeader = class _VorbisHeader extends CodecHeader {
2443
+ static [getHeaderFromUint8Array](dataValue, headerCache, vorbisCommentsData, vorbisSetupData) {
2444
+ if (dataValue[length] < 30)
2445
+ throw new Error("Out of data while inside an Ogg Page");
2446
+ const key = bytesToString(dataValue[subarray](0, 30));
2447
+ const cachedHeader = headerCache[getHeader](key);
2448
+ if (cachedHeader) return new _VorbisHeader(cachedHeader);
2449
+ const header3 = { [length]: 30 };
2450
+ if (key.substr(0, 7) !== "vorbis") {
2451
+ return null;
2452
+ }
2453
+ header3[data] = uint8Array.from(dataValue[subarray](0, 30));
2454
+ const view = new dataView(header3[data][buffer]);
2455
+ header3[version] = view.getUint32(7, true);
2456
+ if (header3[version] !== 0) return null;
2457
+ header3[channels] = dataValue[11];
2458
+ header3[channelMode] = vorbisOpusChannelMapping[header3[channels] - 1] || "application defined";
2459
+ header3[sampleRate] = view.getUint32(12, true);
2460
+ header3[bitrateMaximum] = view.getInt32(16, true);
2461
+ header3[bitrateNominal] = view.getInt32(20, true);
2462
+ header3[bitrateMinimum] = view.getInt32(24, true);
2463
+ header3[blocksize1] = blockSizes[(dataValue[28] & 240) >> 4];
2464
+ header3[blocksize0] = blockSizes[dataValue[28] & 15];
2465
+ if (header3[blocksize0] > header3[blocksize1]) return null;
2466
+ if (dataValue[29] !== 1) return null;
2467
+ header3[bitDepth] = 32;
2468
+ header3[vorbisSetup] = vorbisSetupData;
2469
+ header3[vorbisComments] = vorbisCommentsData;
2470
+ {
2471
+ const {
2472
+ length: length2,
2473
+ data: data3,
2474
+ version: version2,
2475
+ vorbisSetup: vorbisSetup2,
2476
+ vorbisComments: vorbisComments2,
2477
+ ...codecUpdateFields
2478
+ } = header3;
2479
+ headerCache[setHeader](key, header3, codecUpdateFields);
2480
+ }
2481
+ return new _VorbisHeader(header3);
2482
+ }
2483
+ /**
2484
+ * @private
2485
+ * Call VorbisHeader.getHeader(Array<Uint8>) to get instance
2486
+ */
2487
+ constructor(header3) {
2488
+ super(header3);
2489
+ this[bitrateMaximum] = header3[bitrateMaximum];
2490
+ this[bitrateMinimum] = header3[bitrateMinimum];
2491
+ this[bitrateNominal] = header3[bitrateNominal];
2492
+ this[blocksize0] = header3[blocksize0];
2493
+ this[blocksize1] = header3[blocksize1];
2494
+ this[data] = header3[data];
2495
+ this[vorbisComments] = header3[vorbisComments];
2496
+ this[vorbisSetup] = header3[vorbisSetup];
2497
+ }
2498
+ };
2499
+
2500
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisParser.js
2501
+ var VorbisParser = class extends Parser {
2502
+ constructor(codecParser, headerCache, onCodec) {
2503
+ super(codecParser, headerCache);
2504
+ this.Frame = VorbisFrame;
2505
+ onCodec(this[codec]);
2506
+ this._identificationHeader = null;
2507
+ this._setupComplete = false;
2508
+ this._prevBlockSize = null;
2509
+ }
2510
+ get [codec]() {
2511
+ return vorbis;
2512
+ }
2513
+ [parseOggPage](oggPage) {
2514
+ oggPage[codecFrames] = [];
2515
+ for (const oggPageSegment of frameStore.get(oggPage)[segments]) {
2516
+ if (oggPageSegment[0] === 1) {
2517
+ this._headerCache[enable]();
2518
+ this._identificationHeader = oggPage[data];
2519
+ this._setupComplete = false;
2520
+ } else if (oggPageSegment[0] === 3) {
2521
+ this._vorbisComments = oggPageSegment;
2522
+ } else if (oggPageSegment[0] === 5) {
2523
+ this._vorbisSetup = oggPageSegment;
2524
+ this._mode = this._parseSetupHeader(oggPageSegment);
2525
+ this._setupComplete = true;
2526
+ } else if (this._setupComplete) {
2527
+ const header3 = VorbisHeader[getHeaderFromUint8Array](
2528
+ this._identificationHeader,
2529
+ this._headerCache,
2530
+ this._vorbisComments,
2531
+ this._vorbisSetup
2532
+ );
2533
+ if (header3) {
2534
+ oggPage[codecFrames].push(
2535
+ new VorbisFrame(
2536
+ oggPageSegment,
2537
+ header3,
2538
+ this._getSamples(oggPageSegment, header3)
2539
+ )
2540
+ );
2541
+ } else {
2542
+ this._codecParser[logError](
2543
+ "Failed to parse Ogg Vorbis Header",
2544
+ "Not a valid Ogg Vorbis file"
2545
+ );
2546
+ }
2547
+ }
2548
+ }
2549
+ return oggPage;
2550
+ }
2551
+ _getSamples(segment, header3) {
2552
+ const blockFlag = this._mode.blockFlags[segment[0] >> 1 & this._mode.mask];
2553
+ const currentBlockSize = blockFlag ? header3[blocksize1] : header3[blocksize0];
2554
+ const samplesValue = this._prevBlockSize === null ? 0 : (this._prevBlockSize + currentBlockSize) / 4;
2555
+ this._prevBlockSize = currentBlockSize;
2556
+ return samplesValue;
2557
+ }
2558
+ // https://gitlab.xiph.org/xiph/liboggz/-/blob/master/src/liboggz/oggz_auto.c#L911
2559
+ // https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/vorbis_parser.c
2560
+ /*
2561
+ * This is the format of the mode data at the end of the packet for all
2562
+ * Vorbis Version 1 :
2563
+ *
2564
+ * [ 6:number_of_modes ]
2565
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2566
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2567
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2568
+ * [ 1:framing(1) ]
2569
+ *
2570
+ * e.g.:
2571
+ *
2572
+ * MsB LsB
2573
+ * <-
2574
+ * 0 0 0 0 0 1 0 0
2575
+ * 0 0 1 0 0 0 0 0
2576
+ * 0 0 1 0 0 0 0 0
2577
+ * 0 0 1|0 0 0 0 0
2578
+ * 0 0 0 0|0|0 0 0
2579
+ * 0 0 0 0 0 0 0 0
2580
+ * 0 0 0 0|0 0 0 0
2581
+ * 0 0 0 0 0 0 0 0
2582
+ * 0 0 0 0|0 0 0 0
2583
+ * 0 0 0|1|0 0 0 0 |
2584
+ * 0 0 0 0 0 0 0 0 V
2585
+ * 0 0 0|0 0 0 0 0
2586
+ * 0 0 0 0 0 0 0 0
2587
+ * 0 0|1 0 0 0 0 0
2588
+ *
2589
+ * The simplest way to approach this is to start at the end
2590
+ * and read backwards to determine the mode configuration.
2591
+ *
2592
+ * liboggz and ffmpeg both use this method.
2593
+ */
2594
+ _parseSetupHeader(setup) {
2595
+ const bitReader = new BitReader(setup);
2596
+ const mode2 = {
2597
+ count: 0,
2598
+ blockFlags: []
2599
+ };
2600
+ while ((bitReader.read(1) & 1) !== 1) {
2601
+ }
2602
+ let modeBits;
2603
+ while (mode2.count < 64 && bitReader.position > 0) {
2604
+ reverse(bitReader.read(8));
2605
+ let currentByte = 0;
2606
+ while (bitReader.read(8) === 0 && currentByte++ < 3) {
2607
+ }
2608
+ if (currentByte === 4) {
2609
+ modeBits = bitReader.read(7);
2610
+ mode2.blockFlags.unshift(modeBits & 1);
2611
+ bitReader.position += 6;
2612
+ mode2.count++;
2613
+ } else {
2614
+ if (((reverse(modeBits) & 126) >> 1) + 1 !== mode2.count) {
2615
+ this._codecParser[logWarning](
2616
+ "vorbis derived mode count did not match actual mode count"
2617
+ );
2618
+ }
2619
+ break;
2620
+ }
2621
+ }
2622
+ mode2.mask = (1 << Math.log2(mode2.count)) - 1;
2623
+ return mode2;
2624
+ }
2625
+ };
2626
+
2627
+ // ../../node_modules/codec-parser/src/containers/ogg/OggParser.js
2628
+ var OggStream = class {
2629
+ constructor(codecParser, headerCache, onCodec) {
2630
+ this._codecParser = codecParser;
2631
+ this._headerCache = headerCache;
2632
+ this._onCodec = onCodec;
2633
+ this._continuedPacket = new uint8Array();
2634
+ this._codec = null;
2635
+ this._isSupported = null;
2636
+ this._previousAbsoluteGranulePosition = null;
2637
+ }
2638
+ get [codec]() {
2639
+ return this._codec || "";
2640
+ }
2641
+ _updateCodec(codec2, Parser2) {
2642
+ if (this._codec !== codec2) {
2643
+ this._headerCache[reset]();
2644
+ this._parser = new Parser2(
2645
+ this._codecParser,
2646
+ this._headerCache,
2647
+ this._onCodec
2648
+ );
2649
+ this._codec = codec2;
2650
+ }
2651
+ }
2652
+ _checkCodecSupport({ data: data3 }) {
2653
+ const idString = bytesToString(data3[subarray](0, 8));
2654
+ switch (idString) {
2655
+ case "fishead\0":
2656
+ return false;
2657
+ // ignore ogg skeleton packets
2658
+ case "OpusHead":
2659
+ this._updateCodec("opus", OpusParser);
2660
+ return true;
2661
+ case (/^\x7fFLAC/.test(idString) && idString):
2662
+ this._updateCodec("flac", FLACParser);
2663
+ return true;
2664
+ case (/^\x01vorbis/.test(idString) && idString):
2665
+ this._updateCodec(vorbis, VorbisParser);
2666
+ return true;
2667
+ default:
2668
+ return false;
2669
+ }
2670
+ }
2671
+ _checkPageSequenceNumber(oggPage) {
2672
+ if (oggPage[pageSequenceNumber] !== this._pageSequenceNumber + 1 && this._pageSequenceNumber > 1 && oggPage[pageSequenceNumber] > 1) {
2673
+ this._codecParser[logWarning](
2674
+ "Unexpected gap in Ogg Page Sequence Number.",
2675
+ `Expected: ${this._pageSequenceNumber + 1}, Got: ${oggPage[pageSequenceNumber]}`
2676
+ );
2677
+ }
2678
+ this._pageSequenceNumber = oggPage[pageSequenceNumber];
2679
+ }
2680
+ _parsePage(oggPage) {
2681
+ if (this._isSupported === null) {
2682
+ this._pageSequenceNumber = oggPage[pageSequenceNumber];
2683
+ this._isSupported = this._checkCodecSupport(oggPage);
2684
+ }
2685
+ this._checkPageSequenceNumber(oggPage);
2686
+ const oggPageStore = frameStore.get(oggPage);
2687
+ const headerData = headerStore.get(oggPageStore[header]);
2688
+ let offset = 0;
2689
+ oggPageStore[segments] = headerData[pageSegmentTable].map(
2690
+ (segmentLength) => oggPage[data][subarray](offset, offset += segmentLength)
2691
+ );
2692
+ if (this._continuedPacket[length]) {
2693
+ oggPageStore[segments][0] = concatBuffers(
2694
+ this._continuedPacket,
2695
+ oggPageStore[segments][0]
2696
+ );
2697
+ this._continuedPacket = new uint8Array();
2698
+ }
2699
+ if (headerData[pageSegmentBytes][headerData[pageSegmentBytes][length] - 1] === 255) {
2700
+ this._continuedPacket = concatBuffers(
2701
+ this._continuedPacket,
2702
+ oggPageStore[segments].pop()
2703
+ );
2704
+ }
2705
+ if (this._previousAbsoluteGranulePosition !== null) {
2706
+ oggPage[samples] = Number(
2707
+ oggPage[absoluteGranulePosition] - this._previousAbsoluteGranulePosition
2708
+ );
2709
+ }
2710
+ this._previousAbsoluteGranulePosition = oggPage[absoluteGranulePosition];
2711
+ if (this._isSupported) {
2712
+ const frame2 = this._parser[parseOggPage](oggPage);
2713
+ this._codecParser[mapFrameStats](frame2);
2714
+ return frame2;
2715
+ } else {
2716
+ return oggPage;
2717
+ }
2718
+ }
2719
+ };
2720
+ var OggParser = class extends Parser {
2721
+ constructor(codecParser, headerCache, onCodec) {
2722
+ super(codecParser, headerCache);
2723
+ this._onCodec = onCodec;
2724
+ this.Frame = OggPage;
2725
+ this.Header = OggPageHeader;
2726
+ this._streams = /* @__PURE__ */ new Map();
2727
+ this._currentSerialNumber = null;
2728
+ }
2729
+ get [codec]() {
2730
+ const oggStream = this._streams.get(this._currentSerialNumber);
2731
+ return oggStream ? oggStream.codec : "";
2732
+ }
2733
+ *[parseFrame]() {
2734
+ const oggPage = yield* this[fixedLengthFrameSync](true);
2735
+ this._currentSerialNumber = oggPage[streamSerialNumber];
2736
+ let oggStream = this._streams.get(this._currentSerialNumber);
2737
+ if (!oggStream) {
2738
+ oggStream = new OggStream(
2739
+ this._codecParser,
2740
+ this._headerCache,
2741
+ this._onCodec
2742
+ );
2743
+ this._streams.set(this._currentSerialNumber, oggStream);
2744
+ }
2745
+ if (oggPage[isLastPage]) this._streams.delete(this._currentSerialNumber);
2746
+ return oggStream._parsePage(oggPage);
2747
+ }
2748
+ };
2749
+
2750
+ // ../../node_modules/codec-parser/src/CodecParser.js
2751
+ var noOp = () => {
2752
+ };
2753
+ var CodecParser = class {
2754
+ constructor(mimeType2, {
2755
+ onCodec,
2756
+ onCodecHeader,
2757
+ onCodecUpdate,
2758
+ enableLogging = false,
2759
+ enableFrameCRC32 = true
2760
+ } = {}) {
2761
+ this._inputMimeType = mimeType2;
2762
+ this._onCodec = onCodec || noOp;
2763
+ this._onCodecHeader = onCodecHeader || noOp;
2764
+ this._onCodecUpdate = onCodecUpdate;
2765
+ this._enableLogging = enableLogging;
2766
+ this._crc32 = enableFrameCRC32 ? crc32Function : noOp;
2767
+ this[reset]();
2768
+ }
2769
+ /**
2770
+ * @public
2771
+ * @returns The detected codec
2772
+ */
2773
+ get [codec]() {
2774
+ return this._parser ? this._parser[codec] : "";
2775
+ }
2776
+ [reset]() {
2777
+ this._headerCache = new HeaderCache(
2778
+ this._onCodecHeader,
2779
+ this._onCodecUpdate
2780
+ );
2781
+ this._generator = this._getGenerator();
2782
+ this._generator.next();
2783
+ }
2784
+ /**
2785
+ * @public
2786
+ * @description Generator function that yields any buffered CodecFrames and resets the CodecParser
2787
+ * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.
2788
+ * @yields {CodecFrame|OggPage} Parsed codec or ogg page data
2789
+ */
2790
+ *flush() {
2791
+ this._flushing = true;
2792
+ for (let i = this._generator.next(); i.value; i = this._generator.next()) {
2793
+ yield i.value;
2794
+ }
2795
+ this._flushing = false;
2796
+ this[reset]();
2797
+ }
2798
+ /**
2799
+ * @public
2800
+ * @description Generator function takes in a Uint8Array of data and returns a CodecFrame from the data for each iteration
2801
+ * @param {Uint8Array} chunk Next chunk of codec data to read
2802
+ * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.
2803
+ * @yields {CodecFrame|OggPage} Parsed codec or ogg page data
2804
+ */
2805
+ *parseChunk(chunk) {
2806
+ for (let i = this._generator.next(chunk); i.value; i = this._generator.next()) {
2807
+ yield i.value;
2808
+ }
2809
+ }
2810
+ /**
2811
+ * @public
2812
+ * @description Parses an entire file and returns all of the contained frames.
2813
+ * @param {Uint8Array} fileData Coded data to read
2814
+ * @returns {Array<CodecFrame|OggPage>} CodecFrames
2815
+ */
2816
+ parseAll(fileData) {
2817
+ return [...this.parseChunk(fileData), ...this.flush()];
2818
+ }
2819
+ /**
2820
+ * @private
2821
+ */
2822
+ *_getGenerator() {
2823
+ if (this._inputMimeType.match(/aac/)) {
2824
+ this._parser = new AACParser(this, this._headerCache, this._onCodec);
2825
+ } else if (this._inputMimeType.match(/mpeg/)) {
2826
+ this._parser = new MPEGParser(this, this._headerCache, this._onCodec);
2827
+ } else if (this._inputMimeType.match(/flac/)) {
2828
+ this._parser = new FLACParser(this, this._headerCache, this._onCodec);
2829
+ } else if (this._inputMimeType.match(/ogg/)) {
2830
+ this._parser = new OggParser(this, this._headerCache, this._onCodec);
2831
+ } else {
2832
+ throw new Error(`Unsupported Codec ${mimeType}`);
2833
+ }
2834
+ this._frameNumber = 0;
2835
+ this._currentReadPosition = 0;
2836
+ this._totalBytesIn = 0;
2837
+ this._totalBytesOut = 0;
2838
+ this._totalSamples = 0;
2839
+ this._sampleRate = void 0;
2840
+ this._rawData = new Uint8Array(0);
2841
+ while (true) {
2842
+ const frame2 = yield* this._parser[parseFrame]();
2843
+ if (frame2) yield frame2;
2844
+ }
2845
+ }
2846
+ /**
2847
+ * @protected
2848
+ * @param {number} minSize Minimum bytes to have present in buffer
2849
+ * @returns {Uint8Array} rawData
2850
+ */
2851
+ *[readRawData](minSize = 0, readOffset = 0) {
2852
+ let rawData2;
2853
+ while (this._rawData[length] <= minSize + readOffset) {
2854
+ rawData2 = yield;
2855
+ if (this._flushing) return this._rawData[subarray](readOffset);
2856
+ if (rawData2) {
2857
+ this._totalBytesIn += rawData2[length];
2858
+ this._rawData = concatBuffers(this._rawData, rawData2);
2859
+ }
2860
+ }
2861
+ return this._rawData[subarray](readOffset);
2862
+ }
2863
+ /**
2864
+ * @protected
2865
+ * @param {number} increment Bytes to increment codec data
2866
+ */
2867
+ [incrementRawData](increment) {
2868
+ this._currentReadPosition += increment;
2869
+ this._rawData = this._rawData[subarray](increment);
2870
+ }
2871
+ /**
2872
+ * @protected
2873
+ */
2874
+ [mapCodecFrameStats](frame2) {
2875
+ this._sampleRate = frame2[header][sampleRate];
2876
+ frame2[header][bitrate] = frame2[duration] > 0 ? Math.round(frame2[data][length] / frame2[duration]) * 8 : 0;
2877
+ frame2[frameNumber] = this._frameNumber++;
2878
+ frame2[totalBytesOut] = this._totalBytesOut;
2879
+ frame2[totalSamples] = this._totalSamples;
2880
+ frame2[totalDuration] = this._totalSamples / this._sampleRate * 1e3;
2881
+ frame2[crc32] = this._crc32(frame2[data]);
2882
+ this._headerCache[checkCodecUpdate](
2883
+ frame2[header][bitrate],
2884
+ frame2[totalDuration]
2885
+ );
2886
+ this._totalBytesOut += frame2[data][length];
2887
+ this._totalSamples += frame2[samples];
2888
+ }
2889
+ /**
2890
+ * @protected
2891
+ */
2892
+ [mapFrameStats](frame2) {
2893
+ if (frame2[codecFrames]) {
2894
+ if (frame2[isLastPage]) {
2895
+ let absoluteGranulePositionSamples = frame2[samples];
2896
+ frame2[codecFrames].forEach((codecFrame) => {
2897
+ const untrimmedCodecSamples = codecFrame[samples];
2898
+ if (absoluteGranulePositionSamples < untrimmedCodecSamples) {
2899
+ codecFrame[samples] = absoluteGranulePositionSamples > 0 ? absoluteGranulePositionSamples : 0;
2900
+ codecFrame[duration] = codecFrame[samples] / codecFrame[header][sampleRate] * 1e3;
2901
+ }
2902
+ absoluteGranulePositionSamples -= untrimmedCodecSamples;
2903
+ this[mapCodecFrameStats](codecFrame);
2904
+ });
2905
+ } else {
2906
+ frame2[samples] = 0;
2907
+ frame2[codecFrames].forEach((codecFrame) => {
2908
+ frame2[samples] += codecFrame[samples];
2909
+ this[mapCodecFrameStats](codecFrame);
2910
+ });
2911
+ }
2912
+ frame2[duration] = frame2[samples] / this._sampleRate * 1e3 || 0;
2913
+ frame2[totalSamples] = this._totalSamples;
2914
+ frame2[totalDuration] = this._totalSamples / this._sampleRate * 1e3 || 0;
2915
+ frame2[totalBytesOut] = this._totalBytesOut;
2916
+ } else {
2917
+ this[mapCodecFrameStats](frame2);
2918
+ }
2919
+ }
2920
+ /**
2921
+ * @private
2922
+ */
2923
+ _log(logger, messages) {
2924
+ if (this._enableLogging) {
2925
+ const stats = [
2926
+ `${codec}: ${this[codec]}`,
2927
+ `inputMimeType: ${this._inputMimeType}`,
2928
+ `readPosition: ${this._currentReadPosition}`,
2929
+ `totalBytesIn: ${this._totalBytesIn}`,
2930
+ `${totalBytesOut}: ${this._totalBytesOut}`
2931
+ ];
2932
+ const width = Math.max(...stats.map((s) => s[length]));
2933
+ messages.push(
2934
+ `--stats--${"-".repeat(width - 9)}`,
2935
+ ...stats,
2936
+ "-".repeat(width)
2937
+ );
2938
+ logger(
2939
+ "codec-parser",
2940
+ messages.reduce((acc, message) => acc + "\n " + message, "")
2941
+ );
2942
+ }
2943
+ }
2944
+ /**
2945
+ * @protected
2946
+ */
2947
+ [logWarning](...messages) {
2948
+ this._log(console.warn, messages);
2949
+ }
2950
+ /**
2951
+ * @protected
2952
+ */
2953
+ [logError2](...messages) {
2954
+ this._log(console.error, messages);
2955
+ }
2956
+ };
2957
+
2958
+ // ../../node_modules/codec-parser/index.js
2959
+ var codec_parser_default = CodecParser;
2960
+ var absoluteGranulePosition2 = absoluteGranulePosition;
2961
+ var codecFrames2 = codecFrames;
2962
+ var coupledStreamCount2 = coupledStreamCount;
2963
+ var data2 = data;
2964
+ var header2 = header;
2965
+ var isLastPage2 = isLastPage;
2966
+ var preSkip2 = preSkip;
2967
+ var channelMappingTable2 = channelMappingTable;
2968
+ var channels2 = channels;
2969
+ var streamCount2 = streamCount;
2970
+ var totalSamples2 = totalSamples;
2971
+
2972
+ // ../../node_modules/ogg-opus-decoder/src/OggOpusDecoder.js
2973
+ var simd = async () => WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11]));
2974
+ var OggOpusDecoder = class {
2975
+ constructor(options = {}) {
2976
+ this._sampleRate = options.sampleRate || 48e3;
2977
+ this._speechQualityEnhancement = options.speechQualityEnhancement;
2978
+ this._forceStereo = options.forceStereo !== void 0 ? options.forceStereo : false;
2979
+ this._onCodec = (codec2) => {
2980
+ if (codec2 !== "opus")
2981
+ throw new Error(
2982
+ "ogg-opus-decoder does not support this codec " + codec2
2983
+ );
2984
+ };
2985
+ new WASMAudioDecoderCommon();
2986
+ this._useMLDecoder = ["lace", "nolace"].includes(
2987
+ this._speechQualityEnhancement
2988
+ );
2989
+ this._decoderLibraryLoaded = this._loadDecoderLibrary();
2990
+ this._ready = this._init();
2991
+ }
2992
+ _initDecoderClass() {
2993
+ this._decoderClass = this._useMLDecoder ? this.OpusMLDecoder : this.OpusDecoder;
2994
+ }
2995
+ async _loadDecoderLibrary() {
2996
+ if (this._useMLDecoder) {
2997
+ const simdSupported = await simd();
2998
+ if (simdSupported) {
2999
+ const { OpusMLDecoder, OpusMLDecoderWebWorker } = await import(
3000
+ /* webpackChunkName: "opus-ml" */
3001
+ "@wasm-audio-decoders/opus-ml"
3002
+ );
3003
+ this.OpusMLDecoder = OpusMLDecoder;
3004
+ this.OpusMLDecoderWebWorker = OpusMLDecoderWebWorker;
3005
+ } else {
3006
+ console.warn(
3007
+ `ogg-opus-decoder: This platform does not support WebAssembly SIMD; { speechQualityEnhancements: '${this._speechQualityEnhancement}' } has been disabled`
3008
+ );
3009
+ this._useMLDecoder = false;
3010
+ }
3011
+ }
3012
+ this.OpusDecoder = OpusDecoder;
3013
+ this.OpusDecoderWebWorker = OpusDecoderWebWorker;
3014
+ this._initDecoderClass();
3015
+ }
3016
+ async _init() {
3017
+ if (this._decoder) await this._decoder.free();
3018
+ this._decoder = null;
3019
+ this._decoderReady = null;
3020
+ this._codecParser = new codec_parser_default("application/ogg", {
3021
+ onCodec: this._onCodec,
3022
+ enableFrameCRC32: false
3023
+ });
3024
+ }
3025
+ async _instantiateDecoder(header3) {
3026
+ this._totalSamplesDecoded = 0;
3027
+ this._preSkip = header3[preSkip2];
3028
+ this._channels = this._forceStereo ? 2 : header3[channels2];
3029
+ await this._decoderLibraryLoaded;
3030
+ this._decoder = new this._decoderClass({
3031
+ channels: header3[channels2],
3032
+ streamCount: header3[streamCount2],
3033
+ coupledStreamCount: header3[coupledStreamCount2],
3034
+ channelMappingTable: header3[channelMappingTable2],
3035
+ preSkip: Math.round(this._preSkip / 48e3 * this._sampleRate),
3036
+ sampleRate: this._sampleRate,
3037
+ speechQualityEnhancement: this._speechQualityEnhancement,
3038
+ forceStereo: this._forceStereo
3039
+ });
3040
+ return this._decoder.ready;
3041
+ }
3042
+ get ready() {
3043
+ return this._ready;
3044
+ }
3045
+ async reset() {
3046
+ this._ready = this._init();
3047
+ await this._ready;
3048
+ }
3049
+ free() {
3050
+ if (this._decoder) this._decoder.free();
3051
+ }
3052
+ async _decode(oggPages) {
3053
+ let opusFrames = [], allErrors = [], allChannelData = [], samplesThisDecode = 0;
3054
+ const flushFrames = async () => {
3055
+ if (opusFrames.length) {
3056
+ await this._decoderReady;
3057
+ const { channelData, samplesDecoded, errors } = await this._decoder.decodeFrames(opusFrames);
3058
+ allChannelData.push(channelData);
3059
+ allErrors.push(...errors);
3060
+ samplesThisDecode += samplesDecoded;
3061
+ this._totalSamplesDecoded += samplesDecoded;
3062
+ opusFrames = [];
3063
+ }
3064
+ };
3065
+ for (let i = 0; i < oggPages.length; i++) {
3066
+ const oggPage = oggPages[i];
3067
+ const frames = oggPage[codecFrames2].map((f) => f[data2]);
3068
+ if (frames.length) {
3069
+ opusFrames.push(...frames);
3070
+ if (!this._decoderReady)
3071
+ this._decoderReady = this._instantiateDecoder(
3072
+ oggPage[codecFrames2][0][header2]
3073
+ );
3074
+ }
3075
+ if (oggPage[isLastPage2]) {
3076
+ await flushFrames();
3077
+ if (oggPage[absoluteGranulePosition2] !== void 0 && allChannelData.length) {
3078
+ const totalDecodedSamples_48000 = this._totalSamplesDecoded / this._sampleRate * 48e3;
3079
+ const samplesToTrim = Math.round(
3080
+ (totalDecodedSamples_48000 - oggPage[totalSamples2]) / 48e3 * this._sampleRate
3081
+ );
3082
+ const channelData = allChannelData[allChannelData.length - 1];
3083
+ if (samplesToTrim > 0) {
3084
+ for (let i2 = 0; i2 < channelData.length; i2++) {
3085
+ channelData[i2] = channelData[i2].subarray(
3086
+ 0,
3087
+ channelData[i2].length - samplesToTrim
3088
+ );
3089
+ }
3090
+ }
3091
+ samplesThisDecode -= samplesToTrim;
3092
+ this._totalSamplesDecoded -= samplesToTrim;
3093
+ }
3094
+ await this.reset();
3095
+ }
3096
+ }
3097
+ await flushFrames();
3098
+ return [
3099
+ allErrors,
3100
+ allChannelData,
3101
+ this._channels,
3102
+ samplesThisDecode,
3103
+ this._sampleRate,
3104
+ 16
3105
+ ];
3106
+ }
3107
+ async decode(oggOpusData) {
3108
+ const decoded = await this._decode([
3109
+ ...this._codecParser.parseChunk(oggOpusData)
3110
+ ]);
3111
+ return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);
3112
+ }
3113
+ async decodeFile(oggOpusData) {
3114
+ const decoded = await this._decode([
3115
+ ...this._codecParser.parseAll(oggOpusData)
3116
+ ]);
3117
+ await this.reset();
3118
+ return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);
3119
+ }
3120
+ async flush() {
3121
+ const decoded = await this._decode([...this._codecParser.flush()]);
3122
+ await this.reset();
3123
+ return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);
3124
+ }
3125
+ };
3126
+
3127
+ // ../../node_modules/ogg-opus-decoder/src/OggOpusDecoderWebWorker.js
3128
+ var OggOpusDecoderWebWorker = class extends OggOpusDecoder {
3129
+ constructor(options) {
3130
+ super(options);
3131
+ }
3132
+ _initDecoderClass() {
3133
+ this._decoderClass = this._useMLDecoder ? this.OpusMLDecoderWebWorker : this.OpusDecoderWebWorker;
3134
+ }
3135
+ async free() {
3136
+ if (this._decoder) await this._decoder.free();
3137
+ }
3138
+ };
3139
+
3140
+ // ../../node_modules/ogg-opus-decoder/index.js
3141
+ assignNames(OggOpusDecoder, "OggOpusDecoder");
3142
+ assignNames(OggOpusDecoderWebWorker, "OggOpusDecoderWebWorker");
3143
+
3144
+ // src/decode-opus.src.js
3145
+ var EMPTY = Object.freeze({ channelData: Object.freeze([]), sampleRate: 0 });
3146
+ async function decode(src) {
3147
+ let buf = src instanceof Uint8Array ? src : new Uint8Array(src);
3148
+ let dec = await decoder();
3149
+ try {
3150
+ let a = await dec.decode(buf);
3151
+ let b = dec.flush ? await dec.flush() : null;
3152
+ return b?.channelData?.length ? merge(a, b) : a;
3153
+ } finally {
3154
+ dec.free();
3155
+ }
3156
+ }
3157
+ async function decoder() {
3158
+ let d = new OggOpusDecoder();
3159
+ await d.ready;
3160
+ return d;
3161
+ }
3162
+ function merge(a, b) {
3163
+ if (!b?.channelData?.length) return a;
3164
+ if (!a?.channelData?.length) return b;
3165
+ return {
3166
+ channelData: a.channelData.map((ch, i) => {
3167
+ let bc = b.channelData[i] || b.channelData[0];
3168
+ let m = new Float32Array(ch.length + bc.length);
3169
+ m.set(ch);
3170
+ m.set(bc, ch.length);
3171
+ return m;
3172
+ }),
3173
+ sampleRate: a.sampleRate
3174
+ };
3175
+ }
3176
+ export {
3177
+ decoder,
3178
+ decode as default
3179
+ };