@openclaw/whatsapp 2026.9.4 → 2026.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/activity.svg +40 -0
- package/assets/icon.png +0 -0
- package/dist/{accounts-CiKHiuEe.js → .setup/accounts-D_NGDjCx.mjs} +2 -2
- package/dist/{action-runtime-CRZLhN3f.js → .setup/action-runtime-DZZFamfl.mjs} +3 -3
- package/dist/{active-listener-BEjWsCNM.js → .setup/active-listener-CDjoX9QR.mjs} +2 -2
- package/dist/{agent-tools-login-B-2qZPzc.js → .setup/agent-tools-login-B6MAs75N.mjs} +2 -2
- package/dist/{approval-handler.runtime-DGJEaoqh.js → .setup/approval-handler.runtime-C0hzmMSj.mjs} +12 -12
- package/dist/{approval-reactions-DSFH6Mtx.js → .setup/approval-reactions-BnXw-UZI.mjs} +13 -13
- package/dist/{auth-store-ZWaclAbd.js → .setup/auth-store-Dh8a3cba.mjs} +5 -5
- package/dist/{channel-CzEIEZqG.js → .setup/channel-CSclZYjU.mjs} +20 -29
- package/dist/{channel-react-action-CHeJSG9F.js → .setup/channel-react-action-1iBiEnq7.mjs} +5 -5
- package/dist/.setup/channel.runtime-ddGY37w8.mjs +16 -0
- package/dist/.setup/channel.setup-CqUl8COe.mjs +5 -0
- package/dist/{connection-controller-DNp6U1NN.js → .setup/connection-controller-C60mU7j7.mjs} +5 -5
- package/dist/{connection-controller-runtime-context-DG0tuYuw.js → .setup/connection-controller-runtime-context-hgLJoRc8.mjs} +1 -1
- package/dist/{directory-config-CoWFw1zn.js → .setup/directory-config-BHPoBklt.mjs} +8 -8
- package/dist/{group-session-key-BmVDSPr1.js → .setup/group-session-key-D22hYMdE.mjs} +5 -5
- package/dist/.setup/legacy-session-surface-api-B2szjq4r.mjs +2 -0
- package/dist/{login-6j2iP9nR.js → .setup/login-2dmd1TfE.mjs} +5 -5
- package/dist/{login-qr-DRFgI6k1.js → .setup/login-qr-CgKtO_ef.mjs} +6 -6
- package/dist/{monitor-DaIAK4fT.js → .setup/monitor-BblvzLpX.mjs} +68 -65
- package/dist/.setup/normalize-DdsROMMa.mjs +2 -0
- package/dist/{normalize-target-CugRyONv.js → .setup/normalize-target-BGra1ZnM.mjs} +8 -30
- package/dist/{question-reactions-bbe0Qnjn.js → .setup/question-reactions-D3Zq9Gbn.mjs} +2 -2
- package/dist/{resolve-outbound-target-1GqbT1uX.js → .setup/resolve-outbound-target-C2eUvsTc.mjs} +1 -1
- package/dist/{send-BDDGPxav.js → .setup/send-C6jDmcL9.mjs} +7 -7
- package/dist/{send-api-C_Zn4Ij-.js → .setup/send-api-B4DOt2RJ.mjs} +7 -7
- package/dist/{session.runtime-Nsqaehbd.js → .setup/session.runtime-DcJuO42v.mjs} +1 -1
- package/dist/{setup-finalize-CZ6fHFFU.js → .setup/setup-finalize-BYEgU0hb.mjs} +6 -6
- package/dist/.setup/setup-plugin-api-CXfU-7vN.mjs +3 -0
- package/dist/{setup-surface-CnK_PPiA.js → .setup/setup-surface-Cd3wN5HD.mjs} +4 -4
- package/dist/{shared-CLKLJLgY.js → .setup/shared-C9OEtKgc.mjs} +47 -50
- package/dist/{socket-close-B3X9uerq.js → .setup/socket-close-CCVSFufF.mjs} +4 -4
- package/dist/{text-runtime-DyfmcATV.js → .setup/text-runtime-CHl0iPYe.mjs} +1 -1
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/agent-tools-api.js +4 -4
- package/dist/api.js +15 -15
- package/dist/auth-presence.js +1 -1
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/contract-api.js +5 -5
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +2 -2
- package/dist/legacy-session-surface-api.js +1 -1
- package/dist/light-runtime-api.js +4 -4
- package/dist/login-qr-runtime.js +1 -1
- package/dist/runtime-api.js +13 -13
- package/dist/runtime-setter-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +3 -2
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/audio-decode/node_modules/@thi.ng/bitstream/README.md +1 -1
- package/node_modules/audio-decode/node_modules/@thi.ng/bitstream/package.json +5 -5
- package/node_modules/audio-decode/node_modules/@thi.ng/errors/README.md +1 -1
- package/node_modules/audio-decode/node_modules/@thi.ng/errors/package.json +5 -5
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/dist/flac-decoder.min.js +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/dist/flac-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/src/FLACDecoder.js +6 -6
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/src/FLACDecoderWebWorker.js +2 -2
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/dist/opus-ml-decoder.min.js +11603 -11540
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/dist/opus-ml-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/src/EmscriptenWasm.js +0 -0
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/types.d.ts +1 -5
- package/node_modules/audio-decode/node_modules/audio-type/audio-type.js +156 -2
- package/node_modules/audio-decode/node_modules/audio-type/package.json +23 -2
- package/node_modules/audio-decode/node_modules/audio-type/readme.md +40 -2
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/README.md +1 -1
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.min.js +3 -3
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.opus-ml.min.js +0 -0
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.opus-ml.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/package.json +8 -8
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/src/OggOpusDecoder.js +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/README.md +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/dist/opus-decoder.min.js +3 -3
- package/node_modules/audio-decode/node_modules/opus-decoder/dist/opus-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/package.json +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/types.d.ts +1 -5
- package/node_modules/baileys/node_modules/protobufjs/README.md +24 -17
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js +124 -14
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js +63 -9
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js +133 -18
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.generated.d.ts +7 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.js +24 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.js +14 -4
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.js +8 -4
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/descriptor.json +20 -1
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/descriptor.proto +14 -1
- package/node_modules/baileys/node_modules/protobufjs/index.d.ts +12 -0
- package/node_modules/baileys/node_modules/protobufjs/package.json +1 -1
- package/node_modules/baileys/node_modules/protobufjs/src/decoder.js +31 -2
- package/node_modules/baileys/node_modules/protobufjs/src/enum.js +10 -0
- package/node_modules/baileys/node_modules/protobufjs/src/object.js +5 -2
- package/node_modules/baileys/node_modules/protobufjs/src/parse.js +9 -4
- package/node_modules/baileys/node_modules/protobufjs/src/reader.js +61 -7
- package/node_modules/baileys/node_modules/protobufjs/src/type.js +10 -0
- package/node_modules/baileys/node_modules/protobufjs/src/wrappers.js +5 -1
- package/node_modules/typebox/build/compile/validator.d.mts +1 -1
- package/node_modules/typebox/build/compile/validator.mjs +1 -1
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
- package/node_modules/typebox/build/format/iri.mjs +5 -1
- package/node_modules/typebox/build/guard/emit.mjs +2 -4
- package/node_modules/typebox/build/guard/guard.mjs +6 -18
- package/node_modules/typebox/build/guard/string.mjs +16 -24
- package/node_modules/typebox/build/schema/build.mjs +2 -2
- package/node_modules/typebox/build/schema/check.mjs +1 -1
- package/node_modules/typebox/build/schema/compile.d.mts +3 -2
- package/node_modules/typebox/build/schema/compile.mjs +8 -8
- package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
- package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
- package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
- package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
- package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
- package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
- package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
- package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
- package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
- package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
- package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
- package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
- package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
- package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
- package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
- package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
- package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
- package/node_modules/typebox/build/schema/errors.d.mts +2 -2
- package/node_modules/typebox/build/schema/errors.mjs +8 -14
- package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
- package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
- package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
- package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
- package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
- package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
- package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
- package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
- package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
- package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
- package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
- package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
- package/node_modules/typebox/build/schema/parse.d.mts +1 -0
- package/node_modules/typebox/build/schema/parse.mjs +10 -5
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
- package/node_modules/typebox/build/schema/schema.d.mts +2 -0
- package/node_modules/typebox/build/schema/schema.mjs +2 -0
- package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
- package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +59 -89
- package/openclaw.plugin.json +11 -2
- package/package.json +7 -5
- package/dist/channel.runtime-BFiZ9WhU.js +0 -55
- package/dist/channel.setup-gIWoRLzt.js +0 -14
- package/dist/normalize-C7Hkc_vE.js +0 -2
- /package/dist/{account-ids-CB5SOWjc.js → .setup/account-ids-CB5SOWjc.mjs} +0 -0
- /package/dist/{audio-preflight.runtime-C_glQhZY.js → .setup/audio-preflight.runtime-C_glQhZY.mjs} +0 -0
- /package/dist/{command-policy-BIOSHySD.js → .setup/command-policy-BIOSHySD.mjs} +0 -0
- /package/dist/{config-schema-BYA6e_Ii.js → .setup/config-schema-BYA6e_Ii.mjs} +0 -0
- /package/dist/{constants-C7m81BNe.js → .setup/constants-C7m81BNe.mjs} +0 -0
- /package/dist/{creds-files-Drg3usj1.js → .setup/creds-files-Drg3usj1.mjs} +0 -0
- /package/dist/{doctor-BPb-SjdE.js → .setup/doctor-BPb-SjdE.mjs} +0 -0
- /package/dist/{group-config-path-BGyzT9Lg.js → .setup/group-config-path-BGyzT9Lg.mjs} +0 -0
- /package/dist/{group-session-contract-DDnZSsJ1.js → .setup/group-session-contract-DDnZSsJ1.mjs} +0 -0
- /package/dist/{reply-resolver.runtime-Ded8D58Y.js → .setup/reply-resolver.runtime-Ded8D58Y.mjs} +0 -0
- /package/dist/{rolldown-runtime-D7D4PA-g.js → .setup/rolldown-runtime-D7D4PA-g.mjs} +0 -0
- /package/dist/{runtime-BLlToOi6.js → .setup/runtime-BLlToOi6.mjs} +0 -0
- /package/dist/{runtime-group-policy-DeSRFXEV.js → .setup/runtime-group-policy-DeSRFXEV.mjs} +0 -0
- /package/dist/{security-contract-nAzD945y.js → .setup/security-contract-nAzD945y.mjs} +0 -0
- /package/dist/{session-contract-DMTm6Q_L.js → .setup/session-contract-DMTm6Q_L.mjs} +0 -0
- /package/dist/{session-errors-JuazczrA.js → .setup/session-errors-JuazczrA.mjs} +0 -0
- /package/dist/{targets-runtime-RBjx3pg_.js → .setup/targets-runtime-RBjx3pg_.mjs} +0 -0
package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ogg-opus-decoder.min.js","mappings":"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","sources":["webpack://ogg-opus-decoder/webpack/universalModuleDefinition","webpack://ogg-opus-decoder/webpack/runtime/load script","webpack://ogg-opus-decoder/../../node_modules/@wasm-audio-decoders/common/src/utilities.js","webpack://ogg-opus-decoder/../../node_modules/@eshaz/web-worker/cjs/browser.js","webpack://ogg-opus-decoder/../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js","webpack://ogg-opus-decoder/../../node_modules/simple-yenc/dist/esm.js","webpack://ogg-opus-decoder/../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js","webpack://ogg-opus-decoder/webpack/bootstrap","webpack://ogg-opus-decoder/webpack/runtime/define property getters","webpack://ogg-opus-decoder/webpack/runtime/ensure chunk","webpack://ogg-opus-decoder/webpack/runtime/get javascript chunk filename","webpack://ogg-opus-decoder/webpack/runtime/global","webpack://ogg-opus-decoder/webpack/runtime/hasOwnProperty shorthand","webpack://ogg-opus-decoder/webpack/runtime/make namespace object","webpack://ogg-opus-decoder/webpack/runtime/publicPath","webpack://ogg-opus-decoder/webpack/runtime/jsonp chunk loading","webpack://ogg-opus-decoder/../opus-decoder/src/EmscriptenWasm.js","webpack://ogg-opus-decoder/../opus-decoder/src/OpusDecoder.js","webpack://ogg-opus-decoder/../opus-decoder/src/OpusDecoderWebWorker.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/constants.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/utilities.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/HeaderCache.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/globals.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/Parser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/containers/Frame.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/CodecFrame.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/metadata/ID3v2.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/CodecHeader.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/mpeg/MPEGHeader.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/mpeg/MPEGFrame.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/mpeg/MPEGParser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/aac/AACHeader.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/aac/AACFrame.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/aac/AACParser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/flac/FLACFrame.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/flac/FLACHeader.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/flac/FLACParser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/containers/ogg/OggPageHeader.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/containers/ogg/OggPage.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/opus/OpusFrame.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/opus/OpusHeader.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/opus/OpusParser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/vorbis/VorbisFrame.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/vorbis/VorbisHeader.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/codecs/vorbis/VorbisParser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/containers/ogg/OggParser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/src/CodecParser.js","webpack://ogg-opus-decoder/../../node_modules/codec-parser/index.js","webpack://ogg-opus-decoder/./src/OggOpusDecoder.js","webpack://ogg-opus-decoder/./src/OggOpusDecoderWebWorker.js","webpack://ogg-opus-decoder/./index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ogg-opus-decoder\"] = factory();\n\telse\n\t\troot[\"ogg-opus-decoder\"] = factory();\n})(this, () => {\nreturn ","var inProgress = {};\nvar dataWebpackPrefix = \"ogg-opus-decoder:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","export const assignNames = (Class, name) => {\n Object.defineProperty(Class, \"name\", { value: name });\n};\n","/**\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nmodule.exports = Worker;","import NodeWorker from \"@eshaz/web-worker\";\nimport WASMAudioDecoderCommon from \"./WASMAudioDecoderCommon.js\";\n\nconst getWorker = () => globalThis.Worker || NodeWorker;\n\nexport default class WASMAudioDecoderWorker extends getWorker() {\n constructor(options, name, Decoder, EmscriptenWASM) {\n if (!WASMAudioDecoderCommon.modules) new WASMAudioDecoderCommon();\n\n let source = WASMAudioDecoderCommon.modules.get(Decoder);\n\n if (!source) {\n let type = \"text/javascript\",\n isNode,\n webworkerSourceCode =\n \"'use strict';\" +\n // dependencies need to be manually resolved when stringifying this function\n `(${((_Decoder, _WASMAudioDecoderCommon, _EmscriptenWASM) => {\n // We're in a Web Worker\n\n // setup Promise that will be resolved once the WebAssembly Module is received\n let decoder,\n moduleResolve,\n modulePromise = new Promise((resolve) => {\n moduleResolve = resolve;\n });\n\n self.onmessage = ({ data: { id, command, data } }) => {\n let messagePromise = modulePromise,\n messagePayload = { id },\n transferList;\n\n if (command === \"init\") {\n Object.defineProperties(_Decoder, {\n WASMAudioDecoderCommon: { value: _WASMAudioDecoderCommon },\n EmscriptenWASM: { value: _EmscriptenWASM },\n module: { value: data.module },\n isWebWorker: { value: true },\n });\n\n decoder = new _Decoder(data.options);\n moduleResolve();\n } else if (command === \"free\") {\n decoder.free();\n } else if (command === \"ready\") {\n messagePromise = messagePromise.then(() => decoder.ready);\n } else if (command === \"reset\") {\n messagePromise = messagePromise.then(() => decoder.reset());\n } else {\n // \"decode\":\n // \"decodeFrame\":\n // \"decodeFrames\":\n Object.assign(\n messagePayload,\n decoder[command](\n // detach buffers\n Array.isArray(data)\n ? data.map((data) => new Uint8Array(data))\n : new Uint8Array(data),\n ),\n );\n // The \"transferList\" parameter transfers ownership of channel data to main thread,\n // which avoids copying memory.\n transferList = messagePayload.channelData\n ? messagePayload.channelData.map((channel) => channel.buffer)\n : [];\n }\n\n messagePromise.then(() =>\n self.postMessage(messagePayload, transferList),\n );\n };\n }).toString()})(${Decoder}, ${WASMAudioDecoderCommon}, ${EmscriptenWASM})`;\n\n try {\n isNode = typeof process.versions.node !== \"undefined\";\n } catch {}\n\n source = isNode\n ? `data:${type};base64,${Buffer.from(webworkerSourceCode).toString(\n \"base64\",\n )}`\n : URL.createObjectURL(new Blob([webworkerSourceCode], { type }));\n\n WASMAudioDecoderCommon.modules.set(Decoder, source);\n }\n\n super(source, { name });\n\n this._id = Number.MIN_SAFE_INTEGER;\n this._enqueuedOperations = new Map();\n\n this.onmessage = ({ data }) => {\n const { id, ...rest } = data;\n this._enqueuedOperations.get(id)(rest);\n this._enqueuedOperations.delete(id);\n };\n\n new EmscriptenWASM(WASMAudioDecoderCommon).getModule().then((module) => {\n this.postToDecoder(\"init\", { module, options });\n });\n }\n\n async postToDecoder(command, data) {\n return new Promise((resolve) => {\n this.postMessage({\n command,\n id: this._id,\n data,\n });\n\n this._enqueuedOperations.set(this._id++, resolve);\n });\n }\n\n get ready() {\n return this.postToDecoder(\"ready\");\n }\n\n async free() {\n await this.postToDecoder(\"free\").finally(() => {\n this.terminate();\n });\n }\n\n async reset() {\n await this.postToDecoder(\"reset\");\n }\n}\n","const t=(t,n=4294967295,e=79764919)=>{const r=new Int32Array(256);let o,s,i,c=n;for(o=0;o<256;o++){for(i=o<<24,s=8;s>0;--s)i=2147483648&i?i<<1^e:i<<1;r[o]=i}for(o=0;o<t.length;o++)c=c<<8^r[255&(c>>24^t[o])];return c},n=t=>{const n=[];for(const e of t){let t=(e+42)%256;0===t||10===t||13===t||61===t?n.push(\"=\"+String.fromCharCode((t+64)%256)):n.push(String.fromCharCode(t))}return n.join(\"\")},e=(n,e=t)=>{const r=t=>new Uint8Array(t.length/2).map(((n,e)=>parseInt(t.substring(2*e,2*(e+1)),16))),o=t=>r(t)[0],s=new Map;[,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(((t,n)=>s.set(t,n)));const i=new Uint8Array(n.length);let c,a,l,f=!1,g=0,h=42,p=n.length>13&&\"dynEncode\"===n.substring(0,9),u=0;p&&(u=11,a=o(n.substring(9,u)),a<=1&&(u+=2,h=o(n.substring(11,u))),1===a&&(u+=8,l=(t=>new DataView(r(t).buffer).getInt32(0,!0))(n.substring(13,u))));const d=256-h;for(let t=u;t<n.length;t++)if(c=n.charCodeAt(t),61!==c||f){if(92===c&&t<n.length-5&&p){const e=n.charCodeAt(t+1);117!==e&&85!==e||(c=parseInt(n.substring(t+2,t+6),16),t+=5)}if(c>255){const t=s.get(c);t&&(c=t+127)}f&&(f=!1,c-=64),i[g++]=c<h&&c>0?c+d:c-h}else f=!0;const m=i.subarray(0,g);if(p&&1===a){const t=e(m);if(t!==l){const n=\"Decode failed crc32 validation\";throw console.error(\"`simple-yenc`\\n\",n+\"\\n\",\"Expected: \"+l+\"; Got: \"+t+\"\\n\",\"Visit https://github.com/eshaz/simple-yenc for more information\"),Error(n)}}return m},r=(n,e='\"',r=t,o)=>{const s=(t,n)=>(t%n+n)%n,i=(t,n)=>n.push(String.fromCharCode(61,(t+64)%256)),c=t=>t.map((t=>t.toString(16).padStart(2,\"0\")));let a,l,f=[],g=1/0,h=Array(256).fill(0);if('\"'===e?(l=[0,8,9,10,11,12,13,34,92,61],a=t=>0===t||8===t||9===t||10===t||11===t||12===t||13===t||34===t||92===t||61===t):\"'\"===e?(l=[0,8,9,10,11,12,13,39,92,61],a=t=>0===t||8===t||9===t||10===t||11===t||12===t||13===t||39===t||92===t||61===t):\"`\"===e&&(l=[13,61,96],f=[7,205,231],a=(t,n)=>13===t||36===t&&123===n||61===t||92===t&&(85===n||117===n)||96===t),void 0===o){o=0;for(let t=0;t<n.length;t++){const e=0|n[t];h[e]++;for(let r=0;r<f.length;r++){const o=f[r];s(e-n[t+1]|0,256)===o&&h[e]++}}for(let t=0;t<256;t++){let n=0;for(let e=0;e<l.length;e++)n+=h[s(l[e]-t,256)];n<g&&(g=n,o=t)}}const p=[\"dynEncode\",\"01\",c([o]),...c((t=>{const n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,t,!0),[...n]})(r(n)))];for(let t=0;t<n.length;t++){const e=(n[t]+o)%256;a(e,(n[t+1]+o)%256)?i(e,p):p.push(String.fromCharCode(e))}return\"\\\\\"===p[p.length-1]&&(p.pop(),i(92,p)),p.join(\"\")},o=t=>t.replace(/[\\\\]/g,\"\\\\\\\\\").replace(/[`]/g,\"\\\\`\").replace(/\\${/g,\"\\\\${\");export{t as crc32,e as decode,r as dynamicEncode,n as encode,o as stringify};\n","import { decode } from \"simple-yenc\";\n\nexport default function WASMAudioDecoderCommon() {\n // setup static methods\n const uint8Array = Uint8Array;\n const float32Array = Float32Array;\n\n if (!WASMAudioDecoderCommon.modules) {\n Object.defineProperties(WASMAudioDecoderCommon, {\n modules: {\n value: new WeakMap(),\n },\n\n setModule: {\n value(Ref, module) {\n WASMAudioDecoderCommon.modules.set(Ref, Promise.resolve(module));\n },\n },\n\n getModule: {\n value(Ref, wasmString) {\n let module = WASMAudioDecoderCommon.modules.get(Ref);\n\n if (!module) {\n if (!wasmString) {\n wasmString = Ref.wasm;\n module = WASMAudioDecoderCommon.inflateDynEncodeString(\n wasmString,\n ).then((data) => WebAssembly.compile(data));\n } else {\n module = WebAssembly.compile(decode(wasmString));\n }\n\n WASMAudioDecoderCommon.modules.set(Ref, module);\n }\n\n return module;\n },\n },\n\n concatFloat32: {\n value(buffers, length) {\n let ret = new float32Array(length),\n i = 0,\n offset = 0;\n\n while (i < buffers.length) {\n ret.set(buffers[i], offset);\n offset += buffers[i++].length;\n }\n\n return ret;\n },\n },\n\n getDecodedAudio: {\n value: (errors, channelData, samplesDecoded, sampleRate, bitDepth) => ({\n errors,\n channelData,\n samplesDecoded,\n sampleRate,\n bitDepth,\n }),\n },\n\n getDecodedAudioMultiChannel: {\n value(\n errors,\n input,\n channelsDecoded,\n samplesDecoded,\n sampleRate,\n bitDepth,\n ) {\n let channelData = [],\n i,\n j;\n\n for (i = 0; i < channelsDecoded; i++) {\n const channel = [];\n for (j = 0; j < input.length; ) channel.push(input[j++][i] || []);\n channelData.push(\n WASMAudioDecoderCommon.concatFloat32(channel, samplesDecoded),\n );\n }\n\n return WASMAudioDecoderCommon.getDecodedAudio(\n errors,\n channelData,\n samplesDecoded,\n sampleRate,\n bitDepth,\n );\n },\n },\n\n /*\n ******************\n * Compression Code\n ******************\n */\n\n inflateDynEncodeString: {\n value(source) {\n source = decode(source);\n\n return new Promise((resolve) => {\n // prettier-ignore\n 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*4U((I-H(H*i0J,^*DH+H-H*I+H,I*4)33H(H*H)^*DH(H+H)^*@H+i§H)i§3æ*).§K(iHI/+§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,hi73H,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ô7H,c)(i)H+i´8W)(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,hi73H-i)J+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)J+i¸7V)(H(H+iø7V)(8(J/H(P*0J+s,hi73H+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(i\u00182J,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*4J1J.U(*H.U((J2i')o5/H.U()I.H,H(^*<H0H1U((H.i0J.i§i0i')o5/H/H.H2J*H(J.q50H,P*0J/H*I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0H(H1U((b((H/i)I/H(i)I(H*i)I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i\b1^*(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\u0018-H(i0c)(H(i*I(4)33iè1i\b1H,i\u0018-iÈ*8)Bi(I(+hH(ido,hH,i\u0018-H(i-c)(H(i*I(4)33iÈ6iè6H,i\u0018-iF8)BiØ1i)b((41-H,i\u0018-H(i/c)(H(i*I(4)3(3(-H,i\u0018-H(i1c)(H(i*I(4)3(3(-H,i\u0018-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\u0018(^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iEr5)H(i©*I1H-i)I0i(i;H.i,J(i(H(i(rCJ(J*H*i;sCI*i¨1I-H(I/+hH/,hH,i\u0018-H-V)(i)H,i+8(c)(H/i)I/H-i*I-H*i)I*4)-H(i)i¨1I/+hH(H*o,hH,i\u0018-H/V)(i)i(c)(H/i*I/H(i)I(4)33i¤I*H,iø-H,i¸)H,i\u0018-i;8)5+H0H1I2i(I-+hH-H2p,hH,H,iP8*J*i(p5-H*i7u,hH,i\u0018-H-i)H*c)(H-i)I-4*3i(I/i+I.i+I(*h*h*hH*i86*(*)3H-m,hi£I*403H-i)H,W)\u0016-I/i*I(4)3i3I.i/I(3H2H,H(8(H.J(H-J.p,hi¢I*4.3H,i\u0018-H-i)I*+hH(,hH*H/c)(H*i*I*H(i)I(4)-H.I-4+3(3(33H,W)\u00181m,hiI*4,3H,iø-H,i¸)H,i\u0018-H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-o5,3H,i\u0018(H,iXH,i\u0018-H1i)H08)J(,hi I*H(i(p5,H0H,V)H,V)o5,3H,H,iPH,iH8+I*4+3(3(3H,i$6i¬78+I*3H*H3m5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i\u00182L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(((«(Ë(ë(\u000b(*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7*S7US0U `;\n\n WASMAudioDecoderCommon.getModule(WASMAudioDecoderCommon, puffString)\n .then((wasm) => WebAssembly.instantiate(wasm, {}))\n .then(({ exports }) => {\n // required for minifiers that mangle the __heap_base property\n const instanceExports = new Map(Object.entries(exports));\n\n const puff = instanceExports.get(\"puff\");\n const memory = instanceExports.get(\"memory\")[\"buffer\"];\n const dataArray = new uint8Array(memory);\n const heapView = new DataView(memory);\n\n let heapPos = instanceExports.get(\"__heap_base\");\n\n // source length\n const sourceLength = source.length;\n const sourceLengthPtr = heapPos;\n heapPos += 4;\n heapView.setInt32(sourceLengthPtr, sourceLength, true);\n\n // source data\n const sourcePtr = heapPos;\n heapPos += sourceLength;\n dataArray.set(source, sourcePtr);\n\n // destination length\n const destLengthPtr = heapPos;\n heapPos += 4;\n heapView.setInt32(\n destLengthPtr,\n dataArray.byteLength - heapPos,\n true,\n );\n\n // destination data fills in the rest of the heap\n puff(heapPos, destLengthPtr, sourcePtr, sourceLengthPtr);\n\n resolve(\n dataArray.slice(\n heapPos,\n heapPos + heapView.getInt32(destLengthPtr, true),\n ),\n );\n });\n });\n },\n },\n });\n }\n\n Object.defineProperty(this, \"wasm\", {\n enumerable: true,\n get: () => this._wasm,\n });\n\n this.getOutputChannels = (outputData, channelsDecoded, samplesDecoded) => {\n let output = [],\n i = 0;\n\n while (i < channelsDecoded)\n output.push(\n outputData.slice(\n i * samplesDecoded,\n i++ * samplesDecoded + samplesDecoded,\n ),\n );\n\n return output;\n };\n\n this.allocateTypedArray = (len, TypedArray, setPointer = true) => {\n const ptr = this._wasm.malloc(TypedArray.BYTES_PER_ELEMENT * len);\n if (setPointer) this._pointers.add(ptr);\n\n return {\n ptr: ptr,\n len: len,\n buf: new TypedArray(this._wasm.HEAP, ptr, len),\n };\n };\n\n this.free = () => {\n this._pointers.forEach((ptr) => {\n this._wasm.free(ptr);\n });\n this._pointers.clear();\n };\n\n this.codeToString = (ptr) => {\n const characters = [],\n heap = new Uint8Array(this._wasm.HEAP);\n for (let character = heap[ptr]; character !== 0; character = heap[++ptr])\n characters.push(character);\n\n return String.fromCharCode.apply(null, characters);\n };\n\n this.addError = (\n errors,\n message,\n frameLength,\n frameNumber,\n inputBytes,\n outputSamples,\n ) => {\n errors.push({\n message: message,\n frameLength: frameLength,\n frameNumber: frameNumber,\n inputBytes: inputBytes,\n outputSamples: outputSamples,\n });\n };\n\n this.instantiate = (_EmscriptenWASM, _module) => {\n if (_module) WASMAudioDecoderCommon.setModule(_EmscriptenWASM, _module);\n this._wasm = new _EmscriptenWASM(WASMAudioDecoderCommon).instantiate();\n this._pointers = new Set();\n\n return this._wasm.ready.then(() => this);\n };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"ogg-opus-decoder.\" + \"opus-ml\" + \".min.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = this[\"webpackChunkogg_opus_decoder\"] = this[\"webpackChunkogg_opus_decoder\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/* **************************************************\n * This file is auto-generated during the build process.\n * Any edits to this file will be overwritten.\n ****************************************************/\n\nexport default function EmscriptenWASM(WASMAudioDecoderCommon) {\n// include: shell_minimal.js\nvar Module = Module;\n\n// Override this function in a --pre-js file to get a signal for when\n// compilation is ready. In that callback, call the function run() to start\n// the program.\nfunction ready() {}\n\n// --pre-jses are emitted after the Module integration code, so that they can\n// refer to Module (if they choose; they can also define Module)\n// include: src/opus-decoder/src/emscripten-pre.js\nModule = {};\n\n// end include: src/opus-decoder/src/emscripten-pre.js\n// end include: shell_minimal.js\n// include: preamble_minimal.js\n/** @param {string|number=} what */ function abort(what) {\n throw what;\n}\n\nvar HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, HEAP64, HEAPU64, wasmMemory;\n\n// include: runtime_shared.js\n// include: runtime_stack_check.js\n// end include: runtime_stack_check.js\n// include: runtime_exceptions.js\n// end include: runtime_exceptions.js\n// include: runtime_debug.js\n// end include: runtime_debug.js\n// include: memoryprofiler.js\n// end include: memoryprofiler.js\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n HEAP64 = new BigInt64Array(b);\n HEAPU64 = new BigUint64Array(b);\n}\n\n// end include: runtime_shared.js\n// end include: preamble_minimal.js\n// Begin JS library code\n/** @noinline */ var base64Decode = b64 => {\n var b1, b2, i = 0, j = 0, bLength = b64.length;\n var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == \"=\") - (b64[bLength - 1] == \"=\"));\n for (;i < bLength; i += 4, j += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];\n output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;\n output[j + 1] = b1 << 4 | b2 >> 2;\n output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];\n }\n return output;\n};\n\nvar __abort_js = () => abort(\"\");\n\nvar __emscripten_runtime_keepalive_clear = () => {};\n\nvar timers = {};\n\nvar callUserCallback = func => func();\n\nvar _emscripten_get_now = () => performance.now();\n\nvar __setitimer_js = (which, timeout_ms) => {\n // First, clear any existing timer.\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n // A timeout of zero simply cancels the current timeout so we have nothing\n // more to do.\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n};\n\nvar _emscripten_math_cos = Math.cos;\n\nvar _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned.\n requestedSize >>>= 0;\n return false;\n};\n\nvar _proc_exit = code => {\n throw `exit(${code})`;\n};\n\n// Precreate a reverse lookup table from chars\n// \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\" back to\n// bytes to make decoding fast.\nfor (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {\n base64ReverseLookup[48 + i] = 52 + i;\n // '0-9'\n base64ReverseLookup[65 + i] = i;\n // 'A-Z'\n base64ReverseLookup[97 + i] = 26 + i;\n}\n\nbase64ReverseLookup[43] = 62;\n\n// '+'\nbase64ReverseLookup[47] = 63;\n\nvar wasmImports = {\n /** @export */ \"d\": __abort_js,\n /** @export */ \"c\": __emscripten_runtime_keepalive_clear,\n /** @export */ \"e\": __setitimer_js,\n /** @export */ \"a\": _emscripten_math_cos,\n /** @export */ \"f\": _emscripten_resize_heap,\n /** @export */ \"b\": _proc_exit\n};\n\nfunction assignWasmExports(wasmExports) {\n _opus_frame_decoder_create = wasmExports[\"i\"];\n _malloc = wasmExports[\"j\"];\n _opus_frame_decode_float_deinterleaved = wasmExports[\"k\"];\n _opus_frame_decoder_destroy = wasmExports[\"l\"];\n _free = wasmExports[\"m\"];\n __emscripten_timeout = wasmExports[\"o\"];\n}\n\nvar _opus_frame_decoder_create, _malloc, _opus_frame_decode_float_deinterleaved, _opus_frame_decoder_destroy, _free, __emscripten_timeout;\n\n// include: postamble_minimal.js\n// === Auto-generated postamble setup entry stuff ===\nfunction initRuntime(wasmExports) {\n // No ATINITS hooks\n wasmExports[\"h\"]();\n}\n\n// Initialize wasm (asynchronous)\nif (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, \"wasm\", {get: () => String.raw`dynEncode013bc58350c1Éð|@|O*X\u0002Ø3R}@³ùÆöÁ\u0016¤½\u0002CuÙFõ\u0012¶=}\u001bVònоÑX³W\u0005\u000e~aGÕ5?\u000bQ= Ú
Î
N= W\f\u000feǸß3í=MÛßÇ\u0002¹HÜjLvïêÀ:\u0002m°¹30>\u0002ÉX!¿b\u000býOýn\n®\u0007Fj{øú¢ç\u001c=}(ÝñÜn moǰ¥àeò?È×µh\n\u0011ØW¨;Ñ aØ\u0005XæU{¤øàÖÕÀì·ÝÌí\u0012ø±tâ\u0017Ôø\u0016eVO÷\u001bPÉ´È~\u0019\u001bÃòs\u001bX1´ÊPyK·ÿKZçµ WÑ¡¡_ dÍí\u0006+]Õ\u0017\u0017~%Yïþîñ \u0004\u001e\u0014¾Ú\u0002·p[òß \u0006¶ó÷y\u001a\u000blhnn\u0013\u0006\u000f«\u0007²\u0006\u0007\u0007ù*¶Ìéñ\u0002®ï(éÇ\u0003ÃRÊ\u001aÆRÌ-¬ÐoÒ\u001a\u0002Ê2z+ä$:ÄsxÏ#Ït!MlBq§%Jè\t®Ä\u00003ó°á¸eÅ_Ö=}i\u0018TÐÍm\u0014o\u0002\u000bðbMpl\u0010\u001e¬EP°e,¼Æju®ix>#}NgdÿÇÄbç9\u001cW\u0006ZÇ·n\\Öá1ÚÈt.ú6bì:û\fào¯ú4\u001fÏø üzå¯#ÆkM#úÿ9\u0013ë:üÒÝ\u0004ëÚà¡d%0ÒekÓ×mðƸ\u0015½ùÿâ¿Ò9\tÄgªÕÂ%ü¸»\tHÁM#Âq\u0012²~èn¯\f\u0011Ûa_9j= ùÿR\u001dèæÊó%M\n¨,Àæq%98\u0013a9%\u0000T2)\u0006´z«9gsÒ\u0003Ö!Zh\u0018RõRÛyÕ²\u0015Ý=M<Öcº\t»~VFÕ\u000fÖx:þrÞ\u0003ðn£x\u0016¦8.è$K9\u0004\u0011þ¹ú\u0016\u0016SnÍ3¦v\u0000
üu\u001eºsÕñ=}1=M5ZʦC\u000e\u0015ÿ\u0002SÉ2×qÒ\u0001«\u0018\u0003\u0001«\u0018Sa»ù±(\u0015¢º]ÀmÍh÷\u0000/¥3\u001a@sns2\u000b\t%7ù-Q|\u0019nÏoöjYÛ]}à2{EBêÎ6>ÁbÄü\u0017\ná,\t[DAÐuùjeND\u000bEëÔà\u0005Zºlq»\u0000J\f\u000f/˲á\u0014jºßCÃÝ1\u000b\u0018b)\u001døtN7Ê=}gÕ®\u0005òÍá§8²\u0000kD\b\u0012ïû¤åÒÅóºc=M²\u0016= aË.ooèf.QZj@bñ>qV©?æ\u0016\u000bxñR\f\u0014ô|_xw\u000bê\f¸÷È¡\u0004\u0002ö\"C¶2\u0017[¼ï¯¸©KmäºúZ
¡\u001c%^°bóþ»-¼Ú¥ZI(pþ
µS%øµã*Ò±8f:t¡éþõz¶<Äfñ*öeP8AÓ¾\u001a/g×\\С\u001a1Ï\"= ¤ûGsW_¹ÔÈX\tTãàuTí\u0014\u0006EK\u0015Püݸ#åB¢ñ\u001b?:µßĬîFI8\u001cQY;X
¶í¦k{|¦éíà/fªi>´EÈ\u0016oK= 6¼lÖr²ÿ*YÇvÄdà\u001aG{Ö,Gz½.gzSdïV%
z¥8¶²bO¡2\\nO\u001f\u000eßV¡S2KçK´UûuÛã~f¾K)ÊÖ#´?#»ÅYXOø\u0007ò TCB}LUk,\u000ekÍ\b)]\u0015íiE^ÿyW)Ê»³= ô\u001d\u00101_½úÌÞÊçýS¡\n»£jÆkh\fÐ1\u0010G\u0010\u0015\u0010<è\u0018^àÙç?
æF¦Ç/\u001bã«Eý6ZI¹tl.\u0015\u0003aëü\u001bl|!&:\u0014\u0012\u0014MÓå?N@øËÅf 6cì$w,3~17\u001cF=M\u001a𸳰aõu\\9æ\u0011k\t\u0000I\u001d&>V®Æ/\u0007\bØa´ %¶¢],ÿ:±wäé\u0002¬áS¥FK±U¢±ÓPóß&\u0003®e\u0014= ÍÍܯ\u000eÏ×À@= Ø#\u0007Ðk[NCó÷ÀÄ\u001fÞ\u001dGQRcnI}\u0011HGñ\u0013\\ç= ö\u0010è^áygyDÔa©D¦
'ߣMߣP\u0011I¯à¨=}\u001e=MUÀ¸çy 9W½L\bí\u0006U·ôzwzÃsÝZòÓ\u00023F¸Áè£\u0016â\u001eÑn\u0006\u000fÕ%Í\u0006¥k
á®=M×GTÀÊøf\u001bëM-UF;u\u0011åÙ#
X#\nn©ï\bÖDÅñ¸q ,Թи;h¿å\u0013\u000fñ#µNÓ÷¸v} *Ϊ_= ãýØb6N=M\u0004H§'®I\u0014u¯7\u00048ªÊÝ#42\u0014p´[/¿E\u0007= =MxåÄV§Ý\u001cm©3\u0014\u0013\u0011?\u0015;bô9fb\u0019÷\u0006Ð'¨ÈIS7ñ\f>¬IÍÜK tçÖJ\t7û6ߥA/|\u0010B\u001cÏ\u0019=Mõ\u0003ªw¿T\u001e¼91ó\u0000íÒèÔ_6\b»\u0005\u0016Âõ\u001c\u0017ªvg2ý\u0014¡õ÷Ò=}\u0005Å3ýXm²¬bÛ}U¬0¸Ük~e\naY¬ÈÛµ¨¢0Nñ\u001b¬t³VÉhÖYvx§\u001a\"Ç5\\\u0001N'ªÂ£æKlÂ\u0010?þ{m¼ôê±ñÔ|Lm¬t\u0007_2%¤E}\u0018Ù>ÎFûalSXø²tRªÀ8\f\u000e¥£Å|ÖW(Ù)\b\\3Úwåì:\u001foíý±Y4ì©géµC³¨Q\\ÍõM\u000fÕ\u0001\n!J½6ë:Ëg\u0000ípoÒ=}I=}ëS¯¸\u001d
\u0002F\u0007=}ÙT\u0016__U¾&\\íÛ ¼Âkg#ú\fÚ¡ÀsÏ\u001d\u000eÔT\u0003\u0002µ³ÑËßxNÉæGç^4Ñ¡%.¦U±O[ø¼4\u0000pͺ\u0010\u00167ÜâªcÔ¦¢:o\u0015u¹8Ìzî\u0006Xf¬56DC´Þ]Ó!=MOÀÕâGÖÓ«0¤¿Å2ú\néη\u0002NóÚÄr_Z)\u00036y&2^F|#²ì3\u00156eòa¦rc\u001fLõ5\u0001Hö<r¼J!í\u0001¼\u001d©D\u000føÓ@\u0015¨åPó\u0010f\u001f\u0000Ñ£®·\u001a§hQ\u000e\u001a®õ\u000b½c±M¥W,ÝàÜ\u0017««¿¢Vmù|\tË·wj$témè±\u0015°&í9yòµfæuC:E@[RX\\.qéuDýé\u0015(iao»]\u001cW5?I!z®¡±âàkËý¼LóFµUM¨cEu\u001e¼üÃFÔ\u0016ì\u0011<@y´Üø\u0016Æ#y«µà\u000bdMå@ÛXüû¼á¾ù[\u0017CHº\u0003À[4ñ5\u0002z:\u0005ÓàV\u0017\u001d[B\u0016Ò/I!ÕÓÂ\u0007Xj\u0003«ýH&o³©sF\u0010Í&-ö«\u00117d\\X#>¦yñÜ\u0015ÃMG\u0003c~#!\u0010T\füt? ªÌ\u0007·«á¨\u0019É»ÕBms¸Û®0úBjÛ(^ÓÅ®¤\u0006ÛF¹Ð\u0011ma)'¨ë(²ÄÞÍm\u0003\u0005²¦á\b¡Bá|%«L¹a\\×Ub= -f\u0011\u0007®¢Ü¢«GÌSÔxÖXc\u0006ÃÈÄh\u0017½4e#\"\u0014'
;P\t>Rõo;%t\u0000ÐC$g%Ä>7\b0* *©cX\u000b!C7yô\u0007îËtO'j?ó\u000e\u0016íÛ\u0002µÁûH= Iró\u0003\u001dÛ= kòw\u0001iJ]\u000f]þßY÷{mûpLÿÊe\u0005L\u0005A¾À <½å
\u0004iWÎ\u0016?o©t¡caâB\u001f¼iBüÛÚ¯:_îOJ7\"\u0017\\¥^EPHQ¼Cõ\u0010 *{ÎÁI\u0015ÅÅ$\u0017ÉVÇbo]XÆs)^H²®wój\u0002Ô\u000fÎE6OÙÿsR\u0019ͨEù\u001b\u001aï¼/²OÉQÿmå«\u0017õØÆ\u0010Za;Ä{ <}¸°Ró=MÖ²ýÜz´|´pµ\u0003Ûá!cï\fÆ,@zÃT«\u001f¶\u001dd\f³åoÙ-KyÁÓ4gß-²ÂxÊØÏ\\@q&}eÔÂè\\ßÍT1Ï\\\u0000kì÷Ú\u0018w
é\\ÀÄ~<à¢e\u0018«4E¡\u0011/«Ä\u0012\baõu½\u0012=}l°ÃNë/Jå\u0012=}ÿ®\u0005!.N8
Ær)H\u0014Ö43¡C3Ôz/N\f\u000f:\nÚ7!Z1Þqö)Mî\u0007\u0012\u0010½%\"O7^+TÉêa\u000eF\u00008øc2ú%ù3}Ô²dU\u0011(³\u0006ÍZű£y¤a\u0007f¿Ï\u0016\u000e][Hþs\u0014\u0015·Ù$EpFæt\u00054¦$Vú\ní!h\u0000ãV53\u0005øKéâ=}Nå22Úú\"A\bÃ5£áª\u00106WÕæYôÈ^ AÜÍ)ýYÌúë¾a0= ºvé\u001bè\u0018:7Mô=MWsE²£\u0006²ÇL¿òÞ²\u000bܳJ+\u0002= 5æ+,>\n¸M÷7jè;/_ý7ãzÈ)D\u001c÷\u001c·Ç4*È#\u0001Ú¹\"ó!z\u00000\tº®µZ*\u0005ìx®\u0005\nR>sÚýP7:\u0003¯\u0005ZZ=M\bÍ
\u000fW²Dê6Ó^Nq= f\u001aÍbN¿VþÒª£;û<cVýîåª6§7dËÃ-²us¶\u0007Ò¹%\u001a·iÄs4òf N
(á¨|õ-\u001eyZ$E)¹ï5¶Wí\u0014]\u0012Q\\·1U9:\u001f[-zQ¼\u0013É7÷\u0011/þiÉõ\t¿«Ob)\u001dIµñ0\n
lÁNpʦË-+Kfø»\ncù@®W¡Y,\u0005îuC6ZK¤éϲµI=}= óáÔÁ4´-õfÔm\u0003õVÛvFÞ\u0000Àç\u000f*=}éåú6³\u000fúÄßy'GD1dÕ±È\"x\u001a^\u0004ù1)DÚ'ö\\©^6§ö_³îªZ|¾S\u0006= @$^*-\u0004\u000f 'ªÈÄb7ÎÜt\u0006\u001a7Z4\u001c©ö§É
\u0016\u0001UhY{ÓÚh£\t±T\u001eÞÁÉýÒR\u001f7Ë\u000e\u000b¡t¨<#Ĩ\u001d¡@EK7\u000eÏb3\u0016Ur\u0006i)åw\u000b=}ø»n#\u0011MMuåÛÄ\t\u0018 ¼ü÷´Ò\u000e\u001euâÆ8¯¬»R6I\u001d\b¡WB\u0005ò\u0013\u0012îtnP=Má-0óà¤ÕÆ+¯KæÛcâÑG½þÛÀFä7\"AT\u0010Máu\u0010+mø\u000b¼?Ó^Ê?Ts÷ÁR7ñ\u0001³!å\u0010ogã\t\u0013_\u0017ËR\u0019ª«J$¼nÇ\th ýõgcíÿ·ÅºÊ§~Ì= @<Ûx¿a\u0006¥L\u001c¦ÃO·\u0014òi½ eû
ÎL~t\u001eÞ/\u0019\u0004'
=M$x@½tZÅYÖ&¼£]6o¹åÛÑvàMfgp£7Ç6ùßk\u0007Ø5i>\u00109àlÊ >Ð7w)ý;³(JKLª.z7\u001aðfê2jÐ\"\u0002£.S\bJ®.çòìV\\3(ÎÍÊt\"´»µ¾¸[\n¸8÷Ê+¶Aú\u000eCñ&\u0014ÿøH]÷\bhl\u0017y^Îàî\f®\u0004ðg\u0017å\u0010A\u00066íKÊ7Ò\u0013äGo¿:\u0018¥G[Åþ\b¡«a¶GÞ¾!â\n=MnB»ªÖ1ÔIZò2\u0015\u0002»Jk\u0019ë\u0006Æwùº\u0001Ã
tª¯xÇ»\u0001×ut#jà:\u0015æîOÒ6P¿èrñË×ôm2¸ÓJ±*h«koâ}îµ»¯£F÷§÷\u001c¸#a\u0014®\u0014Å.ùÌ/³\u00163Ú9VÏ[³\u000722L[\u0010Ó,ö«W\f&$/UVq*\tfÐ;F°®/Ѧ·q\u0018o:SCÚɼñ|¨íu0\b9\u000fé±|\u0011Þ'ÏYÍ. 5Cm;Àúñ=MmW8ÒSM³¦ä\u001bH\u0010\u001fmsA^mÞ¢£Â©}oO21*ÒÃÊ\u000fFbäT~\b¿P'7ÑDØÖ\u001aW®äO{Z»\u0004\fA\u000bØ;\u0013t£82J\u0015b^:®ÇOßv\u0014@r*\u0019o:×>\u0014·ûxGÌt/ë*\u001cF:7ÝÁw\u001ed¾º£D´\u0019{¢= ´¾3E\u0006K·<MÉ¿8ÂìiÔÁ°r6Ö!F{\u001d'H§Ü\ny¢\u0019rÍn(2RæQ{ Û»Ìg{¸\u0000G%~»¥QÜm$BË¡[Ú®j\u0003þXè59[ô\nâRAÁïywìüwrz)\u0014y\u0011hX#p\u001e¼èt!Â1\u0006~^\u000f h6kî\u000f^C\u00196}hpB{\u0011\u000e\u001a£Q5\u0006x¿Á\u0015o\u0012Ð= à £É<ó«\b¡ìè31ÜÌç±\u00193X~:ÚÂS~«3/÷\u0006\u00029ÚJ8Æ~\u0004\u0002\u000f^\\¨ÕÀvÈØýd9zX|ÿ1¨\n= S^bÅ]É:×\u0002l\u0010\u0013÷EÜ1= ¦¼Ê\nT4ÙCé\u0019håìcÅ\u001e\u0013»èZ³}\u0010\u0017!©\u001cð:~^¯ãó*Mï8rÚm}6\u001eS3#\u000b\bùÊ(\u001a%òY\u0014ï¬\u001c%a¶¯N½\u001c\nïõî/Q\t½\u0001É}I£Û£þ×Í\u0014Ltä,QM\u0015ÊÚ0la;\u0015 {Z½¥{é¹3§£:N\u0016j´¸ÆbýÖÜ\u0018ÊÝizeµvýEärìY(£Î£Ô¾oþ39hn,\u001a9øÚ¯úõyä¿Ôb4q\nÏTÊ\u0003î·ÑÚQÆï+zy¥0ob;¢Àï\u0007\u0002üÕçIòõ[\u0017I\"î\u0004Y°âÂp×AÕ\u001d\t\u0019\u0007# \u0013}\u0007êN92Ü\u0013'Ú=}Å®Õà¹Xg[9ÿÐ58¿Cke.ÓÏ\u0017#êzü=}\u0014Ò\bGk\u000fÌ%\u001bÆ\u0017\"èÏ^q±R3\n=}*@\u001aÅ@¹æÛi\u0000r·÷³¸{Ôd\u0005«WÈHÒ=M®Ôææ\u0016a!RqÄ×óÁá¯SÛ®?Ãë\u001fê ¨.ÃW\u0000§r+TSóÛ5_µ®cT8_WqPãtå!Wü= ºmµ¬È\nÒ+Kq¢¢ãgõ ËÁY\u000eb\u0013HG@¡\u001dyt]NÖ¥¼~0X+ûx85&\u0004Bù\u00132×Ûßoç¤A\u0002:$'áôÑÀ9º|:ª °zï:\f$Jo¯«Ë\u0010ÜÛ÷àSWîK5´ÁË\u0015$fÙÓ¨ÃÞ1£L .uïÇ-ê{¹/&êÖV\u001cÆcí[\u0016>£µ\u0014آŵûÈ{\b-VÊm_°S³ò\u000eÀmª\u001aQ©FlaÞñíÏW¬D©lÑñ)ðss½\u0011ÎÿVBt\tLªS+¬KB\\;ªå'þm\u001b\u0007d'=}ÈnÊ\u0018u\u001c&þÚ®4Ps±\u0005ô\u001b°ñZ÷¹(Ìýl\bÜ*M»\u000fN\u0000«Ïö:[Õ.lrP\u0014½0w¬=Mâ×\u0011\u0004sWíQx_ó?CA'\n\bZ\u0014W\u0010-\u0006òª\u001ai±´¥²ÊMZ§æ\u001fd\u000fÀZÐùõ«óZófÉÑü\u0004Ô\u0011è\\rNÀóV6Á\u001a69f\u0011\u0016~6d\u0007OgD\t\u0016п\u001do>é#Y¾u?\u001cØÞØ-Ù±¶WEÂ\u0006\f¯=M\b^\bÏèbȽqÚäqj\u000br½ZmFïâjÊ4áÃ1\u0011\u001bXÒ93OÊ´Yöc\u0005Ûj¥[Èñ£\b\u0016\u000f@!9+ÿI\fübFu#PB©\nD\u0002Ñ\u0019ÌYíuÃàÓ+µ\"\u001a\u00108q1·ìÚ¸óTü-¤\u0010¯ïiõæ)êI÷ïÑýÙ¤£.У\u001dÛ\tP\u001b¬A-|¸\u001aë\u0011u¥ätj \u000eì¬ÔåÔ8O¥\t§IØqÍB¨|D8xò)ºmÕCÚß\u001bÒ\u001ej&çþâ&}D#²\u0005 ½\u000eAf9«\u0013 Û\u001fÐÑ\u001aWï^À\bþ°w4\u001cÌ÷ÿäŦü-yÑïc®Tú÷5\u001cYQp'ùÆ×Íçj1\u0015vaî@;åQÃÀ\u0011~¶´õ|\u001d}ñ\u0011h×ébÔF\u00134\\BÂ\u0016C&\bÿé>S\u0002\u001dB0qç=}¤+«mÜp\u0010®¶-[j7ÈÁ(\u001bbC´=}C\u0013Ѽ\u0014±\u001d§\u0016\u000b\u0000=}Êx±µn!üÍ@je ¾
Új\u0007¯q!R\u0019ó6×üv$2ÐCÿÞ2!ý^o\u0014äuÏtmQ\u0013»ý)ËgÏ_¦npËv\fõâ;þª\u0012«âÍ×;sbû\u000eûoD³auæ³e<=}ÿaS\u0011ªrýô:kû
Üuü>YÃWa³'ÞF{À¼ì\u0000ragï\u0016ÞP-\u000fn£íñN¬X\u001c\u0005ª½\u0012\u0014Z43\u0005<yþ²]¡a®\u0004ã\bK[³'·\th~ÚW\u001f6\u0017xòv2ß:.\u0014Y¢v\u0010Ð|°3_+Æ×@8±+p e+©Æû\f\u0007|Ã\\\u000f|.\tg\u0000è+âT%ç#0ÃêÛ|ò4Õ®ü= \u00136©Q?\u001aоô\u0016=}Vnq\u001bæ
ö«
ø{ÕÝ£y\"ërk\u001bÜn§ÛVK\u000bý¯\u0011«¼2Ìäí½÷\u000eÁ_9¸O$6GÌljÜÁªYý»ï\u001c#ç[Þ&0¸5á# p\u001d*zÄɦ/¦\u0000ßõè{»\u0017ú-%Ç\u000b.¥\f\t×¾A?Ñ¥m0!{eõR,nÖ°\u0007 íe .Ë= \\pÈ\u0011Þ=}4½²N\\xÏnYÏÁÏ®»Ö½T¡Ðº.\u0006^¿\u001cèÝÛ\u0012.@¸u9¼pÖ\u0005Z\u001e¹\u0001ÞÐ\böxjC%fÚ\u0004\u000el1\t\u0012÷þ\b¬Ñ\u0010\u0013q
â|Tí*mc~\u001b\n4:íd;8Å\"7Jî^\u0010óðP<ª4\fïî\u0003rض\u0015gc\n\nm©°áÔ
\u0000ßjf+áÁC\u0003®êA\u0004ª\u0003iO!Ðp8!1ÇÒë-Jö9Õp+mz¸
K#\u001b\u0005ôxpGS øQ\u0018P@c1)Ó\t¢_·\u0015=}\u001cºøÁ9VÙ£\u0010ÞþôbF0C±ózHþ\u001f,\tÏÊ\u0019?d\u0007\u001fgºPÙ6\tìÒ
òÐMþz²ÓR½7d\u0004~t¾\u0003óÍw¼äN×3\u0002\u0005lVªk\t·6O\u0019@*%1ð®Ðùã͸\u001diæhÔ3é6度\u0005ªÐN:A6xðéÝË \u001f=}¾\u0012\\&¿§\u001cß<\u0006Í=MS¼Ê¬ü8\u0014â÷/\u001aÞä:ô*4Äê¯b(çi@ñ¼(|\u0001«¥M$.\u000f'i3ÖL>\\#qkºýþé;3éy\u000fM)\"N\u0016\\>'?9.Û6c7s\u0018íÒÛ)°tU9QA5zòfvèð.+þèÃÐg?\u001a»|îb$±)|9äáàgJ
aJù[\u0014ÿh:©rÎxò¼
ÿ* h5z\u0018«Å\u0002\u0001ضKÚÛ¯èß«Àú\u001a½¾]\u0011½í\u0011DØ\u001aÙ¼\u0016mñx½E¯T£E·*%eúÙ=}å>òGG7Õ.ì(ö\u001e\u0005,(lÙ\u0006³¶°çÿßr\u0014ê§@óOcZßë\u0013Ï/m|Ñ4Jô-@dbº\u0010X
þx.I*çÃ3\u001eéÙx9dÚ*zQÙP;Ò\u0016önk·µ×ú¤\u0001îB@ÇW[3îÉ\"\u001aLhó Y[\"\u0005nÌH\u00158<\u001e^\u000e\u0000¬ =}µ«|ͱ^·+¤\u0018¬Å/3h\u0016^\u0014Ó\u001dìçç» \u0002*ãöø\u00115a¿3uýñÌ0 |jWp.mÞ.MÉÅw*iìe\u0019|î¼ÂSÈÊ\u0019WÒ£éÜ
L\u001cbé4^\u0012&©SÉ«°çnx¨JgÄ9°\u0019X\u0014Xî\u0005=MñÒ?Ñ¢öN\u0011¿= \nA\u0018èWÜ õ\u001fþ5¿\u0004\u0018¡~ì \"3\u0006nßÐ׿\u0012â¨Bª3ÎNdÖb(,\u000e,âÿé®wä¨\u0004Â[ þ4þè|Çaán?C¦°¼è\u001f{Üsîb>\u001cûåxmîNúÿZ\"\u001bLß+û= ÞßO
üwí·¨î®Ü_Rä± \\Õì±g?Òst¢ÌcÂÉ\u0017,ÊE9<{{ì20Jù\u000bl{JDE¯= JõËaÿôÀbàè\u0013\u001f±Ô¥hV>¡\u000b%á:Ưî\u0012È%E\u001d3\u0015-8\u0015ð\u000b= öüö\u0001\u0001n\u0002Ñ[Q_fT\u001cpEFc½´Ç\u0012Öýc§PÄOOdâ\u0003\u000b+IÒR%Ï\u001f7\t\u0017¦\u0001Ãe¬\u001cô®9¢2Ù*4\n\u0007\u0014E\u0016òCñÔ·T¦aG¯a*1HOX\u0003®Ï=}J¦¿JæÂ m¯J1«uð¦JJw\u0007\u0014\nÄtÌñVÔkMqÛÄ=MTÏ&ïÌ\u0019Ò9}¨\u0014ânzìrµ³¤\u0002ñæ4lÔ=MÎ7l¾É-¿oÐwà\u001câf\u0012¯RìàÅ\u0013\u000fXÿbÃfõÈS$y\u001d^x{\u000fu=M~ÿõ\tK¸x}ϵRÌ&¸ÿÕ\tLæ5;\f\u000e¬©\u001fܤ{³«\u001e0{ÿ¹g«êD¾ÓWFäQ ù\u0011]±\u0016koÊ\u0018BÖUÁ!ìörH~.\u0013L\u0013Hþ\u000bwq>\u0016nG\bÂSÕ\u0002áÁÜ´';§§SÕþïM]Ê\"p'ÚÅÞ«äÕãZöê\u0014Aè(¦\u000b7fa&ÁÜ´§BçoG\bEñ¡SÕ\u0002±üµÁÜ£1;Þ.t±a\u0018\u001fJ\fö\u001cL\u001b\u001f¥o:]ô\u0002áÉÊ\"\u0017¨ªh\u000eì*GÑ=} 1\u0006\u0005Ù\u0001BW'(\u0014ßk{T\u0002\u0014\u0003\u0003ξ!ñ\fi2k˼´wô\u0003|&¤Õ\u001dê·\u000e,Ú=M¡oV¡î|8H\u001e\u0001ÔùK$¥J(mËß\u0011ÝïOís¹Cÿ½a\u000eu^<ï£Édó/%í²Ýá'\u001a\u0003_dKÉ;æó}\u0000:5®Ì\u0017\u0016\u001c\u0017?9ÈdÒ¯Gúa\u0003}{=}¡bG2\u00123bØ26Þpâë@QÃÞoÜ«\u0011í¸Äî5
ß:\u001b¶9¹4¨·ó5}A·~¯m¥©ªs{?\u0019ÓüôZ3rèzÔUª¬<ur¥}uµmT\u0005{~\u001fc3!ºù(h$ÙÄ5!8\u0006Ýö¨\bç½ý½lÇ·\u001dü^VfÉ£i§\u0017³væ·3Bm;«\u0012ä³ã\u0019VÁ\u0007©Òò\"³ñë\u0014íëß\u000f\u0018§T
¬ý¦C\u0017ÝH\u0019éôtàÔ1¦<¦e¶\\qÚ$92¦>-oO\n!ú)h;qS£Ç@²äÃÔw\u0005×Õê99©\f¯Oñ\u0016^á|mæé4´áíiñ\u0007I¥\\¼)±Ù=MÛȦcîõy4~1u\u001fh\\é=Mò\u001eðs=MËh笹ç ¥\f\u0016\u0019Ò$IºQfK·|ëpÆ©{Ù3?ñê\u001d\u0001ÑKòV¨ôÿ½\u000eªÝyÎ'¯4oôØäï§cX\u0015\u000bfy¬q: <|µ
ÿ9\u000e$\u0005\u0018\u00149jÒ[\u001aÙÌc\u0004#KHÜL4&g\u0015|ÎÝ&\u0019°¥ô££Öþ(µØ\u00182u3:\u0012¾Jpt\u0011j\u0013b^/X8½Þñ!°.^Î97ÚØ\túÉcDÉ\u0013\u0019P0ó\u000b\u0006ï\u0001>Ì~y5ïÍ{ÿgµ\u0019'Næ¤ö¾\b+ÙÊ\b\u0002\u0006îiìüXRjàF1Ïñ*\n>>¦s'ÉØð§ãñ¥A<uÍ'XV
÷\u001bFd}^ÿÑILÖÓ\u000bA\u001dÅÉL^P?Y©Oð)]i$pÿõ\u0019}/Là)[Øk¹Vìå6ÃÙYï0Iß#³{\u001cÇ(ù*1$\u0007q?àôb;Mì\u0016ÁÜ´§=}qpG\bvrH~.Ó½\u0018kG\bòû1G~.\u0013pklG\böÁÜ´'u\u0013\u0013ko¤\\sñn\u001e}}\u0000Ì_ÜhùåÌ7\u0015oʨ»èVÁ!ì\u0006à£YV½èTÁ!ìL\nkïF\b1ãËÝ\u001e}ô\u001fÉFàß2¸½ò¿áW±RÄËÐðãó¾!òýù©\u0001\nN~%sL¬cv®)iUïJ«]R¸yJr\\xÿ\bö\u0004\\P¸i¯e¿)Jß\u0016ÌÂM§ÈñI\nLUz¦\n1µØ,5ôq,:\nE\bC0P$Î\u0002¸>Â쥪+8\u000eÌÀ\u0010\u0011]R\u0003\u001fPļ£cÎü´éÿôÚ\u0018\u001cÄ\u001f\u0003î\u0004?sÜ$ÿÆSÇDô¸]O\u0013\u0000yÎ-j¦*<a\u0002¬ßıÔ)é)%ÙéT\u0007GB\u000e>]åC½;DbM_ìOÎOCKà»O c\u0018è\f¸\u0018~)½=}4׫گÙ2=}!÷\u001e´âø\u0006®&Òsªï6³ªh\n¶**\u00118º7¨;Çÿ2Ù»ªõef^n^n^^n^^^y iµ\u0004ÔÙ÷Ä>ÍÒ<.ø\u0003²±,\bÀ6<\n.V\u0005RF\té ü\u0014Ï@¢®gsÖí\u001b'UQ×tF\t×@¢¼@¢QÜÂûd±ûxªÐ\tÉäH\u001f§¸Ú+\nÍuBý*\n¬E¤´a#±¯uÌy\u0014ÊQåÑÏzâØåj¨sPðÉðn±\u0000Õ¼£ááH¬óGsz¶5$>àAÆb\u0011T§¸ß\bäÓB\u0002÷ûÀ\u001cË
{³á
½À\u00195ÍÞæÓ\u0006«Éz5%Úþ±c
*|ð)o÷ ·\u0006Kôàþÿ~\u001eÙc0>ãvP«A°\u0000K8·\u0014¡¹ÚªÑÖ·ù\u0011gÆwÆ\u0010Æ®\u0005,céuÎæ\u0016\u000e´ò'ü\nÈeÚð\u0011?e\u001cnojÉGþ\u001f±â\u0015\u0012RÙòõòõ\u000b1\u0007~%îPozá>zwVÊuR\u0004 âÞR[¯\u0011\u0010¥J%ÕS\u0000æW\u0015T_Ñ7ËWø1*¡=MÀYµ:¥ðZ·üø\u0000¦Âõ3JÂ5ýü¤Füº\u0015QÒªÖ\f\u0017\u0000êBvQ\u0013\u001aT²ç)Û\n%\u001fçI¯\u0001«ù\nõç\u0011°|Õ\tïiÛ
ê~b\u000f¼ZQ&ûÕN²ù\u0017C²(^Äv\u001a¥\u0017Äëk\n§.øÇü\n\u0019Ð|Q= á&\t\u0002!I$\u0015±bö½Âí\u001e9îmÔ ¶IyÖg×!ļi\u001d^(¬³ó\u0019\u0004x}5'&¶\u00102ÎgL~à\"ÙÏã^ðãD~aíBÄø\u000f\u000bãS þ\u0014<@4¥è»\u001d
i\bäb#ïèUÑUhèÏ\bìªL[ÙQ]©â_Hi_¾°Yîµ7vn¶ieÕØÈF\u0006\u0014³Ê\u0002å,èt\u0012\u0011KýKÉýBS&\u0015Ø\u0010Åw»0¤Èlû\u0013ͼl£\u0012[= ø5»\u0017]a8bÈUÎ-,zDÜ«dÏäsQ\n¹.Ý\u001dõã¡c
\u001do$'ð§ éÞT-¦æm&Ã\u0006±äÄ1ÊÉLC|(\u000e$àÛCسW/¸â\u000bÉÇ@â\u0018A\u0001tVb¸5À\u001c\nÝ%Ë\u0019Þ\u0005ËѼjÀß¶ÛN¿\u001d2\u0013â\u001baä_oÃ\u000f'°^ÓåÞ\u0005p\u0012\u0006òÏÏ\u001aý\u0003óJHð¨\u00156ñ\u0000 \u0012â×xà»öX5¯\u0018;|J Ⱥ©\u0015(SèþóMZìÞ+à#\u000e·7¼£\u000fW»©6zª\u0000¯w±ÆAHcËæï\u0007øÝÈÐF[\u0006þ\u0017\\
Wñ£Ò¨Éýóª<D éä;$\u0014-=MõmN·ç\u0003eF\u000b\u0010\u0015³ï²½öaÎX´.&ICÃ~üK NßÚÉXKèa2C[ñ\u0011ëÇ\u0014Y³Ì\u0001\u001eø\u0013öµÀvÞ\u0011ÿRë\u0007>S\u0003J®sºîÜwûöHÞ [8Y/£ä2\u0007ϾÖr÷2ûFI÷@+\u0013óWg#7,åûd¨×\u001fÞyµOÊ wë\u0016¾B-~ö×/X3Íè|êÊ\u0011¹\"Ê.A\t¦\fó\u0003\u000böDYêÖD\u001a\u0000J»5èI0*U»}:]\u000e\\X\u001b]*»>Béúûücv= }#å\nâË\u001aª27\u0019,7]òÛ¼ìñýWÅ8'¼\fê\u001ce\u001c~»7¿ªFËruÃâWë\t\u001f\u001cÄ«=M= ÄÏÓXI\u0012óoN8->Y/~6H_Ð¥Ä\t¬ª¢c]d)Málúr57§k\u000f~¼÷aÃ\u0006ÍL}WE;ÄÛG~Mê\u0005榷Å'D\u0011^ñ<zJµ,ÂÅ8ùÈ©^ζËõihê\u0010?´à¿åh÷÷\u0018\bD3Ô2ëhð\"èç°í½0°§Ä ëPHà:Yj\u0018uû])²®\u000bØXÞÉ\u0018ç]Üiù±Zp}ZL¾r\nIñ>\u0001ßv\u001f¼>O¡W}kbêîô¡A\u0016IزuïÖãíå¢Úpv¿!\u001b_ÿA¬¡!ò\u0012Ë\u001851\u0013@\u001f\u0014B¯~¨\u0015QÂ\u000fQ¦G<ÜclHôµÓÊ\u0016¶=}©T¬3*ÂDà\"ÃsI&\u000e=Mî¦
ª\u0011 p\"E\u0006éj\u0007Ê\u0016;ÑÂ}¾¯,¶.\fÞ¦ò\u001aò¸C!^\u000bkLØJ\u001c.Ð%~Á:ʹ\u0006:xJ'wµ+\u0010z³TÊ%\tÂ+\u00136zjx¯4ÂgU\u0018¯¬ç¨\u001fÀZdútÚ=M¯^U¦\u0015rNP\u0014ÔæO£Eî\u001dÖ÷i§Â*ÄZþ^í¿\u0012Þ£|þ\u001b\u001eÁ|:y&{6g(<«K-Y®ûðz©m\u0011-zQD¢ÄÃÅls(Ù$ÅK-\u0014ë3\u000eÎe´Ô\u0000j\u000b-\u000b¼\u0015µËüÍTIT\u0002Ð)¡âZWäVëã\u0013>Ûß#Ü\u0003\u001f\u001dÆo3<= 2Ó£¬è\tZt\u0001Ft\u0001\u0005Lüªó#Å\tCt-é\u001f>¯¤\bË$¿ªBex ¦\f£õÌ!Ég\u0014©åïÍB~Å4\u0016¬\u000f}ÊÕåÄ\u0016Ñc\f©þ{¢Æ\u0017TêU!Ò,Ph}ä~\u000e\u001dô\u0016çé\u000fU©h½Ð=}_0©ïþFn£k¨ÓýVFéýïc=M\u000e\u0001áv-÷\u0012Vn= v\u001c¹Å\u001eg͸^*5Ý$¯\u0012rÜ\u000bÞ\u001cRÄK&ÊfíåÃKÈÄA¦\bò¯9iië:Ù0´\u0017\u0000\b.V\u0000\ff$= ¥í\u0011. òùØË\u001fM\u0017IÆ«¦Ëý0ËõW6õ\t8\u000bI¹]&kóNgì3Û¶\u0011M\u0011\u0012²«hc.ùN\u0014= TF%É1=}Ô;ñ_Öº6@Z² î\u0019ë\u0002\u0013¤pò6]©rcº\u0014\u0017a¼o2ç¶á¡YçdḎH×6íãí/\u000e\u001bf¹°\u000fÖ#͹G=}\u001cˬ\u000bQ°Åwõ \bùYY$waì\u0000ÿ¿³\u000bħ\u0014ß³\u001fº¸xù4ÐøÒ¯)Ãé*-±\u000bøÐVö\u0014F\u0001é\u0015ñ#ðj^´¬N Ã{\u0006þ0ø´-\u001dvHDå)LN¡ñ2¿ÇIܪZ{\u000fÑ ë:B6ßè>Ø=}ðaÃcJ-Á_ëâÀïþÇðï\u000bð^¿åN]ÆX¦-Ô¼^&¢\u0002j\u0015~óFÅÜSÕß¼l\u0001 bR»BØöÂÍ^<p$k(kCÚç§=d{()ÌJýv\\ e*XÉ!¢)XÂ[¿ëö Êü¢JãÛW=}\u0011±«öuï^TÔ\u0005â«9¹O$ßÖY°LtZØ= qåN2U\u0006Ô}îÓÆ\u0017¯\u001b¼Éà mÉM1g%²½£\u0018\bhÅq]\u001d÷h¨oÊ$\u0016¼e\u001e>B\u0003¥]e^Ñ'Q\u001fÿL= ó¤J¨yÉ\u0014 \u0015õ<ÛJDá\u0010hG\u0000³d[bñz-\u0004w\u0002WªxýÙcö
c\u0002ÎPÆx|«AXÚÎÉRLæ\u0011\u00113c\u0014Á+ôä\\0Wyâ?î@·\u0015aº3\u0017z\u0000¦Å\u0014Áp³\u0019\f=}\"\t \u0011Ë= \u0000\u0017L\u00140¨\u0019ÝK¶Úõ\u0018p\u0015\u0013i¬Y{\u0004\u001a¸\u0011#ø³[¯zãBw¿øØ\"å\u001d³ò\u0016\f(mpß³=MI\b-Ûp´\u000b6\u0002\u0016\u001f9¬°Â\u0007e\u0018<JíªíXy\u0004¶)k\u001aô0\u000f¦8\u0006\u0010»ýmIó%SÑ'Ov³]ó§\u0002S|M\tòs\u0000z\t\nËÁ..#ç\u0014¬A\u0012<ð<£ãOà'\u0015Ü\\ò§\"
\u0010ù\u0007xÓh*\u0013ÅPC~\nÒá\u0011(a?-\u0006\u0010ÍJtUÿU?
=}ó\u000e\nl\u0019Öö\u001da\u0003ß.\u0007Êl.f#þxñü÷D²WdÀ\u0002Tæ7ÔÁ'r¬\u0003Yï6\u0001£ëö&©ðÎ'ìÎð\u00159(G\u0018©òä:·kãúñêU\u000fà\u0015s\u0004±=}àÛ¢Ud¸\f!;PN4RÝõ \u0006\u0010E\u001bKå¦\u0013í¥ë iuõ½ï\u000eÕ©?sx&ÌËjï=MÍè£Ï\u0000zÞ|\u0010\\Ùâü%Ó§¿Ííà±Ço³×Op\b{v\u0002µ²Ä=}Å/Q£Ig&[UèY}oòÄ\u0011©.¥>½ö\bÔ½ÃdRN:Î]\båjW'ÃYÒàßEqJòuJtBéd\u0017IvR\u001f\u0010ñy\u0003ÂÖe?í\u0006b{ælWÆû°uÙ3-ÇQîfSÿK²sÉÃ$\u0014mm!¼MTª(·\u0001Û-Cß?-\\HXÚ=M\u000b\\é¤JÜô¦5ta,\u0007}\u0016Z\u0012±Í¨JÃÑX¢\u0016\u001a\u001c¨ÀÌ\u0016ÝÈFk@ª)\u0016\fÄK®YvÄ}<h%&³ÀCn¶ØEß\u0019#êöp»n\u0001¬\u000fÉäNÓ²WA>t@f½l\boso{'\u0019òÉηøð§Å\u0017¶=}ÊûN
J%ú/\u0003%:pû¹\u000e=}'µ»\u0018K'@'! åj1l?3XF\u001b<·Úå¯nûܹ\u0003jA\u0013ÎFë »è®ò;1û Ç÷k{óv\u0019îæ\u001fu{°\bq±û\u0011L \u001bW\u0015ùXö\u0014ñKnî¥\u0002©ìM¼0\u0006ügUi©X²\u0002{¶vÒü\u001cË\u0002uÜ| XkÛÆmø÷a\u0005f?÷\u001b°\u0016ªBé¶@G\u0010#f\u0010ç¶ÛêHßQ\u0014¨\u0015õÒ±Ëà¤\u0014\u001cà0§H¿ÊÑÌç* WyTf|éw¼½2=}®\n ÅÃÔn\u0019VãoM+¨±fZò\u0015|ws´+\fçÄ6Kd3\bJÊl¯\u0007Éf¯}\u0001ï\u0003Ä\u0018^̸¸8'Ãx[V ¦õ\u001eÉ&+Ó\u0006\\ÚÜ]©ÃIÄ\u0013^©u]3v'?ê\u0005IÁpSy\u001em\u000fÒÙQ#Â\u00037sæ¿¿ÕÞýèIt£\u00011ªÔ=}Xàv\u0007$Õ\u001an¬Æþç-\u001cµ,Qñ*\u000eÀ·7w\u000bʾä
û¤z°á×K¬¿ÐtÝpWÌÄÌÂT óBGJ¦XÄÐÃkÜ\u0005\u001d^é\btpï\u00003·M\u0002êo¤\"Æ\u001d»(Ä~jr¦æàè¨G\bñNß(1.©\u001ai\u0002õË=M©ÁuµSKù\u001d¹ãÝÐ
~ä¹s;\u001e©êѤ\u0000rw¶O«m¾ùé\u001cÜ¡\u0004Ú¢ÒÌ'\"°3³ÿM{v*W¸\u001c¶]\u0014¿ÿôè\u0002xBÖÛO ï= \u0005;n¹Îf;7:ÝÇ1½cÞ¾\u0019\u001c¼W+Ã3¸)\u0007ÿRHñ¢ÞÙ\u0010ô¢¨\u0018çt[¥Æa£h\u0011ìl,\u0019 ~Ë\u001eäÔ\n7ª=Mû-ÅàêÒx\u0005ýað!g\u001eG\u001cÃÿ³Ë_½)ýÚÅÜ %#ay!WÔxÀÀ\u0015ÝåTíϤ¹®ø;(gU¥´\u0014(ØMȲ:gªýü(Ï0BÝc\u0017×éË\u001b@\u0015¹\u0013¦jÎoy쯶'½a>õiKÂÓ÷Åc$ÃãöËûÏy_UÏwø{ÿm«9\u0000?\u0010\f\u0010cÞT#M\u001dê8=}¶Pôì_#µýì7¼c%?gÎ\u0000}Õ\u0015üéÖÿ\u0015mNÐ\u0004iF(ã\u000bq
ç\u0015oxh>\u0014Nä«Ï¤&È\u001bkûÈ´\u0002í
´¿ªÕn?èÀ²ÆÿÔxoÚi÷ÃÚ\n]Ø;$3DƼâW2ÚÝ= ÃBdQ}ø
±W¢Ü\u0019\u000b\u0000ZUNשð´rr+ËÏ\u0015²º$)¨à>ê=M&Èt¬\u001dË,º/ê\u0016|ÈÇ*½U®\u0013î*¤ïßÚ=Má!$9\u00062Õá\u001evJ\u0002\u0010\u000fä\n°\u001d\u0004ò5gqa:\u001f#D\u00138\b¹ÈXq\u0015øë±Ã:°:ô>+K¨U°*\u000bYnçÑ\b\u001c:32ùuÀ\"öë%KæP¯]v\u001b\u0007Î%¥§\u001aÑ×@üþ±Y×Òd\f!ÀÚ_¨éH8ÄgÖíÙ\u0005«´\u001däñ«TÀW4*
½\u0017\n4G\u0018?ÊRÛÁ[ý©L@§÷MyjÐÎôzG{¯ZÏB¼[UGjmGÑÛcKÔÜýH¢>Qì\"^Ý,XÇÈ\u001f~ÿ[ ÷\u0005âÑÔ«Gï/ò[3Ëm<¡IS?º\f+R|+¾í½ú¯e3Æ¡½úC½z\u0001\u0002Çê@ºÌM7ôx÷cC9µAç_3ÎRÉ]ÃÊÃ}üò¦?ºD9^\u001dzÎq\u0001ü\u0017:s2\u0015k½¸|9½¨´\u001ex!{hÔ\u0011\u0012_\u000eiû7-w\u0000ýsÅõ»zz¼S R÷-²ma½üDy~½E\n\u000eY¶:qgWýURDÏjr¥ú>ÏüP²¨!ê=Mº_¦æk\u0007Ï\u0004צÏçØmx\t\u001e,1\u000f7Jds!¥á¨mòmý\u0004}ÉÍêÙzZïT\u0010ò%¼ \u0001óõÓµÁQ9Ôõ= §òUB~Üáìsæi_\b.zWb$fc+îÏ$vD3ôì\ti3u\tz?ªD/9k¹.r¬ó)£êðY8\u0004ü¸£\"BÆÁ£Ô¹Ëd¬jhôc¬¡GÐ×5u³Ð5è\\é4\u0013-\u0016\u0018ÊsàlT2ºá¥øÉÜ\u00196n6°Þbpw !×^ßdeÛ,cg rääÃqÈ\u0000\u0019·1¤\u001fÅ^\u0000\u0019o8\u0000\u001c®â\u0013¦dæWÂßTÎaF1sºíD¶×ø¯\nZ\"Ü\u001c/èïúÝ aè}Ååãòl\u0003êÉA\u0001îÄ<óª}V=MbÏ>OÉl¥+ì'U¢ø¨\u0007Ѻ?ùZ\u0013¦ï³»ºÛI©³+ÈuóÒ
ÿ1,Ü머Ç\nY\u0005=}Dµ\u0004¤ç:¥\u000eáTdL÷Ï ï¢ G4¨\u0001Q¾îm1ü\u0001-ô\u0006îûYV\u0007=}æñoF§É·mO¯¯tÞx= \u001b¥(
ôÙ¸\tðXå©Ü5XF!m\u0007ã^½
³\u0018\u0006'5ÁïF×¼\u0016å×eÂc\u0001kyß<\u0013QÞ,h\u0000òo·\u0016âªãÁêº4\f:¬kçÑÖñÂãNP\u000e\u001c»QÑ\u0011 Xy°(\u0002\u000b¯°\u0012ºm\u0012ö8tb[°
rH]\u001f=}d\u001e^ØKäà=M\u000b§¾Ûä\u0011~RîûYpã\u0000¥\u0006A©ð©qpµ\u0010î\f3\u0005 (bèÜÿÜùêfÝÌ®F°I0H\u001bê²\u001d'/e\b¶\u0001éàÞ,Q:À)#Èi=}\u0000$\\Ê\\ÿù]\u001aÌ\u001d<ÒþMÆ\u0006¢$¤ü\u0005o1X¿÷9ÇHLlÑkÑÌØª6uG\u0012¶>²ÏäTÝñ\u001cvÔ\u001bÀwRa\u0005]÷p\u0017x\u0015Z\u001bì¹\u0007ð>ëê¤÷ü= ÌJvÚ¬Ø\fA\u0006ÄáÝfçë]þú·ÚÇVêym3pÊÚÀD\u0014zÇ=}U\u0007\"¾îÇÐhP8˹\u000f\u001a\tr8_ûL\u000f.ÕìÑ^ªÐ%\t¹ò쥿4L[ùÉcÛí8Ä@Ðhå1Hå\u0012ãYf¡hê6&ÈÔ¹~åAÇ\u0016ÿ¶ìï\u0018\u0006½,iu¸+{\nÛ\u001b0Çó\u001dæ8ÕãѨz3z?Nýhg1ç^7\u0010È·= \\\u0003ØwaV5\u0012QÅ¥FöÒÂÇ©Q'³%cog\u000e\u0004ßgÓºÂò\u00138_\u0017uÚ\u001c
ó.ĹS¥©\u001e*¬h´þ¯¬\u0007²v2z-Æw\f&[ÿbIû^\u0013>;?\u0011ùΫ«nTjÅJ\u000fÑQëóÈãÖ_öÔH\u001deÞ\u0013®\u0006ËtǤSÂ\u0007pnáøó¿ÌuµØ~\u0010YPL½y4æÑ;!:«¸-ô\"\u0005=}Ò\u0019±§»\u0013\u0012X\u0000¨Ýñ¡Ì§>\u0001Uâ\u001e\u001d>Yã\b¾\"çaFfe´·6e.Ã\u000e$NÉÔÃ_ü÷ÛßË:ücó'¬ð[øé.à\u000eú/hè#Nyq\u0001*¢½ûÀá\u0019ͦ\u0019Bq!9
;ög\u0002MgùÊ«®ºÊ$£ûÌ̤K[Ïnv(ó\u0001$±ã\u0007âÉÏ-\nú{ÂÅ,<ÊT8ö\u0016¤ê}æõq¤!aü:ʨÔû\\¹\u001fI}ë\u0004T5Æ\\Ïiÿ0Q\u001dEïµ*ñ\u0014Kh7b¾g\u0015æ'ÐÂ\u000ed\u001f\u001e[§h\u0011sYàm£¹\u0010KP®\u0003pýîöñ輸[u/Ú¸= \u0015Y6 ÀYu÷²ÖÖ\b]r[7bmj¨'æjò\u001eà\blM\u0014O*\u000bÇ·¤ñ1(\u0005*TÙZûÇIîiÁþ\u0011.ÖûS6Õb6yYì\u0017Ò$©iêãâ{9D\u001fÖ[\u001f0t\u0011\u001e\f*4\u0014ÿÐ\u0006zº0ð*µÝJ7Ð\u0016Rbå§ \u0010G'Ká\nè2xêy.êä:kñnËÞ8Öú\u000fu\u000eqh\u001dÛâ|èä(Æ\u0013\u001d5õ}v\u0013÷êÍF=MîXé³mî´ü|pî´Ìõ\bÆÅ\u001dµÔ\u0014÷\u001b)jDo
L¾6ücÖtÞÔ,Æ3 eð_Ä\u001dÏ.3,VöHDN\u001eå@ÔIØ
hÈ1¾\u0014¸ô\"§wt]C\u0010àñìßï÷\\k\u001bò\u001f§Ëk\u0013\u0013¡áÛØ<vÐJÞQi[\u0004ÂÇ¢Nª¹á¥¹$\u0010t¹Ða\b&Á_\u0015r5×hzM8%\n\u0006\u0019Î\u0014f93é.¸E¿ÒZ_\b=}̯ܵ±ü\u0019ù×fó ù2½NQXEÿZ ìt«î9^z?êfô0Hf4ê\u0004êfá¤>P^^'Öâh䪽\nà§÷Ê\u001aZ4t¯.\u001b®'c\u001bÎ÷þ!%n/\t=}¤=}}Ú²Sp\u0016êw½\u0007ËÖPçT¤õߪU\u001e,2õVu\u0018PT8ÌÍ!YVÕ,,]^éyào7=M\u001fRÇt]=
.&ùdD\u0005ÒhP\\\u000eã¨-FRÆx3´¿\u001a¥ûOªÄ\u001b:\u0004{·ª7A=}\u0011ÛEx¥=}VîAOúõL*þ¥ÑÚ¬,t .²ÑO\u0011·(ùqò×Q1 Iì(é¡U©ª_L\u000b÷¼Ü jmªÑm_{ÞQQõÔ}óköJ\u001c%¡ÚL£²ÆÓ\fu\u0005SU#z\u0013Ó*§\u0007ºl¶8B\u001cÐ\"@b\u00023ôÚzbÛvÈ\u0002dÓÌg&áê\u0006\u0006ühSÍw3\u000eÈ[©tÄn*\\2¢¦à\nv6ßy\u001bÜ0Íw\u0002)à×èS{Ñ.Ò¦Íæ Ù\u0015bµîÑ<eá_ñB.½®u÷\\'&n\u0007RTx)= Í=}-ûô\u0006¥Í.>éô5)\u0019 'ý\u0001¨êëç\u0016õª·õJ+mvä¯1\u0013\u0001= 9×µÄúb3®:OaÌw;\u0016±QãJ\u0016t= .÷\u0004g\u0014)\u0001^=}%9Òwq9D>èÅí:9º_À$ÒÁ{c\u000eÅ?°Nzí\u0007ø~ÊY8Ä)#2b°µ#¢ix\u001f3ñÈiæ9\u0012z¨ÿJæäë%\u0005<êR MÑ\u0005ÄQÖ\u000f2Ô\u000f½aôc5}t5ìø#Vñb\u0019\tIòj&=M¶Êwd!\né7\u0017[ÀÚU\u0011*l6\u000f\u0002¸ïÙ\u0006©¡NIn%ä\u0005 \u0006Ì%\u001fGùÑ6¨ uo·6Å\b)=}Pí\u0004ÎîT=M쪤){èÐSX&P2¿Ü\f\u001fÍvHÎâ¶Á3ÇÌð¹õ-\u000fêÂâ©s¥\u001b¾¨ò-õ£seø\u0019«OÛÝ·ÔnW@e¤l4¯\tÏÞ¾Qj\u0012AÞiò\u0007Èë,òPGPñ¾wfQdSu^ïÿ+\u0003l\u001c©ª£¡\u001cEõ£){æ\u0019 ìð\u000fðõâ\u0010\u0017¡ÿ¬\u0019 Ôé\n£¶p¾l\u001dø
w\u0017\u0018\u0018³= ¡Km=}û5Hà\u0012I§Ò%S5x÷i$¡\u0006\u000f;ÈwßôRxfaðZj&h6\u0007\u001dæé+4²è\u0017þ\"\u001añÐ\nú¤ UÚªôÆß\u000bذ\u0004;¯Ê¹¸ùʧÈÖß\u0004oÑZ!ÞôÙÙÊÃ\u0019¾#\u0019·/ÙÀ#P±/·/\u0005}¯\u001a1®¶¸zÉöóýaaâ%\nâ]\n\u0007÷^ï\u001cCÙã¥þ]\u0014÷FvÈÅHÒJ÷Ùñs¦ÖGúìtp\u0004»²Xæßñ 3ÞF}Ãé\u0002D½~Úk\u0006í\u001a]\u0015æd®ã±êµ×èÑè\u001cq\u001c1%¹ªÓ\u0010åÌÇ\u0004-ù\u0014µFøI´ðìeò3ëí\n\u0002\b#1ñ)\u0010\u001eì)\u001eÞ÷ÔÊ0ÐÊ\u0010ÈÊÐØÊÝ÷D\u0014\"¢×û\u0018>ö\u0004Ñ X>>>éÍ5u²m¦Ì\u0006d\u0000lÏg=MFSô\u001dS
QÄ@׬G\b\u0002\u0018\u0007ó^Å£y©Z\u001eIdÉÜÌýwË\u0012}\u0017E\u001e¬G\b\u00020Tò\u00020R\u001dñSòÜsÁ¡¬ßâ= É÷Ù¨+Ò_)Mv«<\u0002§(Á\bQbùÀÇ=}Þk¨\u0000jl¿Ð±ðØ÷ÙjÕ²\"éñpÑ\u0007\u001a¤û\u001dر¸\u000eØ1\u0014\\âÙ\u000e= û\u000b÷áù\bTn¯8 1¢:«çùdõ\u0019¦ÖÝ'dd\u000e1&\"w2\u001euù$Ì$Ì%ü\u000eÕÉïÁá\u0019\u0001~E£ÄâŤÆÂÚ¤\u0000J\u0006Ù\u000f©\u0000¡¤î= Wxòý\u0018%\u0005\b=}Q\u000fÚÄö\u0000ªÖþopgÇ Xr\u0007*ô\u000e\u0017\u001dMR
#\u0005ìmÕ\u001a§Íõp\u0002-¥Æ\u0019ÑaòÿL¼ÿÑ\u0014ͱP3;\u0000Â^W])³Ï\fãþm¨\u00158e»êÈÓ=MJUðPmr\t\u0015\u0016¹-=}®\tÄy \u0010H LúR\u0007X(,Ð:\u0010= Õ^',Ön¶jØÜi\u0016PW2(Ò7©<:\u0007\u00184Ê:2\u0001N¸Í\u0002Ê8²Ï.ýI4·I\u0012\"k¦$ôq{ \u001f\u0001\u0005\u0011øâ¹f ñe1h\u0012ªQ¼[_é2NÈ´jQ°*YÉîÍÏ\u0010¾ÿÑ\nÍv@Øiú!zÚ.>Ô\u0014Z³b]@ëú\u0016²çÝ+ ÑFP¹»áEZ¥4ÈJ-\u000bÛ£-\u0018\u0016ºzUØÛq3= Å´Ôw© P±\u0010-ÊQÊfYcÊ×Á\u0018_~%*©{\u001dغ)à\u0005ÀÒ\u0019÷ø'Ö\u0014d¯Ý²Yíì»Ço!LÍ9ËË\u0018$+À5)O½È¯¡ÉzØÊqAaûÔ\u00024\u0001IæÊxâ&[CÊ.¥iÂw×9iW°ÀC¸(^'\u0013\u0004©\u0013ÇÊTº\u0018L±uvýÀQÉënðÈ¿·ö!CvH²ÇxÎÚÉ\u000b5Ò\u0013\u0007Ãy\u0017¶\u001fôÿú\u0019\u0010ÍÅ-\n>É\u0015ÿHìæ \u0002U\u00044ίþ§½\u001eûmÁÈÁÈ&mGx¹¨\u0007¾Tc\u0002²Ø\nª|\u0013ð(JK¡+BN\u0010©ÅÝ\u001bácÕ®O\u0010©ÅÝ\u0015öd}´sã¶Ð©~\u001eÝî#{µ/ÅÚM8özÂ\u0011)$WÜbªÀß÷Ùϲ$Ì4Tú2Ö©q¥VµCÙ%<P\u001fÓHùQ^\u0019h ?ܳó\u0014Þ38_Ó:\bMu´[@\f®2\tÈ,q~\u001b\u0005\u001b*:C⩵϶i¡Ø
\u0014b´_õRàag÷\u0002Â\u0001Ö£á=MI
Ã(\\\u0001|MdX^¥dÞH¿¯¨®ÎEWöroODlÙ¶£¥²\u0002r±íòq%@Ë}\\âÇi\"PÖ \u000fàÂôÆ\u001c\u0014\u001dß®YZ\u001e¹£Î ÞLð'7}=}:¢\u000fÿÊ$¬¥ßÐ:£v\u0005| M,¯ÚE¹y5§ôLóx\u0002*Ó¶¢\u0017
𢩽é®#\u0012;8@ðn5;
UI¾
\u0001w$\"-ÎÁuµí±ÜÚ.\u0013\u0000Jû2¦ÓBì+²¢!Qȹi\u001d¤Öù¿ìà ÿ¹·QlBa!¤kh)ý¹Rª\f¿}I2\u0006\u0007gÔ×BԯϬª/\u000b@õ¦*;iÂØëÞ\u001dpÝ= \u000eÝÃd$= ?¦OrQнÌ\"\u0001x¤Ù\u001bR\u000b²\u0007fòW*s8|¼¸2\u000e\u0016Ô\tõ ÂcÔQ´\u0013\u0013\u0018\u0017µªôÚ<
ã6Ñ\u0004?{Â\u0000j®R\u0002j(ÏKáWë³½Ó\u001aÛ[\u0011¢\"kaå k¦Ðwï
\u0012±bëýF¦\u0014Þà\u0012YvôrH¨Z>èç/Å¿ËTtº\u0003ã#:}@÷\u001cæ(\u00132Ö}væ\u0000\u0005} \u0002ÑØIx\u0018Õ¨NÏxú\u001aÿIMc¶Ò\u0002åwtJ»Ç¢Ð>Q{Ôòh.\u0005ph.ù¡]Ƽ\u0017Ô¹&\u001f¯áMÐy]LÌÆ¥\u001fµÿ³·á*ùP\u0018w\u0002ãSÛ|\">4·[U8\nI®ð,õï4\\\\A\u000bÿb\u00055+]QRL&5ãh\u0013\u0014£\\ÆE!s1Ïı+2pÓôÏ\u00169¶ÖR\u0007¡¶m)\u001a\u0004\u00035!\u001c^PqÏRf%\\hR'ñ\u000f«òSßîÃ\u0004\u0001ÍH3íÿÌ'RݯþÙJñÝ©\\\\PVQÞ{ewjÍî=}Må\u000buç\u001ebÕõ·Ð?Âß\u0007mì\\\u0015¡2Î\u0015\u0011d©EG¥G= Ê}-\u0004¶Ùw¸R\u0004 ¢zy(Ï\u001f¡X\u001fê¿q½\u0015\u0005ö±»ýø6v\u0012ÞÄ7«¨¹Ü\tØ\u001b=MÕh {çÓ]ñ1)%Ðj£TNq\u0014õ~r¥à×õðè¥\u0014®x¹Bû\u001cÛèb\bÍ¿õ-Ò¹Òæ\u0005\u0012\\¤_B\u0007AýQ±¨4²|×>9WP®&ÊëMèØ¶&{ÑîGb¢è¦=ME
èÀ¶eî¯a=MáÓ\u0007!\u0003jvñ#ÝÔ¦D¨¯|;È\u0006RRj\"éFÅ{\u0014\u000e1ÿ\u0010Ïr<\fÑÄwöå¾zÈùÇy© \u001d13'&7x.uzØ\"\n£JßóÀ@ ù~T\u0003MS°\b@Ù\\ê= óe\u0013%Ñ\u0012â§\u0010mþ÷f\u0000RôAäêtjõ3Iár\u001c4&¤×ùÍÜ´¼Ý|Õ¥\u0003ñ³ç\bBä!\u000fvØéXxÕ²§D\u0014ËR<=}~aXuä·%Ì\u001a\u0012\u0002 Ðñ\u0007+µÁº\n%*\u001fg(Xâ\u0003±3÷ñX0ËOÊGË>Å=Md[[hg®\u001c1·D!v&/íjo\u0004ô®bü= T?iBÔØ= ªX+\u0005óq6Eô\u0004yã\u000ba·ÂX\u0011I¡ªbp¬{q¦-¤Éõ¢ÀÕgÚ\u0006CD®±±¶ÑN\u000e?fÇ¢Ò l\u0012ÙûnHê¸!zþThl¿VÖY5*\u001aTº\u001b=M-füf\u0010è\u001d/4;)\n«éáh»¯ÜdFÎrhÈûåJSùá\u0010ÎW¾^7<gøò¬\nÃT\u0018{(êwq¥â\u0001\u0010~\u001e-ß§O\u0016 yú^yåæ;\u0006íÎ\u0011\u0001\u0007û\u0005PyÉ?\u0006÷øÆñÊ\u001e\u0007µâþu\u001f¸|pa\u0001×ÅÐøj&\u0018\n>c*Ò¯\u00001½\u001cxÈ«µw\u0018Sî\u001cÃðIð\u0004O3X\u0014ËKÉ(tì66þ<çÊñ2J /bÝ\u0001}tä\u0011\u0000ëåq¦¸â\u0018$à\u0011±\u0010G
SC°Þý§îá.è\u000fKëí\na\u0001/Z¸ðWöI¦(|\u0019R)dzÖL²,¦Þ\u0001ëJ¡±âM\fô{Ö\u0015ã¨ñµ«¯\u0016Î'~7,[¸\u0014Ì,:Ø'z\u0016Ê9WÊlLA\u0012ÄÊK/x¼<\u0010Æí·\u00181ä\u0007Õ:½Ö¦ }È\u0001¦qÑûÚá~p.\n\n-Ù0\u0014ùýÈ= H3Âm°nOzªxB 4$o÷·\u0011V\\
nÐ\u0014à+wÅV¬® \u0003âh\u0001þ\tä\t\u0014t¶5Nþt*6\u0006FΧû¿¿\u0012}¾Ë\\¥^igiî¸×/._'*öÃq=}Ì=M\u0012½£á9\t\u0004?L\u0010ÕÓ&sÄ& Ø\u0015>\u0000:Áê7WP7'z4üºÓ.¦0àr\"ËNͨ\t°Yñ!Uñ¤¤Ó&¤0\t;ä\u0010L= ÝD¨K\u0015Ã÷Ò¿\u0015ëYFb\u001f#2¹ôñ¸ÑÑxì¾[/Ë·Ø¡ß\u0005y9?\t\u00017\u0013s*$OaìÃ\u000e=}\u0016ºñËÃàÏ¿ZC\u000eÉà×å
}ÆÏ³ÃyÈ\"¦ø7ã\tL1\täÛqhlfó=MȨÐZ^sfúì¹9ÈLsrÂÝ\bå|\u0001.\u001fÁ%J\u0003ðó\u0012×zÆZ¶C÷òKI\u0000ÉÕkd\nÜ\u0018¹\fÚ·/vÍ6²å®v±i\u0017·4M0ñ\u0013\u0000d*\u0017-\u0017ÏÿFË\u0000Þ\u001a,X\u001a,Kîºi´å\u001f÷\u0006¹)\fZ6\u0005\u0014±\u0005Êl\u0013ãÙ,\u001b -\u001eG¡\u0010\u000eY$Ò\u0006+þ\u0016\u000eÒ\u0006\"\u000bY8\u0004\f/©\u001btxÙ\f\u001e$îæ±\nݱZîÊ'\u0013bG0}av1¶µ\u0002y©\"²'\u0014ä\u00190ô-^1Äly\"\u0006â(\u0014-7pè\u001a½þ<Õk5}JÞ¦ýé\u0016\":Rí²g:\u0001»
®ðu\u001fv\u0013\u0006²Io¥ÇUÝ{èÐ!Õ\"fl.W²½'>4N¨cóxí\f*ÃÅöèì\u0019¼qiï\thò7\u0002·\u001eUÚ£«Ü
\t¬g$Ýèõ\u0004Þ¨\u0018î\u001bÜ1cÌ(ßçÉå^cãÅ-\u000b%Q>ø$\bÎ kKÿß·µØæ¬:è¼Ãyz
µ.Rw\u0011ÃkÈ\fÚ,Ñ;Õ¸»^O¥' \nræï½|Ð:¯7Ú=}|ù¦õÇk'ð¯\u001d÷0Å·Ýêwµ\u0012²xï.WMyH¡Æ=M\n\u0012Ú
Ïò©ì/3\u0013_Ö=M ²\u000e\u0011ü|a÷\u0007²=MÄÙ¶We©ÏäN¹?ï\u001c×Ñ^W*szý~N櫤Ôèímܸ«óä³\u0019Ä´q\u00079òKKZ³Û]\u001aÂMÞе\u0019uÚÓOôxIäõx¼H&D'\u001f#È8Æ\u0007ö¥ÃrÉi\u0012\u000b\fª°ÅÎYGy\tñ\u0006ÃÐNXÛ³ÙªO2\u001d¨X¦Y=MÓ\"¦&Æ'\u001e\fZô2¸\u001aIÓÃ\u0013\u0002w6-®Ð¯SïÉ÷À\u001d»-Q9ÅÛ¡TV\\å>CÇØ¡òo[+\u000flÞé\u0006Qn\u001aU¨k®ïn \u0016³_Î>ø\u000b9ß-§¼?A(QD]>ýßOɪÝ:ï´hy'ÍRÔeL Ðĺ.jÚ-j̺¤4Ò(põ§°7\u0016\u001d>\u0001·G|wÙP¦êyÉ[YÚ/Þ5?½³wòZ= V}Äú\u0017;5l>û\u0002(ôûíy ¬Ú}\u0017bT2W\u001e\tlI7&Ò´\u0017j~\u0017®ÇvbñÁskóJ¶\u0017Â\f@æ\u0019\u001bÞÚÀ\u0004\"ÿ\u001a±\nÕ\u0001±6kVñ\u0000ò\u0001òpù¸ÅªT\u001ay\u0005ò½ÄE&\u001cÞë^·\u0007U\bI¼HÍeÈÝ'\u001a©L½8\"ýÓTÆ#
Pº\u001cn
C6ÉÏàWíPÜ\b\b}9ÅÅhoÃ'ÃR9«x®]î\u0000*§__G¦TtòÛ×ÎJ}Þ(QjÈ\u0019\u001fü³å /ìúJ®ó·ÿy'N\"ÂÚV\u0015ô\u001a/\u0000%7IEô@ä\u0003µ,»jlg~=}UQÃÌÉ\u0006\u0004Á\u0013 d\u0017hÈ\\SPbTzÒUUÔq\u0011øÖ±\u0014\u0005\u0015ÈÌ\u001aGÕY.\u001eN\t¾h=}\u0016ÔãiÆw{ÈèLºÒ;·$k¥ç<p®×\u000f\n*¥2ÕÁbÆeý\u0007£³å¢ØRÅRwîé\u000e'øa\b&\u0012a-þ*Hl¶bai\u0017\u0006ç%¦/EÐX\u0016\u000f3\u001a\u001f3\"ݳêé|hÈp-ÆVÊ7= fþj<ÚgG°¹\f\u001bÊp\u000f8ÆAº\u001fù\u0010\u000bؼóU7S7hH9]G9ÑAºLAº¾ú\u000b\u001bêB3HBºS\u001brW7\u001a\u0005s¬ÞünÏ}éì·ïQA:Q\u0002,ÑAzPfô\u00043cvüø \u001a¥Zð>ßüf\u0010\u000eÃh\u001f\u000eÅ7 1¯ÃOEã®»\u0005ga\u000ft|¸\u0005\t@c¼âp³Qû¤ºßA*Næù \u001di¸\u0016O²\u000e\n¬ÒQP{\u001e{׺Ťê3TðÒAó@U§â\u0001¤éóÃ\u0000¤+ØÞ?Ò×â\u000e0TØq©\u0016ùÆ\u0001Á^úÜ\u001cùëw©g-ÜÀ\\¦ùý¸K¾4Nï×ÿ.>Oª²\u0005\\Åm>Â,Ò\"·ÇKU3ù²\u0014\t$4ÖùÃ\tÐäO:»\bÈ<ÔøæU=}ĨJ\u001e¥:\u0015¶¨éÚêòϧ\bàÓÆx¸í0\u0017ËÜܱè\u0015üx\u0006\"R¹÷l\u001d±\u000fIm°¾3wA\u0014ðÄ(îB·2)\u00017d×Ö\u0019Äê71÷·[çW.\b©ShêÞü6®àù°íNVR-0S5\"aÄP*{ 3[9\u0002\u0001 vc\u0001Xî\u000f= ¶lJ±\u0019øÕ¥4CqèÈ´Kõ\u0017æk\f>\u0004âæiÚæo'ÇóÓÆö\t3!7ìË¢Ö/õïæ\u0002\u0019âC\u0019²,\u0016Z\u0005Ý'\u001d\u0000)í)¹Þ!iöFÆð¹>\u001aïþTTwj\u0015d\u0005\u0000æäsºRø\u000b\u0000ÝI9EyFEÜ\u0019ß\u001d¼X?«d\u001e\f\bNö&g\u000eÊ6/\fÝÁA:\u0005ÂR\u001b§5\u0004m1¨|Ê\u000fÑ\u0015O\fë»±´\u001a=}3y½>i )JFߥöÐ!í(¸\u001f×VcØS,£\u001bàe]ÅÛÓi¿cZäÀcHò«¹µc´
ªy¾/÷Ò\u001818\u0000Õ÷¯\u0017ìHyñ²Öð\u0001ëä\"ÙÈdBt 8±YªJ\b2Ûx6×JÈré\u0015îe)^#!¢ê;-WY\u0015\u0012û9\u001dÚS\fvM¹Ù^4<YÌS¢\t6wÙ\u0006h}ÿn!c ôN*5l\u0016~A¿â¶¨^2¾-2~Âc\u0004çØù-£\u001eò)¸Ë
ƪºtM\u0012~á*#xbÄõËD{ºöü\u0016uòª19NLO)L\u0018ªöçªûY\u001dPô8z:µ4Ç꺺ï¥L}æJ×U¹UJO(\tuó\u0005yx!PÍ<\"\u0012= ô\fj·ÆèÆé¤\u001a0É©òT©¥ù\u0000ÿ¡Th\u001c-í\u001cÓ½\u00063E¶ó19O[©ÕW«IoTø~ÊCN\u0017;Ò\f<X\u000b\u0006\n8NI\u0017Y$'ÕJ¢¡Ô·¶¨î2.\u0013b8¯²X^ÚØJØï\u0006Pþ6ø,\bj}\u001c\u0003\u0015)S¬\f\u0006D\u0000C\u0013Ór¿ÈXYìt\u0003ﯳ§[r'÷t\u001fªìbW\u000eÊà|hÍj6;æ#1Ä\u001c2à\nϨ]ºÄturUÀ<xd\u0016S§iÖÑÿW´ÆHð×'Åæßpº<}sæj\u0004ñ×\tjþ\u000f0LÔ ì¢[$;3_\u000fKT%'Uì\u001d¹¨®ªðv!ß*þÒY§\u0007\u0012¯¾ïÆ·¼²·ä\u0018= <2üF Ú¸\n\u001c´ñÝÀúÇÉTãN>å\u0007s&j\buZ\u000b´¼3RøÁ&~ë\\\u0019rÑPÊç'iIc\u000bY{\u0015ªþ]»\u0018âæ\u0002ãZÐÂ+~ðZpj Zþ\u0017Ã×ûÁ7îßpräÆçýÀûqEâ¾,¶éV\b¬tû³¦.ø\n¼æqÆQƶ\u001aö¸Ó¢°ÜbKmjgøÃÖ×®²T,f\u0005IZa\n]Õë´U»°F°Ý³ÑTw<\u0019hÒühÇ üE¯ÐMë>\u000b\fɳTä©lW4QJÂs©r'©> <e\u0018\u001f Ò¾Ys¨£¹@¾\u001df¶È\u001dýíZ1\u001f¡DØê£Ù~Ò>ÞÅòñ\u001f2aÆâ2@gÕùñdªÉ\u0014#¿.ÙN\u000bë\u0000Îr:·Û-tÉtÜ®½¯qµ=Mû|
èÏï±Ù}<L\t\u0003%?g xÐÂfÈM¦N\u0018î~ïîð \nÓ^iÙÈÀK÷R\u0010g\u0004ÛÅ%\u0014ÈÙ¨Þ¢\u001e×Ãp¡^gZ·t¸\u000eã|z£*Ø*2£\u0018Æ1ø\u0012+-[\u0011£çR°bb§8«sê,fµ\\\u0012±\u0015aß=}ØèÝ(ÜÈk\u0003Ó
Ã\tÔ>¦½Ø©³ZÒÐ2\buAjXø1øLDâU¼,gFV¿ãªèíB-Þs\u0000XwNc\u001e³RI+ Xjr<ä-ëèn\u0014\u0006ÑÚå©|Ãi!K1yH{ob\u0016 iµ)V\u0004ÏR¾\u000bçh\u0005¢Ë÷Þ¨vg \u001a§±<EøÅ¥Þ¿/½=M³,vá ©ù4ûÅoÑÒ\u0002Ѫ~&3]ié\u0014\u000fª@óÃÓKíÈ\u001díå².e\u0010,ÈþèJµôز'|bò6p¾ø\u0001eK\u001fß(ð¥ÖnÄ\u0001Ýh\u0012óîú\u0014¨\u0014&\u000bù\u0001ÙîxE8\u0017ó\u0006¢vÛÈñøMl¥Û|Z¶\u0000@Õp\u001bÿËÏåÑS\bÇP²¶Ï³h\u0014õºÜ!n¨kÞÝm7\u0004áü²ãüFrðý\u001câ\u0003.s&ò_åì\u0016$=}U\b@ã\u001d$üD%ZJfo=}\u0010ó´\u001f\u0014(\u0016c×\u0019}^a¥Æ·\u0015Êâ'\u000eBú5\nª}\"mù¼Ñü?W®\u0004ÑChÍ\u001f\b©\"ÃÀù¦Ç\u0014E\u001cgIË´ÄÑ®ðRÕfËøA+ö©\u000bø\u0019P\\GTu\u001bà-yAQä?=MÇì²Ð®$T~nТ\u0011òG¤õph0\u001d¤¶Qs¹ù¶\u00021®öD ý\u0007-ÝZÇ|é\u0011g®\u0005<p\u0000p ÌEÑÖ\u001fÛ|A\u000f\n>Ö>·\u0016AäÞ¡ï\fDïìoàÈ= ·N¨¯\u0013BÆïìoVìá@õvÖMA\u001a\u0016ã@&æÉÀABL'?ʾ)à¢Ñ\n\u001e\u0012+oëR\u0014¡ÌÑF«nv5°ÏÙ%åiùE\u000eqÛëXã÷\u0015míQ\u000bN1Xä!\u0019H\u0006c\n\"°ttbïØ~Å>)qcÔÒ\u0007)\u0000Òqv}ßÈ\u0017ýÈQõ\u001aç¡.¼º\u0002|Ñÿï¦@Ðo®uØ×½|\u0001:}Ð\u001cpܱ·ÿÖ·Fy£(
Uî¶\u000fK;\u001a¦3>Y@ÁèSYÀ\u0001tÛQèyM\u0014©>ÕÁÖ%ù¨\u0006\b÷¼J^Â\u000b¯ôtBíü³m¡V! ûÚ/\u0010QA ¿¼&Ñ/R\u001c¿qW.Û¬¼ñËÊhTÁºå\u0005{Ãâha]NÈÆPÙ9\u0000;bKwF[ñó\u0006+²æe²ÊWe
Ì^2¡\u000eã>1vÛÅ\u0010é¶x\u000bØ÷\u001b5¸©\u0003ð\u001ei=MiMH!UQ5çR/\u000bEÅÖm³Úö¬ûF¤ÑZjå[ÌrP\u0000=M\u0016xÂ\tÈ®ãÄO/ÕÈ\u0000d\u000b¢Ø4Wì=}·'~T\f\"Ô¶°\u0010'ûóu\u001d3\u000bý îç&5MÉQ[7s¾¾¥©c\"cë\u000f¼'lÕà{î¦\u0011\u001aÿVÙ\u0011\u0016èO\u001bÈ\nYAM%£r¼Oª6TEú ?!©ò\\\u0010Ký©1\u0000d¦ÀÙ;Pª>kdÇjm\u0002Q=MßR\u0014D>_®ð/by©§9ËM¸\t\u0017pð';hõîêe;\u0001R¤¦Ìù³ô @ãÛöa\b'Ã%´#= ¡¾g»ê°+9ß#,³è~\u0013>1[ð@÷X\feñ¸ÑÊ+>\u0002ý»ÃF;[\u0002aÿâ÷wKVÍÚmÌ\n?\tô!¯Ú\u0007d\b\u001eiø<f[2Ìz\\Y8RÛå°CW\u0019§FÆ%â3ìÀY-l\u0015òÓE\u0006ðÙ_²ÞW{¸£ ®(_4!¶WX\u0012x_0\u0000cHü\u0007Ü\u0017|ÔÑ\u0014G¦BKÑrwî?¦'Ô\tÄ<Q[Y\u0011Eý'\u0015ÝWÛæ8T¯\f\u001ekÓ©z-
Cîry´OÈÑiù$I,ò,Þ\u0015¬Eà\u0015¤ÏÁ{\u000bÙ×\u000b¼\u000fLá\tÎà\u0012æ\u001c\u0003ì\u001bÝÕ\u000e¾ã\fX\u0016\u0010ò\u000fF0\u000eã-¤·\u0016rê!nu[\u0005jZ\"Þ¹ûq[cJkÏÑìö14k\u0001òo«Ûzä©u¢2\u0016U\u0004úu}!º\u0001©ñ6øx¯ii'GBä«XÈp7\u000b)D'׿\u001d\u001dWm2[\u000e\u000f)íë8\u001eéª5D\u0014cNçZ),\u0016,ð+»6ºÂ\u0006ìßÇ:Áâ¸\u001bÙ3ZÀ+\u001a¡³PY\\®ßi?ns(\u001cDõ¶ÈÇÁºëO\tÔg]eL\u000fÓåW\u0006¸1Ï\u0016\",\u001f{4eæÑ_ÄöoÅ<7?rLè¶\u0001±Áç&k=}Î%L\t
Ρ)Q¦[õ·E§k\f\\Þ\u0016\u0012\u001f,R\u0006ø§§\tÄ×å\u0006J\u001d\u0000 þ ALÊÃð¬7Iã|X¢I=}¬#Vúo<µ;ײ®w\u000e÷\u0012º\u001dU\")LíîÈ\u0002ÂNúEnMV5P³I\u000eH,6~)Øe\u0017ÿ0¶¬= 9´MjR\\þ\u0014õËÓMVã¹I\u0015%-ªc\u0002öÇ.JJÈÎ\u0016è=Mä ÃõV$õ1¿H+å<Tz\u0007?[«bú{·>µ=MÄHÊAN¦É{cð\u0013þlÖÑ\u0011-3Û\u0000\u0007\u0016u¶Pö6p1\u0001Y9UÊöL£¶¿l3DzÃð{¼Ê\u0019'h1yZͯ8ú>ÉJH¨If~«þy3³ð½Àjþ\u0015\u0013= Á«t;\u0016\u0010FÊ^\t\u0013\u0019R³²\u0015c#\u0007ðÓq%Ë\u0017\f±¦½çcÀÕ\bòkwé{éÿMèfQ\tßß\u0012D¥ð\u001f¶ÎSË>\b\"ÿmå(\u0014<
\u0006çó£âüï·B-]²ãñÜGþ¾RFÃbg®Ý.ì¶§ÎN\u0016\\y©\u001e½\böZshàw0ønÄ\u0005¥X\u0019¶ß\u0004ù\u001d\u0011\u0004\u000bF³Ñ\u001b´Â\u0018¥¸µ!t\\=MIÔ±:S\n¯\u0018E*\u000et9|§äÅ6\u0014äÃTï9(×\u0015Ý«ÕôËWɶ©òó#í\u001d\u00037¦âHoëÚUfðd0·\u000fh\u001eWÓc0¨\\0Ë%#°´¾½f?[´Öò\u0007\u001epÕ-¿H\u0000uH\u0011',4\\âæ/=M]=}yÌ\u001dâW\u0005i\u0014¶û>\u001alõÂ\u0019Æq+IñA= =}5ëïx©ÆI\t$Cùó\u001a8{Ñ·o\u00058õJ^¼+¶è\"Ï\u0000\\ëli)î2»\u0016B¢Ã tÁ=Mu/g~k\u000b\u0004Y\"Þü=}à42YÑì½\u0007ÅÈ9$sS@7ëHë
ï¾lQÆ\në¦\u001d¶è¿ÁÒ\u001e\u0017eÇ\u0018£'»ïïZ4Ðzsñ\u0004Nùá·\u0000ôá= e˸¬f&\u001dàÔ\u001eD\u001fIÏ\u0016Â!6\u001b[µ¨Ö\u0005ýù«j+ad´_R6ÂÏóâÏíð'záaXD<Ç\n\u0014¨Çä\tni?P\u0012-oP\u0010桬-ÀÝóïM/Ð-¸½Åã<nyµ W\u0015L(H\u0013«3õ<4!:\u00049Ù²©Öh+!8N¯ûÅ(zæ9B*ú¦oL´V^ÿ;öKåSë\u0002ÁÙRÓE²«W_x7\u001ckÒß8\fð!Æ\u001dª\u0005 A[ QÅôy²Ù°wyf=}\u001e4µ'g~L´#ÃÕ÷5ÈÛ\u001f#\u00033÷1\u0001¬C= J>èG\u000fL\u001bÂ=Mîtºô\u001ftRÏ?Ùôyê\u00071?´u\nî7\u0003&0L÷zãE¼.ʹ\u0006N6)6?sG=M¹?BE.WÕ³\u0004!çÃÓ\u000e\nzÎ\u001cä}\"ú3Ö\u0005¢/µIê\"þøÍ¢DZ\t(ÕÿIõÒÙ\u000bTIzL0fõjûNHÛ\u0000û]=M£WÐ\u0010Ór@\u0002\u001f\u0001Gúi<\u0001ò,\u0003¾8bo µ¸\u0006ê \u0011\u0016ÐN\u0010Ø9¯.eáV\u0014H^cxùê<÷pÂÆ¼
&ÆmQ6þý¥XÖuE\u0011»Ö&´Ù<\u0010¿>Aö4K®%\u001aÇ\u0000äwiõ/#\u0010\u0005\u001boF¦5B\b024¾ÞCYZ\u0016©eYêgðÂú³G[¼°þUõIkòs\u0003ø0$zY6ÒÑ\u000fo<ño\u0012\u0018å&&\u001fw÷*Px\u00074H<Áë\u0019\u0006\trº?¯\u0002WìW®×î3¤öÚ6Ét\u001d´\u0002WÕ\\\u0006.ô<\u0014¨ïmÑddòiV³\u001b1\u0001;J\u0013U&æI4A5\n9Ùz.Ö\u0005Ê¿>9ÂgEb§¦Vá\u0010>¯ËE»£À\u000eÉ\u001cûÃ%TY%yrßMÁæ÷%\u0016n\u000b\u0012SÑZ\t\"¯Ê\u000e\b×H}\u0007Oþã\u001dmx9:\u0018M?\u0002+ ÃpY\u0005¦*þ\u0010\u0016Å2\u0005³
æÏ«àjð7Ó6T³Ó6\u000eJ\u00169Ü\tóÚþT2nê²¾·< ÆÛ!\u0006÷\u0011\u0017+æz·¿ä¡=MôÌpPýØU\u0016b÷_\u001bâ÷Rãm\u0016Î\u001e\u001751Êï}·?þ³ógk\u0018'X/\u0013\u0001/³Aþ0\u0018ËwfÌ\u0015òYó[\u000eèu!áôÓ\u001a3\u0014$dY[¿\u0005Í)¯g$Â\u0001\u0005åÈ7íHE¬\u001a\u0007ún~ÇÊB'y&Lãë\u0002ÅN¼ãÑ>¹µÓÄ\b¤
50ì$\u00199\u0007¶î&!ò8mÌh\u001c¹Yº\tK/wºyÿÃ6(\u000b&< {\u0013¥á¹\u000e«?'ç(î£Ý\u001ff(þ\u000e\u000f\u0012§ÝÒwD¬]sãµD\u0015gÑE¢x¬\u0014{C[Zý>\u0013>VvÆåLH×ÝîųgÚë\u001cÉÊX\u0016ë§\u0002Ú?\u0003¸)Es\u0017uy¥Êu\nÄ~Ùå8[ÈÛÏÆÕ\u0003>\\\u0018È´©@âñXÇGN%@Ý\u0007OþW\u0014ÛlÇ\u000bìu\u0007½äöÙ:øYïªpÜãr¬\u001c\u001c®2(¬Ú½õâêG×{È\u000ec\u000fxQ«vºx©Oÿ\u0012%Ù\u001cÁÆõfÈä\u0005L\u001b>ZUÀ¶J\bÃÐ$µ=MHÒ¨Ñ(Én\u000e7§4:¶¹²\u000fÓñg͵
_M\u001c\u0013ý'^½Ð}\u0011=M\\¦E³-}ÉYâ£w¹Éâ\u001dGY\\\u0018½«]=M\u001d\nçªr\u0004\u001cò\u0000¬&Ð\u001fÍà©îór\u0011ÁAìà\u000eÖP ¨Ý°ÔìÑîa´¸\u0000Ïë¹è{¢°µ\b\u0003\u0014¥Þ2x æ\u000eô²âú-~ê\u001aì\u001e\u0014\u0007\u0014íXÊ%ÕÂ\u0015v\nô~)hbüX\u0000µ¨Õ\u0005\u001e4~\u0014ìÑ_ÜIÏ\u001d¦\u0001\të£\"¤$#ç=}ø5(\u0005 yW1N\u0017a.Ð\u0005êq\u001e)àüfÑ
üpà½fæ5®y\\\u000b\u0015= ú/+\nÏ8«\bâP\b\nê\\.°ûé+<¦³º\u0019cËJ@Ò0\u0010ʰzµ$&EĶ\u0010ÁÏ2(³\t\u0010dö©´kèqTß\u001eù\u0015*ÆÊ°ó
ÛeÅ\u0017k»)p;§UyJ¨ë¦Yò\u0001O\u001e\u0011Tr\u0017E÷%´\u0017e\u001d\u0011Tr\u0017E\u001e\u001bT¯\u0014\u001eѦ0\u0011aZÞàò¸ãl²¨%Îñè4<¶E¢XÄëf¡\u0013Lð}ó;Ì}= Þ\u0013} ÛË\u0015ðQZÏLÒ¨!@È\u001b¦îö¤Õ\u00185oöüoöP â·\u0015\\\u0012\u0017îÅ¢<®w}fÿ¼T\u001c¨T\u001c¨ÛÇÆà÷öÂÕïhvPöG6ì \u0004P\u0005P-nðþ$\u0015ôpû_~=MëNXÃ\u001e\u0000ínîeÛÞµ[\u001fmª4ùG\u001b\u0011l\u0014»@i5ï9¾lX©\fëîN«6G0´÷#\u0003J¸å×ï
>RoîPîcV\u0018¡C\u0003.°\u00072Olè\u0004o\u00039\t¡üGü)g\u0013ëâ[¥=MÝÝÒ£â)\u001c\u0005îr|tSZKÀpX\"fìà§»¬= HUmÍÔlôa2Ví9Y§\u0002¬k\u0006±W\u001a¡ñ\u001eÍ\u001bjéñ\u0000Z\u0010¹\u001c¥Ê«ú\\É\u000eL)zfBÞ\u0000<_^>\u001d¬°p¥2= ûìÀàÁð\u0010\u0015uäe«¼\\{&\u000f;Ç'v¢\u0010»óÄ_¾¸\u0000\u0018\u0017\u001cÐAÕ%H<J¡Nß?ßj= ¢©'a\u000e\u000bɰi> ;uËD\u001e¸XCï¦$;\u0005³w\u0013DÑRùJ®ýà/Pä%²ð~¾à§k)ijr$R:\u0004Y®¹xv6ª\u0004ÖJ&CÖç}È´Ý\u0001Ö\\×?¿Þt¿ð¨×´]kôCÍnaØý¹\u0018õúä\u0005øt8\u0003àv{ln3û«\tÓÇm˽׵¡zü\u00157eÏø\u001bVÙbø@FE\u0014§,î9 }~T)ɪÂ\u0019¸\u0014C\u0002·-¸?\u0007zR\u0004f;êÈagÄî\u0012߯\u0019m7JòË3aJÒúã¢\u00109¹I¿f\u0017WÇç\u0016\u001c{%¨ÐÌI¡1Y¯Â\n½Ý:÷M²ip̲õùÇqgÜ5«w¯\u0004hI.[+¬Å\u0003\u0001£Ôáj¯Ï´^8O\u001aµ\u0010øþ\u0007\u0017Ò¨qÜ?\u000bX\u001e÷o5é\f¢H¤èò¨@¹Ú2\u0014PY\u00065¯DèFþRwy\u0003(Fg5\u001a8ÿ'\u0007+ DÂhÏ|I¨EÛcD\u0007¤J\u001f'K\n\tËBðö:ò= ð,¼=M,yí¤l\u0010\u001f£b\u0002\u0016í\u001e\u001bt¶ì\u001fpE,óÑ¿3\u0007Ä$H\u0019r§^+5Ö\u001bóP¬0_V®F¦\u001b\u0000=}}ä3y¸\u0015ñé\u0015%HíÓHÊ\u0010;é Ä}<\u0017?zêÀòp\u0017\u00041W§0Æ\u0010uáãE¬/E¦ÒZ8òÒêÏÚûïö\u001bí°¹\u0015!º6äBÔ:I\u0019\u0006*x5K\u001a,5(Øjz\u001bÚº\u000eP~q\n\\\\=MçEW\u0013^\u001b³\u0002æû\u0012;)\u0014!*ÊÁÍ¥8(7\f8\u001aæ\u000evuüÿIסÞEe\u001fo\tOôCúÞ¹wp£t\u0005-¨YÉÑ}¾ÁJ ç¦B¸´¦\u001cþ-â5hô ëG\nRgêUjë\u0012G¼CÎ0íÇNUjPä-:5Úý,oáé-\u001a¼ðr\u0014]\nñ|â39&9¨oe¼qô\u0005ä nñ¯\u0010Ë$reú\u001d¼æ×Ó<Né\u0011\f\u0003^MŨ\u0011Ð\u0005~N\u0006ët¥/\u0015Sh\u001f6&«}7©ÃÔ\u0006ñlÙZÞè½Ð¹·ãU§'Ä\u001c¬¡Ã>²\u0017®Q4!i\u0004Àé\u001ac¬ø{ËtÔ\u0012U3 7-_ì,?UÎì ;p¿;PÖ»õ\u0003'cîÑj1çjÓ\n«Ô%àõo\tþ\u0007vìÙ!íçsÌí\u0003\" >ËfÎDL(D\\Ï\u0014Ccð\"
Wà±{d¾]³FsHÄ´w\u0004ý6\u0007= \"\u001dÛèÌOÞ'\u001d\u0014Xñ,\u0018½Øä¿±QÆB\f×\u0003©;ËÏ\u0003ã®ÞY\u001bÍJóUýí\t~t©V~Òl\u0006Ô\u001f{Ù(¡Dk¨!§RrN®X3\u0018ª\u0004ÏE/;¾3bH=}D¸ÿUùh¾»nO@äDø\b·ÎsËÒ\u000býV\u0010××\u0006/\u0013n-<¢ÝxTcÉiª\u000fm¬NnäÑìÄò¿{\u0001®OÁ\u00172¦w0\u001b\u0005cmw\u0001\u0003§J\u001a\u001faq\\c¾ðÖAQ\u0018ÿ\u0001íÁs°N¦ôg\u000e\u0002v2QüûAÆìúÑîÕ8{æ%!¿\u000f1¦æ\u0004±&ßÒp±\u0016¶ÞD3ǪtV\u00105'Ñ\b\u0017d/×ëÝH°5Þ.Ï\t¡È®,ÿ}þî\u0010phËãý7\u0018Ú\u00197\"ù=}ýûö\\\u0000¡\u0018p;\u001d5ftñQ¦¯WyÖ\u0012&$Á>GÂU®µºÂåqöót¹7\u001bÃïçZ\u0001\u0004ñ\u000667o@\u0014\u001dÄ:@¼N6e\u001bñÀµ,ðË3= ë¾p¾+m,³Ão ý@J\u0004æAtª¼.í}ö\u0005\u0001©×íLs= ¨*R1ú¬tar!ù %þb^ø\u0011\\\fQ×Öámf\u0018ÏØ\u0013¡àdÚ\u0003º¦Wð\u0006]íÓ\t\u0017Ø\u0018a¨§¬o\u0004ãϳFÂZ\u000e\u001bJõÖ2\u001cAkæè[&õmD\u0000Þ\u0015\u001cU\u001fÝ\u0002\tänçòmÂ0\n\u001bá\u000eà\u0015®¥ÒDÕ=MÕí/\u0003³²ù+)ç+'&RIÙn0õ¨\b[<\u0007:OòëøÍ!¦ø±¨úÈßO¸~Ñu>ÿ5lçF\u0015ùD\"é¤s²\u0010Ô!Ò\u000eNU§mRu@\u0002â÷pÿ\u0003Ò»qRNlÒ÷Qv0¡8ä¤ÿP\u0006.ÆÌk\u000e¾ògih\u0015Uc=MÙ= úÓ\f9\u0006@ý6ôB²mUn(\u0012ÀÕ\u001f\ný\t)C!y'¿Wgõ#\u0007ïÜÑøÃ§«ã3ÔÛq¥m×3Wɳ÷.}Ax$«Ü9hÊ{çÕú²\u0016t]¨oo¯\nÌ\f¿Â§©ú,\u0006ê÷,M\u001c5)AÃN#Íp kÃm!?ê [\u0007%¿½¶\u0016¤¨{b>\u0006\u0017\u0016Pª
nH0%V®ÖäçÙv×\u0003þ0\u001b·}ôWOÅt»\u0011MÌ=MpeÕm¯WñÈtüb\u0013»½i\u001d\u0012Ø3#sgHÙ,º\u001cÏÇ\u0019!Êû[ñG¢s\f¹ä\u0017\u0001fI\u0004±E]MeN\u001d¸¿\bFÈVy\u001a4®È[\u0005.:=MÈG¦Ãä\u0014\n\b\u0001\u0002\u00179¯ñ:)ÿÓ9\u000f\u00175M¹AR{ëå´\u0014Y¸43ÓÞÉ\u0015©/Y¦Uµ!)r\u0010Ñ\u0006H£;s1V8\nÌO*\u0005Gã0d÷\u0010@è5¢öDt';>ÁÿÝltÊÛø Z1æ¡e,+©Á ×Þ Ýâj\u0017\u001eÒÚ9\u0018\u0004»DbÓ\u0011\u0010åHS üì\u000b±H51\u000bq|¶íÂ*ÑÁ^ïªØÛb3-ذ=}©}Ô{?jt\u000fÛÁ5ý¶?ÐôbXÐrhÞ8\u001f¯ð\u0005W\"Úéî¦Î\u001fNûò;ÊB¶Xê/<ÿçÀk\u0006¿ÖTg\u0001m\u0006÷ùÄEDö°gåXë&_/¡¥4Gö7\u0013ðÃ\u0018Mf9\u0019ã\u0002¥G\u00049ËÏ\u000f=MÀaQh±Xì\u0005\"Öô ï[ãGgnâ_dU}ư}[íáÀýí4Ú \u001aùù@Ë¥\u0010= gæý(\u0007p1\u0001ÇGuÆ3ìâ\u0004QFÙ\u001d\u0013ôLÉè»\u001eáUJÔM\u0006£'ÇÔ\u001aKöÖÀ\u0018Q£õ:gxq/c/\u0003-kMpí¯J\u001b
\u001c%Ö!§ï<n§«\u000b\u001e¨Ø\u0000RGÿøjõqY!\u0013±¥¶\u0011°*Ô\u0015YP9h\u000e\u000b= \u0006\u0012¯Þa]¡¹\u000b\"\u0007º¥= Ðh·¯fGÙOéve^E\b¼ç¡ö\u0003\u0000\u000eãH1¯Jä\u0000èØÈ\u00110¥\fÄ[\"³ïys/Ö\u0003¶¤\u0019nR<Ë\"cg¹\u0004\u0016UÌ\u0017a£¼¨ç\bƳfuåÖ[\u0010\u0002÷JÆ¢9|\u0000â@Ó
D$Á= ÚÙ)üËæI\t\u0002sm\u0012O\u001bù
ÈkþRòIaëÃlÑ1:Íi{¤\u0019w²E¯\u000fÔó
m¦7kZ\u0002ÚÈ\u001b\u0015Y{øSeõ4\u0002\u0001\u0013\u0012'n:Ú¬(:ná:\n×*BåÓè<\u0007´wCP\b!\u0011ØpæÎ¿çÎ˰%4E9{\u0004xÁU[\u0001ø©qéÒÿgÑw\u0017æ¾= 4\\\u0011´ÉB-Ú©Ý0Óʼh\u001b§HeÌ:£Àø¨]-BÕÏï2w3xÓ®º°\u001cù\u0001ÊêDÊÒæ\u001fyólÇ\u0011p\u001aV\u0002Í^µ¦ù±¿Ów!6Qòý*\u0017\u001cï»\u000fFkª¦;ÿÛÞ¬¹\u001e\u0006¦\u0005ÜÖ\u0016LÒ×\u0019ó\u000e\u0017Ó
F<Ùäf\b\u001bÒ\u0011ãã3|À7ñ\u000bêÒAu\u000f»ùª\b$\u0004Õ½ð3è\u001d¯ÁO¬(µ+6\u0011Ý^äÕeMÚ\\\u0002åÄôä>¹0Õïté¾)xêl©È\u0018û\\&kf\u0011Í5[~pv9¬ÊîRï\u0005:ÈtÅ\u0015ã\u0010¬äiÑ]\bè#Pï_ÿéA®\u0006\u0002Þ²#¦ân\\¿³âC´w*W9ðpð\u0018O®W\u0001#¡\u0001\u0003\u0006F-C(61Åõ\u001bfÃ\\¿Y´v¯\u0018»º¥Õdî\t~¢;Åvʺ²¿_1ðµmjW\\6\u001a\"h»%:ÈðäZÙ¶j6%X\u0005\u001eªíËr7{O\u001c\u0003ÕhUsWvÉ\u001eÃVã\"\u0002Æsë³PÒB?Ï~²\u0003Ìß\tx£z¿t¬Û¬´ \"¯}4\u0000åàwK\u000e·´Õñ°ÿJjý\u001a@_ÉÓS·~Y¶Ö&÷+AY8\u0015\u0015¦ª¹O4Ù¾ßRøÛüYl£Q\u000e¿þÝwþô9¨¿ÐZÙ\u0010ª¿2j\u000b6¿\u0011ìiîF6{\u0006íT\u000bjÎ&\u0017^-·ÃJq\u0007jqy~lÞS!ºdaâ¿bé[\u0018¼'®\u000b\u0013NªI²ÀÌ\u0005\u0000Jù\u0006NÔ\t?/7-¦\u001dtIç´\u000e=M\u0010¸^\u0007\\ðÚcÏ\u0002ß\u0013%\b|Ú8µ\u000b¢¶,G58J58M\u000bu=M-ýúÁO0zªÓ»®o%ÎÿaN=}Oï6.j*ÄѤÚ9[q³èr.üS¦¹\u0014Äæ1\u0007ã1Q¨óú{Æ5^¬\u0000®$:}iQ\t\u00139ØT\u0011Iáâ¤\u0003<<¸4@ífyë¼EæÓ!\u0007×ðk_8*6= T¨DÎ/®¯\u0013!ð½-ÑVª¨´[¯U&TyðÓÊÐ\u0004\u001d=}\u0000cÆÒ:ç*ü£À\u0017¯k\u0015»EÊ>õ \u0015Ñp¦éiÝ5ÓÒ¢\u000b¤@·Ëôep\fÁ#qú®×\u001dnÍ÷â Sk@ÑÂ?3pIÑAk¯»×ý ½6÷þ öþ°@2Õþ0±Â&D)î7d±BM\u0013:\u0005Ú\u0010\u0018üE¼\u001f\n\u0001)f=}6i9§(Iñeë¨9\u0013)&=}6P7tëv\u0013ÁûùÈz±B\u0016O\u0013â3®²ëh¼¸×zb±Bö\n-\"\u001f)aë.7tðv= ëJ,\"9\u0018üIC'gºY\u0019X'ÛGñ×\u001c\n[¼àFI^Ö\\òl\u0011ñ ä\u001dÇÚw§ªÈ¬\u0010õQW\u0003F¾ßÓfá%})¶»ä©\u0007q¢^âè¸FÂ~aR9;È<Å3,\u000fÉR\u0003O[P{ñf{;ø<m<Oö=}¯@ëõf{;Vö=}gD¦»Ý
Dp{õ;\u000bÐfù4A'M7ìU÷¶¨¹ì;Y\u0019P[Pû8ö=}ï?«¥»;b²@#E\u001bÿé;x<W\u0014P;±@C\b±Û¥F;ÜV\f°\u0016\u0015ݦù\u0012=M°n\u000b°Ï\ns¹\u001e&®7ÊúfÁ:'ö\u001e2\"\u001aXö:\u000bö\u001e1¢\u001aXòz.)ó8*É\u0016z7)ó88*É\u0016Úµ²\u00179\u001f\u0012 1䮫¬6ªSJ\u001f=M§D;\u0007Z3XV^hÄyçäÐ=MÍÑn çp\u0014\u000fÞ§¦\u0014 Âô=Mr˹ Õùü/·õ×\u0003fMkåÒ¥Ü(Úµ\"2þìÔèr³Ýª2ìV\u0011¡ôÿóQ\nè\t\u0015\u0000Ñ\u001a§~-]D\u001dþÆOjÚ¦xµ5è5ù°A\u0014ðóß%}+੾ðѶþÏéX\u0019ù⵪,øð\b¶o8D®4yÇØ5¶qB\u001a\u0010¶\u00072Ùúf\n= ßå6BË%Zù\u0012zT@\u0014çº\u0015'ZDÉó±OýÂ\u001eÁòÊ\u001chÖð&Y#Ì\u0001oÿO- \"d¶ø!= X¦_QÄA³/×\u001d¨\f=M¢\u0010-\u0006,\u0018ÇÁî¯Vñh\u0019K1\b\u0005\u0007DóW:²¶5Ìó\u0004\u0016ðu£Ln7ÔráÔr%\u0007Î\u0000\u0007.¹ÞÃä{C<\u000f\u0003ÖÈ]¤\u001fN\u001aýx\u0011C:ůn¹³/*\u0017¸\"£s\u0015Wh¾Ï+\u0006Æ(³âóÆYt<0j]9LMsScÒíß\fr¹aÍ3\t= ,ýø¡\u0016\u0005\u0010U\u0000¥9^f,u\u001053\u0004J\u0019µìíɳAð#ç¾õH¨hüÁTJt¶Md°JÛ\u0003ÝîtÅ+~ÈsOggËóÊ$«c§-,uY¸Ù\u0017ZýÚn\\8\u001e¾¼âé\u001b\u0018\u001c\u0015A#¹'à×Á\b\u001fàò&v¹É>\u0018\u0000=}7#PbWU<w\u0005íî\f\u0019\"ÜV]Åx%U£\u0004¯ð]\u0006ÖÃçv\u000eâõ÷/S±@ÝË>DiT:ÿ\u0002iHiì+;HQ]\nßãT´j\\è\b´gl2X£\u0000\u001e/+\u0011S\u001eÒy\\+#ÈÆ\u001e
²t\u0007>äÏ\u0012(ô%²ÞóuôëÏ\u0001ÈAC¡ON¾\n\u001ap¥qTXü&ÛC\bæáÆhLH\\°<ìñU*ñhÜlÙWîtxç\u0010Üd¢4ɦÑèÕ\u001b æëdw÷HÏ~~äÀ\u0015\u001c/µ$ûE2à¶\fKÌ©KcfB°î»Q'ëÏà~¯¥+Þh\\3víÈ\u0017Oÿú¾\u0002ívUÈ\u000fWí¹\u0015\u0002ÊIWsVþl .\u001a\u0014²0K\u0010²·&%÷?=M\u001f\u0005SÝì\u0007^júï)r)\n³#\u0004eó§þ'6- \u000fβÿ²UR\u0005p§/c°,}êùzI\f5Ê\\¦r(/rí\f\u0016³ZPRÁñÁo;\u001eë;T\"¯æ*£þ8 u.1= J¢iY8K\u0003mÙ:E\ni\u0003Þæ½õíÿò\u0007èÊÁ|°±\u0016ð0¨]\u0013ï°s!ÊCp:Ýx5\"(\fz¦æ/Ü<Õ,¨9cÝM9@4= ¬À\u0001=M=Mæã\u0016HóO\u0006תÊ*õD¼Ï¾j<\u0000\u0015·WÈ%Bd,´\u000f?x\u0006\\W¨ÞË=M/üÔÜ÷Ía¼H*ò\u001dûGm4I8ÖR²¨÷*N\u0012xÇÝeU¸I]îÝ[Çð@fzc\u0014:Ïy÷ÓgÙaS\u001cçy\f\u0019\u0000½DP0D'= 1d\u001fü¸ø~Î^.ä×z+GBû0<o= ȯ(Ôí{ÇM¬Õ«-u\u0002Ëá3\büæ\u0014ßb&hX\u001f\u001d ¤(ÛæÄCYÞq\b\u0010\f8K\\sÌðdØ
ëÚ\u0018ðsvÍ\u0006\nk©ÖlVlXÒ\u001bÛ{5ÿ\u0000ÇVaNîç5³¾YRPôä= wµ\u001eb^Ùp\\= )\u0003\u000fmbV\u000f= h\u001c°¦á6u\u001f\fÕbæQ!e°\u001eYª\b¢ñ\bN¶ÄLü,\u0016wÆ\u0015\u0017ìh\u0014-æxAûQÚ3uÿ\u0012\\\\ävòe¶OÏl8%µaª\u0012\u0004ËeÒjö½dòìwÎÊãtÒ§-´×¿\u0006\u0013\u0000ïYY\u001c¦Ë[Q=Mòa:yG/bÞ\nõ¦Kz0læð¢^D= \u0018\u0017\u0002^Þoâ\b\u0018Û\u001d²@Ð÷fãÏ0)À.uùa¥/iÌ e¥ÐÈïU¯=M\u0010MdÍÅtaæsóãôV\u0012ÒpÚê³SäÞ?q¦¶]î\u001d¥úpUäÙë\u0000¿È¤ýQäù\u0013Õ\u0003§\t=}³+VѾÿü±¬Ï:\"O%oo@ú2¬l»{p©\u001d®\u0014\"¬\u0007ÚÅñ,¤\u0004«\u001dæ\u0014ÆZ\\9©2³Ø£±ä0íg|C\u001e\u0019ÍDP¬cËa8»@¤Â\u000fnà\u0002U'Ö\u001a[¦ÙÁ\u0002×Å\u0004d\u0015\u0000Û¥Æ\u0004ò&G:r ¢x:j\u0016\u0017$¶âD¨Øaï\u0018³¸?\u0007\u0001Æ\u0000ÿ7¿j×-\u0005oúFÆ3>}U[é>#ï}cÐå'ÍØnÒe!,gª2z YΰV\nu|êÂÖã\u0017mÉçñu1àX-\u0000ªbO&dùoVx\u0003\u0001\u0011Í\u000boÊÄyãhúkäçË!¯\u0012äÂÏ\f©dá_µÛh£ôY,É¥\u001cåK4\u0003\u000bzC\\Q.aïE,#\u0004´é\u00066§,(¡ú$-3÷ÀÚËz¿^j)hâù&ð4³R\u0004ĸ³êPÝ\u0019¥ó1ýÄ\u001d1\bw:= ñè>éÄï$z$Öh[ܽKV?F{ÕÀ¡Rö!;|ì\f·¨oF*À~<tK ëØ-vç×Åd,?ß?1Öó\u001a¢Ó\u0018\u0014Ô´¡9nöwö²%Äg¦\u001fؽLd§ÆyÂ\u001dæ\u001dÀÝ}Û\u0013åß«\u001bÅR-\u001e-´è4i®Z.Ñ<BAóI³ñ\u0005Gr\u0006qðqhp¬pô¥'©·\f\u0003\u0019#óÜÿ«¾ü¢ëçeÌ\u0001%\u001a\u0010Î&\u0000©ÆH\u0000e\fTåÎ/]\u000eÄösÉK¡ò@§¼bzIJÙ6Ð\u0004D¢*8ÄKU\u00021 2ù\u0010S¥½¶ñ±¯0°õ±a7÷\u0013\f\f)\u0017ùé(\u0001J'\u0002\u001fúîúºöåòðqñsò'¤rÀqØ:¡7h0æ5\u0006½j\u0010Úb·é7\u001f6$1\u0002ZÚ¸¸#³ú\u001e8\u000b2ò\u001aú\u000eº²ø¬Þí,¨~þ½ÁÜHX0ò&®%Î%¢\u0011¶\u0011Jèrç\u0002&\u00140ãY´*\u0001Ä|û= IÖý´·ÜÃÀ¿·IÒÂì\u0013½íH\u0011WNLñü¤pLbÙç\n\u0011\u0017¶¶\\xïÓ\u0003Í/Ø~§éº.\f§oØùÇÇí!Á,ÆÛ¡õÑÉ{â#\n¯[¦÷AþB´]h¨ô\u001e¬\nF= Þ\bïMÈ¡Ü\u0019{ñÎ=M\nÊ?Æyëí#Un\u0004¢\u000f§%©Bx?ôÝ¥5oØ¿\u0005\u000bèù²øY\u0012û\u0006Å,º/÷4¾ÁLJp\u000bpïÁ1\u001c;3k5dX\u0001Y\tZÄ\u001a\\zøÚüö\u0000|º\u000e/²ÕÈ\u000b[Kp*â\n\fÉ\u0004\t¹\u0001ü³ w\u000f6]f0KÄkÿ}X/õÌéÂ^B\u0014]Pe{zËB¦xæÓ°ÂÀ5$Ue#ýÉÇF$%Yg©_µ¾Eu\u001dpïY6&\u001aZ]Y\u000eX'¨%÷ô= ¯AbùÐz 5ybðp]z¸ÂÎàY\u001d±Ó!g76ǸY\b\u001ew¥Ö¢j¡:1.Ëp8v&ò)½Êsû|gWì45s\u0004§ce\u001fEóÃ~E?C0±ò¸´µ,{'ݤ¼)^ÁÓ\u0000O\\ÿ?·YÒþ¡Ü%\u0002Jæ)\u0017÷ë^¥ý\u0003|¡mL\t\"íÌ2¬LÈ\u0010\u0018ö¯%!õ Æ¡Á3¶uv\u0015IìÓTV#_É,ðÆêÑW\bs\t\u0001O´ÄÜYþè[¼ËÆÉGÌ)Ñá:5+ø\u0013\u000bj&JÙø\u0012[ð1Ôðe\u001e\u0014ÎÊßÄ\u001býßøâ*\u0011Ô\u00155Àê\u0015ç/|> seoupö/ü¶ìÄè3%X@Ъà\u0001ÙÎöFéznsÁaXgçµ¢©\"Xø){ ø·ÿÿÀ¦±\u001f¹-|¥m=Mº©\u0017\t7Vêhxbi\u0013¸å\u001dà\u0004{¢:\u0014f²!\u0011Tu@iÇ\u001a4¡)siw¹üèrÁEBÚ4,¶ÛÁ,{âÛó\btà²&HA3\nÃòúë\u001dà$û\u001dJP\u001aªkî/Ùúo #Ô%AÔ¤\u001b\u001dФ
)ùñï,CÙö%#ôBZÇ\u0007jÒ´-ýÎJ-ü\tîM\t\u001a8y'ï v\u0019·¦!KOôd\"} .\n!þbg²ë\u001f±¨.{¦Ê®\u0012Wx.ãü·\u000fÇPÊO¸7\ty¥\u0015¼7\u0006ZAt³È
\u0003y²*S¼FT©\u0000lãüÇ{F_³ó«gVlX*üiDÐûõ\u000bû&c\u0017yÿ|\u0012\u0001P\u0002ëUÃ\u0006QQ½j\u0002Û½2[àa}ûê\bàè¾Î¹_ ɱ YZG³\u001d\u0007X²\u0002бðdQÙa\u0002EÆìiåñ]ÿ\u001e\u000f¬eZ\u001a¾\u0010{pÃuÁÈýWÀ¬}^¨ sh¢¾9ªÌØcBU>°K±ÌwY\u0001 ÿÃ\u0011UëºË*\u0004Ö³BùN«\u0010²ûmE®\\-Ã,s\u001bÂE¶û±B+Xa\u0012Î\u001e¬T\u0019èý;r+û\u0012}Ñ=}\u00199\u0019ï¸3̲\u0004§\\@Ð6M[\u001a¿ÛåóHÚ¼¦\">ø¿.ä\u000f}£ëW|¬:¯a¾ä\\\u0013\u0017À»É[¦Üë]u C³SâØ
q\u001b·
\u0017Àõ¼dYÈÀ{à\u0006»£ô£÷#Æ\u001bW©>ÏÐ\u0015´§\\âÉk\u0002{]Ë=}Ñv]Á~HtÆVDÞT\u0007»ÓýU\u000b]\u0003\u001c³·V«R/ÙEÎê\f±å?oþü5Ñs±{\u0018}\u0003Dvg¢Mÿ;A¨ò+j«2kòtÝO\f \u0007ëDöÄ\"\u001ef,b«Òù\u001bn\u0004·\u0003fbÙûý\u0018a'$4¸dRÖWM\u001f\u001c!\u001d'oýü\tµ\u0013\u000bü
À\u0017»ÿtgòòp¸¤³°ø\u001f'ª6òéPlvgû¸ßÈ\u0010;ÔÚ_³#}!ñ¸B2Zy³m©\u0017òt¼å®Ë²íL,Ä= |{ƸÏ
à= \u000bOz \u0006óCº\u001aÍC*¤ùЬ\u0016J Pád¶ÌÌ\u0019ÙPPÜ-0x:å÷÷ë(\u0000ÐfÀ¨é÷\tÇwÙL²$#Üè$j\u0006\u0005E®QX\b¥6øç÷k2\u0018æ\u0007¢vêùe£\u0016ù0£|¡(&ç\u0017\u0012ºù\u0003có\u0017ÙP9õwà\u0015çÅë/04Qø´«%\u0003\u0011c:\u0017ÉÝÇçÇÞê¢\f¸øh]¡ºÞ6oêç¯
2ré$ãCûT\u000e¯¤máùÐÁ&l
¢¸\f}tÒĤeÙzû}\u0019¥ÝÀݤuÈúÖ¡ã¤é³¼äÓM+ÁÇò/t<\"%H\u001e¨Å|ôòyûüpPÏ7\u0013,iÙ\u0010o\u0018î\u0011¶ÇêåÃ8\u000fÈsÃJýkò:7»ÀË@ýÌ\u0007\u0000[{#sA\u0012?}F{ÍD\u000b¿»\u0017;LSHY(rPÒñ2ÿ4ÖÊ&dÎ7ágì¬\u0002êå¥Öÿëµ?\nÄ\u0019ë0\u000bä-BH¥\u0017{$sq¹'Á(úQ¶+áq\u0003\u0004h³\u0007\u0015\bB\u0006Y\u000fæ¬ìÀ\u000eóë@f±\u001fOö\u0016¿TG-Iï~!\f½FrÙ÷]\u0000Ñ\u0001A\nÕËñ*´\u0010&aÄ\u000f}$Wm¶¤ý\u0011^Ò*\u0012qN>§b\u0007Íï {¤ È\u001a4ͼ1)N\"ÿç\b\u00039ø7\tîA}eò°¼»pI8¹4\näôøû5ù÷Ʋ·\fníí²IÕNø±n\u001bø:ñߢr¥'ÿlæ\u000eJQ¸3hÏÓJ°IÓTÔÓ¬ß#\u0015¾ò\bMä=Mü =MÇ= D$BÐ:4åÄ\u000fnZXKqj¥þ\u00118ôR*ø¤QJS)Tí«°\u0005ÉÞ@àPÊ&kÌ\u0017\tn³\u0019-ÈvÊØø,ãéyýn5)\u001e¢é\u001aê8aÍe(wa\bõa.\u0003¤\u0003\u001a}%f'\u0017b\bÉÖ´ß#\u00058rÏÙý¡Ï:Ï\u0003¤6Ü:\u0015¡x~f¦\u0012\u001bôì&îÉQ¸ê\u0001ÿÑÉ\u001eágØñB)\u0002Î5
m\u0007¢7/4\u0006ÎnI×÷/ë\u001cöÙ\u0004ÛÌb\tÄ\u001a°7'ZzP^÷âã\u001dr(8(\u0007Ðöp*9\u0011Ç/ØTTú\\®:\u0004®GyÄ4«Ê\u001c\fÄK=}4\u000f>fÊ,\u000eR\u0001aá§z¶6.³\fm\u001d:\u001eøû\u0006CtìÆß\u0003§}HÜ ëþlVqdt«yYey^\t^ñË\u0003?}HQ³Hk&\u00176ã\u0000ÒLä0@Ü[溩\u000b9\u001cÖ3°$°¤=}\fôûæÂ]ÔÈ¢a\u000fqÙa\u001c\u0013ùa$Èͧþª\u001d\u0014Ð\u0004Ö8YãêOLu·iBéA÷Ú[!p4Õ\u0007^\u0003îÇ'»ïÃòdR{u´?îôª¿Hçÿ
\u0006?5Î/íÀÿb#\\ôLj\u0000Ô)ûJÌÉ[¯7\f,º$\fÍh<xA¥v\u0007AWeû\u0003\u001bõK= ÝM\f¤<lÇrK'DËT¦\u001eóC!òÀáÑ;0ÔÇO\u0004\u000f\u0011ìG\"Ä\u0010®%e CjÌE&½Z\u000b\b»Y\u001f\u000bìÔix-ÿfäÀSlÈlêÏÐ\u000b>³©Ï\u001f¼#p\u0007¯zùj\u001b\fD[»ÃÒk:ÿ%o\u0004\u0007zÔ{Ñ×AÀv^äÌ\u0013ý&§F\t¼\u001dËWsæÔ5= Z-æÜ\u0016I!0ANH¾\u0010üûöÅ¥!¼s^x¦léP\u0012õfØpÊ<\"<æDTçÔè ˰ÎÏßÀÏ\u0007÷>ð¬»ÆISop\u0007Já:\nNÜx16;hi\u000bê\u000eéßÓöO÷ÀUG(Gñ\u001cÞ_\u0000kÜ,Ý·÷Q¢Ë|¨¨Aa½\u0004Ëc¤ß©\u001d:À7úå#KÈÑô¦ëc%¼#[= à\u001f+\u0007Xß½Á\u0014+EúD\n:%RÌ^ôÙoâÓâF£ºÞp£½\u0012±Y7-\nX\fy\u0004k~h~\u001ba[Í||jd®%ï©ñ8.æ½ÃkóA\u0017ÛfûBèÂo÷|k0²Ìê¼JÝÐyùDy\u00043«÷\u001c9øí¢®ÉW\u0019Íóµ 'í\u0000Æ!Â3ɯ¯ëîìÓ$\u001eW2·63/ \u00004bJ¡éÆÈEJÙ\u001f*\"¢¤§{k:\b»\t)vù3)ônÐRª\u001aó#&$\u001eYSzhw&üX\u0002²W\u0019ÚANr\u0013g?÷\u0006ÐÑF\u0005\u0006î]÷·\u001bÊQÊîñ:¬ã7£\u000f½Ýã7ÃÃïQ=}Í#í\u001bÓ-ç\u0003Yz\u0018Ù·³¨ßM¤Ä Ûv3©ÖÓS$ò\u0003rmd\\\\]\f!èúÑw×ð4¬|\"ÿ¦v\u0012ÿÇë¿7µ'%ª¦\u0006nѧï= %Ý%\f¡ÐúêúÊÊ Õ¹¿êÍ\b}Ö\u001c§¤$Î9ï^bfa¡¿%05º _áê\u0015Íìßc\u0015\fm2\u00141Ø B\u0012\u0019ë\u000f\u0010º÷§ýÐ\b\u0002m]Ê_\u00073= ,Rÿ
àÊê\u0010½\u0017CÐMìBÙ\u0005wNÜÕ\u0005¡æÍMÐòÇL·vïÌ8\u001aI0¾°
\nNRé¤6òÚ$4qÛðãjR¤Ð\u0011.î wu\u001aØü\u001dmÇóþá¤uÖ¶¿¡#¿³ÉäÔW\u0013ÿcBaHW6G\t\u0012\u0012?\u0014ÇdBàx^û\u0001hƬà4s5ÿ\u000b¯¹\u0017ßlÞ\u0011\u000eo%bP\u001dÛÜ[G.ËCS?#SM]<×¢¦ú^_c«LFë{G]\u0003F<^m¿
{Ë<=M=M×zêúó²ßl6\u000eú\u0015)¦qNàeÎC.DQy~°8'£ª68\"øöò\t±®Yn\u0015\u0019Ë_«Ü;´Üå>#4ú.\u0012\u0002{˪BM
1}Ú®«/L8³®\u001ez;êUû,¼v{Q\u000e\u000bH+zsM\u001c¿¥ÅÍâ\u0014Û5V\u0002ÎR³|ÿÄ»>\u0013&\u0013ÅÔÔ2p\u001a2r\u001d]\u000e³\u000f¾9Xêh\u001c\u000f\u00189ðeû\fµë\u0010{À4;nN^~>3\u0010ÎÃOÛ5ê:aùëS@s\u0016ûiZ´\u001aë= *\u001f(ò§ü\u000f;Jb¦F^lÁùr7°\"\u0005\u0014\u0017þv=M\u0012éí¡£ÛÒÆÞ(\u001b¼!\u0001mDd\u001fìÌè\\ÇG_O¿\\i\u001aû~ÃÈKtSà4dñqLì5wÂ8'S\u001fè\u001c¯®¸?ØM\f\u001b\u0019¼ãÚcþ\\_è/m&)ý\u0002\u0013#ìSÆ\u0000ªÚk%¢\u0016Ó¨j¢éÔ\u0001¯ÃVâÎȽCâܨòã\u000bÏ^'Í8=M\u0000 ¯ÖÝ*>¸\u0014¸'6ÿW\u0015{mç\u0016\u0007Cê\u0018µaÒ\u0010\")\b\u0012\u000bx\u001eØzà.\u0007º]lÚÆp\u0013:\u001bëdI3¨¥ö¸\u000fºë¾L64+\u0015\u001eHvöÈ\u001d\u0016s×\t4>óX\u001d[2*o²XþTw\u00103NÖíáOAU¢¶ÕñE4\\(-Ù4.ªTr§ÿvTÕ\u0003¤ 8ïØ\u000e\u0004%p/¯\nZ\u0011\u0001VmÝÜ)ßlðz§:\u00008W\u0001^s=}qM\u001dnÎ= [\u0003C¤¤øÎäù3º\u0017Í\u0016'G:âà!\u0017OrVFCO½Èþè\u001d\u0017A9¶2Âæáv\u0004àOÉ0õù\u0010Ï¢b,T x\u000b\u000f{Êý\u0012òÂôD|1¡M󮆦ö¦:\u0003×!m\u0003Ç.ô§ë/¯o\u0012sï©\fÿl~\bHÿ\u0007ê4\n\u0015N\f\u001eçB#Î}yg~+\nYDø*\u0012\nâ\nÓk¿%©9õh\u0015 Ãy.êçþç/\u0007U¸q{¨ ¼?%·Ñ§h{ØHÀÜaw\u000f\u000e¯¶þ£¸I%©4&\u0013flJ°ºåeÙt\u0005¿Êohj\u00052hHSå\nøzU)\u001fbÂöccI%&3-/=M\u0019 \u001e¨È«»\u0011èéöHY\u0012¼Myîîï¸å9ÊxìN(Y\u000e¢\u0006Ö\u0005\u0017\u001ft)5S\u0016\u0014\u001aZYÒ)ÄØ\u001faM«Ó\u0001L\u000bàÛÉãdÁ\u0015\u0006>¬\u000fÎ\b\u0018Èú\nk\u001eÝÙjPäÙmi%©µ¯·,«xIÝ\u0010jjáÀH^Óx&\u0006ølYmqãYQa²oM»\u0019\u0018---ùà9~/TwÕZȲ<Øî×\u001dm(ÚÙk\u0010ÂÖKhõ!\u0012PbÎ\"µIÍ¥\f0°ºª·«©2-KbôÓJ¤\u001c\u001a/¤\fÈǶ\u0014³W°zT\u0001~Õ\n\u0000\u000eÈtã¸r\u0000\u0007ø¨j®\"H\u0001ãòø,µ»Ô;ïÉ\u0002ÑsVl[uú\u0010\u0013o¨óÏ\u0002\u000f3,á\u001d÷:[ö&±¹¸G6þ\\\u0001\u0011Ñ\u0012\u0016Znd\u001c&ñ(Z*)<1l!OòÚ²·è!©Ã®T¯%Ì»iP\u0018°Ú\u001c\t]\u0012îVy¾©A¾)¶ÕîÃH2&\bä´SFYð\nrøÈSSxèºØ§b!m%Êõ\u0006¤NAMW(»y9Ôîÿ\u0000Æâ2\"ò¢R=Mâ\u0015
@8#%eÊè+Ű#µÑ= \"Él^sõ¦&ÖÅ×3\u00115\u0001\u001bø¢o\\¡.¿]ÔÔÐ(£*Û+ãÿh«öN¼¸^\u0001@Ùö3qܪç\u0015\f1yün!xQTv4\u000b.ÝÑèØ\u000bt\u0005j¯!7Cÿ}ÃLQ\bÝ\u0014¸'yj¼
¾\u0015\u0002|\u0019dç!X@\\\u001b;A5êúîü>e¿$wo.~î[ZöÒ\b$\u0010«o©JêöÂ\u001a\u0000\"z:Â[ázÕä\n{»= §+;æZW}ÇÒÁZ{þ$&>§\u000e|@!/¼È\u0006( 0¥3UyêB&)$M-Ô¨T¿>Í·@Ü_sV/Fum¦g=M-
A#\u001dk߯^{%ü1\u0013WOtC¯9µ@Wá]\u001fkHÜ\n[QQC¨@_)Û¶[\u001dä~\bÁ£i\u001d\\yM{WÌ¿_ÁÇ\f;ÄÁ]B\u001fɽÌE´òöK\u0010ç+\u000bĹØGðoÒ$\u001eãÚ\u001c¾>÷Ø'ÁÓ\u0005Øl\\q)/\u000bÄ9\u0019©ÞÁJSÄôC£~\u001dÅã4îá?B5óÊYyÿýÊ?ÖraèÅs¶Õ\tu\u0007\u0005\u0017½î± ßéT.\u00067ÔÎb4¶ô{!¼á\u0011Ü\u0018Ô$¦\u001eÒjo¢µ#¿¬Y\u0013c çN2(\u0013ï¬\b%àLFýâA@{x¶t&¯\tÜØT¤&Næ!\bC{\u0016\u0004)1\u000e(ÖjØjisÔ®³
O-é²^ɬlßÄÑH»ÈÌtG{įOxö.\u001ff§è¦¥.GòÇ\u0000\"\u0018s:Dõ;:e@wk\u0017twïy²wWÞÙw\f-\u0000w9Á,wÖæKx@èex¿ýx!xLĽxÂÚÎx\u0006íàx\fùóxuú\u0007xê\u001cxOÅ2xI= By\u0014/MylZy£\u0012fyÅ\u001esykyÏZyúyÉ\u0001«yëÒºyÂyJÊyÓ Ñy´\u0016Ùy«)áy\u0013Vêy6òyLöúyb\u0003yòÝ\u000by³e\u0014yÏö\u001cyG%y\u0019(-yAÄ6yùK=}zZAz_ÚEz\u0019IzfQNGÔ>{×WûÖ¨\u0016±8í¨\u0016ó\u0001\u001cÈô¡\u0016ñ¨\u00161\u001d§\u001e¶ñ\u001aÚ\u0015±Jma1\u001c-Ï<ÐJ\\t=}½\u0001\u000b¨ëI\u0010Ê0Ôr\fSØI!×eî_\"ØHý\u0013¼\\ä\ti«ÞíûÎJdyS5ÎVÃèC\u001c\"Êkm=}^\u0014ícÕâônÙ±¢NôùoT³eYH\u0002-´Å×å5$WE\bÛ\níÉ\u0005ý: qf®Ó®xÒRV-\u0003\n¢\u0003K@\u0010\"PgEÝ2}\u0004ý{PÂÉæc#Þ!ì\bÁx¥é·n³ÓÛû«sk¶Ù\u001b\u001d±|\u0002n½Ù²?NCYøQ'9_c4is6«6ÊÛ\u0004züe\u0004\u00129Ê\u001fàþ$\\QQpp4bÔUL=Mâ#f¸Æá=M2£cD¿ÐXÐï·LÚ\u0002Ô®Á:ßùPÍ5fÓ,U2âo\u0002¤ÉÊ=}\bò^ Ú Jà5Ö½\u001fƽdbß41FI¨L×d#p«ïëCâDíÞ@\ty=}ÔÈ\u001bìɹºüÅñ½Úº\u000fgå¹\bÀ¥7qåTxÈò®u¼öÕÔ5¥\u00190nòùÕd\u0010e©LòÀ\u0018¯PÔÔey3åsãê\u001d¢Páз÷ä\u001f&±= ÉÐ÷
-û|ʼ
\u00118³ü\t¨EoO7É\u000b\u0000ü¿qE\u0007e.¬\u0013Ú\n-Å·ÞßïynÖ\u001fÞ´jÊ&.C\u0005\nÞ\u0011lÊî.3ÐÆ¢i©\u001e®\u0004«\bàé¦i\u0016\u001f«¤I\u0001tt7[Â!®Ë\u0004¡\u000b'§\u0001¿\u0011jV\u000eågg\u0011¢lbpFf\bggz¡m®aaÔÔS#¡3d¾Ì\u0016nSg\n[¶A\u0018&=M$óuØÓ\u0003¯Õ2â\f(o7âßÜ\u001cË\u0001úº·2\u0003äjÎ\u000e³Û×ã¶$lÑùÔ/A¦ ³B\u0004s\u0015}üüàß=Mæ¢e*\tâ\u000b^jÀ ¾S²^Ô>]TÊL\u0004\u0017ݧM\u0015þÎ\u000böÌ\u0003G]é>MÄtÚû´=}¦vb«&{wLL,soÇ¢\u0005Õs¯×\u001d\u000bºX\u0006×-7\u0002Í®tÁjäl\u0017§T~6H\f§®Ã¡¦ O¨b¬èOÚ1Í\u001eX\u0003ÖCQ\u001b\u0011b½\u001bx\u001c«F¢¬ SòO\u0003\u0016À\\X\u0005°\u001e!I\u001c¯C¼Ú¾,gC¡®Ò=M\u0012Aì\u0003kÃ\f¢>T\u001dZ ;)T<CÈ;õÏ6\u000eðÖzN5\u001cr\u0001ÊT6·lñ1\u00004ÝJ¢··\u00137\u000bÖµl\u0019Wä.Ý)À3%\u0004?ÀbZ:´« ÝB\u0018Ö³«ø\u0013ØÚh\u0017Ô)\u0001\u0007\u0011©oÖ\u001d\u0005Ö\u0011éó\u000bãÐFaà\tw¦%\u0007Ê\u0004ç*¿v-1Â>mXS3\tÙrD1G¶©\u00028[vo©\u0013íû\u0004ÑÈ\u0002§\u000bqï\u0007¡¦ÑJëá·éP*¬±×= \u0018zT¢ü\u000b¶$?xIÕ®¬ßt\u001aQÕìãàTÂPá¿\u000fÔËP}.\u000e\u0001/=Ml¡\u000eM^Iïkýy\u0002K\n\"A\u0017²l\u001b\u0000©¸Í6%Îç\u0002ÚJõoD=M \u0001lXÑI\u0010|®ÅqïóVß\u0000Â^ÕG\u000f\fS·Ê¡÷6£ïòÊ]ì\u001ecÁÊ_4\tCGGu²s,\u001a¬\fºS6²Jö\u000e¯mÁ«\u001f%©ÊU\u0004[\u0011H_=M¥[&QH{0øz÷5® zV2^s÷j\u001a2/\u0016ywÊ*È!Ìï(\u0017Æ,dxÔ¯÷B\u0018ö1ûuðvU\u0002ö\u001c\u0014ôV5\u0014±ãF\u0002\u0015±\\yõnf±°]öbÙ@¯\u001f õIÃÚ(\u0014\u001c\u000fÙ¬.\u0016\u0016ÑUþñe§þ¼èäS\u000bÕú-oz\u0017ÍX\b-\u000eê@Ñrb5¨nEÇÕ\u001csädVjr\u0012a3p¡üÁ7\u0017Ëq¡HlÖ\u0017»qÒ%\u000bìy\u0006½&Lô¾d\u00129N?J;}{<;\u0000í¨\u0016ñ:\u0006ñ¨\u0016ñ¢\u0016ñ¨\u0016ñ¨¦¦:§V>E+µ\u0017Ǧ^úr\u001btëYb4µçü{òEðôÐÏÏ^ô÷GD\u0002ME\u0011PÞ\u001fÃ\u001c\u0001=}Á¶\"ÌùtÒy\u0014©\t\u001dÈA<V=M´\u001cÑ\u0005Úðd/«]ª¤]F\u0007\u001eÚXÞ±Gª\u0002®iÍË<L\u0003ºF^åp¿ò½gE!À;¡\u00005Üù\u000eÒé\u0019Ïg-ý\u0016¾\f^\u0017\u00046)\u00057¢eªuì_\u0004¼\u0005Ø1g¯ïà§áHF çã%¥\u0004%Â!¯n \u0013iNQ\u0015T\\l\u0014˺/dê\u000eà7½Iª½ïËå\u0004AP°°\u0006XPoÞÐËÞ\u0003C´Q0Ï^.ÉGîÞß#öÍ*\u0005:¦:\u0006ü\u0006º\u000b-6À\u001f'Ú5.Ø> Ô\u001bF-ÑÚëS-Ìï÷²S%ú\u000165FQ\t·
)~õ$\u0017\u001e,\u0000\u0016çÖ«¾cËø3¼®Ç$¶ÕKÚ\u001e\u001føxý(PBtñR²\u0018Ø\u0014=MËh\u0003B§['è\u001bþÍpÓ è\u001bç=M9)ÿá.´¦pÖ¡[t·e27aÍ7§Wn®r©sE«µ\u0014{×í5j\fÆ^¯áónPÆÊ°\u001dôõá'Ò\u0007M\u001c4\u0004ýÿÅé=Mý^\u001aè0Oe:Ø¿²Ñðóî\u0017cº\u0012NN\u0010À5W,)ðÏãF9hu;º;»:FWÀxÂ\u0012·x±ªxOx\u0011ìxôxK&tx Ágx{]ZxgøLxí?xð\u001e(wR\u000ew±
ówF¸Øwmê½w5üw9_UweJ\u0004vÔâvvi¸\u0011ô=M¬öæ\u0019\u001eöáÇb÷¼d÷\u001cÄ÷Ûkß÷'8ù÷î\u0005\u0014÷\u001bÑ/÷lìBøÎQP?ü>SAO{ü\u0014¨\u0016ñ¨\u0016ñ¨\u0016Ȩ\u00165jñ¨\u0016q*\u001f\u0018\u0018\\-º\u0011Të§ùSUêL\b\u001a±\u0002ô\u001e}ÿPd$45AøË-Ö* \u001a@tÕÛa(\n¯ ÿN\tíͺzs
\u0003WJ$c+LîjüMoz
ñP= \u0003Õj$kr1\"Ð\u0003в\u0010Íyð\u000fuÆ\u0012²ï82NfÊ:\u0005O\"z«6 Z=M²:ÊÅJ
µNðázf\u0010Aìܳc\u0014n-\bÆlS\u0000Éb±\u000bÙÙÚÁÞ&É:sÒêÖQk¸l¶-ÒpP\br\u0012\b¦>6º\u0014½8\u0001(\u0015À\u0015\u0001Gt\u001aÎsª¹×¼ÐâSr WE\u0012ií\b$E¢UêNv.q*ª\u0019~\u0004$\\\u0012*w¡´*âóuz^¥6F\u0010ù_6\u000e¦\u0001ú \u0003vG·\u001b\u0015²Ú\u0003\u000f7\u0019çêwÉû$÷Mʺ\\Ðÿ\u0014%WÇ\f\u001b1ThÁ¹âþ<=M\"¹»<Â1TL¨ûF1p¢Îð@çãÊò!\u001edg':\t¼F8Ø3\u0002\u0005ÔFÄG²ÞÚB
@À\u0016ÙG7\u0014ÖÜEy£J-\u001eîÀzn>Ä0D\u00035KM}4:sÉL3Åo\u001eZ\u0001-/\u0002³Ñù\u001b7z¯e_\u000e\u0017fÐ\u0018U¤/ZÓüE\u0018Â\u001eèÚþzþ-{zÚë\\À\u0007=Mh\u001dÖ¼= G\u000ecêt²Oek:öÅäªå4*Â\u0017ê^íùÙi½\u001b<{é?<Ûwñ¨\u0016ñ¨\u0016ñzñ¨\u0016\n1Ƭùðv\u0001¶v97«2j¬\u0014À.:\u001adÍMzc×8ãCqU¾7ºóv¢g\u0002\u001c+©W\u0002\u0001.&?-§bÍ2þ¹oÄ\u001b= g\u0019fì0ÃmVÓªá\u0005\u0006:å-¡ÕU\u0006½\u000f4:°1ª\u000bûyÎ\u001b¬wwáÀª¾q\u0001ÁuçõÝþ\u001c|%W0s3ÈYá&Þ\u001c¢»\u0010h>éhot\u0017ÃYUÌ÷ýÓ\u001fSN¹¹¥ý¿\u0010áׯp~&ÔTjÕR¨|.^Fyiìÿ\\\u000fÅÚªr\u0002Õòq¸¦~éÿÑê¨'ó®\u0000IÜ\bÙIÏZ®~Ü^\bºvýubqsÞ±þÔ½F¦áØ®â\u0015Hâ©\u0015\u001b\tþkJÑ9\u001bü\u0000|/÷s¹\u0003Æùoª\u00182Ó\u001dþz\b·®ýÒ\u0002Ô¹·,ûJ\u0018\u00049woE[%;Áļ¯9W}ªK&н$Z\u0007 *KE\u001c¹cZÂ-M\u0001@\b«\u0001ªI\"÷²?ª\n«[vÍÚ©mènÅX*ÞÃÙVÙGrò\u0000«\u0012fÑ¥´g´Ä¬c9R\u0002\u0001=M³9óN\nÀ1?a9Ùûã_ÌÂ\u001eÎÓnrÄH\u0015\u0004sç\u0001\u0015gÀÀÖ#í 7\t¡õßlõjÈuʯB\u000eT\"Ðü\u0016¾T\u000fµ¡M[NÔQ¹¶íc«\u0007!9\u0011§)!ËøqB¢¾uQ äÍ\u0013\u000fwiù\b\u001eªyÁÊ.ô»)²@Wj\u001f\u000f4}×=}ÆSîòÃÆÙie!\u001e\u0013MÁ6
côý\u00117iÐ=M#\u0001(h \u000fe\tä fã[-·@\u0001)ÐOèç\u001f*з¥éÝ4:3ÀöôÕrÎ¥ó\u0012~#Òp÷Gç´hÎz\u0011\u0002=Mưóv\u000f\u001ekîY\u00148µ½MV\u0003\u0017\fû ,Èçè¤\u001f\u001aÅe\bÕ\u0003S¥(Òÿ¶oÎqæÔ¾rÖ$E¤\u0019ÍQaw¥\u001cÂãñí7f\u001d#qÒò-ëÈçë±qj£b(v\u0019XWÓ\u0017|þ:uSë%\u001fb\u001fØ\u0003Ðö+g#\u001dê\bÓx(rÎö·øVh\u0018Y)Ò/ÛòàÂJµ#,# ®ªjÉâµT6éR\u001a\u0003y)4ÀyiÈ*b= ùZ\u0016$8'\"\u0006ì>'ÉU\u001b\u0004;\u0014¢Aë4¸»?*|ù£X11|±9mÃÜ\u001cKzG,5K-\\¯H\u001csÇã¯S\u0012ÀþóØZ5¡SVÂLGFcÚtý&N^7³²?xL¦Þ/°Ã\u0013ë¿\u001c LrÃ3\u0006×S\u000e±lñ\u0006\u0000Ã\u001fçªÆlÑ)\\\u001c É¿êA_^á}üjM5y
ód ¨ßϨP\u0019Åà§^ $d¸dà1ôÏcPTh±m©À\u0006\u0013[\u001e§ÂGîTméêά$ÃGÈæmñ9_\u0001FTb\u0001D3UC÷²O\u000bFQSQ«eQëªM#WKÓs\u001b\u001c]<Î0=}f±DXP#ZP3)íûÇ:C4\u001b\u0015j=}P²@]YFïùKó.\nÚ=}-\nGÇ>¯<OÎ\u0015ñ¨öüöì¨\u0016\u0011Uúñ¨\u0016ñ¨\u0016ñ¨WÈ\"\u0002:\u0018ª *Üz:4 *ÊúE¸:cg:é\u001b4|Ü\fnÀ!rPýe'\u001aáKôÜ\bÀ\u0011´EL<E¶öe¿£4\u0007æø¡ÝaÕtÑaøöT6úa·ÊÔÓm\u0001È;NbæÔ\u0013°\t\u0003\u000eÌ÷ØÇ÷8©\u001b/e>\nÞGsÑn«¶ÎÙhµ\t%$ï\u0002TXV)¤ôà\u0012\u001dÄàU
/\u00107:.c\bÌveù_æøcýdæÃ\u001fÒÀ\u0017h\u001c8=}I¿P\u000b2¯y \u0004â\u0002Õw±\u0011\u0006\u0019ÛYø\u0007¿INrhÖ\u0006txÙ\u0004\u0011aÔW \u001b¹gØù°=MÔÔ×)õ±·ücd§&Ú)¼_Q_LÎ\u0003³=}æ\u001dT®jÉ+¥¬çìÊ ·G\u0000⡺O.Ùñ§_\u000e\u0015+\u000eh×\u001a\u0007pÂ-³C\"?ÎóvÃ4â>T°n»\u00118ø.~2\u0010ÒYú·4\u0002Ööº÷ó/\u0006Î\u001awc2üØ»\"©_\u001a¬\u00000÷Fz2vn£ØNÊ¢t=Mã>ô1/CñÞµóS1þÁ\u0012ç\u0014ï\fÅÞ6íqäJ\bçµnìj
\u0019(¼¬²ùVõlûðf°æ±\u001cûðc®uMÍ\u000b<òQ(ij\u000fѬF\u0015+máp4°\f-}F\u0005Iª®¤Á%¸N
g§\u0007À»wí£Ã(%5\u0017Jè\u0002Æõ\u000fÖ\u0019ð,ùAúb¢~Ê¥×õ@ú7\u0005sçÿÝàPk\u0015Ð\"/\u0010í\u0007\u0003iþ®\u0006=M'ÙÍõè
·l\u0007Ño3±7ÍZ¢ù\u0006Ķ\u001f\f\u0016Ê\u001d:&Ø\u000ff0fù϶Ú\u0004&%Ê8¼GèÏú= \u0000êö*Ò \fæF51¶%Ï?§zi¶RYÌz^J
ؽ¸fò/\u0014\\2¥ªÐ\u0018Úr\u00057.&-\u0005\u0010í\u001bEtVù²_Vg!Æ)7§TwªÁ\u0017\bÙe6Í´\u0000\u0002øÞà\u001fÿLÍTq}UGÍ\u000e²5\u0004QG ªÌ'ï\tÌ\u001eÖ\u0000ö÷¿jÃËúp½ÿºëò_¹¯LÒvä³÷ê×#=M\u0001$[@z\u0005»ã\u0001X\u0012êaÅ1Z¾\u0011;\u001a\u0010\u0016æt\u0016©±Ù).ب\u0016§q¹óh\u0016ñ¨ò(ybJ\u0014\u0011ö'hJ:ø¸³y1¬b\u00119ÉeVM\u0014]\u001f°4eSøOÍ*C\u0019xæ@\bÅ\u000eýäÓ¸ýoÐÈýÍ(Æ@H\"¤}\nõÜh{\u0007g¿¨À~¿ÑxX¿u$õ+ãpq¬\u0018§i)çïQ\u0005½fï×Ve¶yã-Øîî\u00056¤¸ÏÑo
,ÈÈbýßJ @=MûHn= 6\u0011 3Q¤\u0001ľ²%ÖbèÐ)\"öúÑ=M\u001dUàß¾¨Íö}ØâÉ#ýÖ\t2\u001dÚNB\u0010L·\u001a¡xY[Ó-)2\u0002,\u0011·ÁåxZë\u0005ÐÒU3+ â½³ë_z«xÙ\nI\u001e2Ù.\u0004l÷\u001fô×BYc\" Zâ¬Føwj©i\u0012î»v\u0018\u0007êåj\"è,jT¦´ü5HóíÔ\u00169\u0018\u0001.ð²,&¶ô\u001c<9£\býÊ,|j-ÅñE)l¿.¥Æî\u0002:=}Êæ!¬\u0005u©ù3eê\u0015·¾òv¯Ör\u0019\u001enjy\u001f:I÷7!zê³6º·2(\u0012÷$\u0001vi9\u0003z×:ýr+\u0013¸z3Õ°ú4\u001bt7´|f\no¨BÐ\b(=M@ª\u00057HÌU+ç\fÿ\u000blXÌìáN\u0001ï*½Ç\u001fé#\u0012Ha\u0001xëªg5\u0013F²6Û£\u001f9\u0012J¢½B[¹:{3°SÇt|~Ûð®ci:UÁfÉ^Ûð³_\u001fÊ|Bèί\f\u001cËY\u0007ú&\u0015s~o V\u001c\u000b¢N£#ÔÜy\u0015WrÑÈ\bS¦UÆÁ\u001e,i¯=}¹ÖÃIBhÛ¬\u001aMeè£S©¾&1=}\u0011ÿn3a÷¦Æ\u000f\u001e±ó¯\u0000Y(:\"»¹zXÜÝ)ÇFøKwýPbÇ\u0017+çv)µù\u001bDh-½^.Á(¾ª\u001e¸L©%¨ºó2J{Ø[¹:Dÿð\u0012|+õLÇ×\\Óó\\O&\u0005þëdyW\u0007i=}À~]2vMé\u0014\u0011£/iÅü\"/Åþþ¢¬K²\u0001²¡=}=}b}\u0014ÓC\u0018þ«\u0006\u0001¦\u0018O7´Õ½\u0004\\®þö*¤sú¤Mu¶ß\u001euÙè\u0007{Ýa·Z ¬Q=}µ¡^´qYI±\u001a\u0005ü\u00183·\u0006ÀÐgJôe4£ØÐÊ¢ØE\u000b<£P]¸\\QñOÝLßóOÇ9\"Ŭÿó?ÒÐÛ-ªD/^,ëíO6ÒÜ~¹T
&\u0005qA(T}\n\u0003\u0016ÉÝt\u0011\u0006l àWjeWâ»\u0006µ@·)dëÛîMåñ
W\u0005\u0004A= ±\u0012e,î|Äý¹]Gç¯JRgÝìÃzö'Ìg÷i6nLÚzÃ9\\Ý.z7ÚÃJ¨]ø9^=MÉr]Ô\u000fÅ_\u001a_=M-GÌ
mé=M\u001c4
%Ý_uæ[º²@ô\u0011\u0003\u001aúò\u0003¥fÞ\u0004¹ \u001fõåÏÁ\u0019d\\hðM% \t\tïjóË÷^F\u0003]_ÚÅ-ãÒiH\u0011\u0007ÜHJí£6ÁíH\n[ â¯
zÍ>·¤\u0000\u0006¥]1i¼!\u0001\u000eÂìÏäR~õ\u0005c=MúW|\u000eöÁ»¦c¨hDáôV>¤ó\u001fr¸¤&NªÍÙ´=M\u001e6)\u000fæ\u0001Ð\u001fBØ\u0004¯¼^\u0014= \u0015\u000eð\fñ/$Ò+Òç\u0004y\u0010Í12Ù\u0018ÊÞT|\u0003\u001b¾T0dqÜßQ~UáÖú$\u000bàÓ¯áµs(\u000eZ
öâGÝv²6Î6\u0003ùÓ\u0015ÆÑ)'\u0016¯\\ê¤æè\u0004¥/±¡Bm¬©Lôº\u0014\u0005\u0000\u001aÔ1\t\n\u0007$\u0003¡®/= .\u0017.3º°Ò\u0010\u0005énY\u0006Ù&Ú¢tÈ'\u001f\fNçt\u001eKfZõÂhä\u0014\u0005-\u000e\u0012îGÈÐ'\u001dõç\u0015£Iv¸§eæ\ti^=MnÊ\u0003¡\u001bKûÂvî\u001cúgÓ)´^ñ¨\u0011¡\u001d=M¾Àïäëç¿\nýt$Ñ+ã&d\u001c\u0003µÜ´0OÜ¥ÚÊËo³ÛëõèÈ\u001c¦Öî= 2eW®æ})\u0012´Ñ&\u0006õ¸\u0017¢\u001c%\u0016ß\u0007
iȸc´²5\\\u00106¤«îø4*6^31)¡·ÂØH×\u001f\u0001ø!?.æÖMó*9W)¯üö?\"V¥!-iQ³\n\bæ³í\u0005É#(7üÌøwè(krw\u0000Z!\u0017+3@93X\u001aéÎvHô\nFÙ-Áì0÷\u00037xzn-fÚ\u001a,b6ñÄ\u001aɧBFPwYÝÉðzpL\u0018DúÒ¯£J31&Èæ\u001264;\u0017kYǼrÂ]n¦?1å¥\u001e\u001fOGm{0^g(¨Å\u0005$!\u000b8uAb¸\u0002^£\n\u000frý\u0018\u0004AnSaýQ®ú\u0015^ÛÚNEbó\u001bÌâV=Mþx\u000bx\u0001Fþ¸û÷7ë¡};É1H}\u0019\"çC\u0000 s©]9¸OgQ\u0000û\u0011_Id¢\u001dì\thL\u0012¥Í+|8é'\u000fÕ?ø\u0013¯?)\u0006ûëjÔc\u000e\u0004ãºI1Q\u001f] Yÿ\u00104³öñ;\u0006ÒQ}tôCf\u001dƬ\u0002í?¡%à\u0013Ź\u0005mgnËÜØG l\u0017¸j:o@\u0013@§ØÐS÷ÄfúÏ+]\u0011ÐÄsìÿ%Ö]WyÄs\u0011gÖ\u0006%òßf\u0015]&L@\ftTiÏ\f²æmõ}xõP\u000eêÄÀ¯²·y¤¥ þ\u001cg5¦Ù|Æ¡ßÌ\u0014\fEsÔ{\u000eÑ\u0001Íò¦Ot\u0018F^PQÎ8d¤ørê«âf$\to¤ãx8x[Ë(%ÍtÉ\u0001çnÞÔ6G$\u001eAXݽ\u001cϤmÃ\u001di2Üiy\u0018d0¯
*ßá.9*oíÁ\u0001r·2Ã(s´È\bÅz\u0002÷zY¢Á¼öÔ\u001a\u0001°ç0\u0015}Ñ4µEöÖ\t\u001dr5l®\u001aÄ'1Æüç\\ã>Æøi\u0003\u0016èLïÖÀ|\u0016e¨ùRBaEHТMßÏãØª$Äß=Mç\u0004.\u0000·\u0017¼ªnD õ\u0019´÷\"\u0003T·ñ\u0015y)5¹ùÊÊ(·ÕJÏ\u001fL\u0010r4\u0010jô*\u00122÷5=Mù#¯v#Ñå~¶¢\u0007z\u000f>\u0004õ8ySæ\tÉ{Ú\u0012õ«:£¿\u001b\u0016!ÃrYØç\u000bµÐÜ ×>å
Û&¼¤æ¸kgz;Ö0}Ë«]WÒÁþwqI\u0018\u0005M,[x@U\u001eb\u0013\u0018G'1\u0003\u0001ÿôÃê\u0003(\u001c}/Q\u001e\u0012\u000bÇÁÛâm¿p\u0004\f/|¼éBÐc«Q\f(ë3º(z2é¹:ºoû;@ÕS?¿\u0010GSk\u0017«70>³r<ÞaåUGÒ;\u001cBAi¤°óGåÅ¥Û7BëUi~vJ\u0001;ãG}@OUm½ÛXKÁn\u0001nál!kýKe[kWG\u001e¼ëÃì½ìÉìÔLs\u001c4F³\u001eSÆAvÌ{¾\u001a\u000b\u0003\u0013ÿ\u000f\u0007\u0017\u0017=M\u0005\u0015\u0001\u0011\t\u0019\u0019\f\u0004\u0014\u0000\u0010\b\u0018~\u000eû\u000f=M\u0011ü\u0004\u0010\u0018\u000e\u0016\u0002j[cowmuai\\dpxnvbêÛãï÷íõáé|~\u0018\u0013\u0001\u0014\u000ezswuil= hnvúóçíáéìôøöª\u001dϤn¢\n÷§ Õ°Vrf\u0006Su5a¢R\u000fð¯/×u®9=M\u0010Vñ'\u0017¶\u001b3\u0014\u0006r)w·5\u001d8\u0012\u001aÝÅ9Ä@ðØ!iò¨*\u001cÎ\"ªy¹84òÛí¸°2ÇàV²Zx²(\u0019îòú_ \bøÞnVõa\bó\u0018ÑØ6ó¹*$&J:Fãs!pÓú±\"Ì.rZø5/Æ\u000efø5Õ8RZ¹7\nä(Ú\u0012ð³\u00124\u0002\u001a³\u000f\u0018Îæbg\u0014±'\u0015Îʺt°=}F6Wó15zö8½8²ùîT\u0002òèu8Åz÷µ1Éfª\u0014Mv\u00123û¥Ôp8û®&7´âyîÕâ\u00198»\u0010á«\u001côZgÉ&Zës\u0012ª¶@JÛ<K'\u0017ô®\u000eáP¨ñåküJ{«974\u0002ñ>Óëâ@\\S@;ýn\u0014ñð\u0005±æ§\u0016ñ(\bñ¨\u0016ñ¨\u001e+ò¨ !5¶½ÔTT7}÷ÂØu°\u001bû\u0011\u0004\u001c¼jÿ¦°\u001e%\u0010æâ(ØLT7}÷â\u0006ÃÛR\u001dðõµ$=MàÞ²ÆGy0âÚy³«\u0016ÏÃÛR\u001dðõ¯974^±ÈGa\u001dúºM:fÍ\u0000cîK\u0000úD²à\u001cç?´=Ms¯\u001d]üoÓÄ·= rÄÈÿìÎR}j©Í\u001aÔ!¢a\u0006Ø\u0011b' \u000ekÃÂO²Ü\u0000\u0003\no-ÛÈsUB4\u000bSï\u001egtW¦I\u0001-º\u0005ô\u0011ç= Á(w¦=}õ¬Ð\u0017pr4×¥©ðUrêÕ½¹\u0017àë®h\u0007ùâÙ¶è\u0002\u0013\nö¡Sd(îÏ\u001a¤!Ö¬ÏGI.ä=MÕ°ÏT\u0000ºÃ«ÐLç}¶\u0005ó¯!M\\m¿·} rÔÿðîÒ
ª©ûQQ\u001a\u0016\u0011¡R((h\u000emÓÏ«Ì= ÿjo1ËÈtB6\u0003Óï\"W<Én»¬·{´\u0012Ù°ÿïø\"²éÌ\u0002¤!U\u0018¨¢VD()p=MÚ¶O¬ÙÓ\u0002J\u000f²Ú0\u0014
6¶\nÇG\"T ¡TÑ,B\bx¡®ÉÌ\f\u001cynU¨sqÖÈ\f7ÒV\u0004¥Ý\u0014\u0001\u000e\u0001ÞFÒ\u0004$®mÔä\u001d¡æëÔ³±,í\u0004#þ¨Eu\u0016½\u0007!%ó\u0016u'aÔ¸÷¨uÁ+ÓÍiñ_Æ4ÐaYñDÂ\"KZVÆI×b\u000b,AmÙJä\u001bµfëÙ±+÷Ä#ü°-u\u0018÷\"¥ó\u0018U§bÌx÷©eA«ÚÝ\tòc.4ÌA)ò<6 ;*ÖÄLwb\u000f Áí×z¤\u001c¬«×É+ô\f¤\u0006Tív\u0001'Ç\u001cºÏ°È ~¯\u0016µ\u00013¯ Eô×iá+T\u0018ñK\u001aélt¸ô~\\\"Ãt·2Òx_òê²\nÙ\u0005= ÑDú\f\u000f^q C$X%N\u000eÌF?tü[a+LP\u0018qK\u0016Éklxô|y¢ÓÊT·²ÎX_ñâr\b{Y\u0007@Q<z\f\u000b>q\u001f;äX#>nnͺL!Eþüï/¿ht|¡5j\\eGÃ¥6&zf꺾ÞyTTQê28ÞºH¼°@{ë±V\u0016ñ\bĨ\u0016ñ4\u0016ñ¨6(\u0011ñ¨\u0016¡)®TòÙÑ\u001d$Tü¡ôO)ýÁµdOyGNùvùÜ[:=}Âýxý*ÔM¯ó]'°ÎÛ¹\u0002v\\,çSf±âÎä'´f\u0012\u0003ë\u0010à\u001dLyÒ\f\u0007((3s\u0002ØìXBIB\u000e¾\u001dq×¹Í{ørñ+Ú-·\u0018½\u0003¹\u0010oâ@® /]ãTªÁGà!7a³:S\tÈÈ£gÖñÝAÕ|ðh0£®Ô\u0006%ë\u00055OÆø\nïH·ØrÌ\u0019\u001ae¯Q(Ûá^Ð3ºSÏpß=}
ªJ=Mâ\u0017\fs|\u0015²
¬W\"½\u0004¤#ÍlyÑ\u001aÝÁÀ:»uæPÛñ1TÈVÚÂÙÀª\u0003/IÝy\fÎ/§ï7|ò±#\u0002mmÛ,ãFjG
~.¼)wºEù\u0007)\u0000Í\u000b\u0014Ò(©a\u001bÁ\u0016;¹6x)zÉf¬½P\u000bÃÁ¥æmº\u000eÉÿ¤Fp±F\u0002ÄæUwíc\u0019Æïô\n\u0002[S¥#,4F<C\u0015§û4ü\u0018\nÓâï3\u001b\u001cDQ÷øOüN¹´\u001b\u001cf\u0011\u001a'Á\téñwl\u0016@ÀÆ(:l¯Z?;ÿkG>Ô\u0000\u000bh2¶ïY]\u000bgªp¢Ù\"9\bÓÇØtÔvU\fU\b£Ê÷\u0001n\u0019Î\\aí\u0001Ø\u0007\u0004yX=M uà\u0016¯\u0012$×)þ[gÁ\u0013GÞëU¡rGþ-kH\u0016þsçJ.ëºÁ$»;;KC}l:å\b ¾ïÓa¤nÈ=M¥Õà\u0018o\u0006¤Õñ\u000esèâ´\u0015ʼSNìl \u0007ÿ\tSÅàlPg\u0011\u0001'ÈüWÎìt°\u0007\u0001)SÉ lX\u0016w\u0011\u0002·'\n>´Ù\u0003V.t\n\u001fØ.u è.v\n ø.w!\b\"\f÷5w\u0016âÓyCg;S»\u0001;iKKÞ£ý6©\u001aZÇaj¸²4¹±8\né\"\u00140µ±øÚ&즸±(\u0002é8\u0014°Y±ØÊ\" \u00124\u0014°Z±\u0018Ê2 \u00128\u0014pJ±\bÂ.\u00127\u0013p±\bÒ.¡\u00127\u0014ÐBö-'\u0005Ê´íf± \bé7\u0014\u0010B±0¾¸º\u0013\u0010b±0Ƹ:\u0013\u0010±0θ º\u0014\u0010¢±0Ö¸¢:\u0014 ¼y\u0013 À¹\u0013 Äù\u0013 È9\u0013 Ìy\u0014 Ð\u001a91Ó\"÷\u0001¦ø\u0002¶èh¦\u0016Y1íâøØü×\u0004\u0014×\fØ\u0014\u0014\u0018ü\u0017\u0004\u0018\u0017\f\u0018\u0014\u0018\bûg\u0007ÿ§\u0007\u0003ç\u0007\u0007'\u0007\u000bg\b\u000f§\b\u0013ç\b\u0017' [FÔ\u0003íÍÔ'cÔ\u0005\u0001íÑô'°{R¯}r¯¯²¯Ò¯
ò¯\u0012¯2¯R°r°°²°Ò°ò°\u0012°2T¼DqSÀT±SÄdñSÈt1SÌqT б\u000eng\u000eüP»kGþ\u000b\u0000U´1\u001f-ÊwÛ§$.7÷ºùz:Ú.\t4\"ù®:Ô\"\u0007Ò´nº1\u0004¹\u0014r6bÊ\u001fÎ÷Í-ù\u0004v4âÊ/Îù=M5ú$v8ÂÂ+Lý³E\u001ch7HÊþ\"+u7I\nþ2+y7ÊJ\u001e\u00023m9Ç\u001e\u00123q9ÈÊ\u001e\"3u9É\n\u001e23y9:g\u0011D<»{;»kÖLýDZì\u0010øf<J=MÂ/]8=MÒ/a8Ê=Mâ/e8
\n=Mò/i8J\u000e\u0002/m8\u000e\u0012/q8Ê\u000e\"/u8\n\u000e2/y8\nJ-Â7]:\u0003-Ò7a:\u0004Ê-â7e:\u0005\n-ò7i:\u0006J.\u00027m:\u0007.\u00127ñ\"ºú¨£z\tÚ.&7vz\n\u001a.67zYÃJ\u001dÀ3\\ÙÃj\u001dÈ3^YÄ\u001dÐ3= ÙĪ\u001dØ3bYÅÊ\u001dà3dÙÅê\u001dè3fYÆ\n\u001dð3hÙÆ*\u001dø3jYÇJ\u001e\u00003lÙÇj\u001e\b3nYÈ\u001e\u00103pÙȪ\u001e\u00183rYÉÊ\u001e 3tÙÉê\u001e(3vYÊ\n\u001e03xÙÊ*\u001e83ºíB@;»{K¿Å´î84¼Q\u0007B!B.À4þ·¹l\u001aÓº\u0007-η= º\u0004¢-Ö·b:\u0004Â-Þ·dº\u0005â-æ·f:\u0005\u0002-î·hº\u0006\"-ö·j:\u0006B.þ·lº\u0007b.\u0006·.7.·/7/·070·1714)6?ü>}[;;;ëØ¨\u0016ñ¨\u0016ñ¨\u0016ñ¨\u0016ñ¨V\u0014xÜÈí5&éï%U¦êò-¥¦éî9
ãݼqµcÞÁau#Þ½u#Ý{p\u000f \u0010\u000f¸PeàÕ\u0015$à×Õ$ßÚ
%¤àÖ]\u0000z&\u0017Îx\u001e'.y(\u0007®\tzÄm\u0003aÊ=M\u0003_·bÆM_Ô¥Á\u0014!Ô§ÕÔ!ÓªÅ$¡Ô¦ýß\u0006cö÷Ífî×-døçÏ3\u0005&ªø6=Mæª÷8\u0019\u0006êø4\t6jì\u0005A\u0016'ì\u0007UÖ'ë\nE&§ì\u0006½= \u0018«\u0016xÒ®\u000eX2¬\u0018h²ó\u000f¥V¨ò\u0012¦¨ñ\u000e¹fèò\u0010©ÆÑ{@>§+{AH«ûB@¯ëû@<ÍãÃhÙ\u0003ÝÄdÉ3ÝÃiÑó]EpÇëþFtïkþDzÏ\u000bþErÞÉl1³^Êq!s\u001eÊm5\u001eÉSì¬'\u0017>Ç_;»\u001cúõ\u0002ñ¨êÞ\u0011¥§\u0016ñôW\u0016¢\u0016ñ¨@\"Ó¢ÿ\u0004$èP.Ï\u0005ñZ¼4ôôDk rWkt7\"9ö= ¦î»÷n\u0000ºP>.mJ±Î}HQ?Û\\ÂQWÃ{DxÓ\u001b¾½GUë\\¿_E#ûÀSIü;MÙ'\\ÐgD_Ù¬_M>à/Åj
m¤ÿÑÍdßNt= ¾\u0003+j¤\u000fKD\u001f\fÁNSdÞJn7ÌN±¿ÜàÃi\u0017Ã\u001eKG\\\u0002Ö¸ßÊpü_Ív\tîÚ5l\u0002Zp\u0014osuÅ$\u0001ØWáÕ»ôtÆ_TÅB-ÆF¸¸êsv5½n¢\"lëg\u0014\u001b|Cölü<Z]¼F<ÿÛ|ýQ}\u0014¾dÉ3MÄMD_ѳ\u0013\u001cS¶lþDzÝÀV|ÿÌ»W¶÷D¢Z!s\u001eo¥ç¬bÓ_ͯ!Ua\u0004<§ËÚ\u0016þè6= &ÓÙ}K¶C;\u0017Ûà Nh\u0002¹K8.;\t\u000büB\u0004SyLÆ\u0017a8\u0004ô!JDï4±ñfR\u0018(Hº\u0019<a{.V«+n³ \u0016®Àz\u000fþ\u0016ý\u000eýøýèýðýÕë_j'CVý\u0005\u0014\u001ch\u001c\u0017w¢Âêyvø\"
ÁJ
\u0011ú\u0005ÉUÉVÊTÉ$ʤ@8ìÅçÅ'Åçí'¼\u00039ÃùÃdêdê°\u0002§Yñµÿ\u0015\u001eì\u0018Få\u0010ÏnèÙ= 2XåfjdfpÑ*ª'\u0013vMlQVØðrzæ[ò_øcè3«¥ ¢\u0003\u000b\u000bå\u001eõ\u000eÁ.èq²x¥9½\u0014ÆQÊõzå%\u0012pT&I\u0011âÐYih\neh\u0005äk%ÖMÖÎÍAP\u001elFü\u000e9ðÔì\u0004 Ðè(Ìì>øxN\u0019®\ti\u0012\u0014\u0018\u001f«Þ\u000eøñÊx¢,í\u0014~ÑrôyÕ\u0013°ócøë[ú\u0017Í×ÌÒ=MÕ\u000bé%/ä¶o\u00022'?i4\u0011@¢È\u0011SvÝö^A\u0001>}Á>ÊA\t?hõ©õ(Þ\"ð²õy\u001b+ï(\u000evñÆ1©Ê%5=M-E-f-Õðpdp6V\u0016µ\u0010~Å\u0000Ëxö¢y7Á»°\u001a\u0015û\u0007C£=M|ÁKaÛáÂ×ÉÙRï·×ÜÐSÉz]\u0012\u0013usöõ¶³´6354B??A@@Æ7uÜ\"Τ
\u001b!ãã=}Ò³öYÕ[ßPÑ\u0015[àXÙRgu{j\u000fC^ýÏ;[ó8d\u00045ÐD3\u001a:9ä\t÷ÐüWë?ç\u001c·\u0000iÉ»n\u001bEó>Ù»r\u001bF3>¼{k+R¾/OkDM¾<«¨*ª\u0016ñ¨\u0016w\u0016ñ¨\u0016ñ¨\u0016ñ¨6ñY¥w\u0018\u0004Ò_Íe$Íi4Od h0o=Mf(¯=Mj8Gm\u0007c\u001em\bgVîdÖî= îh\u0016î^vîföîb¶îj6®[B®c®_®g\u0002®]b®eâ®a¢®i\"®\\R®dÒ®= ®h\u0012®^r®fò®b²®j2.[J.cÊ._.g\n.]j.eê.aª.i*.\\Z.dÚ.= .h\u001a.^z.fú.bº.j:n²é4îË\u0000g tf\b\u0011NkÜ¿NoìÿÎmäßÎqô\u001flàÏpð\u000f\u000enèï\u000erø/n\u0003kÞÇn\u0004o1\u000fõÒ
A\u0014ÌNôPt$\u0004ø§\u0006à·'wvþð7&·n µRÓV¼F(Dmõ\u0003£§¡\u000filnuÒÕDiÎdâi\u0012.E®\u0000ém1hÎp!ÿÀ¦((uÔèrb)Gë²¼µEÍë\u0007~\u0007Èp±ªÓØEò²L±m=MÙ\u0014\u0014£÷É0×*\u001d8aüªN8b\u0004ºÎØ\\Ëýo¢ávvþXÔ)\u0005¢Éö®\u0010ËâÑ·pPåèÈ\u0000¥h®Ô\u0015\u00060[\u0007æ/èòx\u0011$ð|\nȵªÑ|Æg\u0015=MiÖT°\u0004塸í&Ò\u001cÛgÂu]\u0016lTÊ\u0006µ!\u000eíÚp¾È\u0007Nn\u0014\u0007§ñkÞè\u0007¥¦n\u0016\u0011'ñr~~W\u0017\u0014²p\u0016\u0018\b³î\u0019\u0016Ù)¦¢2\"{êJ1\u0014Üùv\u0017ªÉ/\u0016Þ8\":x\u0019Tbu&¢Ù%'n\u0017¬Ñö\t¬\"´)ù{HRæ péñf\u0010³Èê.H¥úJò% Ix\u0018àò¶/³úZ\u000f.^µºA\u0005\u001d¤ÔwbÖR/íçÐ\u0014Ví¶Á*\u0005->Ô¹g\u0016 7ÀçrkI\u000bì_O9åBxÙsä¢nñ6íñ¨\u0016E¶¦¨\u0016ñ(\u0019\u0016ñ¦¨Èút7\b¶º½ªº¼æºBB\u000b»<\u0001?sQãK×SATÀûAÐ;νQ\u0017¥\u000b0\n=}tZ÷= [Õû¯û\u0013;³Þ\u001bêBb©<¢«2>:ck\u0002~)Cé<¬j\u0013\n»·J×Z{ÒûD\u0001ÑFW= \u0016Cw[\nM?òÐ0Ò@!|i¤\u001cq#g'Þg\u001fÐQ\u0019.Q\u001dFnvÿ\u0013õ\\÷,K9è\\7g¿çI\u001eéX\u0001\u0012\u0007Þ:ÀDõ]Ã^]\u0013JË\u0000C\tO¸
O.Ïì4q\t|q\u0005òtìaÁ\u0017b\u001b\u0002î\u001dÓÞ\u001d\u001f\u0019Ê\u001e1= \u000bÒbëþ\u001f9÷JÍÃpÓBÇè\u001eØ\u0001ÚÌ\u001cÿFm\u0003\u0015g)@\u0014í¼ôõ½\u0017\u0005
½ÂeL¦ºÀwßUb¾ùìAîhz\u000f\u001d×Â%è\"ÿª%Ì\"pKç\\= Ä´Aô~¢\u001d±\t}:zF6\u0004\u0014\u0003\"\u001b¨xR\fsJ^!n1,·÷ÂQ\u001bÒij\u001d/]\u001fÙÆ¬r½zõO\u000eîÇ\u0006½Ðf\u0005,fìVÌøsæpÞr¦ü'\u0010\u0005Ó©þôÝX °Ï6²]n\u0018?>xã>µl\u00120Ì6÷Z²)[µ\u0012\\'\u0016ÁÌtBªXÀóµ?S §\u0016\u0010,÷p+Òè\u0019º¨·\u0017Þ\u0012þjéÊÔ\u0015Ë£½nq|\u0007\u0018G6ù\bÌV§Ä.\u0006#îòü/ª\u0019º¶×\u0006²¨ìnb\u0011'Å7r½æ1{XóR¡Zn2þ\b*ÊM«î@,C3lTÃ\u0012ü\b.ûªAÜ4KzW/ÛÚÁ3ºë÷[a@9&½Öh\u001dãô\\7v~ÿrH®®]½5[½¹w\u0005-\u0002§\u001d*\u0000K$?æ%uF\u001bóì_G2ÎÁ\u0019ÛÔ\u0002E×\u0014V\u000e\u0013\u0015kÓÔ(psÔHIby6\u0007aÀÔHEnnnnî\nÕÕW¸0922\u001ahPåcA3åWãÜ
·G»ñm=}ñ¾D\u001b=}n\u001b\t;¡Hs\u0013Q\u0013kB\u001b\u0001s>5#A\u000fÕɻҳ;®þBÓÇi»äKÛý¹BïÝb«\u001cûIǨ\u001aÔG/ýg\u001bIQ;ÉY;'*ÛRÇ>á³efæ<â\b<o¸T[:H»®²> ¬CÓ¿®{v\u0018Añ7@\u001bL\u001a»Î
LX§ÄëLÀ\u0013ú@[©Z¿!ß\\\u0005®;ýt¥UKïUTÂã\fÒK\u00156M¬²?¶\u0016Éû6>CõuÉ\u001býBMóè½è]#¿^?^¹}6lĦuÍV|ÝL¾wúÌßÙrÌ\f>ÍñE¤R<I\u0005L«Öæ?/ãa<Ù4ûUãÀ\u0017îC\\-gR2òDì%ÀË\u0014)g)âÆ+÷Ô]%,´Lu_!ÿ'3l\tócá\u001aó©\u0014M×\t
\u0013\u001a\u001a#ZU\u0007\u000f\u0005\u001bu\u0001º±ÑÝ.\u001eàã\u000edÙ\u0015øÙg
*\u0005£Ó×\u0018ö{É\u0012]@²w|²séûb¸Ð§&=}= bã\u000b\u0011\fe%+PI\nl5p\u0000U\u001dâGäÄL#+d^©®çlV°\u0010Sê\u0007lÜ2øm\u001cÊp\u0000= A¡ç¯ÔTR§\tSmâeÁàä= ïþM¡§tªî¡m.¨#ÖÑ¥±\u0010¤pyp\u0018ÑÆ* 2\u00011³\u0006D¶±ø>¢Ô(Ãu³u\u0012D¢W¯\u0000ÔÄ\u0019'\u0006ºêÐ;eV;~Z»\u000f;= »1A{{s½×ÂC%rN\u0002Ì\u001bÛQý%]ó|KªÑüÌÚ
+¤n½Bâ\u0007üÞ
HT\t+hæNç¨1¾\u0001Ë7sËVüê¦d¿õÉ>õÜI5Ù>WI¾\u0016ÌÂ+ÿGÞ®äY£=MÆO$uH\"pÜt\u0005c·Ázìø2£\u000eáH´ØÑ\u0007/ó¡Ò/Ow¶öÛFQ1'µÃ6áÅÁ\u0013·RôOë\u001d<²_¾µ°ý|ß/\u0000öb=MR©\u0006¡\u0018µg*5ÑI6#ÜU²¸Û<n2Û\u001cGºª\u001eáEW]\bãt¿Àl¸\u0015-{+&å\u0011¡°ð3é\u0018ð³¢\u0002ú¹Ù'7äö\u0007¨\"÷\u000føýìØèAµg#w\b¶L°\u0007ê\u001e7\u001a=}=MB\u0004¤C&hé#ñ4\u0003á´8 \u001c&2\bÉ\u0019ósn\u000fæï\u000f\tî%í\u0007¢-ê·\u0015m\u001a\u0015|h*¤W\u000e\u0002åØ;AÀ>\n@3\u001cÅ[ûNhDîQFü*Ý?uJûØ6\u0001\u001bë\nA§²Âp[ôsFû .oCtï@ÝÚý\u001e#\u0001\u0014\f£=M\u0016Ö#wìî\u001exý\u000fß½GÒÿDó|Ü}5jìÝNȰ\u001d5EÇ>ïvßøN\u0005Àªf\u000eÈÆHø\u0017ý\t§åpª( øç°ÓX*)· ©T0¢Ç\u0014\u001c¹ÆÑB¿\u000e¤\u0018\u0012i\u0003Å\u00135mt\u0004ímhâ\u0003¡'»BNiÇ©¦=}{fLÐË+¡ùC}Ø\u001fûÀÓ}\u0010qb³.x;\u0015Ý<¸Ø<墯rEØø>¬\u0012\u0006C\u0010ä ·|\u0016ãKL\u0015QfäÕ65avTõÝýîtÐ\"¦6Ál¬¨6ñý>\bHG8\u001c\u0013¶\u000b\u001f\u0011\u001f\u000b$ =MøÄd»¥BGÁØÇ¼¹$=}¯ã)uYGz\u0018;\u000fC}pd¿\\\u0015|6(L=Mf_ï#ß\u0017«\u000eWÞ¥\u0010§fp\u0017@0N6\n'¤sªQø÷Õ¬Åq¾>.øü·¢D\u00075³T
áhÅ8zDvO= ¯óÝ\u0001yàÙåFÆÒçcËóz\u0001?Ê\u00155cèúë.ÌðÐÞ\u0015~O\u000bË|¿ÓQ§\b\f\u001dv)BHX6ø\u0005öÇ\u0007¥kÒ\u0018Úa¡cÙ7¦x©\u0001nº¡6¾}®i\u0002\u0004\u0016Ï<\u0000ÎWh2 9's\u001a\"IÉ<»ïX\\#F\\Ë_4F[ eÚ\u001b\u000b\u0011¸\u0002ø¹2øH$ß9_\u0015\u001cxì9i\u000b2µã\nã/¸Äyf\u0012\"5TàyÊ0îE\u0018\u0017ê²Þ\u001am6ëÞ\u0018è6ð\u0000Ïâ§9¬\u0011k=}¼àt<¦\u0006Mdç6\"\u0000p_î3,\foO3p\"pw÷\u0011´/(1ñøs.íA/\u0000&Ï\u0017\u0018U\bÃ_XÍpÕ1h\u0012Ì\u000780E\u0018Qö\now÷!x.AÜ\"¢j\u0012+惡¦¶\u0017®äR\u0002\u000eow÷!xêpn
â#\u001bðù\nz AÍp\\0N\u0011\u001e\u0001HJê´ª\u001eØ^U\nIwu¸öô\u0002ú!3å6³âVq£³¹´RN\u0011£%y1\u001b\u001c0º\u0018:p#\\:J:\u0015b9Hµ7h_:¢I9 _¼µV\u0004\u0003,þ\u000b\u001a<`});\n\nvar imports = {\n \"a\": wasmImports\n};\n\n// No ATMODULES hooks\n// Begin runtime exports\n// End runtime exports\n// Begin JS library exports\n// End JS library exports\n\nthis.setModule = (data) => {\n WASMAudioDecoderCommon.setModule(EmscriptenWASM, data);\n};\n\nthis.getModule = () =>\n WASMAudioDecoderCommon.getModule(EmscriptenWASM);\n\nthis.instantiate = () => {\n this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then(instance => {\n const wasmExports = instance.exports;\n assignWasmExports(wasmExports);\n wasmMemory = wasmExports[\"g\"];\n updateMemoryViews();\n // No ATPRERUNS hooks\n initRuntime(wasmExports);\n ready();\n});\n\n// end include: postamble_minimal.js\n// include: src/opus-decoder/src/emscripten-post.js\nthis.ready = new Promise(resolve => {\n ready = resolve;\n}).then(() => {\n this.HEAP = wasmMemory.buffer;\n this.malloc = _malloc;\n this.free = _free;\n this.opus_frame_decoder_create = _opus_frame_decoder_create;\n this.opus_frame_decode_float_deinterleaved = _opus_frame_decode_float_deinterleaved;\n this.opus_frame_decoder_destroy = _opus_frame_decoder_destroy;\n});\nreturn this;\n}}","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\n\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\n\nexport default function OpusDecoder(options = {}) {\n // static properties\n if (!OpusDecoder.errors) {\n // prettier-ignore\n Object.defineProperties(OpusDecoder, {\n errors: {\n value: new Map([\n [-1, \"OPUS_BAD_ARG: One or more invalid/out of range arguments\"],\n [-2, \"OPUS_BUFFER_TOO_SMALL: Not enough bytes allocated in the buffer\"],\n [-3, \"OPUS_INTERNAL_ERROR: An internal error was detected\"],\n [-4, \"OPUS_INVALID_PACKET: The compressed data passed is corrupted\"],\n [-5, \"OPUS_UNIMPLEMENTED: Invalid/unsupported request number\"],\n [-6, \"OPUS_INVALID_STATE: An encoder or decoder structure is invalid or already freed\"],\n [-7, \"OPUS_ALLOC_FAIL: Memory allocation has failed\"],\n ]),\n },\n });\n }\n\n // injects dependencies when running as a web worker\n // async\n this._init = () =>\n new this._WASMAudioDecoderCommon(this)\n .instantiate(this._EmscriptenWASM, this._module)\n .then((common) => {\n this._common = common;\n\n this._inputBytes = 0;\n this._outputSamples = 0;\n this._frameNumber = 0;\n\n this._input = this._common.allocateTypedArray(\n this._inputSize,\n Uint8Array,\n );\n\n this._output = this._common.allocateTypedArray(\n this._outputChannels * this._outputChannelSize,\n Float32Array,\n );\n\n const mapping = this._common.allocateTypedArray(\n this._channels,\n Uint8Array,\n );\n\n mapping.buf.set(this._channelMappingTable);\n\n this._decoder = this._common.wasm.opus_frame_decoder_create(\n this._sampleRate,\n this._channels,\n this._streamCount,\n this._coupledStreamCount,\n mapping.ptr,\n this._preSkip,\n this._forceStereo,\n );\n });\n\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n get: () => this._ready,\n });\n\n // async\n this.reset = () => {\n this.free();\n return this._init();\n };\n\n this.free = () => {\n this._common.free();\n this._common.wasm.opus_frame_decoder_destroy(this._decoder);\n this._common.wasm.free(this._decoder);\n };\n\n this._decode = (opusFrame) => {\n if (!(opusFrame instanceof Uint8Array))\n throw Error(\n \"Data to decode must be Uint8Array. Instead got \" + typeof opusFrame,\n );\n\n this._input.buf.set(opusFrame);\n\n let samplesDecoded =\n this._common.wasm.opus_frame_decode_float_deinterleaved(\n this._decoder,\n this._input.ptr,\n opusFrame.length,\n this._output.ptr,\n );\n\n let error;\n\n if (samplesDecoded < 0) {\n error =\n \"libopus \" +\n samplesDecoded +\n \" \" +\n (OpusDecoder.errors.get(samplesDecoded) || \"Unknown Error\");\n\n console.error(error);\n samplesDecoded = 0;\n }\n\n return {\n outputBuffer: this._common.getOutputChannels(\n this._output.buf,\n this._outputChannels,\n samplesDecoded,\n ),\n samplesDecoded: samplesDecoded,\n error: error,\n };\n };\n\n this.decodeFrame = (opusFrame) => {\n let errors = [];\n\n const decoded = this._decode(opusFrame);\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n opusFrame.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._frameNumber++;\n this._inputBytes += opusFrame.length;\n this._outputSamples += decoded.samplesDecoded;\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n [decoded.outputBuffer],\n this._outputChannels,\n decoded.samplesDecoded,\n this._sampleRate,\n );\n };\n\n this.decodeFrames = (opusFrames) => {\n let outputBuffers = [],\n errors = [],\n samplesDecoded = 0,\n i = 0;\n\n while (i < opusFrames.length) {\n const opusFrame = opusFrames[i++];\n const decoded = this._decode(opusFrame);\n\n outputBuffers.push(decoded.outputBuffer);\n samplesDecoded += decoded.samplesDecoded;\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n opusFrame.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._frameNumber++;\n this._inputBytes += opusFrame.length;\n this._outputSamples += decoded.samplesDecoded;\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n outputBuffers,\n this._outputChannels,\n samplesDecoded,\n this._sampleRate,\n );\n };\n\n // injects dependencies when running as a web worker\n this._isWebWorker = OpusDecoder.isWebWorker;\n this._WASMAudioDecoderCommon =\n OpusDecoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;\n this._EmscriptenWASM = OpusDecoder.EmscriptenWASM || EmscriptenWASM;\n this._module = OpusDecoder.module;\n\n const MAX_FORCE_STEREO_CHANNELS = 8;\n const isNumber = (param) => typeof param === \"number\";\n\n const sampleRate = options.sampleRate;\n const channels = options.channels;\n const streamCount = options.streamCount;\n const coupledStreamCount = options.coupledStreamCount;\n const channelMappingTable = options.channelMappingTable;\n const preSkip = options.preSkip;\n const forceStereo = options.forceStereo ? 1 : 0;\n\n // channel mapping family >= 1\n if (\n channels > 2 &&\n (!isNumber(streamCount) ||\n !isNumber(coupledStreamCount) ||\n !Array.isArray(channelMappingTable))\n ) {\n throw new Error(\"Invalid Opus Decoder Options for multichannel decoding.\");\n }\n\n // libopus sample rate\n this._sampleRate = [8e3, 12e3, 16e3, 24e3, 48e3].includes(sampleRate)\n ? sampleRate\n : 48000;\n\n // channel mapping family 0\n this._channels = isNumber(channels) ? channels : 2;\n this._streamCount = isNumber(streamCount) ? streamCount : 1;\n this._coupledStreamCount = isNumber(coupledStreamCount)\n ? coupledStreamCount\n : this._channels - 1;\n this._channelMappingTable =\n channelMappingTable || (this._channels === 2 ? [0, 1] : [0]);\n this._preSkip = preSkip || 0;\n\n this._forceStereo =\n channels <= MAX_FORCE_STEREO_CHANNELS && channels != 2 ? forceStereo : 0;\n\n this._inputSize = 32000 * 0.12 * this._channels; // 256kbs per channel\n this._outputChannelSize = 120 * 48;\n this._outputChannels = this._forceStereo ? 2 : this._channels;\n\n this._ready = this._init();\n\n return this;\n}\n","import { WASMAudioDecoderWorker } from \"@wasm-audio-decoders/common\";\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\nimport OpusDecoder from \"./OpusDecoder.js\";\n\nexport default class OpusDecoderWebWorker extends WASMAudioDecoderWorker {\n constructor(options) {\n super(options, \"opus-decoder\", OpusDecoder, EmscriptenWASM);\n }\n\n async decodeFrame(data) {\n return this.postToDecoder(\"decodeFrame\", data);\n }\n\n async decodeFrames(data) {\n return this.postToDecoder(\"decodeFrames\", data);\n }\n}\n","const symbol = Symbol;\n\n// prettier-ignore\n/*\n[\n [\n \"left, right\",\n \"left, right, center\",\n \"left, center, right\",\n \"center, left, right\",\n \"center\"\n ],\n [\n \"front left, front right\",\n \"front left, front right, front center\",\n \"front left, front center, front right\",\n \"front center, front left, front right\",\n \"front center\"\n ],\n [\n \"side left, side right\",\n \"side left, side right, side center\",\n \"side left, side center, side right\",\n \"side center, side left, side right\",\n \"side center\"\n ],\n [\n \"rear left, rear right\",\n \"rear left, rear right, rear center\",\n \"rear left, rear center, rear right\",\n \"rear center, rear left, rear right\",\n \"rear center\"\n ]\n]\n*/\n\nconst mappingJoin = \", \";\n\nexport const channelMappings = (() => {\n const front = \"front\";\n const side = \"side\";\n const rear = \"rear\";\n const left = \"left\";\n const center = \"center\";\n const right = \"right\";\n\n return [\"\", front + \" \", side + \" \", rear + \" \"].map((x) =>\n [\n [left, right],\n [left, right, center],\n [left, center, right],\n [center, left, right],\n [center],\n ].flatMap((y) => y.map((z) => x + z).join(mappingJoin)),\n );\n})();\n\nexport const lfe = \"LFE\";\nexport const monophonic = \"monophonic (mono)\";\nexport const stereo = \"stereo\";\nconst surround = \"surround\";\n\nexport const getChannelMapping = (channelCount, ...mappings) =>\n `${\n [\n monophonic,\n stereo,\n `linear ${surround}`,\n \"quadraphonic\",\n `5.0 ${surround}`,\n `5.1 ${surround}`,\n `6.1 ${surround}`,\n `7.1 ${surround}`,\n ][channelCount - 1]\n } (${mappings.join(mappingJoin)})`;\n\n// prettier-ignore\nexport const vorbisOpusChannelMapping = [\n monophonic,\n getChannelMapping(2,channelMappings[0][0]),\n getChannelMapping(3,channelMappings[0][2]),\n getChannelMapping(4,channelMappings[1][0],channelMappings[3][0]),\n getChannelMapping(5,channelMappings[1][2],channelMappings[3][0]),\n getChannelMapping(6,channelMappings[1][2],channelMappings[3][0],lfe),\n getChannelMapping(7,channelMappings[1][2],channelMappings[2][0],channelMappings[3][4],lfe),\n getChannelMapping(8,channelMappings[1][2],channelMappings[2][0],channelMappings[3][0],lfe),\n]\n\n// sampleRates\nexport const rate192000 = 192000;\nexport const rate176400 = 176400;\nexport const rate96000 = 96000;\nexport const rate88200 = 88200;\nexport const rate64000 = 64000;\nexport const rate48000 = 48000;\nexport const rate44100 = 44100;\nexport const rate32000 = 32000;\nexport const rate24000 = 24000;\nexport const rate22050 = 22050;\nexport const rate16000 = 16000;\nexport const rate12000 = 12000;\nexport const rate11025 = 11025;\nexport const rate8000 = 8000;\nexport const rate7350 = 7350;\n\n// header key constants\nexport const absoluteGranulePosition = \"absoluteGranulePosition\";\nexport const bandwidth = \"bandwidth\";\nexport const bitDepth = \"bitDepth\";\nexport const bitrate = \"bitrate\";\nexport const bitrateMaximum = bitrate + \"Maximum\";\nexport const bitrateMinimum = bitrate + \"Minimum\";\nexport const bitrateNominal = bitrate + \"Nominal\";\nexport const buffer = \"buffer\";\nexport const bufferFullness = buffer + \"Fullness\";\nexport const codec = \"codec\";\nexport const codecFrames = codec + \"Frames\";\nexport const coupledStreamCount = \"coupledStreamCount\";\nexport const crc = \"crc\";\nexport const crc16 = crc + \"16\";\nexport const crc32 = crc + \"32\";\nexport const data = \"data\";\nexport const description = \"description\";\nexport const duration = \"duration\";\nexport const emphasis = \"emphasis\";\nexport const hasOpusPadding = \"hasOpusPadding\";\nexport const header = \"header\";\nexport const isContinuedPacket = \"isContinuedPacket\";\nexport const isCopyrighted = \"isCopyrighted\";\nexport const isFirstPage = \"isFirstPage\";\nexport const isHome = \"isHome\";\nexport const isLastPage = \"isLastPage\";\nexport const isOriginal = \"isOriginal\";\nexport const isPrivate = \"isPrivate\";\nexport const isVbr = \"isVbr\";\nexport const layer = \"layer\";\nexport const length = \"length\";\nexport const mode = \"mode\";\nexport const modeExtension = mode + \"Extension\";\nexport const mpeg = \"mpeg\";\nexport const mpegVersion = mpeg + \"Version\";\nexport const numberAACFrames = \"numberAAC\" + \"Frames\";\nexport const outputGain = \"outputGain\";\nexport const preSkip = \"preSkip\";\nexport const profile = \"profile\";\nexport const profileBits = symbol();\nexport const protection = \"protection\";\nexport const rawData = \"rawData\";\nexport const segments = \"segments\";\nexport const subarray = \"subarray\";\nexport const version = \"version\";\nexport const vorbis = \"vorbis\";\nexport const vorbisComments = vorbis + \"Comments\";\nexport const vorbisSetup = vorbis + \"Setup\";\n\nconst block = \"block\";\nexport const blockingStrategy = block + \"ingStrategy\";\nexport const blockingStrategyBits = symbol();\nexport const blockSize = block + \"Size\";\nexport const blocksize0 = block + \"size0\";\nexport const blocksize1 = block + \"size1\";\nexport const blockSizeBits = symbol();\n\nconst channel = \"channel\";\nexport const channelMappingFamily = channel + \"MappingFamily\";\nexport const channelMappingTable = channel + \"MappingTable\";\nexport const channelMode = channel + \"Mode\";\nexport const channelModeBits = symbol();\nexport const channels = channel + \"s\";\n\nconst copyright = \"copyright\";\nexport const copyrightId = copyright + \"Id\";\nexport const copyrightIdStart = copyright + \"IdStart\";\n\nexport const frame = \"frame\";\nexport const frameCount = frame + \"Count\";\nexport const frameLength = frame + \"Length\";\n\nconst Number = \"Number\";\nexport const frameNumber = frame + Number;\nexport const framePadding = frame + \"Padding\";\nexport const frameSize = frame + \"Size\";\n\nconst Rate = \"Rate\";\nexport const inputSampleRate = \"inputSample\" + Rate;\n\nconst page = \"page\";\nexport const pageChecksum = page + \"Checksum\";\nexport const pageSegmentBytes = symbol();\nexport const pageSegmentTable = page + \"SegmentTable\";\nexport const pageSequenceNumber = page + \"Sequence\" + Number;\n\nconst sample = \"sample\";\nexport const sampleNumber = sample + Number;\nexport const sampleRate = sample + Rate;\nexport const sampleRateBits = symbol();\nexport const samples = sample + \"s\";\n\nconst stream = \"stream\";\nexport const streamCount = stream + \"Count\";\nexport const streamInfo = stream + \"Info\";\nexport const streamSerialNumber = stream + \"Serial\" + Number;\nexport const streamStructureVersion = stream + \"StructureVersion\";\n\nconst total = \"total\";\nexport const totalBytesOut = total + \"BytesOut\";\nexport const totalDuration = total + \"Duration\";\nexport const totalSamples = total + \"Samples\";\n\n// private methods\nexport const readRawData = symbol();\nexport const incrementRawData = symbol();\nexport const mapCodecFrameStats = symbol();\nexport const mapFrameStats = symbol();\nexport const logWarning = symbol();\nexport const logError = symbol();\nexport const syncFrame = symbol();\nexport const fixedLengthFrameSync = symbol();\nexport const getHeader = symbol();\nexport const setHeader = symbol();\nexport const getFrame = symbol();\nexport const parseFrame = symbol();\nexport const parseOggPage = symbol();\nexport const checkCodecUpdate = symbol();\nexport const reset = symbol();\nexport const enable = symbol();\nexport const getHeaderFromUint8Array = symbol();\nexport const checkFrameFooterCrc16 = symbol();\n\nexport const uint8Array = Uint8Array;\nexport const dataView = DataView;\n\nexport const reserved = \"reserved\";\nexport const bad = \"bad\";\nexport const free = \"free\";\nexport const none = \"none\";\nexport const sixteenBitCRC = \"16bit CRC\";\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { length, uint8Array } from \"./constants.js\";\n\nconst getCrcTable = (crcTable, crcInitialValueFunction, crcFunction) => {\n for (let byte = 0; byte < crcTable[length]; byte++) {\n let crc = crcInitialValueFunction(byte);\n\n for (let bit = 8; bit > 0; bit--) crc = crcFunction(crc);\n\n crcTable[byte] = crc;\n }\n return crcTable;\n};\n\nconst crc8Table = getCrcTable(\n new uint8Array(256),\n (b) => b,\n (crc) => (crc & 0x80 ? 0x07 ^ (crc << 1) : crc << 1),\n);\n\nconst flacCrc16Table = [\n getCrcTable(\n new Uint16Array(256),\n (b) => b << 8,\n (crc) => (crc << 1) ^ (crc & (1 << 15) ? 0x8005 : 0),\n ),\n];\n\nconst crc32Table = [\n getCrcTable(\n new Uint32Array(256),\n (b) => b,\n (crc) => (crc >>> 1) ^ ((crc & 1) * 0xedb88320),\n ),\n];\n\n// build crc tables\nfor (let i = 0; i < 15; i++) {\n flacCrc16Table.push(new Uint16Array(256));\n crc32Table.push(new Uint32Array(256));\n\n for (let j = 0; j <= 0xff; j++) {\n flacCrc16Table[i + 1][j] =\n flacCrc16Table[0][flacCrc16Table[i][j] >>> 8] ^\n (flacCrc16Table[i][j] << 8);\n\n crc32Table[i + 1][j] =\n (crc32Table[i][j] >>> 8) ^ crc32Table[0][crc32Table[i][j] & 0xff];\n }\n}\n\nconst crc8 = (data) => {\n let crc = 0;\n const dataLength = data[length];\n\n for (let i = 0; i !== dataLength; i++) crc = crc8Table[crc ^ data[i]];\n\n return crc;\n};\n\nconst flacCrc16 = (data) => {\n const dataLength = data[length];\n const crcChunkSize = dataLength - 16;\n let crc = 0;\n let i = 0;\n\n while (i <= crcChunkSize) {\n crc ^= (data[i++] << 8) | data[i++];\n crc =\n flacCrc16Table[15][crc >> 8] ^\n flacCrc16Table[14][crc & 0xff] ^\n flacCrc16Table[13][data[i++]] ^\n flacCrc16Table[12][data[i++]] ^\n flacCrc16Table[11][data[i++]] ^\n flacCrc16Table[10][data[i++]] ^\n flacCrc16Table[9][data[i++]] ^\n flacCrc16Table[8][data[i++]] ^\n flacCrc16Table[7][data[i++]] ^\n flacCrc16Table[6][data[i++]] ^\n flacCrc16Table[5][data[i++]] ^\n flacCrc16Table[4][data[i++]] ^\n flacCrc16Table[3][data[i++]] ^\n flacCrc16Table[2][data[i++]] ^\n flacCrc16Table[1][data[i++]] ^\n flacCrc16Table[0][data[i++]];\n }\n\n while (i !== dataLength)\n crc = ((crc & 0xff) << 8) ^ flacCrc16Table[0][(crc >> 8) ^ data[i++]];\n\n return crc;\n};\n\nconst crc32Function = (data) => {\n const dataLength = data[length];\n const crcChunkSize = dataLength - 16;\n let crc = 0;\n let i = 0;\n\n while (i <= crcChunkSize)\n crc =\n crc32Table[15][(data[i++] ^ crc) & 0xff] ^\n crc32Table[14][(data[i++] ^ (crc >>> 8)) & 0xff] ^\n crc32Table[13][(data[i++] ^ (crc >>> 16)) & 0xff] ^\n crc32Table[12][data[i++] ^ (crc >>> 24)] ^\n crc32Table[11][data[i++]] ^\n crc32Table[10][data[i++]] ^\n crc32Table[9][data[i++]] ^\n crc32Table[8][data[i++]] ^\n crc32Table[7][data[i++]] ^\n crc32Table[6][data[i++]] ^\n crc32Table[5][data[i++]] ^\n crc32Table[4][data[i++]] ^\n crc32Table[3][data[i++]] ^\n crc32Table[2][data[i++]] ^\n crc32Table[1][data[i++]] ^\n crc32Table[0][data[i++]];\n\n while (i !== dataLength)\n crc = crc32Table[0][(crc ^ data[i++]) & 0xff] ^ (crc >>> 8);\n\n return crc ^ -1;\n};\n\nconst concatBuffers = (...buffers) => {\n const buffer = new uint8Array(\n buffers.reduce((acc, buf) => acc + buf[length], 0),\n );\n\n buffers.reduce((offset, buf) => {\n buffer.set(buf, offset);\n return offset + buf[length];\n }, 0);\n\n return buffer;\n};\n\nconst bytesToString = (bytes) => String.fromCharCode(...bytes);\n\n// prettier-ignore\nconst reverseTable = [0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf];\nconst reverse = (val) =>\n (reverseTable[val & 0b1111] << 4) | reverseTable[val >> 4];\n\nclass BitReader {\n constructor(data) {\n this._data = data;\n this._pos = data[length] * 8;\n }\n\n set position(position) {\n this._pos = position;\n }\n\n get position() {\n return this._pos;\n }\n\n read(bits) {\n const byte = Math.floor(this._pos / 8);\n const bit = this._pos % 8;\n this._pos -= bits;\n\n const window =\n (reverse(this._data[byte - 1]) << 8) + reverse(this._data[byte]);\n\n return (window >> (7 - bit)) & 0xff;\n }\n}\n\n/**\n * @todo Old versions of Safari do not support BigInt\n */\nconst readInt64le = (view, offset) => {\n try {\n return view.getBigInt64(offset, true);\n } catch {\n const sign = view.getUint8(offset + 7) & 0x80 ? -1 : 1;\n let firstPart = view.getUint32(offset, true);\n let secondPart = view.getUint32(offset + 4, true);\n\n if (sign === -1) {\n firstPart = ~firstPart + 1;\n secondPart = ~secondPart + 1;\n }\n\n if (secondPart > 0x000fffff) {\n console.warn(\"This platform does not support BigInt\");\n }\n\n return sign * (firstPart + secondPart * 2 ** 32);\n }\n};\n\nexport {\n crc8,\n flacCrc16,\n crc32Function,\n reverse,\n concatBuffers,\n bytesToString,\n readInt64le,\n BitReader,\n};\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport {\n getHeader,\n setHeader,\n checkCodecUpdate,\n reset,\n enable,\n} from \"../constants.js\";\n\nexport default class HeaderCache {\n constructor(onCodecHeader, onCodecUpdate) {\n this._onCodecHeader = onCodecHeader;\n this._onCodecUpdate = onCodecUpdate;\n this[reset]();\n }\n\n [enable]() {\n this._isEnabled = true;\n }\n\n [reset]() {\n this._headerCache = new Map();\n this._codecUpdateData = new WeakMap();\n this._codecHeaderSent = false;\n this._codecShouldUpdate = false;\n this._bitrate = null;\n this._isEnabled = false;\n }\n\n [checkCodecUpdate](bitrate, totalDuration) {\n if (this._onCodecUpdate) {\n if (this._bitrate !== bitrate) {\n this._bitrate = bitrate;\n this._codecShouldUpdate = true;\n }\n\n // only update if codec data is available\n const codecData = this._codecUpdateData.get(\n this._headerCache.get(this._currentHeader),\n );\n\n if (this._codecShouldUpdate && codecData) {\n this._onCodecUpdate(\n {\n bitrate,\n ...codecData,\n },\n totalDuration,\n );\n }\n\n this._codecShouldUpdate = false;\n }\n }\n\n [getHeader](key) {\n const header = this._headerCache.get(key);\n\n if (header) {\n this._updateCurrentHeader(key);\n }\n\n return header;\n }\n\n [setHeader](key, header, codecUpdateFields) {\n if (this._isEnabled) {\n if (!this._codecHeaderSent) {\n this._onCodecHeader({ ...header });\n this._codecHeaderSent = true;\n }\n this._updateCurrentHeader(key);\n\n this._headerCache.set(key, header);\n this._codecUpdateData.set(header, codecUpdateFields);\n }\n }\n\n _updateCurrentHeader(key) {\n if (this._onCodecUpdate && key !== this._currentHeader) {\n this._codecShouldUpdate = true;\n this._currentHeader = key;\n }\n }\n}\n","export const headerStore = new WeakMap();\nexport const frameStore = new WeakMap();\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../globals.js\";\nimport {\n frame,\n length,\n incrementRawData,\n mapFrameStats,\n logWarning,\n syncFrame,\n fixedLengthFrameSync,\n getFrame,\n getHeader,\n reset,\n enable,\n} from \"../constants.js\";\n\n/**\n * @abstract\n * @description Abstract class containing methods for parsing codec frames\n */\nexport default class Parser {\n constructor(codecParser, headerCache) {\n this._codecParser = codecParser;\n this._headerCache = headerCache;\n }\n\n *[syncFrame]() {\n let frameData;\n\n do {\n frameData = yield* this.Frame[getFrame](\n this._codecParser,\n this._headerCache,\n 0,\n );\n if (frameData) return frameData;\n this._codecParser[incrementRawData](1); // increment to continue syncing\n } while (true);\n }\n\n /**\n * @description Searches for Frames within bytes containing a sequence of known codec frames.\n * @param {boolean} ignoreNextFrame Set to true to return frames even if the next frame may not exist at the expected location\n * @returns {Frame}\n */\n *[fixedLengthFrameSync](ignoreNextFrame) {\n let frameData = yield* this[syncFrame]();\n const frameLength = frameStore.get(frameData)[length];\n\n if (\n ignoreNextFrame ||\n this._codecParser._flushing ||\n // check if there is a frame right after this one\n (yield* this.Header[getHeader](\n this._codecParser,\n this._headerCache,\n frameLength,\n ))\n ) {\n this._headerCache[enable](); // start caching when synced\n\n this._codecParser[incrementRawData](frameLength); // increment to the next frame\n this._codecParser[mapFrameStats](frameData);\n return frameData;\n }\n\n this._codecParser[logWarning](\n `Missing ${frame} at ${frameLength} bytes from current position.`,\n `Dropping current ${frame} and trying again.`,\n );\n this._headerCache[reset](); // frame is invalid and must re-sync and clear cache\n this._codecParser[incrementRawData](1); // increment to invalidate the current frame\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../globals.js\";\nimport { data, header } from \"../constants.js\";\n\n/**\n * @abstract\n */\nexport default class Frame {\n constructor(headerValue, dataValue) {\n frameStore.set(this, { [header]: headerValue });\n\n this[data] = dataValue;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore, headerStore } from \"../globals.js\";\nimport {\n sampleRate,\n length,\n frameNumber,\n header,\n samples,\n duration,\n totalBytesOut,\n totalSamples,\n totalDuration,\n frameLength,\n subarray,\n readRawData,\n getFrame,\n getHeader,\n} from \"../constants.js\";\nimport Frame from \"../containers/Frame.js\";\n\nexport default class CodecFrame extends Frame {\n static *[getFrame](Header, Frame, codecParser, headerCache, readOffset) {\n const headerValue = yield* Header[getHeader](\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (headerValue) {\n const frameLengthValue = headerStore.get(headerValue)[frameLength];\n const samplesValue = headerStore.get(headerValue)[samples];\n\n const frame = (yield* codecParser[readRawData](\n frameLengthValue,\n readOffset,\n ))[subarray](0, frameLengthValue);\n\n return new Frame(headerValue, frame, samplesValue);\n } else {\n return null;\n }\n }\n\n constructor(headerValue, dataValue, samplesValue) {\n super(headerValue, dataValue);\n\n this[header] = headerValue;\n this[samples] = samplesValue;\n this[duration] = (samplesValue / headerValue[sampleRate]) * 1000;\n this[frameNumber] = null;\n this[totalBytesOut] = null;\n this[totalSamples] = null;\n this[totalDuration] = null;\n\n frameStore.get(this)[length] = dataValue[length];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n// https://id3.org/Developer%20Information\n\nimport { length, version, readRawData } from \"../constants.js\";\n\nconst unsynchronizationFlag = \"unsynchronizationFlag\";\nconst extendedHeaderFlag = \"extendedHeaderFlag\";\nconst experimentalFlag = \"experimentalFlag\";\nconst footerPresent = \"footerPresent\";\n\nexport default class ID3v2 {\n static *getID3v2Header(codecParser, headerCache, readOffset) {\n const headerLength = 10;\n const header = {};\n\n let data = yield* codecParser[readRawData](3, readOffset);\n // Byte (0-2 of 9)\n // ID3\n if (data[0] !== 0x49 || data[1] !== 0x44 || data[2] !== 0x33) return null;\n\n data = yield* codecParser[readRawData](headerLength, readOffset);\n\n // Byte (3-4 of 9)\n // * `BBBBBBBB|........`: Major version\n // * `........|BBBBBBBB`: Minor version\n header[version] = `id3v2.${data[3]}.${data[4]}`;\n\n // Byte (5 of 9)\n // * `....0000.: Zeros (flags not implemented yet)\n if (data[5] & 0b00001111) return null;\n\n // Byte (5 of 9)\n // * `CDEF0000`: Flags\n // * `C.......`: Unsynchronisation (indicates whether or not unsynchronisation is used)\n // * `.D......`: Extended header (indicates whether or not the header is followed by an extended header)\n // * `..E.....`: Experimental indicator (indicates whether or not the tag is in an experimental stage)\n // * `...F....`: Footer present (indicates that a footer is present at the very end of the tag)\n header[unsynchronizationFlag] = !!(data[5] & 0b10000000);\n header[extendedHeaderFlag] = !!(data[5] & 0b01000000);\n header[experimentalFlag] = !!(data[5] & 0b00100000);\n header[footerPresent] = !!(data[5] & 0b00010000);\n\n // Byte (6-9 of 9)\n // * `0.......|0.......|0.......|0.......`: Zeros\n if (\n data[6] & 0b10000000 ||\n data[7] & 0b10000000 ||\n data[8] & 0b10000000 ||\n data[9] & 0b10000000\n )\n return null;\n\n // Byte (6-9 of 9)\n // * `.FFFFFFF|.FFFFFFF|.FFFFFFF|.FFFFFFF`: Tag Length\n // The ID3v2 tag size is encoded with four bytes where the most significant bit (bit 7)\n // is set to zero in every byte, making a total of 28 bits. The zeroed bits are ignored,\n // so a 257 bytes long tag is represented as $00 00 02 01.\n const dataLength =\n (data[6] << 21) | (data[7] << 14) | (data[8] << 7) | data[9];\n\n header[length] = headerLength + dataLength;\n\n return new ID3v2(header);\n }\n\n constructor(header) {\n this[version] = header[version];\n this[unsynchronizationFlag] = header[unsynchronizationFlag];\n this[extendedHeaderFlag] = header[extendedHeaderFlag];\n this[experimentalFlag] = header[experimentalFlag];\n this[footerPresent] = header[footerPresent];\n this[length] = header[length];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore } from \"../globals.js\";\nimport {\n bitDepth,\n channelMode,\n sampleRate,\n bitrate,\n channels,\n} from \"../constants.js\";\n\nexport default class CodecHeader {\n /**\n * @private\n */\n constructor(header) {\n headerStore.set(this, header);\n\n this[bitDepth] = header[bitDepth];\n this[bitrate] = null; // set during frame mapping\n this[channels] = header[channels];\n this[channelMode] = header[channelMode];\n this[sampleRate] = header[sampleRate];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport {\n reserved,\n bad,\n free,\n none,\n sixteenBitCRC,\n rate44100,\n rate48000,\n rate32000,\n rate22050,\n rate24000,\n rate16000,\n rate11025,\n rate12000,\n rate8000,\n monophonic,\n stereo,\n bitDepth,\n channelMode,\n sampleRate,\n bitrate,\n channels,\n isOriginal,\n isPrivate,\n layer,\n length,\n mpegVersion,\n frameLength,\n protection,\n emphasis,\n framePadding,\n isCopyrighted,\n modeExtension,\n description,\n samples,\n subarray,\n readRawData,\n incrementRawData,\n getHeader,\n setHeader,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport ID3v2 from \"../../metadata/ID3v2.js\";\nimport CodecHeader from \"../CodecHeader.js\";\n\n// http://www.mp3-tech.org/programmer/frame_header.html\n\nconst bitrateMatrix = {\n // bits | V1,L1 | V1,L2 | V1,L3 | V2,L1 | V2,L2 & L3\n 0b00000000: [free, free, free, free, free],\n 0b00010000: [32, 32, 32, 32, 8],\n // 0b00100000: [64, 48, 40, 48, 16,],\n // 0b00110000: [96, 56, 48, 56, 24,],\n // 0b01000000: [128, 64, 56, 64, 32,],\n // 0b01010000: [160, 80, 64, 80, 40,],\n // 0b01100000: [192, 96, 80, 96, 48,],\n // 0b01110000: [224, 112, 96, 112, 56,],\n // 0b10000000: [256, 128, 112, 128, 64,],\n // 0b10010000: [288, 160, 128, 144, 80,],\n // 0b10100000: [320, 192, 160, 160, 96,],\n // 0b10110000: [352, 224, 192, 176, 112,],\n // 0b11000000: [384, 256, 224, 192, 128,],\n // 0b11010000: [416, 320, 256, 224, 144,],\n // 0b11100000: [448, 384, 320, 256, 160,],\n 0b11110000: [bad, bad, bad, bad, bad],\n};\n\nconst calcBitrate = (idx, interval, intervalOffset) =>\n 8 *\n (((idx + intervalOffset) % interval) + interval) *\n (1 << ((idx + intervalOffset) / interval)) -\n 8 * interval * ((interval / 8) | 0);\n\n// generate bitrate matrix\nfor (let i = 2; i < 15; i++)\n bitrateMatrix[i << 4] = [\n i * 32, // V1,L1\n calcBitrate(i, 4, 0), // V1,L2\n calcBitrate(i, 4, -1), // V1,L3\n calcBitrate(i, 8, 4), // V2,L1\n calcBitrate(i, 8, 0), // V2,L2 & L3\n ];\n\nconst v1Layer1 = 0;\nconst v1Layer2 = 1;\nconst v1Layer3 = 2;\nconst v2Layer1 = 3;\nconst v2Layer23 = 4;\n\nconst bands = \"bands \";\nconst to31 = \" to 31\";\nconst layer12ModeExtensions = {\n 0b00000000: bands + 4 + to31,\n 0b00010000: bands + 8 + to31,\n 0b00100000: bands + 12 + to31,\n 0b00110000: bands + 16 + to31,\n};\n\nconst bitrateIndex = \"bitrateIndex\";\nconst v2 = \"v2\";\nconst v1 = \"v1\";\n\nconst intensityStereo = \"Intensity stereo \";\nconst msStereo = \", MS stereo \";\nconst on = \"on\";\nconst off = \"off\";\nconst layer3ModeExtensions = {\n 0b00000000: intensityStereo + off + msStereo + off,\n 0b00010000: intensityStereo + on + msStereo + off,\n 0b00100000: intensityStereo + off + msStereo + on,\n 0b00110000: intensityStereo + on + msStereo + on,\n};\n\nconst layersValues = {\n 0b00000000: { [description]: reserved },\n 0b00000010: {\n [description]: \"Layer III\",\n [framePadding]: 1,\n [modeExtension]: layer3ModeExtensions,\n [v1]: {\n [bitrateIndex]: v1Layer3,\n [samples]: 1152,\n },\n [v2]: {\n [bitrateIndex]: v2Layer23,\n [samples]: 576,\n },\n },\n 0b00000100: {\n [description]: \"Layer II\",\n [framePadding]: 1,\n [modeExtension]: layer12ModeExtensions,\n [samples]: 1152,\n [v1]: {\n [bitrateIndex]: v1Layer2,\n },\n [v2]: {\n [bitrateIndex]: v2Layer23,\n },\n },\n 0b00000110: {\n [description]: \"Layer I\",\n [framePadding]: 4,\n [modeExtension]: layer12ModeExtensions,\n [samples]: 384,\n [v1]: {\n [bitrateIndex]: v1Layer1,\n },\n [v2]: {\n [bitrateIndex]: v2Layer1,\n },\n },\n};\n\nconst mpegVersionDescription = \"MPEG Version \";\nconst isoIec = \"ISO/IEC \";\nconst mpegVersions = {\n 0b00000000: {\n [description]: `${mpegVersionDescription}2.5 (later extension of MPEG 2)`,\n [layer]: v2,\n [sampleRate]: {\n 0b00000000: rate11025,\n 0b00000100: rate12000,\n 0b00001000: rate8000,\n 0b00001100: reserved,\n },\n },\n 0b00001000: { [description]: reserved },\n 0b00010000: {\n [description]: `${mpegVersionDescription}2 (${isoIec}13818-3)`,\n [layer]: v2,\n [sampleRate]: {\n 0b00000000: rate22050,\n 0b00000100: rate24000,\n 0b00001000: rate16000,\n 0b00001100: reserved,\n },\n },\n 0b00011000: {\n [description]: `${mpegVersionDescription}1 (${isoIec}11172-3)`,\n [layer]: v1,\n [sampleRate]: {\n 0b00000000: rate44100,\n 0b00000100: rate48000,\n 0b00001000: rate32000,\n 0b00001100: reserved,\n },\n },\n length,\n};\n\nconst protectionValues = {\n 0b00000000: sixteenBitCRC,\n 0b00000001: none,\n};\n\nconst emphasisValues = {\n 0b00000000: none,\n 0b00000001: \"50/15 ms\",\n 0b00000010: reserved,\n 0b00000011: \"CCIT J.17\",\n};\n\nconst channelModes = {\n 0b00000000: { [channels]: 2, [description]: stereo },\n 0b01000000: { [channels]: 2, [description]: \"joint \" + stereo },\n 0b10000000: { [channels]: 2, [description]: \"dual channel\" },\n 0b11000000: { [channels]: 1, [description]: monophonic },\n};\n\nexport default class MPEGHeader extends CodecHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // check for id3 header\n const id3v2Header = yield* ID3v2.getID3v2Header(\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (id3v2Header) {\n // throw away the data. id3 parsing is not implemented yet.\n yield* codecParser[readRawData](id3v2Header[length], readOffset);\n codecParser[incrementRawData](id3v2Header[length]);\n }\n\n // Must be at least four bytes.\n const data = yield* codecParser[readRawData](4, readOffset);\n\n // Check header cache\n const key = bytesToString(data[subarray](0, 4));\n const cachedHeader = headerCache[getHeader](key);\n if (cachedHeader) return new MPEGHeader(cachedHeader);\n\n // Frame sync (all bits must be set): `11111111|111`:\n if (data[0] !== 0xff || data[1] < 0xe0) return null;\n\n // Byte (2 of 4)\n // * `111BBCCD`\n // * `...BB...`: MPEG Audio version ID\n // * `.....CC.`: Layer description\n // * `.......D`: Protection bit (0 - Protected by CRC (16bit CRC follows header), 1 = Not protected)\n\n // Mpeg version (1, 2, 2.5)\n const mpegVersionValues = mpegVersions[data[1] & 0b00011000];\n if (mpegVersionValues[description] === reserved) return null;\n\n // Layer (I, II, III)\n const layerBits = data[1] & 0b00000110;\n if (layersValues[layerBits][description] === reserved) return null;\n const layerValues = {\n ...layersValues[layerBits],\n ...layersValues[layerBits][mpegVersionValues[layer]],\n };\n\n header[mpegVersion] = mpegVersionValues[description];\n header[layer] = layerValues[description];\n header[samples] = layerValues[samples];\n header[protection] = protectionValues[data[1] & 0b00000001];\n\n header[length] = 4;\n\n // Byte (3 of 4)\n // * `EEEEFFGH`\n // * `EEEE....`: Bitrate index. 1111 is invalid, everything else is accepted\n // * `....FF..`: Sample rate\n // * `......G.`: Padding bit, 0=frame not padded, 1=frame padded\n // * `.......H`: Private bit.\n header[bitrate] =\n bitrateMatrix[data[2] & 0b11110000][layerValues[bitrateIndex]];\n if (header[bitrate] === bad) return null;\n\n header[sampleRate] = mpegVersionValues[sampleRate][data[2] & 0b00001100];\n if (header[sampleRate] === reserved) return null;\n\n header[framePadding] = data[2] & 0b00000010 && layerValues[framePadding];\n header[isPrivate] = !!(data[2] & 0b00000001);\n\n header[frameLength] = Math.floor(\n (125 * header[bitrate] * header[samples]) / header[sampleRate] +\n header[framePadding],\n );\n if (!header[frameLength]) return null;\n\n // Byte (4 of 4)\n // * `IIJJKLMM`\n // * `II......`: Channel mode\n // * `..JJ....`: Mode extension (only if joint stereo)\n // * `....K...`: Copyright\n // * `.....L..`: Original\n // * `......MM`: Emphasis\n const channelModeBits = data[3] & 0b11000000;\n header[channelMode] = channelModes[channelModeBits][description];\n header[channels] = channelModes[channelModeBits][channels];\n\n header[modeExtension] = layerValues[modeExtension][data[3] & 0b00110000];\n header[isCopyrighted] = !!(data[3] & 0b00001000);\n header[isOriginal] = !!(data[3] & 0b00000100);\n\n header[emphasis] = emphasisValues[data[3] & 0b00000011];\n if (header[emphasis] === reserved) return null;\n\n header[bitDepth] = 16;\n\n // set header cache\n {\n const { length, frameLength, samples, ...codecUpdateFields } = header;\n\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n return new MPEGHeader(header);\n }\n\n /**\n * @private\n * Call MPEGHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[bitrate] = header[bitrate];\n this[emphasis] = header[emphasis];\n this[framePadding] = header[framePadding];\n this[isCopyrighted] = header[isCopyrighted];\n this[isOriginal] = header[isOriginal];\n this[isPrivate] = header[isPrivate];\n this[layer] = header[layer];\n this[modeExtension] = header[modeExtension];\n this[mpegVersion] = header[mpegVersion];\n this[protection] = header[protection];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { getFrame } from \"../../constants.js\";\n\nimport CodecFrame from \"../CodecFrame.js\";\nimport MPEGHeader from \"./MPEGHeader.js\";\n\nexport default class MPEGFrame extends CodecFrame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n return yield* super[getFrame](\n MPEGHeader,\n MPEGFrame,\n codecParser,\n headerCache,\n readOffset,\n );\n }\n\n constructor(header, frame, samples) {\n super(header, frame, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport {\n codec,\n mpeg,\n fixedLengthFrameSync,\n parseFrame,\n} from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport MPEGFrame from \"./MPEGFrame.js\";\nimport MPEGHeader from \"./MPEGHeader.js\";\n\nexport default class MPEGParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = MPEGFrame;\n this.Header = MPEGHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return mpeg;\n }\n\n *[parseFrame]() {\n return yield* this[fixedLengthFrameSync]();\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://wiki.multimedia.cx/index.php/ADTS\n\nAAAAAAAA AAAABCCD EEFFFFGH HHIJKLMM MMMMMMMM MMMOOOOO OOOOOOPP (QQQQQQQQ QQQQQQQQ)\n\nAACHeader consists of 7 or 9 bytes (without or with CRC).\nLetter Length (bits) Description\nA 12 syncword 0xFFF, all bits must be 1\nB 1 MPEG Version: 0 for MPEG-4, 1 for MPEG-2\nC 2 Layer: always 0\nD 1 protection absent, Warning, set to 1 if there is no CRC and 0 if there is CRC\nE 2 profile, the MPEG-4 Audio Object Type minus 1\nF 4 MPEG-4 Sampling Frequency Index (15 is forbidden)\nG 1 private bit, guaranteed never to be used by MPEG, set to 0 when encoding, ignore when decoding\nH 3 MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)\nI 1 originality, set to 0 when encoding, ignore when decoding\nJ 1 home, set to 0 when encoding, ignore when decoding\nK 1 copyrighted id bit, the next bit of a centrally registered copyright identifier, set to 0 when encoding, ignore when decoding\nL 1 copyright id start, signals that this frame's copyright id bit is the first bit of the copyright id, set to 0 when encoding, ignore when decoding\nM 13 frame length, this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)\nO 11 Buffer fullness // 0x7FF for VBR\nP 2 Number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame\nQ 16 CRC if protection absent is 0 \n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport { bytesToString } from \"../../utilities.js\";\nimport {\n reserved,\n bad,\n none,\n sixteenBitCRC,\n rate96000,\n rate88200,\n rate64000,\n rate48000,\n rate44100,\n rate32000,\n rate24000,\n rate22050,\n rate16000,\n rate12000,\n rate11025,\n rate8000,\n rate7350,\n channelMappings,\n getChannelMapping,\n monophonic,\n lfe,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n copyrightId,\n copyrightIdStart,\n bufferFullness,\n isHome,\n isOriginal,\n isPrivate,\n layer,\n length,\n mpegVersion,\n numberAACFrames,\n profile,\n protection,\n frameLength,\n description,\n samples,\n sampleRateBits,\n profileBits,\n channelModeBits,\n buffer,\n readRawData,\n getHeader,\n setHeader,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst mpegVersionValues = {\n 0b00000000: \"MPEG-4\",\n 0b00001000: \"MPEG-2\",\n};\n\nconst layerValues = {\n 0b00000000: \"valid\",\n 0b00000010: bad,\n 0b00000100: bad,\n 0b00000110: bad,\n};\n\nconst protectionValues = {\n 0b00000000: sixteenBitCRC,\n 0b00000001: none,\n};\n\nconst profileValues = {\n 0b00000000: \"AAC Main\",\n 0b01000000: \"AAC LC (Low Complexity)\",\n 0b10000000: \"AAC SSR (Scalable Sample Rate)\",\n 0b11000000: \"AAC LTP (Long Term Prediction)\",\n};\n\nconst sampleRates = {\n 0b00000000: rate96000,\n 0b00000100: rate88200,\n 0b00001000: rate64000,\n 0b00001100: rate48000,\n 0b00010000: rate44100,\n 0b00010100: rate32000,\n 0b00011000: rate24000,\n 0b00011100: rate22050,\n 0b00100000: rate16000,\n 0b00100100: rate12000,\n 0b00101000: rate11025,\n 0b00101100: rate8000,\n 0b00110000: rate7350,\n 0b00110100: reserved,\n 0b00111000: reserved,\n 0b00111100: \"frequency is written explicitly\",\n};\n\n// prettier-ignore\nconst channelModeValues = {\n 0b000000000: { [channels]: 0, [description]: \"Defined in AOT Specific Config\" },\n /*\n 'monophonic (mono)'\n 'stereo (left, right)'\n 'linear surround (front center, front left, front right)'\n 'quadraphonic (front center, front left, front right, rear center)'\n '5.0 surround (front center, front left, front right, rear left, rear right)'\n '5.1 surround (front center, front left, front right, rear left, rear right, LFE)'\n '7.1 surround (front center, front left, front right, side left, side right, rear left, rear right, LFE)'\n */\n 0b001000000: { [channels]: 1, [description]: monophonic },\n 0b010000000: { [channels]: 2, [description]: getChannelMapping(2,channelMappings[0][0]) },\n 0b011000000: { [channels]: 3, [description]: getChannelMapping(3,channelMappings[1][3]), },\n 0b100000000: { [channels]: 4, [description]: getChannelMapping(4,channelMappings[1][3],channelMappings[3][4]), },\n 0b101000000: { [channels]: 5, [description]: getChannelMapping(5,channelMappings[1][3],channelMappings[3][0]), },\n 0b110000000: { [channels]: 6, [description]: getChannelMapping(6,channelMappings[1][3],channelMappings[3][0],lfe), },\n 0b111000000: { [channels]: 8, [description]: getChannelMapping(8,channelMappings[1][3],channelMappings[2][0],channelMappings[3][0],lfe), },\n};\n\nexport default class AACHeader extends CodecHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // Must be at least seven bytes. Out of data\n const data = yield* codecParser[readRawData](7, readOffset);\n\n // Check header cache\n const key = bytesToString([\n data[0],\n data[1],\n data[2],\n (data[3] & 0b11111100) | (data[6] & 0b00000011), // frame length, buffer fullness varies so don't cache it\n ]);\n const cachedHeader = headerCache[getHeader](key);\n\n if (!cachedHeader) {\n // Frame sync (all bits must be set): `11111111|1111`:\n if (data[0] !== 0xff || data[1] < 0xf0) return null;\n\n // Byte (2 of 7)\n // * `1111BCCD`\n // * `....B...`: MPEG Version: 0 for MPEG-4, 1 for MPEG-2\n // * `.....CC.`: Layer: always 0\n // * `.......D`: protection absent, Warning, set to 1 if there is no CRC and 0 if there is CRC\n header[mpegVersion] = mpegVersionValues[data[1] & 0b00001000];\n\n header[layer] = layerValues[data[1] & 0b00000110];\n if (header[layer] === bad) return null;\n\n const protectionBit = data[1] & 0b00000001;\n header[protection] = protectionValues[protectionBit];\n header[length] = protectionBit ? 7 : 9;\n\n // Byte (3 of 7)\n // * `EEFFFFGH`\n // * `EE......`: profile, the MPEG-4 Audio Object Type minus 1\n // * `..FFFF..`: MPEG-4 Sampling Frequency Index (15 is forbidden)\n // * `......G.`: private bit, guaranteed never to be used by MPEG, set to 0 when encoding, ignore when decoding\n header[profileBits] = data[2] & 0b11000000;\n header[sampleRateBits] = data[2] & 0b00111100;\n const privateBit = data[2] & 0b00000010;\n\n header[profile] = profileValues[header[profileBits]];\n\n header[sampleRate] = sampleRates[header[sampleRateBits]];\n if (header[sampleRate] === reserved) return null;\n\n header[isPrivate] = !!privateBit;\n\n // Byte (3,4 of 7)\n // * `.......H|HH......`: MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)\n header[channelModeBits] = ((data[2] << 8) | data[3]) & 0b111000000;\n header[channelMode] =\n channelModeValues[header[channelModeBits]][description];\n header[channels] = channelModeValues[header[channelModeBits]][channels];\n\n // Byte (4 of 7)\n // * `HHIJKLMM`\n // * `..I.....`: originality, set to 0 when encoding, ignore when decoding\n // * `...J....`: home, set to 0 when encoding, ignore when decoding\n // * `....K...`: copyrighted id bit, the next bit of a centrally registered copyright identifier, set to 0 when encoding, ignore when decoding\n // * `.....L..`: copyright id start, signals that this frame's copyright id bit is the first bit of the copyright id, set to 0 when encoding, ignore when decoding\n header[isOriginal] = !!(data[3] & 0b00100000);\n header[isHome] = !!(data[3] & 0b00001000);\n header[copyrightId] = !!(data[3] & 0b00001000);\n header[copyrightIdStart] = !!(data[3] & 0b00000100);\n header[bitDepth] = 16;\n header[samples] = 1024;\n\n // Byte (7 of 7)\n // * `......PP` Number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame\n header[numberAACFrames] = data[6] & 0b00000011;\n\n {\n const {\n length,\n channelModeBits,\n profileBits,\n sampleRateBits,\n frameLength,\n samples,\n numberAACFrames,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n } else {\n Object.assign(header, cachedHeader);\n }\n\n // Byte (4,5,6 of 7)\n // * `.......MM|MMMMMMMM|MMM.....`: frame length, this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)\n header[frameLength] =\n ((data[3] << 11) | (data[4] << 3) | (data[5] >> 5)) & 0x1fff;\n if (!header[frameLength]) return null;\n\n // Byte (6,7 of 7)\n // * `...OOOOO|OOOOOO..`: Buffer fullness\n const bufferFullnessBits = ((data[5] << 6) | (data[6] >> 2)) & 0x7ff;\n header[bufferFullness] =\n bufferFullnessBits === 0x7ff ? \"VBR\" : bufferFullnessBits;\n\n return new AACHeader(header);\n }\n\n /**\n * @private\n * Call AACHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[copyrightId] = header[copyrightId];\n this[copyrightIdStart] = header[copyrightIdStart];\n this[bufferFullness] = header[bufferFullness];\n this[isHome] = header[isHome];\n this[isOriginal] = header[isOriginal];\n this[isPrivate] = header[isPrivate];\n this[layer] = header[layer];\n this[length] = header[length];\n this[mpegVersion] = header[mpegVersion];\n this[numberAACFrames] = header[numberAACFrames];\n this[profile] = header[profile];\n this[protection] = header[protection];\n }\n\n get audioSpecificConfig() {\n // Audio Specific Configuration\n // * `000EEFFF|F0HHH000`:\n // * `000EE...|........`: Object Type (profileBit + 1)\n // * `.....FFF|F.......`: Sample Rate\n // * `........|.0HHH...`: Channel Configuration\n // * `........|.....0..`: Frame Length (1024)\n // * `........|......0.`: does not depend on core coder\n // * `........|.......0`: Not Extension\n const header = headerStore.get(this);\n\n const audioSpecificConfig =\n ((header[profileBits] + 0x40) << 5) |\n (header[sampleRateBits] << 5) |\n (header[channelModeBits] >> 3);\n\n const bytes = new uint8Array(2);\n new dataView(bytes[buffer]).setUint16(0, audioSpecificConfig, false);\n return bytes;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { getFrame } from \"../../constants.js\";\n\nimport CodecFrame from \"../CodecFrame.js\";\nimport AACHeader from \"./AACHeader.js\";\n\nexport default class AACFrame extends CodecFrame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n return yield* super[getFrame](\n AACHeader,\n AACFrame,\n codecParser,\n headerCache,\n readOffset,\n );\n }\n\n constructor(header, frame, samples) {\n super(header, frame, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { codec, fixedLengthFrameSync, parseFrame } from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport AACFrame from \"./AACFrame.js\";\nimport AACHeader from \"./AACHeader.js\";\n\nexport default class AACParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = AACFrame;\n this.Header = AACHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return \"aac\";\n }\n\n *[parseFrame]() {\n return yield* this[fixedLengthFrameSync]();\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport { flacCrc16 } from \"../../utilities.js\";\nimport {\n length,\n streamInfo,\n crc16,\n samples,\n subarray,\n checkFrameFooterCrc16,\n} from \"../../constants.js\";\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class FLACFrame extends CodecFrame {\n static _getFrameFooterCrc16(data) {\n return (data[data[length] - 2] << 8) + data[data[length] - 1];\n }\n\n // check frame footer crc\n // https://xiph.org/flac/format.html#frame_footer\n static [checkFrameFooterCrc16](data) {\n const expectedCrc16 = FLACFrame._getFrameFooterCrc16(data);\n const actualCrc16 = flacCrc16(data[subarray](0, -2));\n\n return expectedCrc16 === actualCrc16;\n }\n\n constructor(data, header, streamInfoValue) {\n header[streamInfo] = streamInfoValue;\n header[crc16] = FLACFrame._getFrameFooterCrc16(data);\n\n super(header, data, headerStore.get(header)[samples]);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://xiph.org/flac/format.html\n\nAAAAAAAA AAAAAABC DDDDEEEE FFFFGGGH \n(IIIIIIII...)\n(JJJJJJJJ|JJJJJJJJ)\n(KKKKKKKK|KKKKKKKK)\nLLLLLLLLL\n\nFLAC Frame Header\nLetter Length (bits) Description\nA 13 11111111|11111\nB 1 Reserved 0 - mandatory, 1 - reserved\nC 1 Blocking strategy, 0 - fixed, 1 - variable\nD 4 Block size in inter-channel samples\nE 4 Sample rate\nF 4 Channel assignment\nG 3 Sample size in bits\nH 1 Reserved 0 - mandatory, 1 - reserved\nI ? if(variable blocksize)\n <8-56>:\"UTF-8\" coded sample number (decoded number is 36 bits) [4]\n else\n <8-48>:\"UTF-8\" coded frame number (decoded number is 31 bits) [4]\nJ ? if(blocksize bits == 011x)\n 8/16 bit (blocksize-1)\nK ? if(sample rate bits == 11xx)\n 8/16 bit sample rate\nL 8 CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) of everything before the crc, including the sync code\n \n*/\n\nimport {\n reserved,\n bad,\n rate88200,\n rate176400,\n rate192000,\n rate8000,\n rate16000,\n rate22050,\n rate24000,\n rate32000,\n rate44100,\n rate48000,\n rate96000,\n channelMappings,\n getChannelMapping,\n monophonic,\n stereo,\n lfe,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n crc16,\n blockingStrategy,\n blockSize,\n frameNumber,\n sampleNumber,\n streamInfo,\n description,\n samples,\n sampleRateBits,\n blockingStrategyBits,\n blockSizeBits,\n crc,\n subarray,\n readRawData,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\nimport { bytesToString, crc8 } from \"../../utilities.js\";\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst getFromStreamInfo = \"get from STREAMINFO metadata block\";\n\nconst blockingStrategyValues = {\n 0b00000000: \"Fixed\",\n 0b00000001: \"Variable\",\n};\n\nconst blockSizeValues = {\n 0b00000000: reserved,\n 0b00010000: 192,\n // 0b00100000: 576,\n // 0b00110000: 1152,\n // 0b01000000: 2304,\n // 0b01010000: 4608,\n // 0b01100000: \"8-bit (blocksize-1) from end of header\",\n // 0b01110000: \"16-bit (blocksize-1) from end of header\",\n // 0b10000000: 256,\n // 0b10010000: 512,\n // 0b10100000: 1024,\n // 0b10110000: 2048,\n // 0b11000000: 4096,\n // 0b11010000: 8192,\n // 0b11100000: 16384,\n // 0b11110000: 32768,\n};\nfor (let i = 2; i < 16; i++)\n blockSizeValues[i << 4] = i < 6 ? 576 * 2 ** (i - 2) : 2 ** i;\n\nconst sampleRateValues = {\n 0b00000000: getFromStreamInfo,\n 0b00000001: rate88200,\n 0b00000010: rate176400,\n 0b00000011: rate192000,\n 0b00000100: rate8000,\n 0b00000101: rate16000,\n 0b00000110: rate22050,\n 0b00000111: rate24000,\n 0b00001000: rate32000,\n 0b00001001: rate44100,\n 0b00001010: rate48000,\n 0b00001011: rate96000,\n // 0b00001100: \"8-bit sample rate (in kHz) from end of header\",\n // 0b00001101: \"16-bit sample rate (in Hz) from end of header\",\n // 0b00001110: \"16-bit sample rate (in tens of Hz) from end of header\",\n 0b00001111: bad,\n};\n\n/* prettier-ignore */\nconst channelAssignments = {\n /*'\n 'monophonic (mono)'\n 'stereo (left, right)'\n 'linear surround (left, right, center)'\n 'quadraphonic (front left, front right, rear left, rear right)'\n '5.0 surround (front left, front right, front center, rear left, rear right)'\n '5.1 surround (front left, front right, front center, LFE, rear left, rear right)'\n '6.1 surround (front left, front right, front center, LFE, rear center, side left, side right)'\n '7.1 surround (front left, front right, front center, LFE, rear left, rear right, side left, side right)'\n */\n 0b00000000: {[channels]: 1, [description]: monophonic},\n 0b00010000: {[channels]: 2, [description]: getChannelMapping(2,channelMappings[0][0])},\n 0b00100000: {[channels]: 3, [description]: getChannelMapping(3,channelMappings[0][1])},\n 0b00110000: {[channels]: 4, [description]: getChannelMapping(4,channelMappings[1][0],channelMappings[3][0])},\n 0b01000000: {[channels]: 5, [description]: getChannelMapping(5,channelMappings[1][1],channelMappings[3][0])},\n 0b01010000: {[channels]: 6, [description]: getChannelMapping(6,channelMappings[1][1],lfe,channelMappings[3][0])},\n 0b01100000: {[channels]: 7, [description]: getChannelMapping(7,channelMappings[1][1],lfe,channelMappings[3][4],channelMappings[2][0])},\n 0b01110000: {[channels]: 8, [description]: getChannelMapping(8,channelMappings[1][1],lfe,channelMappings[3][0],channelMappings[2][0])},\n 0b10000000: {[channels]: 2, [description]: `${stereo} (left, diff)`},\n 0b10010000: {[channels]: 2, [description]: `${stereo} (diff, right)`},\n 0b10100000: {[channels]: 2, [description]: `${stereo} (avg, diff)`},\n 0b10110000: reserved,\n 0b11000000: reserved,\n 0b11010000: reserved,\n 0b11100000: reserved,\n 0b11110000: reserved,\n}\n\nconst bitDepthValues = {\n 0b00000000: getFromStreamInfo,\n 0b00000010: 8,\n 0b00000100: 12,\n 0b00000110: reserved,\n 0b00001000: 16,\n 0b00001010: 20,\n 0b00001100: 24,\n 0b00001110: reserved,\n};\n\nexport default class FLACHeader extends CodecHeader {\n // https://datatracker.ietf.org/doc/html/rfc3629#section-3\n // Char. number range | UTF-8 octet sequence\n // (hexadecimal) | (binary)\n // --------------------+---------------------------------------------\n // 0000 0000-0000 007F | 0xxxxxxx\n // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n static _decodeUTF8Int(data) {\n if (data[0] > 0xfe) {\n return null; // length byte must have at least one zero as the lsb\n }\n\n if (data[0] < 0x80) return { value: data[0], length: 1 };\n\n // get length by counting the number of msb that are set to 1\n let length = 1;\n for (let zeroMask = 0x40; zeroMask & data[0]; zeroMask >>= 1) length++;\n\n let idx = length - 1,\n value = 0,\n shift = 0;\n\n // sum together the encoded bits in bytes 2 to length\n // 1110xxxx 10[cccccc] 10[bbbbbb] 10[aaaaaa]\n //\n // value = [cccccc] | [bbbbbb] | [aaaaaa]\n for (; idx > 0; shift += 6, idx--) {\n if ((data[idx] & 0xc0) !== 0x80) {\n return null; // each byte should have leading 10xxxxxx\n }\n value |= (data[idx] & 0x3f) << shift; // add the encoded bits\n }\n\n // read the final encoded bits in byte 1\n // 1110[dddd] 10[cccccc] 10[bbbbbb] 10[aaaaaa]\n //\n // value = [dddd] | [cccccc] | [bbbbbb] | [aaaaaa]\n value |= (data[idx] & (0x7f >> length)) << shift;\n\n return { value, length };\n }\n\n static [getHeaderFromUint8Array](data, headerCache) {\n const codecParserStub = {\n [readRawData]: function* () {\n return data;\n },\n };\n\n return FLACHeader[getHeader](codecParserStub, headerCache, 0).next().value;\n }\n\n static *[getHeader](codecParser, headerCache, readOffset) {\n // Must be at least 6 bytes.\n let data = yield* codecParser[readRawData](6, readOffset);\n\n // Bytes (1-2 of 6)\n // * `11111111|111110..`: Frame sync\n // * `........|......0.`: Reserved 0 - mandatory, 1 - reserved\n if (data[0] !== 0xff || !(data[1] === 0xf8 || data[1] === 0xf9)) {\n return null;\n }\n\n const header = {};\n\n // Check header cache\n const key = bytesToString(data[subarray](0, 4));\n const cachedHeader = headerCache[getHeader](key);\n\n if (!cachedHeader) {\n // Byte (2 of 6)\n // * `.......C`: Blocking strategy, 0 - fixed, 1 - variable\n header[blockingStrategyBits] = data[1] & 0b00000001;\n header[blockingStrategy] =\n blockingStrategyValues[header[blockingStrategyBits]];\n\n // Byte (3 of 6)\n // * `DDDD....`: Block size in inter-channel samples\n // * `....EEEE`: Sample rate\n header[blockSizeBits] = data[2] & 0b11110000;\n header[sampleRateBits] = data[2] & 0b00001111;\n\n header[blockSize] = blockSizeValues[header[blockSizeBits]];\n if (header[blockSize] === reserved) {\n return null;\n }\n\n header[sampleRate] = sampleRateValues[header[sampleRateBits]];\n if (header[sampleRate] === bad) {\n return null;\n }\n\n // Byte (4 of 6)\n // * `FFFF....`: Channel assignment\n // * `....GGG.`: Sample size in bits\n // * `.......H`: Reserved 0 - mandatory, 1 - reserved\n if (data[3] & 0b00000001) {\n return null;\n }\n\n const channelAssignment = channelAssignments[data[3] & 0b11110000];\n if (channelAssignment === reserved) {\n return null;\n }\n\n header[channels] = channelAssignment[channels];\n header[channelMode] = channelAssignment[description];\n\n header[bitDepth] = bitDepthValues[data[3] & 0b00001110];\n if (header[bitDepth] === reserved) {\n return null;\n }\n } else {\n Object.assign(header, cachedHeader);\n }\n\n // Byte (5...)\n // * `IIIIIIII|...`: VBR block size ? sample number : frame number\n header[length] = 5;\n\n // check if there is enough data to parse UTF8\n data = yield* codecParser[readRawData](header[length] + 8, readOffset);\n\n const decodedUtf8 = FLACHeader._decodeUTF8Int(data[subarray](4));\n if (!decodedUtf8) {\n return null;\n }\n\n if (header[blockingStrategyBits]) {\n header[sampleNumber] = decodedUtf8.value;\n } else {\n header[frameNumber] = decodedUtf8.value;\n }\n\n header[length] += decodedUtf8[length];\n\n // Byte (...)\n // * `JJJJJJJJ|(JJJJJJJJ)`: Blocksize (8/16bit custom value)\n if (header[blockSizeBits] === 0b01100000) {\n // 8 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[blockSize] = data[header[length] - 1] + 1;\n header[length] += 1;\n } else if (header[blockSizeBits] === 0b01110000) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[blockSize] =\n (data[header[length] - 1] << 8) + data[header[length]] + 1;\n header[length] += 2;\n }\n\n header[samples] = header[blockSize];\n\n // Byte (...)\n // * `KKKKKKKK|(KKKKKKKK)`: Sample rate (8/16bit custom value)\n if (header[sampleRateBits] === 0b00001100) {\n // 8 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] = data[header[length] - 1] * 1000;\n header[length] += 1;\n } else if (header[sampleRateBits] === 0b00001101) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] =\n (data[header[length] - 1] << 8) + data[header[length]];\n header[length] += 2;\n } else if (header[sampleRateBits] === 0b00001110) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] =\n ((data[header[length] - 1] << 8) + data[header[length]]) * 10;\n header[length] += 2;\n }\n\n // Byte (...)\n // * `LLLLLLLL`: CRC-8\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[crc] = data[header[length] - 1];\n if (header[crc] !== crc8(data[subarray](0, header[length] - 1))) {\n return null;\n }\n\n {\n if (!cachedHeader) {\n const {\n blockingStrategyBits,\n frameNumber,\n sampleNumber,\n samples,\n sampleRateBits,\n blockSizeBits,\n crc,\n length,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n }\n return new FLACHeader(header);\n }\n\n /**\n * @private\n * Call FLACHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[crc16] = null; // set in FLACFrame\n this[blockingStrategy] = header[blockingStrategy];\n this[blockSize] = header[blockSize];\n this[frameNumber] = header[frameNumber];\n this[sampleNumber] = header[sampleNumber];\n this[streamInfo] = null; // set during ogg parsing\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore, headerStore } from \"../../globals.js\";\nimport {\n length,\n pageSequenceNumber,\n data,\n codec,\n codecFrames,\n segments,\n subarray,\n readRawData,\n incrementRawData,\n mapFrameStats,\n logWarning,\n parseFrame,\n parseOggPage,\n getHeader,\n enable,\n checkFrameFooterCrc16,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\nimport Parser from \"../Parser.js\";\nimport FLACFrame from \"./FLACFrame.js\";\nimport FLACHeader from \"./FLACHeader.js\";\n\nconst MIN_FLAC_FRAME_SIZE = 2;\nconst MAX_FLAC_FRAME_SIZE = 512 * 1024;\n\nexport default class FLACParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = FLACFrame;\n this.Header = FLACHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return \"flac\";\n }\n\n *_getNextFrameSyncOffset(offset) {\n const data = yield* this._codecParser[readRawData](2, 0);\n const dataLength = data[length] - 2;\n\n while (offset < dataLength) {\n // * `11111111|111110..`: Frame sync\n // * `........|......0.`: Reserved 0 - mandatory, 1 - reserved\n const firstByte = data[offset];\n if (firstByte === 0xff) {\n const secondByte = data[offset + 1];\n if (secondByte === 0xf8 || secondByte === 0xf9) break;\n if (secondByte !== 0xff) offset++; // might as well check for the next sync byte\n }\n offset++;\n }\n\n return offset;\n }\n\n *[parseFrame]() {\n // find the first valid frame header\n do {\n const header = yield* FLACHeader[getHeader](\n this._codecParser,\n this._headerCache,\n 0,\n );\n\n if (header) {\n // found a valid frame header\n // find the next valid frame header\n let nextHeaderOffset =\n headerStore.get(header)[length] + MIN_FLAC_FRAME_SIZE;\n\n while (nextHeaderOffset <= MAX_FLAC_FRAME_SIZE) {\n if (\n this._codecParser._flushing ||\n (yield* FLACHeader[getHeader](\n this._codecParser,\n this._headerCache,\n nextHeaderOffset,\n ))\n ) {\n // found a valid next frame header\n let frameData =\n yield* this._codecParser[readRawData](nextHeaderOffset);\n\n if (!this._codecParser._flushing)\n frameData = frameData[subarray](0, nextHeaderOffset);\n\n // check that this is actually the next header by validating the frame footer crc16\n if (FLACFrame[checkFrameFooterCrc16](frameData)) {\n // both frame headers, and frame footer crc16 are valid, we are synced (odds are pretty low of a false positive)\n const frame = new FLACFrame(frameData, header);\n\n this._headerCache[enable](); // start caching when synced\n this._codecParser[incrementRawData](nextHeaderOffset); // increment to the next frame\n this._codecParser[mapFrameStats](frame);\n\n return frame;\n }\n }\n\n nextHeaderOffset = yield* this._getNextFrameSyncOffset(\n nextHeaderOffset + 1,\n );\n }\n\n this._codecParser[logWarning](\n `Unable to sync FLAC frame after searching ${nextHeaderOffset} bytes.`,\n );\n this._codecParser[incrementRawData](nextHeaderOffset);\n } else {\n // not synced, increment data to continue syncing\n this._codecParser[incrementRawData](\n yield* this._getNextFrameSyncOffset(1),\n );\n }\n } while (true);\n }\n\n [parseOggPage](oggPage) {\n if (oggPage[pageSequenceNumber] === 0) {\n // Identification header\n\n this._headerCache[enable]();\n this._streamInfo = oggPage[data][subarray](13);\n } else if (oggPage[pageSequenceNumber] === 1) {\n // Vorbis comments\n } else {\n oggPage[codecFrames] = frameStore\n .get(oggPage)\n [segments].map((segment) => {\n const header = FLACHeader[getHeaderFromUint8Array](\n segment,\n this._headerCache,\n );\n\n if (header) {\n return new FLACFrame(segment, header, this._streamInfo);\n } else {\n this._codecParser[logWarning](\n \"Failed to parse Ogg FLAC frame\",\n \"Skipping invalid FLAC frame\",\n );\n }\n })\n .filter((frame) => !!frame);\n }\n\n return oggPage;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://xiph.org/ogg/doc/framing.html\n\nAAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA BBBBBBBB 00000CDE\n\n(LSB) (MSB)\nFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF\nGGGGGGGG GGGGGGGG GGGGGGGG GGGGGGGG\nHHHHHHHH HHHHHHHH HHHHHHHH HHHHHHHH\nIIIIIIII IIIIIIII IIIIIIII IIIIIIII\n\nJJJJJJJJ\nLLLLLLLL...\n\nOgg Page Header\nLetter Length (bits) Description\nA 32 0x4f676753, \"OggS\"\nB 8 stream_structure_version\nC 1 (0 no, 1 yes) last page of logical bitstream (eos)\nD 1 (0 no, 1 yes) first page of logical bitstream (bos)\nE 1 (0 no, 1 yes) continued packet\n\nF 64 absolute granule position\nG 32 stream serial number\nH 32 page sequence no\nI 32 page checksum\nJ 8 Number of page segments in the segment table\nL n Segment table (n=page_segments+26).\n Segment table values sum to the total length of the packet.\n Last value is always < 0xFF. Last lacing value will be 0x00 if evenly divisible by 0xFF.\n \n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport {\n absoluteGranulePosition,\n isContinuedPacket,\n isFirstPage,\n isLastPage,\n pageSequenceNumber,\n streamSerialNumber,\n length,\n pageChecksum,\n frameLength,\n streamStructureVersion,\n pageSegmentTable,\n pageSegmentBytes,\n buffer,\n subarray,\n readRawData,\n getHeader,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { readInt64le } from \"../../utilities.js\";\n\nexport default class OggPageHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // Must be at least 28 bytes.\n let data = yield* codecParser[readRawData](28, readOffset);\n\n // Bytes (1-4 of 28)\n // Frame sync (must equal OggS): `AAAAAAAA|AAAAAAAA|AAAAAAAA|AAAAAAAA`:\n if (\n data[0] !== 0x4f || // O\n data[1] !== 0x67 || // g\n data[2] !== 0x67 || // g\n data[3] !== 0x53 // S\n ) {\n return null;\n }\n\n // Byte (5 of 28)\n // * `BBBBBBBB`: stream_structure_version\n header[streamStructureVersion] = data[4];\n\n // Byte (6 of 28)\n // * `00000CDE`\n // * `00000...`: All zeros\n // * `.....C..`: (0 no, 1 yes) last page of logical bitstream (eos)\n // * `......D.`: (0 no, 1 yes) first page of logical bitstream (bos)\n // * `.......E`: (0 no, 1 yes) continued packet\n const zeros = data[5] & 0b11111000;\n if (zeros) return null;\n\n header[isLastPage] = !!(data[5] & 0b00000100);\n header[isFirstPage] = !!(data[5] & 0b00000010);\n header[isContinuedPacket] = !!(data[5] & 0b00000001);\n\n const view = new dataView(uint8Array.from(data[subarray](0, 28))[buffer]);\n\n // Byte (7-14 of 28)\n // * `FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF`\n // * Absolute Granule Position\n header[absoluteGranulePosition] = readInt64le(view, 6);\n\n // Byte (15-18 of 28)\n // * `GGGGGGGG|GGGGGGGG|GGGGGGGG|GGGGGGGG`\n // * Stream Serial Number\n header[streamSerialNumber] = view.getInt32(14, true);\n\n // Byte (19-22 of 28)\n // * `HHHHHHHH|HHHHHHHH|HHHHHHHH|HHHHHHHH`\n // * Page Sequence Number\n header[pageSequenceNumber] = view.getInt32(18, true);\n\n // Byte (23-26 of 28)\n // * `IIIIIIII|IIIIIIII|IIIIIIII|IIIIIIII`\n // * Page Checksum\n header[pageChecksum] = view.getInt32(22, true);\n\n // Byte (27 of 28)\n // * `JJJJJJJJ`: Number of page segments in the segment table\n const pageSegmentTableLength = data[26];\n header[length] = pageSegmentTableLength + 27;\n\n data = yield* codecParser[readRawData](header[length], readOffset); // read in the page segment table\n\n header[frameLength] = 0;\n header[pageSegmentTable] = [];\n header[pageSegmentBytes] = uint8Array.from(\n data[subarray](27, header[length]),\n );\n\n for (let i = 0, segmentLength = 0; i < pageSegmentTableLength; i++) {\n const segmentByte = header[pageSegmentBytes][i];\n\n header[frameLength] += segmentByte;\n segmentLength += segmentByte;\n\n if (segmentByte !== 0xff || i === pageSegmentTableLength - 1) {\n header[pageSegmentTable].push(segmentLength);\n segmentLength = 0;\n }\n }\n\n return new OggPageHeader(header);\n }\n\n /**\n * @private\n * Call OggPageHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n headerStore.set(this, header);\n\n this[absoluteGranulePosition] = header[absoluteGranulePosition];\n this[isContinuedPacket] = header[isContinuedPacket];\n this[isFirstPage] = header[isFirstPage];\n this[isLastPage] = header[isLastPage];\n this[pageSegmentTable] = header[pageSegmentTable];\n this[pageSequenceNumber] = header[pageSequenceNumber];\n this[pageChecksum] = header[pageChecksum];\n this[streamSerialNumber] = header[streamSerialNumber];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore, frameStore } from \"../../globals.js\";\nimport {\n codecFrames,\n rawData,\n absoluteGranulePosition,\n crc32,\n duration,\n isContinuedPacket,\n isFirstPage,\n isLastPage,\n pageSequenceNumber,\n samples,\n streamSerialNumber,\n length,\n pageChecksum,\n frameLength,\n subarray,\n readRawData,\n getFrame,\n getHeader,\n} from \"../../constants.js\";\n\nimport Frame from \"../Frame.js\";\nimport OggPageHeader from \"./OggPageHeader.js\";\n\nexport default class OggPage extends Frame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n const header = yield* OggPageHeader[getHeader](\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (header) {\n const frameLengthValue = headerStore.get(header)[frameLength];\n const headerLength = headerStore.get(header)[length];\n const totalLength = headerLength + frameLengthValue;\n\n const rawDataValue = (yield* codecParser[readRawData](totalLength, 0))[\n subarray\n ](0, totalLength);\n\n const frame = rawDataValue[subarray](headerLength, totalLength);\n\n return new OggPage(header, frame, rawDataValue);\n } else {\n return null;\n }\n }\n\n constructor(header, frame, rawDataValue) {\n super(header, frame);\n\n frameStore.get(this)[length] = rawDataValue[length];\n\n this[codecFrames] = [];\n this[rawData] = rawDataValue;\n this[absoluteGranulePosition] = header[absoluteGranulePosition];\n this[crc32] = header[pageChecksum];\n this[duration] = 0;\n this[isContinuedPacket] = header[isContinuedPacket];\n this[isFirstPage] = header[isFirstPage];\n this[isLastPage] = header[isLastPage];\n this[pageSequenceNumber] = header[pageSequenceNumber];\n this[samples] = 0;\n this[streamSerialNumber] = header[streamSerialNumber];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class OpusFrame extends CodecFrame {\n constructor(data, header, samples) {\n super(header, data, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://tools.ietf.org/html/rfc7845.html\n 0 1 2 3\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| 'O' | 'p' | 'u' | 's' |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| 'H' | 'e' | 'a' | 'd' |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Version = 1 | Channel Count | Pre-skip |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Input Sample Rate (Hz) |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Output Gain (Q7.8 in dB) | Mapping Family| |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :\n| |\n: Optional Channel Mapping Table... :\n| |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\nLetter Length (bits) Description\nA 64 Magic Signature - OpusHead\nB 8 Version number - 00000001\nC 8 Output channel count (unsigned)\nD 16 Pre-skip (unsigned, little endian)\nE 32 Sample rate (unsigned, little endian)\nF 16 Output Gain (signed, little endian)\nG 8 Channel Mapping family (unsigned)\n\n// if(channel mapping !== 0)\nH 8 Stream count (unsigned)\nI 8 Coupled Stream Count (unsigned)\nJ 8*C Channel Mapping\n*/\n\nimport {\n rate48000,\n vorbisOpusChannelMapping,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n bandwidth,\n channelMappingFamily,\n channelMappingTable,\n coupledStreamCount,\n frameCount,\n frameSize,\n hasOpusPadding,\n inputSampleRate,\n isVbr,\n mode,\n outputGain,\n preSkip,\n streamCount,\n data,\n buffer,\n subarray,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\n/* prettier-ignore */\nconst channelMappingFamilies = {\n 0b00000000: vorbisOpusChannelMapping.slice(0,2),\n /*\n 0: \"monophonic (mono)\"\n 1: \"stereo (left, right)\"\n */\n 0b00000001: vorbisOpusChannelMapping\n /*\n 0: \"monophonic (mono)\"\n 1: \"stereo (left, right)\"\n 2: \"linear surround (left, center, right)\"\n 3: \"quadraphonic (front left, front right, rear left, rear right)\"\n 4: \"5.0 surround (front left, front center, front right, rear left, rear right)\"\n 5: \"5.1 surround (front left, front center, front right, rear left, rear right, LFE)\"\n 6: \"6.1 surround (front left, front center, front right, side left, side right, rear center, LFE)\"\n 7: \"7.1 surround (front left, front center, front right, side left, side right, rear left, rear right, LFE)\"\n */\n // additional channel mappings are user defined\n};\n\nconst silkOnly = \"SILK-only\";\nconst celtOnly = \"CELT-only\";\nconst hybrid = \"Hybrid\";\n\nconst narrowBand = \"narrowband\";\nconst mediumBand = \"medium-band\";\nconst wideBand = \"wideband\";\nconst superWideBand = \"super-wideband\";\nconst fullBand = \"fullband\";\n\n// 0 1 2 3 4 5 6 7\n// +-+-+-+-+-+-+-+-+\n// | config |s| c |\n// +-+-+-+-+-+-+-+-+\n// prettier-ignore\nconst configTable = {\n 0b00000000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 10 },\n 0b00001000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 20 },\n 0b00010000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 40 },\n 0b00011000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 60 },\n 0b00100000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 10 },\n 0b00101000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 20 },\n 0b00110000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 40 },\n 0b00111000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 60 },\n 0b01000000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 10 },\n 0b01001000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 20 },\n 0b01010000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 40 },\n 0b01011000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 60 },\n 0b01100000: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 10 },\n 0b01101000: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 20 },\n 0b01110000: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 10 },\n 0b01111000: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 20 },\n 0b10000000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 2.5 },\n 0b10001000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 5 },\n 0b10010000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 10 },\n 0b10011000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 20 },\n 0b10100000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 2.5 },\n 0b10101000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 5 },\n 0b10110000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 10 },\n 0b10111000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 20 },\n 0b11000000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 2.5 },\n 0b11001000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 5 },\n 0b11010000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 10 },\n 0b11011000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 20 },\n 0b11100000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 2.5 },\n 0b11101000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 5 },\n 0b11110000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 10 },\n 0b11111000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 20 },\n};\n\nexport default class OpusHeader extends CodecHeader {\n static [getHeaderFromUint8Array](dataValue, packetData, headerCache) {\n const header = {};\n\n // get length of header\n // Byte (10 of 19)\n // * `CCCCCCCC`: Channel Count\n header[channels] = dataValue[9];\n // Byte (19 of 19)\n // * `GGGGGGGG`: Channel Mapping Family\n header[channelMappingFamily] = dataValue[18];\n\n header[length] =\n header[channelMappingFamily] !== 0 ? 21 + header[channels] : 19;\n\n if (dataValue[length] < header[length])\n throw new Error(\"Out of data while inside an Ogg Page\");\n\n // Page Segment Bytes (1-2)\n // * `AAAAA...`: Packet config\n // * `.....B..`:\n // * `......CC`: Packet code\n const packetMode = packetData[0] & 0b00000011;\n const packetLength = packetMode === 3 ? 2 : 1;\n\n // Check header cache\n const key =\n bytesToString(dataValue[subarray](0, header[length])) +\n bytesToString(packetData[subarray](0, packetLength));\n const cachedHeader = headerCache[getHeader](key);\n\n if (cachedHeader) return new OpusHeader(cachedHeader);\n\n // Bytes (1-8 of 19): OpusHead - Magic Signature\n if (key.substr(0, 8) !== \"OpusHead\") {\n return null;\n }\n\n // Byte (9 of 19)\n // * `00000001`: Version number\n if (dataValue[8] !== 1) return null;\n\n header[data] = uint8Array.from(dataValue[subarray](0, header[length]));\n\n const view = new dataView(header[data][buffer]);\n\n header[bitDepth] = 16;\n\n // Byte (10 of 19)\n // * `CCCCCCCC`: Channel Count\n // set earlier to determine length\n\n // Byte (11-12 of 19)\n // * `DDDDDDDD|DDDDDDDD`: Pre skip\n header[preSkip] = view.getUint16(10, true);\n\n // Byte (13-16 of 19)\n // * `EEEEEEEE|EEEEEEEE|EEEEEEEE|EEEEEEEE`: Sample Rate\n header[inputSampleRate] = view.getUint32(12, true);\n // Opus is always decoded at 48kHz\n header[sampleRate] = rate48000;\n\n // Byte (17-18 of 19)\n // * `FFFFFFFF|FFFFFFFF`: Output Gain\n header[outputGain] = view.getInt16(16, true);\n\n // Byte (19 of 19)\n // * `GGGGGGGG`: Channel Mapping Family\n // set earlier to determine length\n if (header[channelMappingFamily] in channelMappingFamilies) {\n header[channelMode] =\n channelMappingFamilies[header[channelMappingFamily]][\n header[channels] - 1\n ];\n if (!header[channelMode]) return null;\n }\n\n if (header[channelMappingFamily] !== 0) {\n // * `HHHHHHHH`: Stream count\n header[streamCount] = dataValue[19];\n\n // * `IIIIIIII`: Coupled Stream count\n header[coupledStreamCount] = dataValue[20];\n\n // * `JJJJJJJJ|...` Channel Mapping table\n header[channelMappingTable] = [\n ...dataValue[subarray](21, header[channels] + 21),\n ];\n }\n\n const packetConfig = configTable[0b11111000 & packetData[0]];\n header[mode] = packetConfig[mode];\n header[bandwidth] = packetConfig[bandwidth];\n header[frameSize] = packetConfig[frameSize];\n\n // https://tools.ietf.org/html/rfc6716#appendix-B\n switch (packetMode) {\n case 0:\n // 0: 1 frame in the packet\n header[frameCount] = 1;\n break;\n case 1:\n // 1: 2 frames in the packet, each with equal compressed size\n case 2:\n // 2: 2 frames in the packet, with different compressed sizes\n header[frameCount] = 2;\n break;\n case 3:\n // 3: an arbitrary number of frames in the packet\n header[isVbr] = !!(0b10000000 & packetData[1]);\n header[hasOpusPadding] = !!(0b01000000 & packetData[1]);\n header[frameCount] = 0b00111111 & packetData[1];\n break;\n default:\n return null;\n }\n\n // set header cache\n {\n const {\n length,\n data: headerData,\n channelMappingFamily,\n ...codecUpdateFields\n } = header;\n\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n\n return new OpusHeader(header);\n }\n\n /**\n * @private\n * Call OpusHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[data] = header[data];\n this[bandwidth] = header[bandwidth];\n this[channelMappingFamily] = header[channelMappingFamily];\n this[channelMappingTable] = header[channelMappingTable];\n this[coupledStreamCount] = header[coupledStreamCount];\n this[frameCount] = header[frameCount];\n this[frameSize] = header[frameSize];\n this[hasOpusPadding] = header[hasOpusPadding];\n this[inputSampleRate] = header[inputSampleRate];\n this[isVbr] = header[isVbr];\n this[mode] = header[mode];\n this[outputGain] = header[outputGain];\n this[preSkip] = header[preSkip];\n this[streamCount] = header[streamCount];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../../globals.js\";\nimport {\n codecFrames,\n data,\n pageSequenceNumber,\n codec,\n segments,\n logError,\n parseOggPage,\n enable,\n getHeaderFromUint8Array,\n preSkip,\n frameSize,\n frameCount,\n sampleRate,\n} from \"../../constants.js\";\nimport Parser from \"../Parser.js\";\nimport OpusFrame from \"./OpusFrame.js\";\nimport OpusHeader from \"./OpusHeader.js\";\n\nexport default class OpusParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = OpusFrame;\n this.Header = OpusHeader;\n\n onCodec(this[codec]);\n this._identificationHeader = null;\n this._preSkipRemaining = null;\n }\n\n get [codec]() {\n return \"opus\";\n }\n\n /**\n * @todo implement continued page support\n */\n [parseOggPage](oggPage) {\n if (oggPage[pageSequenceNumber] === 0) {\n // Identification header\n\n this._headerCache[enable]();\n this._identificationHeader = oggPage[data];\n } else if (oggPage[pageSequenceNumber] === 1) {\n // OpusTags\n } else {\n oggPage[codecFrames] = frameStore\n .get(oggPage)\n [segments].map((segment) => {\n const header = OpusHeader[getHeaderFromUint8Array](\n this._identificationHeader,\n segment,\n this._headerCache,\n );\n\n if (header) {\n if (this._preSkipRemaining === null)\n this._preSkipRemaining = header[preSkip];\n\n let samples =\n ((header[frameSize] * header[frameCount]) / 1000) *\n header[sampleRate];\n\n if (this._preSkipRemaining > 0) {\n this._preSkipRemaining -= samples;\n samples =\n this._preSkipRemaining < 0 ? -this._preSkipRemaining : 0;\n }\n\n return new OpusFrame(segment, header, samples);\n }\n\n this._codecParser[logError](\n \"Failed to parse Ogg Opus Header\",\n \"Not a valid Ogg Opus file\",\n );\n });\n }\n\n return oggPage;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class VorbisFrame extends CodecFrame {\n constructor(data, header, samples) {\n super(header, data, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\n\n1 1) [packet_type] : 8 bit value\n2 2) 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73: the characters ’v’,’o’,’r’,’b’,’i’,’s’ as six octets\n\nLetter bits Description\nA 8 Packet type\nB 48 Magic signature (vorbis)\nC 32 Version number\nD 8 Channels\nE 32 Sample rate\nF 32 Bitrate Maximum (signed)\nG 32 Bitrate Nominal (signed)\nH 32 Bitrate Minimum (signed)\nI 4 blocksize 1\nJ 4 blocksize 0\nK 1 Framing flag\n*/\n\nimport {\n vorbisOpusChannelMapping,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n bitrateMaximum,\n bitrateMinimum,\n bitrateNominal,\n blocksize0,\n blocksize1,\n data,\n vorbisComments,\n vorbisSetup,\n version,\n buffer,\n subarray,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst blockSizes = {\n // 0b0110: 64,\n // 0b0111: 128,\n // 0b1000: 256,\n // 0b1001: 512,\n // 0b1010: 1024,\n // 0b1011: 2048,\n // 0b1100: 4096,\n // 0b1101: 8192\n};\nfor (let i = 0; i < 8; i++) blockSizes[i + 6] = 2 ** (6 + i);\n\nexport default class VorbisHeader extends CodecHeader {\n static [getHeaderFromUint8Array](\n dataValue,\n headerCache,\n vorbisCommentsData,\n vorbisSetupData,\n ) {\n // Must be at least 30 bytes.\n if (dataValue[length] < 30)\n throw new Error(\"Out of data while inside an Ogg Page\");\n\n // Check header cache\n const key = bytesToString(dataValue[subarray](0, 30));\n const cachedHeader = headerCache[getHeader](key);\n if (cachedHeader) return new VorbisHeader(cachedHeader);\n\n const header = { [length]: 30 };\n\n // Bytes (1-7 of 30): /01vorbis - Magic Signature\n if (key.substr(0, 7) !== \"\\x01vorbis\") {\n return null;\n }\n\n header[data] = uint8Array.from(dataValue[subarray](0, 30));\n const view = new dataView(header[data][buffer]);\n\n // Byte (8-11 of 30)\n // * `CCCCCCCC|CCCCCCCC|CCCCCCCC|CCCCCCCC`: Version number\n header[version] = view.getUint32(7, true);\n if (header[version] !== 0) return null;\n\n // Byte (12 of 30)\n // * `DDDDDDDD`: Channel Count\n header[channels] = dataValue[11];\n header[channelMode] =\n vorbisOpusChannelMapping[header[channels] - 1] || \"application defined\";\n\n // Byte (13-16 of 30)\n // * `EEEEEEEE|EEEEEEEE|EEEEEEEE|EEEEEEEE`: Sample Rate\n header[sampleRate] = view.getUint32(12, true);\n\n // Byte (17-20 of 30)\n // * `FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF`: Bitrate Maximum\n header[bitrateMaximum] = view.getInt32(16, true);\n\n // Byte (21-24 of 30)\n // * `GGGGGGGG|GGGGGGGG|GGGGGGGG|GGGGGGGG`: Bitrate Nominal\n header[bitrateNominal] = view.getInt32(20, true);\n\n // Byte (25-28 of 30)\n // * `HHHHHHHH|HHHHHHHH|HHHHHHHH|HHHHHHHH`: Bitrate Minimum\n header[bitrateMinimum] = view.getInt32(24, true);\n\n // Byte (29 of 30)\n // * `IIII....` Blocksize 1\n // * `....JJJJ` Blocksize 0\n header[blocksize1] = blockSizes[(dataValue[28] & 0b11110000) >> 4];\n header[blocksize0] = blockSizes[dataValue[28] & 0b00001111];\n if (header[blocksize0] > header[blocksize1]) return null;\n\n // Byte (29 of 30)\n // * `00000001` Framing bit\n if (dataValue[29] !== 0x01) return null;\n\n header[bitDepth] = 32;\n header[vorbisSetup] = vorbisSetupData;\n header[vorbisComments] = vorbisCommentsData;\n\n {\n // set header cache\n const {\n length,\n data,\n version,\n vorbisSetup,\n vorbisComments,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n\n return new VorbisHeader(header);\n }\n\n /**\n * @private\n * Call VorbisHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[bitrateMaximum] = header[bitrateMaximum];\n this[bitrateMinimum] = header[bitrateMinimum];\n this[bitrateNominal] = header[bitrateNominal];\n this[blocksize0] = header[blocksize0];\n this[blocksize1] = header[blocksize1];\n this[data] = header[data];\n this[vorbisComments] = header[vorbisComments];\n this[vorbisSetup] = header[vorbisSetup];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../../globals.js\";\nimport { BitReader, reverse } from \"../../utilities.js\";\nimport {\n data,\n codec,\n blocksize0,\n blocksize1,\n codecFrames,\n segments,\n vorbis,\n logWarning,\n parseOggPage,\n enable,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport VorbisFrame from \"./VorbisFrame.js\";\nimport VorbisHeader from \"./VorbisHeader.js\";\n\nexport default class VorbisParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = VorbisFrame;\n\n onCodec(this[codec]);\n\n this._identificationHeader = null;\n this._setupComplete = false;\n\n this._prevBlockSize = null;\n }\n\n get [codec]() {\n return vorbis;\n }\n\n [parseOggPage](oggPage) {\n oggPage[codecFrames] = [];\n\n for (const oggPageSegment of frameStore.get(oggPage)[segments]) {\n if (oggPageSegment[0] === 1) {\n // Identification header\n\n this._headerCache[enable]();\n this._identificationHeader = oggPage[data];\n this._setupComplete = false;\n } else if (oggPageSegment[0] === 3) {\n // comment header\n\n this._vorbisComments = oggPageSegment;\n } else if (oggPageSegment[0] === 5) {\n // setup header\n\n this._vorbisSetup = oggPageSegment;\n this._mode = this._parseSetupHeader(oggPageSegment);\n this._setupComplete = true;\n } else if (this._setupComplete) {\n const header = VorbisHeader[getHeaderFromUint8Array](\n this._identificationHeader,\n this._headerCache,\n this._vorbisComments,\n this._vorbisSetup,\n );\n\n if (header) {\n oggPage[codecFrames].push(\n new VorbisFrame(\n oggPageSegment,\n header,\n this._getSamples(oggPageSegment, header),\n ),\n );\n } else {\n this._codecParser[logError](\n \"Failed to parse Ogg Vorbis Header\",\n \"Not a valid Ogg Vorbis file\",\n );\n }\n }\n }\n\n return oggPage;\n }\n\n _getSamples(segment, header) {\n const blockFlag =\n this._mode.blockFlags[(segment[0] >> 1) & this._mode.mask];\n\n const currentBlockSize = blockFlag\n ? header[blocksize1]\n : header[blocksize0];\n\n // data is not returned on the first frame, but is used to prime the decoder\n // https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-590004\n const samplesValue =\n this._prevBlockSize === null\n ? 0\n : (this._prevBlockSize + currentBlockSize) / 4;\n\n this._prevBlockSize = currentBlockSize;\n\n return samplesValue;\n }\n\n // https://gitlab.xiph.org/xiph/liboggz/-/blob/master/src/liboggz/oggz_auto.c#L911\n // https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/vorbis_parser.c\n /*\n * This is the format of the mode data at the end of the packet for all\n * Vorbis Version 1 :\n *\n * [ 6:number_of_modes ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:framing(1) ]\n *\n * e.g.:\n *\n * MsB LsB\n * <-\n * 0 0 0 0 0 1 0 0\n * 0 0 1 0 0 0 0 0\n * 0 0 1 0 0 0 0 0\n * 0 0 1|0 0 0 0 0\n * 0 0 0 0|0|0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0 0 0|0 0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0 0 0|0 0 0 0\n * 0 0 0|1|0 0 0 0 |\n * 0 0 0 0 0 0 0 0 V\n * 0 0 0|0 0 0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0|1 0 0 0 0 0\n *\n * The simplest way to approach this is to start at the end\n * and read backwards to determine the mode configuration.\n *\n * liboggz and ffmpeg both use this method.\n */\n _parseSetupHeader(setup) {\n const bitReader = new BitReader(setup);\n const mode = {\n count: 0,\n blockFlags: [],\n };\n\n // sync with the framing bit\n while ((bitReader.read(1) & 0x01) !== 1) {}\n\n let modeBits;\n // search in reverse to parse out the mode entries\n // limit mode count to 63 so previous block flag will be in first packet byte\n while (mode.count < 64 && bitReader.position > 0) {\n reverse(bitReader.read(8)); // read mapping\n\n // 16 bits transform type, 16 bits window type, all values must be zero\n let currentByte = 0;\n while (bitReader.read(8) === 0x00 && currentByte++ < 3) {} // a non-zero value may indicate the end of the mode entries, or invalid data\n\n if (currentByte === 4) {\n // transform type and window type were all zeros\n modeBits = bitReader.read(7); // modeBits may need to be used in the next iteration if this is the last mode entry\n mode.blockFlags.unshift(modeBits & 0x01); // read and store mode number -> block flag\n bitReader.position += 6; // go back 6 bits so next iteration starts right after the block flag\n mode.count++;\n } else {\n // transform type and window type were not all zeros\n // check for mode count using previous iteration modeBits\n if (((reverse(modeBits) & 0b01111110) >> 1) + 1 !== mode.count) {\n this._codecParser[logWarning](\n \"vorbis derived mode count did not match actual mode count\",\n );\n }\n\n break;\n }\n }\n\n // xxxxxxxa packet type\n // xxxxxxbx mode count (number of mode count bits)\n // xxxxxcxx previous window flag\n // xxxxdxxx next window flag\n mode.mask = (1 << Math.log2(mode.count)) - 1;\n\n return mode;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore, frameStore } from \"../../globals.js\";\nimport { bytesToString, concatBuffers } from \"../../utilities.js\";\nimport {\n header,\n pageSequenceNumber,\n pageSegmentBytes,\n pageSegmentTable,\n codec,\n data,\n length,\n samples,\n segments,\n subarray,\n vorbis,\n mapFrameStats,\n logWarning,\n fixedLengthFrameSync,\n parseFrame,\n parseOggPage,\n reset,\n uint8Array,\n isLastPage,\n streamSerialNumber,\n absoluteGranulePosition,\n} from \"../../constants.js\";\n\nimport Parser from \"../../codecs/Parser.js\";\nimport OggPage from \"./OggPage.js\";\nimport OggPageHeader from \"./OggPageHeader.js\";\n\nimport FLACParser from \"../../codecs/flac/FLACParser.js\";\nimport OpusParser from \"../../codecs/opus/OpusParser.js\";\nimport VorbisParser from \"../../codecs/vorbis/VorbisParser.js\";\n\nclass OggStream {\n constructor(codecParser, headerCache, onCodec) {\n this._codecParser = codecParser;\n this._headerCache = headerCache;\n this._onCodec = onCodec;\n\n this._continuedPacket = new uint8Array();\n this._codec = null;\n this._isSupported = null;\n this._previousAbsoluteGranulePosition = null;\n }\n\n get [codec]() {\n return this._codec || \"\";\n }\n\n _updateCodec(codec, Parser) {\n if (this._codec !== codec) {\n this._headerCache[reset]();\n this._parser = new Parser(\n this._codecParser,\n this._headerCache,\n this._onCodec,\n );\n this._codec = codec;\n }\n }\n\n _checkCodecSupport({ data }) {\n const idString = bytesToString(data[subarray](0, 8));\n\n switch (idString) {\n case \"fishead\\0\":\n return false; // ignore ogg skeleton packets\n case \"OpusHead\":\n this._updateCodec(\"opus\", OpusParser);\n return true;\n case /^\\x7fFLAC/.test(idString) && idString:\n this._updateCodec(\"flac\", FLACParser);\n return true;\n case /^\\x01vorbis/.test(idString) && idString:\n this._updateCodec(vorbis, VorbisParser);\n return true;\n default:\n return false;\n }\n }\n\n _checkPageSequenceNumber(oggPage) {\n if (\n oggPage[pageSequenceNumber] !== this._pageSequenceNumber + 1 &&\n this._pageSequenceNumber > 1 &&\n oggPage[pageSequenceNumber] > 1\n ) {\n this._codecParser[logWarning](\n \"Unexpected gap in Ogg Page Sequence Number.\",\n `Expected: ${this._pageSequenceNumber + 1}, Got: ${\n oggPage[pageSequenceNumber]\n }`,\n );\n }\n\n this._pageSequenceNumber = oggPage[pageSequenceNumber];\n }\n\n _parsePage(oggPage) {\n if (this._isSupported === null) {\n this._pageSequenceNumber = oggPage[pageSequenceNumber];\n this._isSupported = this._checkCodecSupport(oggPage);\n }\n\n this._checkPageSequenceNumber(oggPage);\n\n const oggPageStore = frameStore.get(oggPage);\n const headerData = headerStore.get(oggPageStore[header]);\n\n let offset = 0;\n oggPageStore[segments] = headerData[pageSegmentTable].map((segmentLength) =>\n oggPage[data][subarray](offset, (offset += segmentLength)),\n );\n\n // prepend any existing continued packet data\n if (this._continuedPacket[length]) {\n oggPageStore[segments][0] = concatBuffers(\n this._continuedPacket,\n oggPageStore[segments][0],\n );\n\n this._continuedPacket = new uint8Array();\n }\n\n // save any new continued packet data\n if (\n headerData[pageSegmentBytes][headerData[pageSegmentBytes][length] - 1] ===\n 0xff\n ) {\n this._continuedPacket = concatBuffers(\n this._continuedPacket,\n oggPageStore[segments].pop(),\n );\n }\n\n // set total samples in this ogg page\n if (this._previousAbsoluteGranulePosition !== null) {\n oggPage[samples] = Number(\n oggPage[absoluteGranulePosition] -\n this._previousAbsoluteGranulePosition,\n );\n }\n\n this._previousAbsoluteGranulePosition = oggPage[absoluteGranulePosition];\n\n if (this._isSupported) {\n const frame = this._parser[parseOggPage](oggPage);\n this._codecParser[mapFrameStats](frame);\n\n return frame;\n } else {\n return oggPage;\n }\n }\n}\n\nexport default class OggParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n\n this._onCodec = onCodec;\n this.Frame = OggPage;\n this.Header = OggPageHeader;\n\n this._streams = new Map();\n this._currentSerialNumber = null;\n }\n\n get [codec]() {\n const oggStream = this._streams.get(this._currentSerialNumber);\n\n return oggStream ? oggStream.codec : \"\";\n }\n\n *[parseFrame]() {\n const oggPage = yield* this[fixedLengthFrameSync](true);\n this._currentSerialNumber = oggPage[streamSerialNumber];\n\n let oggStream = this._streams.get(this._currentSerialNumber);\n if (!oggStream) {\n oggStream = new OggStream(\n this._codecParser,\n this._headerCache,\n this._onCodec,\n );\n this._streams.set(this._currentSerialNumber, oggStream);\n }\n\n if (oggPage[isLastPage]) this._streams.delete(this._currentSerialNumber);\n\n return oggStream._parsePage(oggPage);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { crc32Function, concatBuffers } from \"./utilities.js\";\nimport {\n header,\n sampleRate,\n bitrate,\n length,\n frameNumber,\n data,\n samples,\n codec,\n codecFrames,\n totalBytesOut,\n totalSamples,\n totalDuration,\n crc32,\n duration,\n subarray,\n readRawData,\n incrementRawData,\n mapCodecFrameStats,\n mapFrameStats,\n logWarning,\n logError,\n parseFrame,\n checkCodecUpdate,\n reset,\n isLastPage,\n} from \"./constants.js\";\nimport HeaderCache from \"./codecs/HeaderCache.js\";\nimport MPEGParser from \"./codecs/mpeg/MPEGParser.js\";\nimport AACParser from \"./codecs/aac/AACParser.js\";\nimport FLACParser from \"./codecs/flac/FLACParser.js\";\nimport OggParser from \"./containers/ogg/OggParser.js\";\n\nconst noOp = () => {};\n\nexport default class CodecParser {\n constructor(\n mimeType,\n {\n onCodec,\n onCodecHeader,\n onCodecUpdate,\n enableLogging = false,\n enableFrameCRC32 = true,\n } = {},\n ) {\n this._inputMimeType = mimeType;\n this._onCodec = onCodec || noOp;\n this._onCodecHeader = onCodecHeader || noOp;\n this._onCodecUpdate = onCodecUpdate;\n this._enableLogging = enableLogging;\n this._crc32 = enableFrameCRC32 ? crc32Function : noOp;\n\n this[reset]();\n }\n\n /**\n * @public\n * @returns The detected codec\n */\n get [codec]() {\n return this._parser ? this._parser[codec] : \"\";\n }\n\n [reset]() {\n this._headerCache = new HeaderCache(\n this._onCodecHeader,\n this._onCodecUpdate,\n );\n\n this._generator = this._getGenerator();\n this._generator.next();\n }\n\n /**\n * @public\n * @description Generator function that yields any buffered CodecFrames and resets the CodecParser\n * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.\n * @yields {CodecFrame|OggPage} Parsed codec or ogg page data\n */\n *flush() {\n this._flushing = true;\n\n for (let i = this._generator.next(); i.value; i = this._generator.next()) {\n yield i.value;\n }\n\n this._flushing = false;\n\n this[reset]();\n }\n\n /**\n * @public\n * @description Generator function takes in a Uint8Array of data and returns a CodecFrame from the data for each iteration\n * @param {Uint8Array} chunk Next chunk of codec data to read\n * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.\n * @yields {CodecFrame|OggPage} Parsed codec or ogg page data\n */\n *parseChunk(chunk) {\n for (\n let i = this._generator.next(chunk);\n i.value;\n i = this._generator.next()\n ) {\n yield i.value;\n }\n }\n\n /**\n * @public\n * @description Parses an entire file and returns all of the contained frames.\n * @param {Uint8Array} fileData Coded data to read\n * @returns {Array<CodecFrame|OggPage>} CodecFrames\n */\n parseAll(fileData) {\n return [...this.parseChunk(fileData), ...this.flush()];\n }\n\n /**\n * @private\n */\n *_getGenerator() {\n if (this._inputMimeType.match(/aac/)) {\n this._parser = new AACParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/mpeg/)) {\n this._parser = new MPEGParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/flac/)) {\n this._parser = new FLACParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/ogg/)) {\n this._parser = new OggParser(this, this._headerCache, this._onCodec);\n } else {\n throw new Error(`Unsupported Codec ${mimeType}`);\n }\n\n this._frameNumber = 0;\n this._currentReadPosition = 0;\n this._totalBytesIn = 0;\n this._totalBytesOut = 0;\n this._totalSamples = 0;\n this._sampleRate = undefined;\n\n this._rawData = new Uint8Array(0);\n\n // start parsing out frames\n while (true) {\n const frame = yield* this._parser[parseFrame]();\n if (frame) yield frame;\n }\n }\n\n /**\n * @protected\n * @param {number} minSize Minimum bytes to have present in buffer\n * @returns {Uint8Array} rawData\n */\n *[readRawData](minSize = 0, readOffset = 0) {\n let rawData;\n\n while (this._rawData[length] <= minSize + readOffset) {\n rawData = yield;\n\n if (this._flushing) return this._rawData[subarray](readOffset);\n\n if (rawData) {\n this._totalBytesIn += rawData[length];\n this._rawData = concatBuffers(this._rawData, rawData);\n }\n }\n\n return this._rawData[subarray](readOffset);\n }\n\n /**\n * @protected\n * @param {number} increment Bytes to increment codec data\n */\n [incrementRawData](increment) {\n this._currentReadPosition += increment;\n this._rawData = this._rawData[subarray](increment);\n }\n\n /**\n * @protected\n */\n [mapCodecFrameStats](frame) {\n this._sampleRate = frame[header][sampleRate];\n\n frame[header][bitrate] =\n frame[duration] > 0\n ? Math.round(frame[data][length] / frame[duration]) * 8\n : 0;\n frame[frameNumber] = this._frameNumber++;\n frame[totalBytesOut] = this._totalBytesOut;\n frame[totalSamples] = this._totalSamples;\n frame[totalDuration] = (this._totalSamples / this._sampleRate) * 1000;\n frame[crc32] = this._crc32(frame[data]);\n\n this._headerCache[checkCodecUpdate](\n frame[header][bitrate],\n frame[totalDuration],\n );\n\n this._totalBytesOut += frame[data][length];\n this._totalSamples += frame[samples];\n }\n\n /**\n * @protected\n */\n [mapFrameStats](frame) {\n if (frame[codecFrames]) {\n // Ogg container\n if (frame[isLastPage]) {\n // cut any excess samples that fall outside of the absolute granule position\n // some streams put invalid data in absolute granule position, so only do this\n // for the end of the stream\n let absoluteGranulePositionSamples = frame[samples];\n\n frame[codecFrames].forEach((codecFrame) => {\n const untrimmedCodecSamples = codecFrame[samples];\n\n if (absoluteGranulePositionSamples < untrimmedCodecSamples) {\n codecFrame[samples] =\n absoluteGranulePositionSamples > 0\n ? absoluteGranulePositionSamples\n : 0;\n codecFrame[duration] =\n (codecFrame[samples] / codecFrame[header][sampleRate]) * 1000;\n }\n\n absoluteGranulePositionSamples -= untrimmedCodecSamples;\n\n this[mapCodecFrameStats](codecFrame);\n });\n } else {\n frame[samples] = 0;\n frame[codecFrames].forEach((codecFrame) => {\n frame[samples] += codecFrame[samples];\n this[mapCodecFrameStats](codecFrame);\n });\n }\n\n frame[duration] = (frame[samples] / this._sampleRate) * 1000 || 0;\n frame[totalSamples] = this._totalSamples;\n frame[totalDuration] =\n (this._totalSamples / this._sampleRate) * 1000 || 0;\n frame[totalBytesOut] = this._totalBytesOut;\n } else {\n this[mapCodecFrameStats](frame);\n }\n }\n\n /**\n * @private\n */\n _log(logger, messages) {\n if (this._enableLogging) {\n const stats = [\n `${codec}: ${this[codec]}`,\n `inputMimeType: ${this._inputMimeType}`,\n `readPosition: ${this._currentReadPosition}`,\n `totalBytesIn: ${this._totalBytesIn}`,\n `${totalBytesOut}: ${this._totalBytesOut}`,\n ];\n\n const width = Math.max(...stats.map((s) => s[length]));\n\n messages.push(\n `--stats--${\"-\".repeat(width - 9)}`,\n ...stats,\n \"-\".repeat(width),\n );\n\n logger(\n \"codec-parser\",\n messages.reduce((acc, message) => acc + \"\\n \" + message, \"\"),\n );\n }\n }\n\n /**\n * @protected\n */\n [logWarning](...messages) {\n this._log(console.warn, messages);\n }\n\n /**\n * @protected\n */\n [logError](...messages) {\n this._log(console.error, messages);\n }\n}\n","import CodecParser from \"./src/CodecParser.js\";\nimport * as constants from \"./src/constants.js\";\n\nexport default CodecParser;\n\nexport const absoluteGranulePosition = constants.absoluteGranulePosition;\nexport const bandwidth = constants.bandwidth;\nexport const bitDepth = constants.bitDepth;\nexport const bitrate = constants.bitrate;\nexport const bitrateMaximum = constants.bitrateMaximum;\nexport const bitrateMinimum = constants.bitrateMinimum;\nexport const bitrateNominal = constants.bitrateNominal;\nexport const buffer = constants.buffer;\nexport const bufferFullness = constants.bufferFullness;\nexport const codec = constants.codec;\nexport const codecFrames = constants.codecFrames;\nexport const coupledStreamCount = constants.coupledStreamCount;\nexport const crc = constants.crc;\nexport const crc16 = constants.crc16;\nexport const crc32 = constants.crc32;\nexport const data = constants.data;\nexport const description = constants.description;\nexport const duration = constants.duration;\nexport const emphasis = constants.emphasis;\nexport const hasOpusPadding = constants.hasOpusPadding;\nexport const header = constants.header;\nexport const isContinuedPacket = constants.isContinuedPacket;\nexport const isCopyrighted = constants.isCopyrighted;\nexport const isFirstPage = constants.isFirstPage;\nexport const isHome = constants.isHome;\nexport const isLastPage = constants.isLastPage;\nexport const isOriginal = constants.isOriginal;\nexport const isPrivate = constants.isPrivate;\nexport const isVbr = constants.isVbr;\nexport const layer = constants.layer;\nexport const length = constants.length;\nexport const mode = constants.mode;\nexport const modeExtension = constants.modeExtension;\nexport const mpeg = constants.mpeg;\nexport const mpegVersion = constants.mpegVersion;\nexport const numberAACFrames = constants.numberAACFrames;\nexport const outputGain = constants.outputGain;\nexport const preSkip = constants.preSkip;\nexport const profile = constants.profile;\nexport const protection = constants.protection;\nexport const rawData = constants.rawData;\nexport const segments = constants.segments;\nexport const subarray = constants.subarray;\nexport const version = constants.version;\nexport const vorbis = constants.vorbis;\nexport const vorbisComments = constants.vorbisComments;\nexport const vorbisSetup = constants.vorbisSetup;\nexport const blockingStrategy = constants.blockingStrategy;\nexport const blockSize = constants.blockSize;\nexport const blocksize0 = constants.blocksize0;\nexport const blocksize1 = constants.blocksize1;\nexport const channelMappingFamily = constants.channelMappingFamily;\nexport const channelMappingTable = constants.channelMappingTable;\nexport const channelMode = constants.channelMode;\nexport const channels = constants.channels;\nexport const copyrightId = constants.copyrightId;\nexport const copyrightIdStart = constants.copyrightIdStart;\nexport const frame = constants.frame;\nexport const frameCount = constants.frameCount;\nexport const frameLength = constants.frameLength;\nexport const frameNumber = constants.frameNumber;\nexport const framePadding = constants.framePadding;\nexport const frameSize = constants.frameSize;\nexport const inputSampleRate = constants.inputSampleRate;\nexport const pageChecksum = constants.pageChecksum;\nexport const pageSegmentTable = constants.pageSegmentTable;\nexport const pageSequenceNumber = constants.pageSequenceNumber;\nexport const sampleNumber = constants.sampleNumber;\nexport const sampleRate = constants.sampleRate;\nexport const samples = constants.samples;\nexport const streamCount = constants.streamCount;\nexport const streamInfo = constants.streamInfo;\nexport const streamSerialNumber = constants.streamSerialNumber;\nexport const streamStructureVersion = constants.streamStructureVersion;\nexport const totalBytesOut = constants.totalBytesOut;\nexport const totalDuration = constants.totalDuration;\nexport const totalSamples = constants.totalSamples;\n","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\nimport { OpusDecoder, OpusDecoderWebWorker } from \"opus-decoder\";\nimport CodecParser, {\n codecFrames,\n header,\n channels,\n streamCount,\n coupledStreamCount,\n channelMappingTable,\n preSkip,\n isLastPage,\n absoluteGranulePosition,\n data,\n totalSamples,\n} from \"codec-parser\";\n\n// prettier-ignore\nconst 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]))\n\nexport default class OggOpusDecoder {\n constructor(options = {}) {\n this._sampleRate = options.sampleRate || 48000;\n this._speechQualityEnhancement = options.speechQualityEnhancement;\n this._forceStereo =\n options.forceStereo !== undefined ? options.forceStereo : false;\n\n this._onCodec = (codec) => {\n if (codec !== \"opus\")\n throw new Error(\n \"ogg-opus-decoder does not support this codec \" + codec,\n );\n };\n\n // instantiate to create static properties\n new WASMAudioDecoderCommon();\n this._useMLDecoder = [\"lace\", \"nolace\"].includes(\n this._speechQualityEnhancement,\n );\n\n this._decoderLibraryLoaded = this._loadDecoderLibrary();\n this._ready = this._init();\n }\n\n _initDecoderClass() {\n this._decoderClass = this._useMLDecoder\n ? this.OpusMLDecoder\n : this.OpusDecoder;\n }\n\n async _loadDecoderLibrary() {\n if (this._useMLDecoder) {\n const simdSupported = await simd();\n\n if (simdSupported) {\n const { OpusMLDecoder, OpusMLDecoderWebWorker } = await import(\n /* webpackChunkName: \"opus-ml\" */ \"@wasm-audio-decoders/opus-ml\"\n );\n this.OpusMLDecoder = OpusMLDecoder;\n this.OpusMLDecoderWebWorker = OpusMLDecoderWebWorker;\n } else {\n console.warn(\n `ogg-opus-decoder: This platform does not support WebAssembly SIMD; { speechQualityEnhancements: '${this._speechQualityEnhancement}' } has been disabled`,\n );\n this._useMLDecoder = false;\n }\n }\n this.OpusDecoder = OpusDecoder;\n this.OpusDecoderWebWorker = OpusDecoderWebWorker;\n\n this._initDecoderClass();\n }\n\n async _init() {\n if (this._decoder) await this._decoder.free();\n this._decoder = null;\n this._decoderReady = null;\n\n this._codecParser = new CodecParser(\"application/ogg\", {\n onCodec: this._onCodec,\n enableFrameCRC32: false,\n });\n }\n\n async _instantiateDecoder(header) {\n this._totalSamplesDecoded = 0;\n this._preSkip = header[preSkip];\n this._channels = this._forceStereo ? 2 : header[channels];\n\n await this._decoderLibraryLoaded;\n\n this._decoder = new this._decoderClass({\n channels: header[channels],\n streamCount: header[streamCount],\n coupledStreamCount: header[coupledStreamCount],\n channelMappingTable: header[channelMappingTable],\n preSkip: Math.round((this._preSkip / 48000) * this._sampleRate),\n sampleRate: this._sampleRate,\n speechQualityEnhancement: this._speechQualityEnhancement,\n forceStereo: this._forceStereo,\n });\n return this._decoder.ready;\n }\n\n get ready() {\n return this._ready;\n }\n\n async reset() {\n this._ready = this._init();\n await this._ready;\n }\n\n free() {\n if (this._decoder) this._decoder.free();\n }\n\n async _decode(oggPages) {\n let opusFrames = [],\n allErrors = [],\n allChannelData = [],\n samplesThisDecode = 0;\n\n const flushFrames = async () => {\n if (opusFrames.length) {\n await this._decoderReady;\n\n const { channelData, samplesDecoded, errors } =\n await this._decoder.decodeFrames(opusFrames);\n\n allChannelData.push(channelData);\n allErrors.push(...errors);\n samplesThisDecode += samplesDecoded;\n this._totalSamplesDecoded += samplesDecoded;\n\n opusFrames = [];\n }\n };\n\n for (let i = 0; i < oggPages.length; i++) {\n const oggPage = oggPages[i];\n\n // only decode Ogg pages that have codec frames\n const frames = oggPage[codecFrames].map((f) => f[data]);\n if (frames.length) {\n opusFrames.push(...frames);\n\n if (!this._decoderReady)\n // wait until there is an Opus header before instantiating\n this._decoderReady = this._instantiateDecoder(\n oggPage[codecFrames][0][header],\n );\n }\n\n if (oggPage[isLastPage]) {\n // decode anything left in the current ogg file\n await flushFrames();\n\n // in cases where BigInt isn't supported, don't do any absoluteGranulePosition logic (i.e. old iOS versions)\n if (\n oggPage[absoluteGranulePosition] !== undefined &&\n allChannelData.length\n ) {\n const totalDecodedSamples_48000 =\n (this._totalSamplesDecoded / this._sampleRate) * 48000;\n\n // trim any extra samples that are decoded beyond the absoluteGranulePosition, relative to where we started in the stream\n const samplesToTrim = Math.round(\n ((totalDecodedSamples_48000 - oggPage[totalSamples]) / 48000) *\n this._sampleRate,\n );\n\n const channelData = allChannelData[allChannelData.length - 1];\n if (samplesToTrim > 0) {\n for (let i = 0; i < channelData.length; i++) {\n channelData[i] = channelData[i].subarray(\n 0,\n channelData[i].length - samplesToTrim,\n );\n }\n }\n\n samplesThisDecode -= samplesToTrim;\n this._totalSamplesDecoded -= samplesToTrim;\n }\n\n // reached the end of an ogg stream, reset the decoder\n await this.reset();\n }\n }\n\n await flushFrames();\n\n return [\n allErrors,\n allChannelData,\n this._channels,\n samplesThisDecode,\n this._sampleRate,\n 16,\n ];\n }\n\n async decode(oggOpusData) {\n const decoded = await this._decode([\n ...this._codecParser.parseChunk(oggOpusData),\n ]);\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n\n async decodeFile(oggOpusData) {\n const decoded = await this._decode([\n ...this._codecParser.parseAll(oggOpusData),\n ]);\n await this.reset();\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n\n async flush() {\n const decoded = await this._decode([...this._codecParser.flush()]);\n await this.reset();\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n}\n","import OggOpusDecoder from \"./OggOpusDecoder.js\";\n\nexport default class OggOpusDecoderWebWorker extends OggOpusDecoder {\n constructor(options) {\n super(options);\n }\n\n _initDecoderClass() {\n this._decoderClass = this._useMLDecoder\n ? this.OpusMLDecoderWebWorker\n : this.OpusDecoderWebWorker;\n }\n\n async free() {\n if (this._decoder) await this._decoder.free();\n }\n}\n","import OggOpusDecoder from \"./src/OggOpusDecoder.js\";\nimport OggOpusDecoderWebWorker from \"./src/OggOpusDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(OggOpusDecoder, \"OggOpusDecoder\");\nassignNames(OggOpusDecoderWebWorker, \"OggOpusDecoderWebWorker\");\n\nexport { OggOpusDecoder, OggOpusDecoderWebWorker };\n"],"names":["factory","inProgress","dataWebpackPrefix","assignNames","Class","name","Object","defineProperty","value","module","exports","Worker","WASMAudioDecoderWorker","globalThis","getWorker","constructor","options","Decoder","EmscriptenWASM","modules","source","get","isNode","type","webworkerSourceCode","_Decoder","_WASMAudioDecoderCommon","_EmscriptenWASM","decoder","moduleResolve","modulePromise","Promise","resolve","self","onmessage","data","id","command","transferList","messagePromise","messagePayload","defineProperties","WASMAudioDecoderCommon","isWebWorker","free","then","ready","reset","assign","Array","isArray","map","Uint8Array","channelData","channel","buffer","postMessage","process","versions","node","Buffer","from","toString","URL","createObjectURL","Blob","set","super","this","_id","Number","MIN_SAFE_INTEGER","_enqueuedOperations","Map","rest","delete","getModule","postToDecoder","finally","terminate","t","n","e","r","Int32Array","o","s","i","c","length","parseInt","substring","forEach","a","l","f","g","h","p","u","DataView","getInt32","d","charCodeAt","m","subarray","console","error","Error","uint8Array","float32Array","Float32Array","WeakMap","setModule","Ref","wasmString","WebAssembly","compile","wasm","inflateDynEncodeString","concatFloat32","buffers","ret","offset","getDecodedAudio","errors","samplesDecoded","sampleRate","bitDepth","getDecodedAudioMultiChannel","input","channelsDecoded","j","push","puffString","String","raw","instantiate","instanceExports","entries","puff","memory","dataArray","heapView","heapPos","sourceLength","sourceLengthPtr","setInt32","sourcePtr","destLengthPtr","byteLength","slice","enumerable","_wasm","getOutputChannels","outputData","output","allocateTypedArray","len","TypedArray","setPointer","ptr","malloc","BYTES_PER_ELEMENT","_pointers","add","buf","HEAP","clear","codeToString","characters","heap","character","fromCharCode","apply","addError","message","frameLength","frameNumber","inputBytes","outputSamples","_module","Set","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","definition","key","chunkId","all","keys","reduce","promises","Function","window","obj","prop","prototype","hasOwnProperty","call","url","done","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","replace","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","HEAPU8","wasmMemory","timers","_emscripten_math_cos","Math","cos","base64ReverseLookup","_opus_frame_decoder_create","_malloc","_opus_frame_decode_float_deinterleaved","_opus_frame_decoder_destroy","_free","__emscripten_timeout","wasmImports","abort","__emscripten_runtime_keepalive_clear","__setitimer_js","which","timeout_ms","performance","now","requestedSize","_proc_exit","code","imports","instance","wasmExports","b","assignWasmExports","Int8Array","Int16Array","Uint16Array","Uint32Array","Float64Array","BigInt64Array","BigUint64Array","initRuntime","opus_frame_decoder_create","opus_frame_decode_float_deinterleaved","opus_frame_decoder_destroy","OpusDecoder","_init","common","_common","_inputBytes","_outputSamples","_frameNumber","_input","_inputSize","_output","_outputChannels","_outputChannelSize","mapping","_channels","_channelMappingTable","_decoder","_sampleRate","_streamCount","_coupledStreamCount","_preSkip","_forceStereo","_ready","_decode","opusFrame","outputBuffer","decodeFrame","decoded","decodeFrames","opusFrames","outputBuffers","_isWebWorker","isNumber","param","channels","streamCount","coupledStreamCount","channelMappingTable","preSkip","forceStereo","includes","OpusDecoderWebWorker","symbol","channelMappings","left","center","right","front","side","rear","x","flatMap","y","z","join","lfe","monophonic","stereo","surround","getChannelMapping","channelCount","mappings","vorbisOpusChannelMapping","rate48000","rate44100","rate32000","rate24000","rate22050","rate16000","rate8000","absoluteGranulePosition","bandwidth","bitrate","bitrateMaximum","bitrateMinimum","bitrateNominal","bufferFullness","codec","codecFrames","crc","crc16","crc32","description","duration","emphasis","hasOpusPadding","header","isContinuedPacket","isCopyrighted","isFirstPage","isHome","isLastPage","isOriginal","isPrivate","isVbr","mode","modeExtension","mpeg","mpegVersion","numberAACFrames","outputGain","profile","profileBits","protection","segments","version","vorbis","vorbisComments","vorbisSetup","block","blockingStrategy","blockingStrategyBits","blockSize","blocksize0","blocksize1","blockSizeBits","channelMappingFamily","channelMode","channelModeBits","copyright","copyrightId","copyrightIdStart","frameCount","framePadding","frameSize","Rate","inputSampleRate","page","pageChecksum","pageSegmentBytes","pageSegmentTable","pageSequenceNumber","sample","sampleNumber","sampleRateBits","samples","stream","streamInfo","streamSerialNumber","streamStructureVersion","total","totalBytesOut","totalDuration","totalSamples","readRawData","incrementRawData","mapCodecFrameStats","mapFrameStats","logWarning","syncFrame","fixedLengthFrameSync","getHeader","setHeader","getFrame","parseFrame","parseOggPage","checkCodecUpdate","enable","getHeaderFromUint8Array","checkFrameFooterCrc16","dataView","reserved","bad","none","sixteenBitCRC","getCrcTable","crcTable","crcInitialValueFunction","crcFunction","byte","bit","crc8Table","flacCrc16Table","crc32Table","crc32Function","dataLength","crcChunkSize","concatBuffers","acc","bytesToString","bytes","reverseTable","reverse","val","BitReader","_data","_pos","position","read","bits","floor","HeaderCache","onCodecHeader","onCodecUpdate","_onCodecHeader","_onCodecUpdate","_isEnabled","_headerCache","_codecUpdateData","_codecHeaderSent","_codecShouldUpdate","_bitrate","codecData","_currentHeader","_updateCurrentHeader","codecUpdateFields","headerStore","frameStore","Parser","codecParser","headerCache","_codecParser","frameData","Frame","ignoreNextFrame","_flushing","Header","headerValue","dataValue","CodecFrame","readOffset","frameLengthValue","samplesValue","unsynchronizationFlag","extendedHeaderFlag","experimentalFlag","footerPresent","ID3v2","getID3v2Header","CodecHeader","bitrateMatrix","calcBitrate","idx","interval","intervalOffset","bands","to31","layer12ModeExtensions","bitrateIndex","v2","v1","intensityStereo","msStereo","on","off","layer3ModeExtensions","layersValues","mpegVersionDescription","isoIec","mpegVersions","protectionValues","emphasisValues","channelModes","MPEGHeader","id3v2Header","cachedHeader","mpegVersionValues","layerBits","layerValues","MPEGFrame","frame","MPEGParser","onCodec","profileValues","sampleRates","channelModeValues","AACHeader","protectionBit","privateBit","bufferFullnessBits","audioSpecificConfig","setUint16","AACFrame","AACParser","FLACFrame","_getFrameFooterCrc16","expectedCrc16","actualCrc16","flacCrc16","streamInfoValue","getFromStreamInfo","blockingStrategyValues","blockSizeValues","sampleRateValues","channelAssignments","bitDepthValues","FLACHeader","_decodeUTF8Int","zeroMask","shift","codecParserStub","next","channelAssignment","decodedUtf8","crc8","FLACParser","_getNextFrameSyncOffset","secondByte","nextHeaderOffset","oggPage","_streamInfo","segment","filter","OggPageHeader","view","getBigInt64","sign","getUint8","firstPart","getUint32","secondPart","warn","readInt64le","pageSegmentTableLength","segmentLength","segmentByte","OggPage","headerLength","totalLength","rawDataValue","OpusFrame","channelMappingFamilies","silkOnly","celtOnly","hybrid","narrowBand","mediumBand","wideBand","superWideBand","fullBand","configTable","OpusHeader","packetData","packetMode","packetLength","substr","getUint16","getInt16","packetConfig","headerData","OpusParser","_identificationHeader","_preSkipRemaining","VorbisFrame","blockSizes","VorbisHeader","vorbisCommentsData","vorbisSetupData","VorbisParser","_setupComplete","_prevBlockSize","oggPageSegment","_vorbisComments","_vorbisSetup","_mode","_parseSetupHeader","_getSamples","logError","currentBlockSize","blockFlags","mask","setup","bitReader","count","modeBits","currentByte","unshift","log2","OggStream","_onCodec","_continuedPacket","_codec","_isSupported","_previousAbsoluteGranulePosition","_updateCodec","_parser","_checkCodecSupport","idString","_checkPageSequenceNumber","_pageSequenceNumber","_parsePage","oggPageStore","pop","OggParser","_streams","_currentSerialNumber","oggStream","noOp","mimeType","enableLogging","enableFrameCRC32","_inputMimeType","_enableLogging","_crc32","_generator","_getGenerator","flush","parseChunk","chunk","parseAll","fileData","match","_currentReadPosition","_totalBytesIn","_totalBytesOut","_totalSamples","_rawData","minSize","rawData","increment","round","absoluteGranulePositionSamples","codecFrame","untrimmedCodecSamples","_log","logger","messages","stats","width","max","repeat","OggOpusDecoder","_speechQualityEnhancement","speechQualityEnhancement","_useMLDecoder","_decoderLibraryLoaded","_loadDecoderLibrary","_initDecoderClass","_decoderClass","OpusMLDecoder","async","validate","simd","OpusMLDecoderWebWorker","_decoderReady","_instantiateDecoder","_totalSamplesDecoded","oggPages","allErrors","allChannelData","samplesThisDecode","flushFrames","frames","totalDecodedSamples_48000","samplesToTrim","decode","oggOpusData","decodeFile","OggOpusDecoderWebWorker","define","amd"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"ogg-opus-decoder.min.js","mappings":"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","sources":["webpack://ogg-opus-decoder/webpack/universalModuleDefinition","webpack://ogg-opus-decoder/./node_modules/@eshaz/web-worker/cjs/browser.js","webpack://ogg-opus-decoder/./node_modules/simple-yenc/dist/esm.js","webpack://ogg-opus-decoder/./node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js","webpack://ogg-opus-decoder/./node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js","webpack://ogg-opus-decoder/./node_modules/@wasm-audio-decoders/common/src/utilities.js","webpack://ogg-opus-decoder/webpack/bootstrap","webpack://ogg-opus-decoder/webpack/runtime/define property getters","webpack://ogg-opus-decoder/webpack/runtime/ensure chunk","webpack://ogg-opus-decoder/webpack/runtime/get javascript chunk filename","webpack://ogg-opus-decoder/webpack/runtime/global","webpack://ogg-opus-decoder/webpack/runtime/hasOwnProperty shorthand","webpack://ogg-opus-decoder/webpack/runtime/load script","webpack://ogg-opus-decoder/webpack/runtime/make namespace object","webpack://ogg-opus-decoder/webpack/runtime/publicPath","webpack://ogg-opus-decoder/webpack/runtime/jsonp chunk loading","webpack://ogg-opus-decoder/./node_modules/opus-decoder/src/EmscriptenWasm.js","webpack://ogg-opus-decoder/./node_modules/opus-decoder/src/OpusDecoder.js","webpack://ogg-opus-decoder/./node_modules/opus-decoder/src/OpusDecoderWebWorker.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/constants.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/utilities.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/HeaderCache.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/globals.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/Parser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/containers/Frame.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/CodecFrame.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/metadata/ID3v2.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/CodecHeader.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/mpeg/MPEGHeader.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/mpeg/MPEGFrame.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/mpeg/MPEGParser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/aac/AACHeader.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/aac/AACFrame.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/aac/AACParser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/flac/FLACFrame.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/flac/FLACHeader.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/flac/FLACParser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/containers/ogg/OggPageHeader.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/containers/ogg/OggPage.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/opus/OpusFrame.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/opus/OpusHeader.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/opus/OpusParser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/vorbis/VorbisFrame.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/vorbis/VorbisHeader.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/codecs/vorbis/VorbisParser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/containers/ogg/OggParser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/src/CodecParser.js","webpack://ogg-opus-decoder/./node_modules/codec-parser/index.js","webpack://ogg-opus-decoder/./src/OggOpusDecoder.js","webpack://ogg-opus-decoder/./src/OggOpusDecoderWebWorker.js","webpack://ogg-opus-decoder/./index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ogg-opus-decoder\"] = factory();\n\telse\n\t\troot[\"ogg-opus-decoder\"] = factory();\n})(this, () => {\nreturn ","/**\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nmodule.exports = Worker;","const t=(t,n=4294967295,e=79764919)=>{const r=new Int32Array(256);let o,s,i,c=n;for(o=0;o<256;o++){for(i=o<<24,s=8;s>0;--s)i=2147483648&i?i<<1^e:i<<1;r[o]=i}for(o=0;o<t.length;o++)c=c<<8^r[255&(c>>24^t[o])];return c},n=t=>{const n=[];for(const e of t){let t=(e+42)%256;0===t||10===t||13===t||61===t?n.push(\"=\"+String.fromCharCode((t+64)%256)):n.push(String.fromCharCode(t))}return n.join(\"\")},e=(n,e=t)=>{const r=t=>new Uint8Array(t.length/2).map(((n,e)=>parseInt(t.substring(2*e,2*(e+1)),16))),o=t=>r(t)[0],s=new Map;[,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(((t,n)=>s.set(t,n)));const i=new Uint8Array(n.length);let c,a,l,f=!1,g=0,h=42,p=n.length>13&&\"dynEncode\"===n.substring(0,9),u=0;p&&(u=11,a=o(n.substring(9,u)),a<=1&&(u+=2,h=o(n.substring(11,u))),1===a&&(u+=8,l=(t=>new DataView(r(t).buffer).getInt32(0,!0))(n.substring(13,u))));const d=256-h;for(let t=u;t<n.length;t++)if(c=n.charCodeAt(t),61!==c||f){if(92===c&&t<n.length-5&&p){const e=n.charCodeAt(t+1);117!==e&&85!==e||(c=parseInt(n.substring(t+2,t+6),16),t+=5)}if(c>255){const t=s.get(c);t&&(c=t+127)}f&&(f=!1,c-=64),i[g++]=c<h&&c>0?c+d:c-h}else f=!0;const m=i.subarray(0,g);if(p&&1===a){const t=e(m);if(t!==l){const n=\"Decode failed crc32 validation\";throw console.error(\"`simple-yenc`\\n\",n+\"\\n\",\"Expected: \"+l+\"; Got: \"+t+\"\\n\",\"Visit https://github.com/eshaz/simple-yenc for more information\"),Error(n)}}return m},r=(n,e='\"',r=t,o)=>{const s=(t,n)=>(t%n+n)%n,i=(t,n)=>n.push(String.fromCharCode(61,(t+64)%256)),c=t=>t.map((t=>t.toString(16).padStart(2,\"0\")));let a,l,f=[],g=1/0,h=Array(256).fill(0);if('\"'===e?(l=[0,8,9,10,11,12,13,34,92,61],a=t=>0===t||8===t||9===t||10===t||11===t||12===t||13===t||34===t||92===t||61===t):\"'\"===e?(l=[0,8,9,10,11,12,13,39,92,61],a=t=>0===t||8===t||9===t||10===t||11===t||12===t||13===t||39===t||92===t||61===t):\"`\"===e&&(l=[13,61,96],f=[7,205,231],a=(t,n)=>13===t||36===t&&123===n||61===t||92===t&&(85===n||117===n)||96===t),void 0===o){o=0;for(let t=0;t<n.length;t++){const e=0|n[t];h[e]++;for(let r=0;r<f.length;r++){const o=f[r];s(e-n[t+1]|0,256)===o&&h[e]++}}for(let t=0;t<256;t++){let n=0;for(let e=0;e<l.length;e++)n+=h[s(l[e]-t,256)];n<g&&(g=n,o=t)}}const p=[\"dynEncode\",\"01\",c([o]),...c((t=>{const n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,t,!0),[...n]})(r(n)))];for(let t=0;t<n.length;t++){const e=(n[t]+o)%256;a(e,(n[t+1]+o)%256)?i(e,p):p.push(String.fromCharCode(e))}return\"\\\\\"===p[p.length-1]&&(p.pop(),i(92,p)),p.join(\"\")},o=t=>t.replace(/[\\\\]/g,\"\\\\\\\\\").replace(/[`]/g,\"\\\\`\").replace(/\\${/g,\"\\\\${\");export{t as crc32,e as decode,r as dynamicEncode,n as encode,o as stringify};\n","import { decode } from \"simple-yenc\";\n\nexport default function WASMAudioDecoderCommon() {\n // setup static methods\n const uint8Array = Uint8Array;\n const float32Array = Float32Array;\n\n if (!WASMAudioDecoderCommon.modules) {\n Object.defineProperties(WASMAudioDecoderCommon, {\n modules: {\n value: new WeakMap(),\n },\n\n setModule: {\n value(Ref, module) {\n WASMAudioDecoderCommon.modules.set(Ref, Promise.resolve(module));\n },\n },\n\n getModule: {\n value(Ref, wasmString) {\n let module = WASMAudioDecoderCommon.modules.get(Ref);\n\n if (!module) {\n if (!wasmString) {\n wasmString = Ref.wasm;\n module = WASMAudioDecoderCommon.inflateDynEncodeString(\n wasmString,\n ).then((data) => WebAssembly.compile(data));\n } else {\n module = WebAssembly.compile(decode(wasmString));\n }\n\n WASMAudioDecoderCommon.modules.set(Ref, module);\n }\n\n return module;\n },\n },\n\n concatFloat32: {\n value(buffers, length) {\n let ret = new float32Array(length),\n i = 0,\n offset = 0;\n\n while (i < buffers.length) {\n ret.set(buffers[i], offset);\n offset += buffers[i++].length;\n }\n\n return ret;\n },\n },\n\n getDecodedAudio: {\n value: (errors, channelData, samplesDecoded, sampleRate, bitDepth) => ({\n errors,\n channelData,\n samplesDecoded,\n sampleRate,\n bitDepth,\n }),\n },\n\n getDecodedAudioMultiChannel: {\n value(\n errors,\n input,\n channelsDecoded,\n samplesDecoded,\n sampleRate,\n bitDepth,\n ) {\n let channelData = [],\n i,\n j;\n\n for (i = 0; i < channelsDecoded; i++) {\n const channel = [];\n for (j = 0; j < input.length; ) channel.push(input[j++][i] || []);\n channelData.push(\n WASMAudioDecoderCommon.concatFloat32(channel, samplesDecoded),\n );\n }\n\n return WASMAudioDecoderCommon.getDecodedAudio(\n errors,\n channelData,\n samplesDecoded,\n sampleRate,\n bitDepth,\n );\n },\n },\n\n /*\n ******************\n * Compression Code\n ******************\n */\n\n inflateDynEncodeString: {\n value(source) {\n source = decode(source);\n\n return new Promise((resolve) => {\n // prettier-ignore\n 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*4U((I-H(H*i0J,^*DH+H-H*I+H,I*4)33H(H*H)^*DH(H+H)^*@H+i§H)i§3æ*).§K(iHI/+§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,hi73H,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ô7H,c)(i)H+i´8W)(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,hi73H-i)J+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)J+i¸7V)(H(H+iø7V)(8(J/H(P*0J+s,hi73H+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(i\u00182J,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*4J1J.U(*H.U((J2i')o5/H.U()I.H,H(^*<H0H1U((H.i0J.i§i0i')o5/H/H.H2J*H(J.q50H,P*0J/H*I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0H(H1U((b((H/i)I/H(i)I(H*i)I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i\b1^*(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\u0018-H(i0c)(H(i*I(4)33iè1i\b1H,i\u0018-iÈ*8)Bi(I(+hH(ido,hH,i\u0018-H(i-c)(H(i*I(4)33iÈ6iè6H,i\u0018-iF8)BiØ1i)b((41-H,i\u0018-H(i/c)(H(i*I(4)3(3(-H,i\u0018-H(i1c)(H(i*I(4)3(3(-H,i\u0018-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\u0018(^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iEr5)H(i©*I1H-i)I0i(i;H.i,J(i(H(i(rCJ(J*H*i;sCI*i¨1I-H(I/+hH/,hH,i\u0018-H-V)(i)H,i+8(c)(H/i)I/H-i*I-H*i)I*4)-H(i)i¨1I/+hH(H*o,hH,i\u0018-H/V)(i)i(c)(H/i*I/H(i)I(4)33i¤I*H,iø-H,i¸)H,i\u0018-i;8)5+H0H1I2i(I-+hH-H2p,hH,H,iP8*J*i(p5-H*i7u,hH,i\u0018-H-i)H*c)(H-i)I-4*3i(I/i+I.i+I(*h*h*hH*i86*(*)3H-m,hi£I*403H-i)H,W)\u0016-I/i*I(4)3i3I.i/I(3H2H,H(8(H.J(H-J.p,hi¢I*4.3H,i\u0018-H-i)I*+hH(,hH*H/c)(H*i*I*H(i)I(4)-H.I-4+3(3(33H,W)\u00181m,hiI*4,3H,iø-H,i¸)H,i\u0018-H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-o5,3H,i\u0018(H,iXH,i\u0018-H1i)H08)J(,hi I*H(i(p5,H0H,V)H,V)o5,3H,H,iPH,iH8+I*4+3(3(3H,i$6i¬78+I*3H*H3m5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i\u00182L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(((«(Ë(ë(\u000b(*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7*S7US0U `;\n\n WASMAudioDecoderCommon.getModule(WASMAudioDecoderCommon, puffString)\n .then((wasm) => WebAssembly.instantiate(wasm, {}))\n .then(({ exports }) => {\n // required for minifiers that mangle the __heap_base property\n const instanceExports = new Map(Object.entries(exports));\n\n const puff = instanceExports.get(\"puff\");\n const memory = instanceExports.get(\"memory\")[\"buffer\"];\n const dataArray = new uint8Array(memory);\n const heapView = new DataView(memory);\n\n let heapPos = instanceExports.get(\"__heap_base\");\n\n // source length\n const sourceLength = source.length;\n const sourceLengthPtr = heapPos;\n heapPos += 4;\n heapView.setInt32(sourceLengthPtr, sourceLength, true);\n\n // source data\n const sourcePtr = heapPos;\n heapPos += sourceLength;\n dataArray.set(source, sourcePtr);\n\n // destination length\n const destLengthPtr = heapPos;\n heapPos += 4;\n heapView.setInt32(\n destLengthPtr,\n dataArray.byteLength - heapPos,\n true,\n );\n\n // destination data fills in the rest of the heap\n puff(heapPos, destLengthPtr, sourcePtr, sourceLengthPtr);\n\n resolve(\n dataArray.slice(\n heapPos,\n heapPos + heapView.getInt32(destLengthPtr, true),\n ),\n );\n });\n });\n },\n },\n });\n }\n\n Object.defineProperty(this, \"wasm\", {\n enumerable: true,\n get: () => this._wasm,\n });\n\n this.getOutputChannels = (outputData, channelsDecoded, samplesDecoded) => {\n let output = [],\n i = 0;\n\n while (i < channelsDecoded)\n output.push(\n outputData.slice(\n i * samplesDecoded,\n i++ * samplesDecoded + samplesDecoded,\n ),\n );\n\n return output;\n };\n\n this.allocateTypedArray = (len, TypedArray, setPointer = true) => {\n const ptr = this._wasm.malloc(TypedArray.BYTES_PER_ELEMENT * len);\n if (setPointer) this._pointers.add(ptr);\n\n return {\n ptr: ptr,\n len: len,\n buf: new TypedArray(this._wasm.HEAP, ptr, len),\n };\n };\n\n this.free = () => {\n this._pointers.forEach((ptr) => {\n this._wasm.free(ptr);\n });\n this._pointers.clear();\n };\n\n this.codeToString = (ptr) => {\n const characters = [],\n heap = new Uint8Array(this._wasm.HEAP);\n for (let character = heap[ptr]; character !== 0; character = heap[++ptr])\n characters.push(character);\n\n return String.fromCharCode.apply(null, characters);\n };\n\n this.addError = (\n errors,\n message,\n frameLength,\n frameNumber,\n inputBytes,\n outputSamples,\n ) => {\n errors.push({\n message: message,\n frameLength: frameLength,\n frameNumber: frameNumber,\n inputBytes: inputBytes,\n outputSamples: outputSamples,\n });\n };\n\n this.instantiate = (_EmscriptenWASM, _module) => {\n if (_module) WASMAudioDecoderCommon.setModule(_EmscriptenWASM, _module);\n this._wasm = new _EmscriptenWASM(WASMAudioDecoderCommon).instantiate();\n this._pointers = new Set();\n\n return this._wasm.ready.then(() => this);\n };\n}\n","import NodeWorker from \"@eshaz/web-worker\";\nimport WASMAudioDecoderCommon from \"./WASMAudioDecoderCommon.js\";\n\nconst getWorker = () => globalThis.Worker || NodeWorker;\n\nexport default class WASMAudioDecoderWorker extends getWorker() {\n constructor(options, name, Decoder, EmscriptenWASM) {\n if (!WASMAudioDecoderCommon.modules) new WASMAudioDecoderCommon();\n\n let source = WASMAudioDecoderCommon.modules.get(Decoder);\n\n if (!source) {\n let type = \"text/javascript\",\n isNode,\n webworkerSourceCode =\n \"'use strict';\" +\n // dependencies need to be manually resolved when stringifying this function\n `(${((_Decoder, _WASMAudioDecoderCommon, _EmscriptenWASM) => {\n // We're in a Web Worker\n\n // setup Promise that will be resolved once the WebAssembly Module is received\n let decoder,\n moduleResolve,\n modulePromise = new Promise((resolve) => {\n moduleResolve = resolve;\n });\n\n self.onmessage = ({ data: { id, command, data } }) => {\n let messagePromise = modulePromise,\n messagePayload = { id },\n transferList;\n\n if (command === \"init\") {\n Object.defineProperties(_Decoder, {\n WASMAudioDecoderCommon: { value: _WASMAudioDecoderCommon },\n EmscriptenWASM: { value: _EmscriptenWASM },\n module: { value: data.module },\n isWebWorker: { value: true },\n });\n\n decoder = new _Decoder(data.options);\n moduleResolve();\n } else if (command === \"free\") {\n decoder.free();\n } else if (command === \"ready\") {\n messagePromise = messagePromise.then(() => decoder.ready);\n } else if (command === \"reset\") {\n messagePromise = messagePromise.then(() => decoder.reset());\n } else {\n // \"decode\":\n // \"decodeFrame\":\n // \"decodeFrames\":\n Object.assign(\n messagePayload,\n decoder[command](\n // detach buffers\n Array.isArray(data)\n ? data.map((data) => new Uint8Array(data))\n : new Uint8Array(data),\n ),\n );\n // The \"transferList\" parameter transfers ownership of channel data to main thread,\n // which avoids copying memory.\n transferList = messagePayload.channelData\n ? messagePayload.channelData.map((channel) => channel.buffer)\n : [];\n }\n\n messagePromise.then(() =>\n self.postMessage(messagePayload, transferList),\n );\n };\n }).toString()})(${Decoder}, ${WASMAudioDecoderCommon}, ${EmscriptenWASM})`;\n\n try {\n isNode = typeof process.versions.node !== \"undefined\";\n } catch {}\n\n source = isNode\n ? `data:${type};base64,${Buffer.from(webworkerSourceCode).toString(\n \"base64\",\n )}`\n : URL.createObjectURL(new Blob([webworkerSourceCode], { type }));\n\n WASMAudioDecoderCommon.modules.set(Decoder, source);\n }\n\n super(source, { name });\n\n this._id = Number.MIN_SAFE_INTEGER;\n this._enqueuedOperations = new Map();\n\n this.onmessage = ({ data }) => {\n const { id, ...rest } = data;\n this._enqueuedOperations.get(id)(rest);\n this._enqueuedOperations.delete(id);\n };\n\n new EmscriptenWASM(WASMAudioDecoderCommon).getModule().then((module) => {\n this.postToDecoder(\"init\", { module, options });\n });\n }\n\n async postToDecoder(command, data) {\n return new Promise((resolve) => {\n this.postMessage({\n command,\n id: this._id,\n data,\n });\n\n this._enqueuedOperations.set(this._id++, resolve);\n });\n }\n\n get ready() {\n return this.postToDecoder(\"ready\");\n }\n\n async free() {\n await this.postToDecoder(\"free\").finally(() => {\n this.terminate();\n });\n }\n\n async reset() {\n await this.postToDecoder(\"reset\");\n }\n}\n","export const assignNames = (Class, name) => {\n Object.defineProperty(Class, \"name\", { value: name });\n};\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => (\"ogg-opus-decoder.\" + \"opus-ml\" + \".min.js\");","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));","const inProgress = {};\nconst dataWebpackPrefix = \"ogg-opus-decoder:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","let scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nconst document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tlet i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, \"\").replace(/\\/[^/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nconst installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tconst promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tconst error = new Error();\n\t\t\t\t\tconst loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\terror.event = event;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nconst chunkLoadingGlobal = this[\"webpackChunkogg_opus_decoder\"] = this[\"webpackChunkogg_opus_decoder\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/* **************************************************\n * This file is auto-generated during the build process.\n * Any edits to this file will be overwritten.\n ****************************************************/\n\nexport default function EmscriptenWASM(WASMAudioDecoderCommon) {\n// include: shell_minimal.js\nvar Module = Module;\n\n// Override this function in a --pre-js file to get a signal for when\n// compilation is ready. In that callback, call the function run() to start\n// the program.\nfunction ready() {}\n\n// --pre-jses are emitted after the Module integration code, so that they can\n// refer to Module (if they choose; they can also define Module)\n// include: src/opus-decoder/src/emscripten-pre.js\nModule = {};\n\n// end include: src/opus-decoder/src/emscripten-pre.js\n// end include: shell_minimal.js\n// include: preamble_minimal.js\n/** @param {string|number=} what */ function abort(what) {\n throw what;\n}\n\nvar HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, HEAP64, HEAPU64, wasmMemory;\n\n// include: runtime_shared.js\n// include: runtime_stack_check.js\n// end include: runtime_stack_check.js\n// include: runtime_exceptions.js\n// end include: runtime_exceptions.js\n// include: runtime_debug.js\n// end include: runtime_debug.js\n// include: memoryprofiler.js\n// end include: memoryprofiler.js\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n HEAP64 = new BigInt64Array(b);\n HEAPU64 = new BigUint64Array(b);\n}\n\n// end include: runtime_shared.js\n// end include: preamble_minimal.js\n// Begin JS library code\n/** @noinline */ var base64Decode = b64 => {\n var b1, b2, i = 0, j = 0, bLength = b64.length;\n var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == \"=\") - (b64[bLength - 1] == \"=\"));\n for (;i < bLength; i += 4, j += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];\n output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;\n output[j + 1] = b1 << 4 | b2 >> 2;\n output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];\n }\n return output;\n};\n\nvar __abort_js = () => abort(\"\");\n\nvar __emscripten_runtime_keepalive_clear = () => {};\n\nvar timers = {};\n\nvar callUserCallback = func => func();\n\nvar _emscripten_get_now = () => performance.now();\n\nvar __setitimer_js = (which, timeout_ms) => {\n // First, clear any existing timer.\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n // A timeout of zero simply cancels the current timeout so we have nothing\n // more to do.\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n};\n\nvar _emscripten_math_cos = Math.cos;\n\nvar _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned.\n requestedSize >>>= 0;\n return false;\n};\n\nvar _proc_exit = code => {\n throw `exit(${code})`;\n};\n\n// Precreate a reverse lookup table from chars\n// \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\" back to\n// bytes to make decoding fast.\nfor (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {\n base64ReverseLookup[48 + i] = 52 + i;\n // '0-9'\n base64ReverseLookup[65 + i] = i;\n // 'A-Z'\n base64ReverseLookup[97 + i] = 26 + i;\n}\n\nbase64ReverseLookup[43] = 62;\n\n// '+'\nbase64ReverseLookup[47] = 63;\n\nvar wasmImports = {\n /** @export */ \"d\": __abort_js,\n /** @export */ \"c\": __emscripten_runtime_keepalive_clear,\n /** @export */ \"e\": __setitimer_js,\n /** @export */ \"a\": _emscripten_math_cos,\n /** @export */ \"f\": _emscripten_resize_heap,\n /** @export */ \"b\": _proc_exit\n};\n\nfunction assignWasmExports(wasmExports) {\n _opus_frame_decoder_create = wasmExports[\"i\"];\n _malloc = wasmExports[\"j\"];\n _opus_frame_decode_float_deinterleaved = wasmExports[\"k\"];\n _opus_frame_decoder_destroy = wasmExports[\"l\"];\n _free = wasmExports[\"m\"];\n __emscripten_timeout = wasmExports[\"o\"];\n}\n\nvar _opus_frame_decoder_create, _malloc, _opus_frame_decode_float_deinterleaved, _opus_frame_decoder_destroy, _free, __emscripten_timeout;\n\n// include: postamble_minimal.js\n// === Auto-generated postamble setup entry stuff ===\nfunction initRuntime(wasmExports) {\n // No ATINITS hooks\n wasmExports[\"h\"]();\n}\n\n// Initialize wasm (asynchronous)\nif (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, \"wasm\", {get: () => String.raw`dynEncode013bc58350c1Éð|@|O*X\u0002Ø3R}@³ùÆöÁ\u0016¤½\u0002CuÙFõ\u0012¶=}\u001bVònоÑX³W\u0005\u000e~aGÕ5?\u000bQ= Ú
Î
N= W\f\u000feǸß3í=MÛßÇ\u0002¹HÜjLvïêÀ:\u0002m°¹30>\u0002ÉX!¿b\u000býOýn\n®\u0007Fj{øú¢ç\u001c=}(ÝñÜn moǰ¥àeò?È×µh\n\u0011ØW¨;Ñ aØ\u0005XæU{¤øàÖÕÀì·ÝÌí\u0012ø±tâ\u0017Ôø\u0016eVO÷\u001bPÉ´È~\u0019\u001bÃòs\u001bX1´ÊPyK·ÿKZçµ WÑ¡¡_ dÍí\u0006+]Õ\u0017\u0017~%Yïþîñ \u0004\u001e\u0014¾Ú\u0002·p[òß \u0006¶ó÷y\u001a\u000blhnn\u0013\u0006\u000f«\u0007²\u0006\u0007\u0007ù*¶Ìéñ\u0002®ï(éÇ\u0003ÃRÊ\u001aÆRÌ-¬ÐoÒ\u001a\u0002Ê2z+ä$:ÄsxÏ#Ït!MlBq§%Jè\t®Ä\u00003ó°á¸eÅ_Ö=}i\u0018TÐÍm\u0014o\u0002\u000bðbMpl\u0010\u001e¬EP°e,¼Æju®ix>#}NgdÿÇÄbç9\u001cW\u0006ZÇ·n\\Öá1ÚÈt.ú6bì:û\fào¯ú4\u001fÏø üzå¯#ÆkM#úÿ9\u0013ë:üÒÝ\u0004ëÚà¡d%0ÒekÓ×mðƸ\u0015½ùÿâ¿Ò9\tÄgªÕÂ%ü¸»\tHÁM#Âq\u0012²~èn¯\f\u0011Ûa_9j= ùÿR\u001dèæÊó%M\n¨,Àæq%98\u0013a9%\u0000T2)\u0006´z«9gsÒ\u0003Ö!Zh\u0018RõRÛyÕ²\u0015Ý=M<Öcº\t»~VFÕ\u000fÖx:þrÞ\u0003ðn£x\u0016¦8.è$K9\u0004\u0011þ¹ú\u0016\u0016SnÍ3¦v\u0000
üu\u001eºsÕñ=}1=M5ZʦC\u000e\u0015ÿ\u0002SÉ2×qÒ\u0001«\u0018\u0003\u0001«\u0018Sa»ù±(\u0015¢º]ÀmÍh÷\u0000/¥3\u001a@sns2\u000b\t%7ù-Q|\u0019nÏoöjYÛ]}à2{EBêÎ6>ÁbÄü\u0017\ná,\t[DAÐuùjeND\u000bEëÔà\u0005Zºlq»\u0000J\f\u000f/˲á\u0014jºßCÃÝ1\u000b\u0018b)\u001døtN7Ê=}gÕ®\u0005òÍá§8²\u0000kD\b\u0012ïû¤åÒÅóºc=M²\u0016= aË.ooèf.QZj@bñ>qV©?æ\u0016\u000bxñR\f\u0014ô|_xw\u000bê\f¸÷È¡\u0004\u0002ö\"C¶2\u0017[¼ï¯¸©KmäºúZ
¡\u001c%^°bóþ»-¼Ú¥ZI(pþ
µS%øµã*Ò±8f:t¡éþõz¶<Äfñ*öeP8AÓ¾\u001a/g×\\С\u001a1Ï\"= ¤ûGsW_¹ÔÈX\tTãàuTí\u0014\u0006EK\u0015Püݸ#åB¢ñ\u001b?:µßĬîFI8\u001cQY;X
¶í¦k{|¦éíà/fªi>´EÈ\u0016oK= 6¼lÖr²ÿ*YÇvÄdà\u001aG{Ö,Gz½.gzSdïV%
z¥8¶²bO¡2\\nO\u001f\u000eßV¡S2KçK´UûuÛã~f¾K)ÊÖ#´?#»ÅYXOø\u0007ò TCB}LUk,\u000ekÍ\b)]\u0015íiE^ÿyW)Ê»³= ô\u001d\u00101_½úÌÞÊçýS¡\n»£jÆkh\fÐ1\u0010G\u0010\u0015\u0010<è\u0018^àÙç?
æF¦Ç/\u001bã«Eý6ZI¹tl.\u0015\u0003aëü\u001bl|!&:\u0014\u0012\u0014MÓå?N@øËÅf 6cì$w,3~17\u001cF=M\u001a𸳰aõu\\9æ\u0011k\t\u0000I\u001d&>V®Æ/\u0007\bØa´ %¶¢],ÿ:±wäé\u0002¬áS¥FK±U¢±ÓPóß&\u0003®e\u0014= ÍÍܯ\u000eÏ×À@= Ø#\u0007Ðk[NCó÷ÀÄ\u001fÞ\u001dGQRcnI}\u0011HGñ\u0013\\ç= ö\u0010è^áygyDÔa©D¦
'ߣMߣP\u0011I¯à¨=}\u001e=MUÀ¸çy 9W½L\bí\u0006U·ôzwzÃsÝZòÓ\u00023F¸Áè£\u0016â\u001eÑn\u0006\u000fÕ%Í\u0006¥k
á®=M×GTÀÊøf\u001bëM-UF;u\u0011åÙ#
X#\nn©ï\bÖDÅñ¸q ,Թи;h¿å\u0013\u000fñ#µNÓ÷¸v} *Ϊ_= ãýØb6N=M\u0004H§'®I\u0014u¯7\u00048ªÊÝ#42\u0014p´[/¿E\u0007= =MxåÄV§Ý\u001cm©3\u0014\u0013\u0011?\u0015;bô9fb\u0019÷\u0006Ð'¨ÈIS7ñ\f>¬IÍÜK tçÖJ\t7û6ߥA/|\u0010B\u001cÏ\u0019=Mõ\u0003ªw¿T\u001e¼91ó\u0000íÒèÔ_6\b»\u0005\u0016Âõ\u001c\u0017ªvg2ý\u0014¡õ÷Ò=}\u0005Å3ýXm²¬bÛ}U¬0¸Ük~e\naY¬ÈÛµ¨¢0Nñ\u001b¬t³VÉhÖYvx§\u001a\"Ç5\\\u0001N'ªÂ£æKlÂ\u0010?þ{m¼ôê±ñÔ|Lm¬t\u0007_2%¤E}\u0018Ù>ÎFûalSXø²tRªÀ8\f\u000e¥£Å|ÖW(Ù)\b\\3Úwåì:\u001foíý±Y4ì©géµC³¨Q\\ÍõM\u000fÕ\u0001\n!J½6ë:Ëg\u0000ípoÒ=}I=}ëS¯¸\u001d
\u0002F\u0007=}ÙT\u0016__U¾&\\íÛ ¼Âkg#ú\fÚ¡ÀsÏ\u001d\u000eÔT\u0003\u0002µ³ÑËßxNÉæGç^4Ñ¡%.¦U±O[ø¼4\u0000pͺ\u0010\u00167ÜâªcÔ¦¢:o\u0015u¹8Ìzî\u0006Xf¬56DC´Þ]Ó!=MOÀÕâGÖÓ«0¤¿Å2ú\néη\u0002NóÚÄr_Z)\u00036y&2^F|#²ì3\u00156eòa¦rc\u001fLõ5\u0001Hö<r¼J!í\u0001¼\u001d©D\u000føÓ@\u0015¨åPó\u0010f\u001f\u0000Ñ£®·\u001a§hQ\u000e\u001a®õ\u000b½c±M¥W,ÝàÜ\u0017««¿¢Vmù|\tË·wj$témè±\u0015°&í9yòµfæuC:E@[RX\\.qéuDýé\u0015(iao»]\u001cW5?I!z®¡±âàkËý¼LóFµUM¨cEu\u001e¼üÃFÔ\u0016ì\u0011<@y´Üø\u0016Æ#y«µà\u000bdMå@ÛXüû¼á¾ù[\u0017CHº\u0003À[4ñ5\u0002z:\u0005ÓàV\u0017\u001d[B\u0016Ò/I!ÕÓÂ\u0007Xj\u0003«ýH&o³©sF\u0010Í&-ö«\u00117d\\X#>¦yñÜ\u0015ÃMG\u0003c~#!\u0010T\füt? ªÌ\u0007·«á¨\u0019É»ÕBms¸Û®0úBjÛ(^ÓÅ®¤\u0006ÛF¹Ð\u0011ma)'¨ë(²ÄÞÍm\u0003\u0005²¦á\b¡Bá|%«L¹a\\×Ub= -f\u0011\u0007®¢Ü¢«GÌSÔxÖXc\u0006ÃÈÄh\u0017½4e#\"\u0014'
;P\t>Rõo;%t\u0000ÐC$g%Ä>7\b0* *©cX\u000b!C7yô\u0007îËtO'j?ó\u000e\u0016íÛ\u0002µÁûH= Iró\u0003\u001dÛ= kòw\u0001iJ]\u000f]þßY÷{mûpLÿÊe\u0005L\u0005A¾À <½å
\u0004iWÎ\u0016?o©t¡caâB\u001f¼iBüÛÚ¯:_îOJ7\"\u0017\\¥^EPHQ¼Cõ\u0010 *{ÎÁI\u0015ÅÅ$\u0017ÉVÇbo]XÆs)^H²®wój\u0002Ô\u000fÎE6OÙÿsR\u0019ͨEù\u001b\u001aï¼/²OÉQÿmå«\u0017õØÆ\u0010Za;Ä{ <}¸°Ró=MÖ²ýÜz´|´pµ\u0003Ûá!cï\fÆ,@zÃT«\u001f¶\u001dd\f³åoÙ-KyÁÓ4gß-²ÂxÊØÏ\\@q&}eÔÂè\\ßÍT1Ï\\\u0000kì÷Ú\u0018w
é\\ÀÄ~<à¢e\u0018«4E¡\u0011/«Ä\u0012\baõu½\u0012=}l°ÃNë/Jå\u0012=}ÿ®\u0005!.N8
Ær)H\u0014Ö43¡C3Ôz/N\f\u000f:\nÚ7!Z1Þqö)Mî\u0007\u0012\u0010½%\"O7^+TÉêa\u000eF\u00008øc2ú%ù3}Ô²dU\u0011(³\u0006ÍZű£y¤a\u0007f¿Ï\u0016\u000e][Hþs\u0014\u0015·Ù$EpFæt\u00054¦$Vú\ní!h\u0000ãV53\u0005øKéâ=}Nå22Úú\"A\bÃ5£áª\u00106WÕæYôÈ^ AÜÍ)ýYÌúë¾a0= ºvé\u001bè\u0018:7Mô=MWsE²£\u0006²ÇL¿òÞ²\u000bܳJ+\u0002= 5æ+,>\n¸M÷7jè;/_ý7ãzÈ)D\u001c÷\u001c·Ç4*È#\u0001Ú¹\"ó!z\u00000\tº®µZ*\u0005ìx®\u0005\nR>sÚýP7:\u0003¯\u0005ZZ=M\bÍ
\u000fW²Dê6Ó^Nq= f\u001aÍbN¿VþÒª£;û<cVýîåª6§7dËÃ-²us¶\u0007Ò¹%\u001a·iÄs4òf N
(á¨|õ-\u001eyZ$E)¹ï5¶Wí\u0014]\u0012Q\\·1U9:\u001f[-zQ¼\u0013É7÷\u0011/þiÉõ\t¿«Ob)\u001dIµñ0\n
lÁNpʦË-+Kfø»\ncù@®W¡Y,\u0005îuC6ZK¤éϲµI=}= óáÔÁ4´-õfÔm\u0003õVÛvFÞ\u0000Àç\u000f*=}éåú6³\u000fúÄßy'GD1dÕ±È\"x\u001a^\u0004ù1)DÚ'ö\\©^6§ö_³îªZ|¾S\u0006= @$^*-\u0004\u000f 'ªÈÄb7ÎÜt\u0006\u001a7Z4\u001c©ö§É
\u0016\u0001UhY{ÓÚh£\t±T\u001eÞÁÉýÒR\u001f7Ë\u000e\u000b¡t¨<#Ĩ\u001d¡@EK7\u000eÏb3\u0016Ur\u0006i)åw\u000b=}ø»n#\u0011MMuåÛÄ\t\u0018 ¼ü÷´Ò\u000e\u001euâÆ8¯¬»R6I\u001d\b¡WB\u0005ò\u0013\u0012îtnP=Má-0óà¤ÕÆ+¯KæÛcâÑG½þÛÀFä7\"AT\u0010Máu\u0010+mø\u000b¼?Ó^Ê?Ts÷ÁR7ñ\u0001³!å\u0010ogã\t\u0013_\u0017ËR\u0019ª«J$¼nÇ\th ýõgcíÿ·ÅºÊ§~Ì= @<Ûx¿a\u0006¥L\u001c¦ÃO·\u0014òi½ eû
ÎL~t\u001eÞ/\u0019\u0004'
=M$x@½tZÅYÖ&¼£]6o¹åÛÑvàMfgp£7Ç6ùßk\u0007Ø5i>\u00109àlÊ >Ð7w)ý;³(JKLª.z7\u001aðfê2jÐ\"\u0002£.S\bJ®.çòìV\\3(ÎÍÊt\"´»µ¾¸[\n¸8÷Ê+¶Aú\u000eCñ&\u0014ÿøH]÷\bhl\u0017y^Îàî\f®\u0004ðg\u0017å\u0010A\u00066íKÊ7Ò\u0013äGo¿:\u0018¥G[Åþ\b¡«a¶GÞ¾!â\n=MnB»ªÖ1ÔIZò2\u0015\u0002»Jk\u0019ë\u0006Æwùº\u0001Ã
tª¯xÇ»\u0001×ut#jà:\u0015æîOÒ6P¿èrñË×ôm2¸ÓJ±*h«koâ}îµ»¯£F÷§÷\u001c¸#a\u0014®\u0014Å.ùÌ/³\u00163Ú9VÏ[³\u000722L[\u0010Ó,ö«W\f&$/UVq*\tfÐ;F°®/Ѧ·q\u0018o:SCÚɼñ|¨íu0\b9\u000fé±|\u0011Þ'ÏYÍ. 5Cm;Àúñ=MmW8ÒSM³¦ä\u001bH\u0010\u001fmsA^mÞ¢£Â©}oO21*ÒÃÊ\u000fFbäT~\b¿P'7ÑDØÖ\u001aW®äO{Z»\u0004\fA\u000bØ;\u0013t£82J\u0015b^:®ÇOßv\u0014@r*\u0019o:×>\u0014·ûxGÌt/ë*\u001cF:7ÝÁw\u001ed¾º£D´\u0019{¢= ´¾3E\u0006K·<MÉ¿8ÂìiÔÁ°r6Ö!F{\u001d'H§Ü\ny¢\u0019rÍn(2RæQ{ Û»Ìg{¸\u0000G%~»¥QÜm$BË¡[Ú®j\u0003þXè59[ô\nâRAÁïywìüwrz)\u0014y\u0011hX#p\u001e¼èt!Â1\u0006~^\u000f h6kî\u000f^C\u00196}hpB{\u0011\u000e\u001a£Q5\u0006x¿Á\u0015o\u0012Ð= à £É<ó«\b¡ìè31ÜÌç±\u00193X~:ÚÂS~«3/÷\u0006\u00029ÚJ8Æ~\u0004\u0002\u000f^\\¨ÕÀvÈØýd9zX|ÿ1¨\n= S^bÅ]É:×\u0002l\u0010\u0013÷EÜ1= ¦¼Ê\nT4ÙCé\u0019håìcÅ\u001e\u0013»èZ³}\u0010\u0017!©\u001cð:~^¯ãó*Mï8rÚm}6\u001eS3#\u000b\bùÊ(\u001a%òY\u0014ï¬\u001c%a¶¯N½\u001c\nïõî/Q\t½\u0001É}I£Û£þ×Í\u0014Ltä,QM\u0015ÊÚ0la;\u0015 {Z½¥{é¹3§£:N\u0016j´¸ÆbýÖÜ\u0018ÊÝizeµvýEärìY(£Î£Ô¾oþ39hn,\u001a9øÚ¯úõyä¿Ôb4q\nÏTÊ\u0003î·ÑÚQÆï+zy¥0ob;¢Àï\u0007\u0002üÕçIòõ[\u0017I\"î\u0004Y°âÂp×AÕ\u001d\t\u0019\u0007# \u0013}\u0007êN92Ü\u0013'Ú=}Å®Õà¹Xg[9ÿÐ58¿Cke.ÓÏ\u0017#êzü=}\u0014Ò\bGk\u000fÌ%\u001bÆ\u0017\"èÏ^q±R3\n=}*@\u001aÅ@¹æÛi\u0000r·÷³¸{Ôd\u0005«WÈHÒ=M®Ôææ\u0016a!RqÄ×óÁá¯SÛ®?Ãë\u001fê ¨.ÃW\u0000§r+TSóÛ5_µ®cT8_WqPãtå!Wü= ºmµ¬È\nÒ+Kq¢¢ãgõ ËÁY\u000eb\u0013HG@¡\u001dyt]NÖ¥¼~0X+ûx85&\u0004Bù\u00132×Ûßoç¤A\u0002:$'áôÑÀ9º|:ª °zï:\f$Jo¯«Ë\u0010ÜÛ÷àSWîK5´ÁË\u0015$fÙÓ¨ÃÞ1£L .uïÇ-ê{¹/&êÖV\u001cÆcí[\u0016>£µ\u0014آŵûÈ{\b-VÊm_°S³ò\u000eÀmª\u001aQ©FlaÞñíÏW¬D©lÑñ)ðss½\u0011ÎÿVBt\tLªS+¬KB\\;ªå'þm\u001b\u0007d'=}ÈnÊ\u0018u\u001c&þÚ®4Ps±\u0005ô\u001b°ñZ÷¹(Ìýl\bÜ*M»\u000fN\u0000«Ïö:[Õ.lrP\u0014½0w¬=Mâ×\u0011\u0004sWíQx_ó?CA'\n\bZ\u0014W\u0010-\u0006òª\u001ai±´¥²ÊMZ§æ\u001fd\u000fÀZÐùõ«óZófÉÑü\u0004Ô\u0011è\\rNÀóV6Á\u001a69f\u0011\u0016~6d\u0007OgD\t\u0016п\u001do>é#Y¾u?\u001cØÞØ-Ù±¶WEÂ\u0006\f¯=M\b^\bÏèbȽqÚäqj\u000br½ZmFïâjÊ4áÃ1\u0011\u001bXÒ93OÊ´Yöc\u0005Ûj¥[Èñ£\b\u0016\u000f@!9+ÿI\fübFu#PB©\nD\u0002Ñ\u0019ÌYíuÃàÓ+µ\"\u001a\u00108q1·ìÚ¸óTü-¤\u0010¯ïiõæ)êI÷ïÑýÙ¤£.У\u001dÛ\tP\u001b¬A-|¸\u001aë\u0011u¥ätj \u000eì¬ÔåÔ8O¥\t§IØqÍB¨|D8xò)ºmÕCÚß\u001bÒ\u001ej&çþâ&}D#²\u0005 ½\u000eAf9«\u0013 Û\u001fÐÑ\u001aWï^À\bþ°w4\u001cÌ÷ÿäŦü-yÑïc®Tú÷5\u001cYQp'ùÆ×Íçj1\u0015vaî@;åQÃÀ\u0011~¶´õ|\u001d}ñ\u0011h×ébÔF\u00134\\BÂ\u0016C&\bÿé>S\u0002\u001dB0qç=}¤+«mÜp\u0010®¶-[j7ÈÁ(\u001bbC´=}C\u0013Ѽ\u0014±\u001d§\u0016\u000b\u0000=}Êx±µn!üÍ@je ¾
Új\u0007¯q!R\u0019ó6×üv$2ÐCÿÞ2!ý^o\u0014äuÏtmQ\u0013»ý)ËgÏ_¦npËv\fõâ;þª\u0012«âÍ×;sbû\u000eûoD³auæ³e<=}ÿaS\u0011ªrýô:kû
Üuü>YÃWa³'ÞF{À¼ì\u0000ragï\u0016ÞP-\u000fn£íñN¬X\u001c\u0005ª½\u0012\u0014Z43\u0005<yþ²]¡a®\u0004ã\bK[³'·\th~ÚW\u001f6\u0017xòv2ß:.\u0014Y¢v\u0010Ð|°3_+Æ×@8±+p e+©Æû\f\u0007|Ã\\\u000f|.\tg\u0000è+âT%ç#0ÃêÛ|ò4Õ®ü= \u00136©Q?\u001aоô\u0016=}Vnq\u001bæ
ö«
ø{ÕÝ£y\"ërk\u001bÜn§ÛVK\u000bý¯\u0011«¼2Ìäí½÷\u000eÁ_9¸O$6GÌljÜÁªYý»ï\u001c#ç[Þ&0¸5á# p\u001d*zÄɦ/¦\u0000ßõè{»\u0017ú-%Ç\u000b.¥\f\t×¾A?Ñ¥m0!{eõR,nÖ°\u0007 íe .Ë= \\pÈ\u0011Þ=}4½²N\\xÏnYÏÁÏ®»Ö½T¡Ðº.\u0006^¿\u001cèÝÛ\u0012.@¸u9¼pÖ\u0005Z\u001e¹\u0001ÞÐ\böxjC%fÚ\u0004\u000el1\t\u0012÷þ\b¬Ñ\u0010\u0013q
â|Tí*mc~\u001b\n4:íd;8Å\"7Jî^\u0010óðP<ª4\fïî\u0003rض\u0015gc\n\nm©°áÔ
\u0000ßjf+áÁC\u0003®êA\u0004ª\u0003iO!Ðp8!1ÇÒë-Jö9Õp+mz¸
K#\u001b\u0005ôxpGS øQ\u0018P@c1)Ó\t¢_·\u0015=}\u001cºøÁ9VÙ£\u0010ÞþôbF0C±ózHþ\u001f,\tÏÊ\u0019?d\u0007\u001fgºPÙ6\tìÒ
òÐMþz²ÓR½7d\u0004~t¾\u0003óÍw¼äN×3\u0002\u0005lVªk\t·6O\u0019@*%1ð®Ðùã͸\u001diæhÔ3é6度\u0005ªÐN:A6xðéÝË \u001f=}¾\u0012\\&¿§\u001cß<\u0006Í=MS¼Ê¬ü8\u0014â÷/\u001aÞä:ô*4Äê¯b(çi@ñ¼(|\u0001«¥M$.\u000f'i3ÖL>\\#qkºýþé;3éy\u000fM)\"N\u0016\\>'?9.Û6c7s\u0018íÒÛ)°tU9QA5zòfvèð.+þèÃÐg?\u001a»|îb$±)|9äáàgJ
aJù[\u0014ÿh:©rÎxò¼
ÿ* h5z\u0018«Å\u0002\u0001ضKÚÛ¯èß«Àú\u001a½¾]\u0011½í\u0011DØ\u001aÙ¼\u0016mñx½E¯T£E·*%eúÙ=}å>òGG7Õ.ì(ö\u001e\u0005,(lÙ\u0006³¶°çÿßr\u0014ê§@óOcZßë\u0013Ï/m|Ñ4Jô-@dbº\u0010X
þx.I*çÃ3\u001eéÙx9dÚ*zQÙP;Ò\u0016önk·µ×ú¤\u0001îB@ÇW[3îÉ\"\u001aLhó Y[\"\u0005nÌH\u00158<\u001e^\u000e\u0000¬ =}µ«|ͱ^·+¤\u0018¬Å/3h\u0016^\u0014Ó\u001dìçç» \u0002*ãöø\u00115a¿3uýñÌ0 |jWp.mÞ.MÉÅw*iìe\u0019|î¼ÂSÈÊ\u0019WÒ£éÜ
L\u001cbé4^\u0012&©SÉ«°çnx¨JgÄ9°\u0019X\u0014Xî\u0005=MñÒ?Ñ¢öN\u0011¿= \nA\u0018èWÜ õ\u001fþ5¿\u0004\u0018¡~ì \"3\u0006nßÐ׿\u0012â¨Bª3ÎNdÖb(,\u000e,âÿé®wä¨\u0004Â[ þ4þè|Çaán?C¦°¼è\u001f{Üsîb>\u001cûåxmîNúÿZ\"\u001bLß+û= ÞßO
üwí·¨î®Ü_Rä± \\Õì±g?Òst¢ÌcÂÉ\u0017,ÊE9<{{ì20Jù\u000bl{JDE¯= JõËaÿôÀbàè\u0013\u001f±Ô¥hV>¡\u000b%á:Ưî\u0012È%E\u001d3\u0015-8\u0015ð\u000b= öüö\u0001\u0001n\u0002Ñ[Q_fT\u001cpEFc½´Ç\u0012Öýc§PÄOOdâ\u0003\u000b+IÒR%Ï\u001f7\t\u0017¦\u0001Ãe¬\u001cô®9¢2Ù*4\n\u0007\u0014E\u0016òCñÔ·T¦aG¯a*1HOX\u0003®Ï=}J¦¿JæÂ m¯J1«uð¦JJw\u0007\u0014\nÄtÌñVÔkMqÛÄ=MTÏ&ïÌ\u0019Ò9}¨\u0014ânzìrµ³¤\u0002ñæ4lÔ=MÎ7l¾É-¿oÐwà\u001câf\u0012¯RìàÅ\u0013\u000fXÿbÃfõÈS$y\u001d^x{\u000fu=M~ÿõ\tK¸x}ϵRÌ&¸ÿÕ\tLæ5;\f\u000e¬©\u001fܤ{³«\u001e0{ÿ¹g«êD¾ÓWFäQ ù\u0011]±\u0016koÊ\u0018BÖUÁ!ìörH~.\u0013L\u0013Hþ\u000bwq>\u0016nG\bÂSÕ\u0002áÁÜ´';§§SÕþïM]Ê\"p'ÚÅÞ«äÕãZöê\u0014Aè(¦\u000b7fa&ÁÜ´§BçoG\bEñ¡SÕ\u0002±üµÁÜ£1;Þ.t±a\u0018\u001fJ\fö\u001cL\u001b\u001f¥o:]ô\u0002áÉÊ\"\u0017¨ªh\u000eì*GÑ=} 1\u0006\u0005Ù\u0001BW'(\u0014ßk{T\u0002\u0014\u0003\u0003ξ!ñ\fi2k˼´wô\u0003|&¤Õ\u001dê·\u000e,Ú=M¡oV¡î|8H\u001e\u0001ÔùK$¥J(mËß\u0011ÝïOís¹Cÿ½a\u000eu^<ï£Édó/%í²Ýá'\u001a\u0003_dKÉ;æó}\u0000:5®Ì\u0017\u0016\u001c\u0017?9ÈdÒ¯Gúa\u0003}{=}¡bG2\u00123bØ26Þpâë@QÃÞoÜ«\u0011í¸Äî5
ß:\u001b¶9¹4¨·ó5}A·~¯m¥©ªs{?\u0019ÓüôZ3rèzÔUª¬<ur¥}uµmT\u0005{~\u001fc3!ºù(h$ÙÄ5!8\u0006Ýö¨\bç½ý½lÇ·\u001dü^VfÉ£i§\u0017³væ·3Bm;«\u0012ä³ã\u0019VÁ\u0007©Òò\"³ñë\u0014íëß\u000f\u0018§T
¬ý¦C\u0017ÝH\u0019éôtàÔ1¦<¦e¶\\qÚ$92¦>-oO\n!ú)h;qS£Ç@²äÃÔw\u0005×Õê99©\f¯Oñ\u0016^á|mæé4´áíiñ\u0007I¥\\¼)±Ù=MÛȦcîõy4~1u\u001fh\\é=Mò\u001eðs=MËh笹ç ¥\f\u0016\u0019Ò$IºQfK·|ëpÆ©{Ù3?ñê\u001d\u0001ÑKòV¨ôÿ½\u000eªÝyÎ'¯4oôØäï§cX\u0015\u000bfy¬q: <|µ
ÿ9\u000e$\u0005\u0018\u00149jÒ[\u001aÙÌc\u0004#KHÜL4&g\u0015|ÎÝ&\u0019°¥ô££Öþ(µØ\u00182u3:\u0012¾Jpt\u0011j\u0013b^/X8½Þñ!°.^Î97ÚØ\túÉcDÉ\u0013\u0019P0ó\u000b\u0006ï\u0001>Ì~y5ïÍ{ÿgµ\u0019'Næ¤ö¾\b+ÙÊ\b\u0002\u0006îiìüXRjàF1Ïñ*\n>>¦s'ÉØð§ãñ¥A<uÍ'XV
÷\u001bFd}^ÿÑILÖÓ\u000bA\u001dÅÉL^P?Y©Oð)]i$pÿõ\u0019}/Là)[Øk¹Vìå6ÃÙYï0Iß#³{\u001cÇ(ù*1$\u0007q?àôb;Mì\u0016ÁÜ´§=}qpG\bvrH~.Ó½\u0018kG\bòû1G~.\u0013pklG\böÁÜ´'u\u0013\u0013ko¤\\sñn\u001e}}\u0000Ì_ÜhùåÌ7\u0015oʨ»èVÁ!ì\u0006à£YV½èTÁ!ìL\nkïF\b1ãËÝ\u001e}ô\u001fÉFàß2¸½ò¿áW±RÄËÐðãó¾!òýù©\u0001\nN~%sL¬cv®)iUïJ«]R¸yJr\\xÿ\bö\u0004\\P¸i¯e¿)Jß\u0016ÌÂM§ÈñI\nLUz¦\n1µØ,5ôq,:\nE\bC0P$Î\u0002¸>Â쥪+8\u000eÌÀ\u0010\u0011]R\u0003\u001fPļ£cÎü´éÿôÚ\u0018\u001cÄ\u001f\u0003î\u0004?sÜ$ÿÆSÇDô¸]O\u0013\u0000yÎ-j¦*<a\u0002¬ßıÔ)é)%ÙéT\u0007GB\u000e>]åC½;DbM_ìOÎOCKà»O c\u0018è\f¸\u0018~)½=}4׫گÙ2=}!÷\u001e´âø\u0006®&Òsªï6³ªh\n¶**\u00118º7¨;Çÿ2Ù»ªõef^n^n^^n^^^y iµ\u0004ÔÙ÷Ä>ÍÒ<.ø\u0003²±,\bÀ6<\n.V\u0005RF\té ü\u0014Ï@¢®gsÖí\u001b'UQ×tF\t×@¢¼@¢QÜÂûd±ûxªÐ\tÉäH\u001f§¸Ú+\nÍuBý*\n¬E¤´a#±¯uÌy\u0014ÊQåÑÏzâØåj¨sPðÉðn±\u0000Õ¼£ááH¬óGsz¶5$>àAÆb\u0011T§¸ß\bäÓB\u0002÷ûÀ\u001cË
{³á
½À\u00195ÍÞæÓ\u0006«Éz5%Úþ±c
*|ð)o÷ ·\u0006Kôàþÿ~\u001eÙc0>ãvP«A°\u0000K8·\u0014¡¹ÚªÑÖ·ù\u0011gÆwÆ\u0010Æ®\u0005,céuÎæ\u0016\u000e´ò'ü\nÈeÚð\u0011?e\u001cnojÉGþ\u001f±â\u0015\u0012RÙòõòõ\u000b1\u0007~%îPozá>zwVÊuR\u0004 âÞR[¯\u0011\u0010¥J%ÕS\u0000æW\u0015T_Ñ7ËWø1*¡=MÀYµ:¥ðZ·üø\u0000¦Âõ3JÂ5ýü¤Füº\u0015QÒªÖ\f\u0017\u0000êBvQ\u0013\u001aT²ç)Û\n%\u001fçI¯\u0001«ù\nõç\u0011°|Õ\tïiÛ
ê~b\u000f¼ZQ&ûÕN²ù\u0017C²(^Äv\u001a¥\u0017Äëk\n§.øÇü\n\u0019Ð|Q= á&\t\u0002!I$\u0015±bö½Âí\u001e9îmÔ ¶IyÖg×!ļi\u001d^(¬³ó\u0019\u0004x}5'&¶\u00102ÎgL~à\"ÙÏã^ðãD~aíBÄø\u000f\u000bãS þ\u0014<@4¥è»\u001d
i\bäb#ïèUÑUhèÏ\bìªL[ÙQ]©â_Hi_¾°Yîµ7vn¶ieÕØÈF\u0006\u0014³Ê\u0002å,èt\u0012\u0011KýKÉýBS&\u0015Ø\u0010Åw»0¤Èlû\u0013ͼl£\u0012[= ø5»\u0017]a8bÈUÎ-,zDÜ«dÏäsQ\n¹.Ý\u001dõã¡c
\u001do$'ð§ éÞT-¦æm&Ã\u0006±äÄ1ÊÉLC|(\u000e$àÛCسW/¸â\u000bÉÇ@â\u0018A\u0001tVb¸5À\u001c\nÝ%Ë\u0019Þ\u0005ËѼjÀß¶ÛN¿\u001d2\u0013â\u001baä_oÃ\u000f'°^ÓåÞ\u0005p\u0012\u0006òÏÏ\u001aý\u0003óJHð¨\u00156ñ\u0000 \u0012â×xà»öX5¯\u0018;|J Ⱥ©\u0015(SèþóMZìÞ+à#\u000e·7¼£\u000fW»©6zª\u0000¯w±ÆAHcËæï\u0007øÝÈÐF[\u0006þ\u0017\\
Wñ£Ò¨Éýóª<D éä;$\u0014-=MõmN·ç\u0003eF\u000b\u0010\u0015³ï²½öaÎX´.&ICÃ~üK NßÚÉXKèa2C[ñ\u0011ëÇ\u0014Y³Ì\u0001\u001eø\u0013öµÀvÞ\u0011ÿRë\u0007>S\u0003J®sºîÜwûöHÞ [8Y/£ä2\u0007ϾÖr÷2ûFI÷@+\u0013óWg#7,åûd¨×\u001fÞyµOÊ wë\u0016¾B-~ö×/X3Íè|êÊ\u0011¹\"Ê.A\t¦\fó\u0003\u000böDYêÖD\u001a\u0000J»5èI0*U»}:]\u000e\\X\u001b]*»>Béúûücv= }#å\nâË\u001aª27\u0019,7]òÛ¼ìñýWÅ8'¼\fê\u001ce\u001c~»7¿ªFËruÃâWë\t\u001f\u001cÄ«=M= ÄÏÓXI\u0012óoN8->Y/~6H_Ð¥Ä\t¬ª¢c]d)Málúr57§k\u000f~¼÷aÃ\u0006ÍL}WE;ÄÛG~Mê\u0005榷Å'D\u0011^ñ<zJµ,ÂÅ8ùÈ©^ζËõihê\u0010?´à¿åh÷÷\u0018\bD3Ô2ëhð\"èç°í½0°§Ä ëPHà:Yj\u0018uû])²®\u000bØXÞÉ\u0018ç]Üiù±Zp}ZL¾r\nIñ>\u0001ßv\u001f¼>O¡W}kbêîô¡A\u0016IزuïÖãíå¢Úpv¿!\u001b_ÿA¬¡!ò\u0012Ë\u001851\u0013@\u001f\u0014B¯~¨\u0015QÂ\u000fQ¦G<ÜclHôµÓÊ\u0016¶=}©T¬3*ÂDà\"ÃsI&\u000e=Mî¦
ª\u0011 p\"E\u0006éj\u0007Ê\u0016;ÑÂ}¾¯,¶.\fÞ¦ò\u001aò¸C!^\u000bkLØJ\u001c.Ð%~Á:ʹ\u0006:xJ'wµ+\u0010z³TÊ%\tÂ+\u00136zjx¯4ÂgU\u0018¯¬ç¨\u001fÀZdútÚ=M¯^U¦\u0015rNP\u0014ÔæO£Eî\u001dÖ÷i§Â*ÄZþ^í¿\u0012Þ£|þ\u001b\u001eÁ|:y&{6g(<«K-Y®ûðz©m\u0011-zQD¢ÄÃÅls(Ù$ÅK-\u0014ë3\u000eÎe´Ô\u0000j\u000b-\u000b¼\u0015µËüÍTIT\u0002Ð)¡âZWäVëã\u0013>Ûß#Ü\u0003\u001f\u001dÆo3<= 2Ó£¬è\tZt\u0001Ft\u0001\u0005Lüªó#Å\tCt-é\u001f>¯¤\bË$¿ªBex ¦\f£õÌ!Ég\u0014©åïÍB~Å4\u0016¬\u000f}ÊÕåÄ\u0016Ñc\f©þ{¢Æ\u0017TêU!Ò,Ph}ä~\u000e\u001dô\u0016çé\u000fU©h½Ð=}_0©ïþFn£k¨ÓýVFéýïc=M\u000e\u0001áv-÷\u0012Vn= v\u001c¹Å\u001eg͸^*5Ý$¯\u0012rÜ\u000bÞ\u001cRÄK&ÊfíåÃKÈÄA¦\bò¯9iië:Ù0´\u0017\u0000\b.V\u0000\ff$= ¥í\u0011. òùØË\u001fM\u0017IÆ«¦Ëý0ËõW6õ\t8\u000bI¹]&kóNgì3Û¶\u0011M\u0011\u0012²«hc.ùN\u0014= TF%É1=}Ô;ñ_Öº6@Z² î\u0019ë\u0002\u0013¤pò6]©rcº\u0014\u0017a¼o2ç¶á¡YçdḎH×6íãí/\u000e\u001bf¹°\u000fÖ#͹G=}\u001cˬ\u000bQ°Åwõ \bùYY$waì\u0000ÿ¿³\u000bħ\u0014ß³\u001fº¸xù4ÐøÒ¯)Ãé*-±\u000bøÐVö\u0014F\u0001é\u0015ñ#ðj^´¬N Ã{\u0006þ0ø´-\u001dvHDå)LN¡ñ2¿ÇIܪZ{\u000fÑ ë:B6ßè>Ø=}ðaÃcJ-Á_ëâÀïþÇðï\u000bð^¿åN]ÆX¦-Ô¼^&¢\u0002j\u0015~óFÅÜSÕß¼l\u0001 bR»BØöÂÍ^<p$k(kCÚç§=d{()ÌJýv\\ e*XÉ!¢)XÂ[¿ëö Êü¢JãÛW=}\u0011±«öuï^TÔ\u0005â«9¹O$ßÖY°LtZØ= qåN2U\u0006Ô}îÓÆ\u0017¯\u001b¼Éà mÉM1g%²½£\u0018\bhÅq]\u001d÷h¨oÊ$\u0016¼e\u001e>B\u0003¥]e^Ñ'Q\u001fÿL= ó¤J¨yÉ\u0014 \u0015õ<ÛJDá\u0010hG\u0000³d[bñz-\u0004w\u0002WªxýÙcö
c\u0002ÎPÆx|«AXÚÎÉRLæ\u0011\u00113c\u0014Á+ôä\\0Wyâ?î@·\u0015aº3\u0017z\u0000¦Å\u0014Áp³\u0019\f=}\"\t \u0011Ë= \u0000\u0017L\u00140¨\u0019ÝK¶Úõ\u0018p\u0015\u0013i¬Y{\u0004\u001a¸\u0011#ø³[¯zãBw¿øØ\"å\u001d³ò\u0016\f(mpß³=MI\b-Ûp´\u000b6\u0002\u0016\u001f9¬°Â\u0007e\u0018<JíªíXy\u0004¶)k\u001aô0\u000f¦8\u0006\u0010»ýmIó%SÑ'Ov³]ó§\u0002S|M\tòs\u0000z\t\nËÁ..#ç\u0014¬A\u0012<ð<£ãOà'\u0015Ü\\ò§\"
\u0010ù\u0007xÓh*\u0013ÅPC~\nÒá\u0011(a?-\u0006\u0010ÍJtUÿU?
=}ó\u000e\nl\u0019Öö\u001da\u0003ß.\u0007Êl.f#þxñü÷D²WdÀ\u0002Tæ7ÔÁ'r¬\u0003Yï6\u0001£ëö&©ðÎ'ìÎð\u00159(G\u0018©òä:·kãúñêU\u000fà\u0015s\u0004±=}àÛ¢Ud¸\f!;PN4RÝõ \u0006\u0010E\u001bKå¦\u0013í¥ë iuõ½ï\u000eÕ©?sx&ÌËjï=MÍè£Ï\u0000zÞ|\u0010\\Ùâü%Ó§¿Ííà±Ço³×Op\b{v\u0002µ²Ä=}Å/Q£Ig&[UèY}oòÄ\u0011©.¥>½ö\bÔ½ÃdRN:Î]\båjW'ÃYÒàßEqJòuJtBéd\u0017IvR\u001f\u0010ñy\u0003ÂÖe?í\u0006b{ælWÆû°uÙ3-ÇQîfSÿK²sÉÃ$\u0014mm!¼MTª(·\u0001Û-Cß?-\\HXÚ=M\u000b\\é¤JÜô¦5ta,\u0007}\u0016Z\u0012±Í¨JÃÑX¢\u0016\u001a\u001c¨ÀÌ\u0016ÝÈFk@ª)\u0016\fÄK®YvÄ}<h%&³ÀCn¶ØEß\u0019#êöp»n\u0001¬\u000fÉäNÓ²WA>t@f½l\boso{'\u0019òÉηøð§Å\u0017¶=}ÊûN
J%ú/\u0003%:pû¹\u000e=}'µ»\u0018K'@'! åj1l?3XF\u001b<·Úå¯nûܹ\u0003jA\u0013ÎFë »è®ò;1û Ç÷k{óv\u0019îæ\u001fu{°\bq±û\u0011L \u001bW\u0015ùXö\u0014ñKnî¥\u0002©ìM¼0\u0006ügUi©X²\u0002{¶vÒü\u001cË\u0002uÜ| XkÛÆmø÷a\u0005f?÷\u001b°\u0016ªBé¶@G\u0010#f\u0010ç¶ÛêHßQ\u0014¨\u0015õÒ±Ëà¤\u0014\u001cà0§H¿ÊÑÌç* WyTf|éw¼½2=}®\n ÅÃÔn\u0019VãoM+¨±fZò\u0015|ws´+\fçÄ6Kd3\bJÊl¯\u0007Éf¯}\u0001ï\u0003Ä\u0018^̸¸8'Ãx[V ¦õ\u001eÉ&+Ó\u0006\\ÚÜ]©ÃIÄ\u0013^©u]3v'?ê\u0005IÁpSy\u001em\u000fÒÙQ#Â\u00037sæ¿¿ÕÞýèIt£\u00011ªÔ=}Xàv\u0007$Õ\u001an¬Æþç-\u001cµ,Qñ*\u000eÀ·7w\u000bʾä
û¤z°á×K¬¿ÐtÝpWÌÄÌÂT óBGJ¦XÄÐÃkÜ\u0005\u001d^é\btpï\u00003·M\u0002êo¤\"Æ\u001d»(Ä~jr¦æàè¨G\bñNß(1.©\u001ai\u0002õË=M©ÁuµSKù\u001d¹ãÝÐ
~ä¹s;\u001e©êѤ\u0000rw¶O«m¾ùé\u001cÜ¡\u0004Ú¢ÒÌ'\"°3³ÿM{v*W¸\u001c¶]\u0014¿ÿôè\u0002xBÖÛO ï= \u0005;n¹Îf;7:ÝÇ1½cÞ¾\u0019\u001c¼W+Ã3¸)\u0007ÿRHñ¢ÞÙ\u0010ô¢¨\u0018çt[¥Æa£h\u0011ìl,\u0019 ~Ë\u001eäÔ\n7ª=Mû-ÅàêÒx\u0005ýað!g\u001eG\u001cÃÿ³Ë_½)ýÚÅÜ %#ay!WÔxÀÀ\u0015ÝåTíϤ¹®ø;(gU¥´\u0014(ØMȲ:gªýü(Ï0BÝc\u0017×éË\u001b@\u0015¹\u0013¦jÎoy쯶'½a>õiKÂÓ÷Åc$ÃãöËûÏy_UÏwø{ÿm«9\u0000?\u0010\f\u0010cÞT#M\u001dê8=}¶Pôì_#µýì7¼c%?gÎ\u0000}Õ\u0015üéÖÿ\u0015mNÐ\u0004iF(ã\u000bq
ç\u0015oxh>\u0014Nä«Ï¤&È\u001bkûÈ´\u0002í
´¿ªÕn?èÀ²ÆÿÔxoÚi÷ÃÚ\n]Ø;$3DƼâW2ÚÝ= ÃBdQ}ø
±W¢Ü\u0019\u000b\u0000ZUNשð´rr+ËÏ\u0015²º$)¨à>ê=M&Èt¬\u001dË,º/ê\u0016|ÈÇ*½U®\u0013î*¤ïßÚ=Má!$9\u00062Õá\u001evJ\u0002\u0010\u000fä\n°\u001d\u0004ò5gqa:\u001f#D\u00138\b¹ÈXq\u0015øë±Ã:°:ô>+K¨U°*\u000bYnçÑ\b\u001c:32ùuÀ\"öë%KæP¯]v\u001b\u0007Î%¥§\u001aÑ×@üþ±Y×Òd\f!ÀÚ_¨éH8ÄgÖíÙ\u0005«´\u001däñ«TÀW4*
½\u0017\n4G\u0018?ÊRÛÁ[ý©L@§÷MyjÐÎôzG{¯ZÏB¼[UGjmGÑÛcKÔÜýH¢>Qì\"^Ý,XÇÈ\u001f~ÿ[ ÷\u0005âÑÔ«Gï/ò[3Ëm<¡IS?º\f+R|+¾í½ú¯e3Æ¡½úC½z\u0001\u0002Çê@ºÌM7ôx÷cC9µAç_3ÎRÉ]ÃÊÃ}üò¦?ºD9^\u001dzÎq\u0001ü\u0017:s2\u0015k½¸|9½¨´\u001ex!{hÔ\u0011\u0012_\u000eiû7-w\u0000ýsÅõ»zz¼S R÷-²ma½üDy~½E\n\u000eY¶:qgWýURDÏjr¥ú>ÏüP²¨!ê=Mº_¦æk\u0007Ï\u0004צÏçØmx\t\u001e,1\u000f7Jds!¥á¨mòmý\u0004}ÉÍêÙzZïT\u0010ò%¼ \u0001óõÓµÁQ9Ôõ= §òUB~Üáìsæi_\b.zWb$fc+îÏ$vD3ôì\ti3u\tz?ªD/9k¹.r¬ó)£êðY8\u0004ü¸£\"BÆÁ£Ô¹Ëd¬jhôc¬¡GÐ×5u³Ð5è\\é4\u0013-\u0016\u0018ÊsàlT2ºá¥øÉÜ\u00196n6°Þbpw !×^ßdeÛ,cg rääÃqÈ\u0000\u0019·1¤\u001fÅ^\u0000\u0019o8\u0000\u001c®â\u0013¦dæWÂßTÎaF1sºíD¶×ø¯\nZ\"Ü\u001c/èïúÝ aè}Ååãòl\u0003êÉA\u0001îÄ<óª}V=MbÏ>OÉl¥+ì'U¢ø¨\u0007Ѻ?ùZ\u0013¦ï³»ºÛI©³+ÈuóÒ
ÿ1,Ü머Ç\nY\u0005=}Dµ\u0004¤ç:¥\u000eáTdL÷Ï ï¢ G4¨\u0001Q¾îm1ü\u0001-ô\u0006îûYV\u0007=}æñoF§É·mO¯¯tÞx= \u001b¥(
ôÙ¸\tðXå©Ü5XF!m\u0007ã^½
³\u0018\u0006'5ÁïF×¼\u0016å×eÂc\u0001kyß<\u0013QÞ,h\u0000òo·\u0016âªãÁêº4\f:¬kçÑÖñÂãNP\u000e\u001c»QÑ\u0011 Xy°(\u0002\u000b¯°\u0012ºm\u0012ö8tb[°
rH]\u001f=}d\u001e^ØKäà=M\u000b§¾Ûä\u0011~RîûYpã\u0000¥\u0006A©ð©qpµ\u0010î\f3\u0005 (bèÜÿÜùêfÝÌ®F°I0H\u001bê²\u001d'/e\b¶\u0001éàÞ,Q:À)#Èi=}\u0000$\\Ê\\ÿù]\u001aÌ\u001d<ÒþMÆ\u0006¢$¤ü\u0005o1X¿÷9ÇHLlÑkÑÌØª6uG\u0012¶>²ÏäTÝñ\u001cvÔ\u001bÀwRa\u0005]÷p\u0017x\u0015Z\u001bì¹\u0007ð>ëê¤÷ü= ÌJvÚ¬Ø\fA\u0006ÄáÝfçë]þú·ÚÇVêym3pÊÚÀD\u0014zÇ=}U\u0007\"¾îÇÐhP8˹\u000f\u001a\tr8_ûL\u000f.ÕìÑ^ªÐ%\t¹ò쥿4L[ùÉcÛí8Ä@Ðhå1Hå\u0012ãYf¡hê6&ÈÔ¹~åAÇ\u0016ÿ¶ìï\u0018\u0006½,iu¸+{\nÛ\u001b0Çó\u001dæ8ÕãѨz3z?Nýhg1ç^7\u0010È·= \\\u0003ØwaV5\u0012QÅ¥FöÒÂÇ©Q'³%cog\u000e\u0004ßgÓºÂò\u00138_\u0017uÚ\u001c
ó.ĹS¥©\u001e*¬h´þ¯¬\u0007²v2z-Æw\f&[ÿbIû^\u0013>;?\u0011ùΫ«nTjÅJ\u000fÑQëóÈãÖ_öÔH\u001deÞ\u0013®\u0006ËtǤSÂ\u0007pnáøó¿ÌuµØ~\u0010YPL½y4æÑ;!:«¸-ô\"\u0005=}Ò\u0019±§»\u0013\u0012X\u0000¨Ýñ¡Ì§>\u0001Uâ\u001e\u001d>Yã\b¾\"çaFfe´·6e.Ã\u000e$NÉÔÃ_ü÷ÛßË:ücó'¬ð[øé.à\u000eú/hè#Nyq\u0001*¢½ûÀá\u0019ͦ\u0019Bq!9
;ög\u0002MgùÊ«®ºÊ$£ûÌ̤K[Ïnv(ó\u0001$±ã\u0007âÉÏ-\nú{ÂÅ,<ÊT8ö\u0016¤ê}æõq¤!aü:ʨÔû\\¹\u001fI}ë\u0004T5Æ\\Ïiÿ0Q\u001dEïµ*ñ\u0014Kh7b¾g\u0015æ'ÐÂ\u000ed\u001f\u001e[§h\u0011sYàm£¹\u0010KP®\u0003pýîöñ輸[u/Ú¸= \u0015Y6 ÀYu÷²ÖÖ\b]r[7bmj¨'æjò\u001eà\blM\u0014O*\u000bÇ·¤ñ1(\u0005*TÙZûÇIîiÁþ\u0011.ÖûS6Õb6yYì\u0017Ò$©iêãâ{9D\u001fÖ[\u001f0t\u0011\u001e\f*4\u0014ÿÐ\u0006zº0ð*µÝJ7Ð\u0016Rbå§ \u0010G'Ká\nè2xêy.êä:kñnËÞ8Öú\u000fu\u000eqh\u001dÛâ|èä(Æ\u0013\u001d5õ}v\u0013÷êÍF=MîXé³mî´ü|pî´Ìõ\bÆÅ\u001dµÔ\u0014÷\u001b)jDo
L¾6ücÖtÞÔ,Æ3 eð_Ä\u001dÏ.3,VöHDN\u001eå@ÔIØ
hÈ1¾\u0014¸ô\"§wt]C\u0010àñìßï÷\\k\u001bò\u001f§Ëk\u0013\u0013¡áÛØ<vÐJÞQi[\u0004ÂÇ¢Nª¹á¥¹$\u0010t¹Ða\b&Á_\u0015r5×hzM8%\n\u0006\u0019Î\u0014f93é.¸E¿ÒZ_\b=}̯ܵ±ü\u0019ù×fó ù2½NQXEÿZ ìt«î9^z?êfô0Hf4ê\u0004êfá¤>P^^'Öâh䪽\nà§÷Ê\u001aZ4t¯.\u001b®'c\u001bÎ÷þ!%n/\t=}¤=}}Ú²Sp\u0016êw½\u0007ËÖPçT¤õߪU\u001e,2õVu\u0018PT8ÌÍ!YVÕ,,]^éyào7=M\u001fRÇt]=
.&ùdD\u0005ÒhP\\\u000eã¨-FRÆx3´¿\u001a¥ûOªÄ\u001b:\u0004{·ª7A=}\u0011ÛEx¥=}VîAOúõL*þ¥ÑÚ¬,t .²ÑO\u0011·(ùqò×Q1 Iì(é¡U©ª_L\u000b÷¼Ü jmªÑm_{ÞQQõÔ}óköJ\u001c%¡ÚL£²ÆÓ\fu\u0005SU#z\u0013Ó*§\u0007ºl¶8B\u001cÐ\"@b\u00023ôÚzbÛvÈ\u0002dÓÌg&áê\u0006\u0006ühSÍw3\u000eÈ[©tÄn*\\2¢¦à\nv6ßy\u001bÜ0Íw\u0002)à×èS{Ñ.Ò¦Íæ Ù\u0015bµîÑ<eá_ñB.½®u÷\\'&n\u0007RTx)= Í=}-ûô\u0006¥Í.>éô5)\u0019 'ý\u0001¨êëç\u0016õª·õJ+mvä¯1\u0013\u0001= 9×µÄúb3®:OaÌw;\u0016±QãJ\u0016t= .÷\u0004g\u0014)\u0001^=}%9Òwq9D>èÅí:9º_À$ÒÁ{c\u000eÅ?°Nzí\u0007ø~ÊY8Ä)#2b°µ#¢ix\u001f3ñÈiæ9\u0012z¨ÿJæäë%\u0005<êR MÑ\u0005ÄQÖ\u000f2Ô\u000f½aôc5}t5ìø#Vñb\u0019\tIòj&=M¶Êwd!\né7\u0017[ÀÚU\u0011*l6\u000f\u0002¸ïÙ\u0006©¡NIn%ä\u0005 \u0006Ì%\u001fGùÑ6¨ uo·6Å\b)=}Pí\u0004ÎîT=M쪤){èÐSX&P2¿Ü\f\u001fÍvHÎâ¶Á3ÇÌð¹õ-\u000fêÂâ©s¥\u001b¾¨ò-õ£seø\u0019«OÛÝ·ÔnW@e¤l4¯\tÏÞ¾Qj\u0012AÞiò\u0007Èë,òPGPñ¾wfQdSu^ïÿ+\u0003l\u001c©ª£¡\u001cEõ£){æ\u0019 ìð\u000fðõâ\u0010\u0017¡ÿ¬\u0019 Ôé\n£¶p¾l\u001dø
w\u0017\u0018\u0018³= ¡Km=}û5Hà\u0012I§Ò%S5x÷i$¡\u0006\u000f;ÈwßôRxfaðZj&h6\u0007\u001dæé+4²è\u0017þ\"\u001añÐ\nú¤ UÚªôÆß\u000bذ\u0004;¯Ê¹¸ùʧÈÖß\u0004oÑZ!ÞôÙÙÊÃ\u0019¾#\u0019·/ÙÀ#P±/·/\u0005}¯\u001a1®¶¸zÉöóýaaâ%\nâ]\n\u0007÷^ï\u001cCÙã¥þ]\u0014÷FvÈÅHÒJ÷Ùñs¦ÖGúìtp\u0004»²Xæßñ 3ÞF}Ãé\u0002D½~Úk\u0006í\u001a]\u0015æd®ã±êµ×èÑè\u001cq\u001c1%¹ªÓ\u0010åÌÇ\u0004-ù\u0014µFøI´ðìeò3ëí\n\u0002\b#1ñ)\u0010\u001eì)\u001eÞ÷ÔÊ0ÐÊ\u0010ÈÊÐØÊÝ÷D\u0014\"¢×û\u0018>ö\u0004Ñ X>>>éÍ5u²m¦Ì\u0006d\u0000lÏg=MFSô\u001dS
QÄ@׬G\b\u0002\u0018\u0007ó^Å£y©Z\u001eIdÉÜÌýwË\u0012}\u0017E\u001e¬G\b\u00020Tò\u00020R\u001dñSòÜsÁ¡¬ßâ= É÷Ù¨+Ò_)Mv«<\u0002§(Á\bQbùÀÇ=}Þk¨\u0000jl¿Ð±ðØ÷ÙjÕ²\"éñpÑ\u0007\u001a¤û\u001dر¸\u000eØ1\u0014\\âÙ\u000e= û\u000b÷áù\bTn¯8 1¢:«çùdõ\u0019¦ÖÝ'dd\u000e1&\"w2\u001euù$Ì$Ì%ü\u000eÕÉïÁá\u0019\u0001~E£ÄâŤÆÂÚ¤\u0000J\u0006Ù\u000f©\u0000¡¤î= Wxòý\u0018%\u0005\b=}Q\u000fÚÄö\u0000ªÖþopgÇ Xr\u0007*ô\u000e\u0017\u001dMR
#\u0005ìmÕ\u001a§Íõp\u0002-¥Æ\u0019ÑaòÿL¼ÿÑ\u0014ͱP3;\u0000Â^W])³Ï\fãþm¨\u00158e»êÈÓ=MJUðPmr\t\u0015\u0016¹-=}®\tÄy \u0010H LúR\u0007X(,Ð:\u0010= Õ^',Ön¶jØÜi\u0016PW2(Ò7©<:\u0007\u00184Ê:2\u0001N¸Í\u0002Ê8²Ï.ýI4·I\u0012\"k¦$ôq{ \u001f\u0001\u0005\u0011øâ¹f ñe1h\u0012ªQ¼[_é2NÈ´jQ°*YÉîÍÏ\u0010¾ÿÑ\nÍv@Øiú!zÚ.>Ô\u0014Z³b]@ëú\u0016²çÝ+ ÑFP¹»áEZ¥4ÈJ-\u000bÛ£-\u0018\u0016ºzUØÛq3= Å´Ôw© P±\u0010-ÊQÊfYcÊ×Á\u0018_~%*©{\u001dغ)à\u0005ÀÒ\u0019÷ø'Ö\u0014d¯Ý²Yíì»Ço!LÍ9ËË\u0018$+À5)O½È¯¡ÉzØÊqAaûÔ\u00024\u0001IæÊxâ&[CÊ.¥iÂw×9iW°ÀC¸(^'\u0013\u0004©\u0013ÇÊTº\u0018L±uvýÀQÉënðÈ¿·ö!CvH²ÇxÎÚÉ\u000b5Ò\u0013\u0007Ãy\u0017¶\u001fôÿú\u0019\u0010ÍÅ-\n>É\u0015ÿHìæ \u0002U\u00044ίþ§½\u001eûmÁÈÁÈ&mGx¹¨\u0007¾Tc\u0002²Ø\nª|\u0013ð(JK¡+BN\u0010©ÅÝ\u001bácÕ®O\u0010©ÅÝ\u0015öd}´sã¶Ð©~\u001eÝî#{µ/ÅÚM8özÂ\u0011)$WÜbªÀß÷Ùϲ$Ì4Tú2Ö©q¥VµCÙ%<P\u001fÓHùQ^\u0019h ?ܳó\u0014Þ38_Ó:\bMu´[@\f®2\tÈ,q~\u001b\u0005\u001b*:C⩵϶i¡Ø
\u0014b´_õRàag÷\u0002Â\u0001Ö£á=MI
Ã(\\\u0001|MdX^¥dÞH¿¯¨®ÎEWöroODlÙ¶£¥²\u0002r±íòq%@Ë}\\âÇi\"PÖ \u000fàÂôÆ\u001c\u0014\u001dß®YZ\u001e¹£Î ÞLð'7}=}:¢\u000fÿÊ$¬¥ßÐ:£v\u0005| M,¯ÚE¹y5§ôLóx\u0002*Ó¶¢\u0017
𢩽é®#\u0012;8@ðn5;
UI¾
\u0001w$\"-ÎÁuµí±ÜÚ.\u0013\u0000Jû2¦ÓBì+²¢!Qȹi\u001d¤Öù¿ìà ÿ¹·QlBa!¤kh)ý¹Rª\f¿}I2\u0006\u0007gÔ×BԯϬª/\u000b@õ¦*;iÂØëÞ\u001dpÝ= \u000eÝÃd$= ?¦OrQнÌ\"\u0001x¤Ù\u001bR\u000b²\u0007fòW*s8|¼¸2\u000e\u0016Ô\tõ ÂcÔQ´\u0013\u0013\u0018\u0017µªôÚ<
ã6Ñ\u0004?{Â\u0000j®R\u0002j(ÏKáWë³½Ó\u001aÛ[\u0011¢\"kaå k¦Ðwï
\u0012±bëýF¦\u0014Þà\u0012YvôrH¨Z>èç/Å¿ËTtº\u0003ã#:}@÷\u001cæ(\u00132Ö}væ\u0000\u0005} \u0002ÑØIx\u0018Õ¨NÏxú\u001aÿIMc¶Ò\u0002åwtJ»Ç¢Ð>Q{Ôòh.\u0005ph.ù¡]Ƽ\u0017Ô¹&\u001f¯áMÐy]LÌÆ¥\u001fµÿ³·á*ùP\u0018w\u0002ãSÛ|\">4·[U8\nI®ð,õï4\\\\A\u000bÿb\u00055+]QRL&5ãh\u0013\u0014£\\ÆE!s1Ïı+2pÓôÏ\u00169¶ÖR\u0007¡¶m)\u001a\u0004\u00035!\u001c^PqÏRf%\\hR'ñ\u000f«òSßîÃ\u0004\u0001ÍH3íÿÌ'RݯþÙJñÝ©\\\\PVQÞ{ewjÍî=}Må\u000buç\u001ebÕõ·Ð?Âß\u0007mì\\\u0015¡2Î\u0015\u0011d©EG¥G= Ê}-\u0004¶Ùw¸R\u0004 ¢zy(Ï\u001f¡X\u001fê¿q½\u0015\u0005ö±»ýø6v\u0012ÞÄ7«¨¹Ü\tØ\u001b=MÕh {çÓ]ñ1)%Ðj£TNq\u0014õ~r¥à×õðè¥\u0014®x¹Bû\u001cÛèb\bÍ¿õ-Ò¹Òæ\u0005\u0012\\¤_B\u0007AýQ±¨4²|×>9WP®&ÊëMèØ¶&{ÑîGb¢è¦=ME
èÀ¶eî¯a=MáÓ\u0007!\u0003jvñ#ÝÔ¦D¨¯|;È\u0006RRj\"éFÅ{\u0014\u000e1ÿ\u0010Ïr<\fÑÄwöå¾zÈùÇy© \u001d13'&7x.uzØ\"\n£JßóÀ@ ù~T\u0003MS°\b@Ù\\ê= óe\u0013%Ñ\u0012â§\u0010mþ÷f\u0000RôAäêtjõ3Iár\u001c4&¤×ùÍÜ´¼Ý|Õ¥\u0003ñ³ç\bBä!\u000fvØéXxÕ²§D\u0014ËR<=}~aXuä·%Ì\u001a\u0012\u0002 Ðñ\u0007+µÁº\n%*\u001fg(Xâ\u0003±3÷ñX0ËOÊGË>Å=Md[[hg®\u001c1·D!v&/íjo\u0004ô®bü= T?iBÔØ= ªX+\u0005óq6Eô\u0004yã\u000ba·ÂX\u0011I¡ªbp¬{q¦-¤Éõ¢ÀÕgÚ\u0006CD®±±¶ÑN\u000e?fÇ¢Ò l\u0012ÙûnHê¸!zþThl¿VÖY5*\u001aTº\u001b=M-füf\u0010è\u001d/4;)\n«éáh»¯ÜdFÎrhÈûåJSùá\u0010ÎW¾^7<gøò¬\nÃT\u0018{(êwq¥â\u0001\u0010~\u001e-ß§O\u0016 yú^yåæ;\u0006íÎ\u0011\u0001\u0007û\u0005PyÉ?\u0006÷øÆñÊ\u001e\u0007µâþu\u001f¸|pa\u0001×ÅÐøj&\u0018\n>c*Ò¯\u00001½\u001cxÈ«µw\u0018Sî\u001cÃðIð\u0004O3X\u0014ËKÉ(tì66þ<çÊñ2J /bÝ\u0001}tä\u0011\u0000ëåq¦¸â\u0018$à\u0011±\u0010G
SC°Þý§îá.è\u000fKëí\na\u0001/Z¸ðWöI¦(|\u0019R)dzÖL²,¦Þ\u0001ëJ¡±âM\fô{Ö\u0015ã¨ñµ«¯\u0016Î'~7,[¸\u0014Ì,:Ø'z\u0016Ê9WÊlLA\u0012ÄÊK/x¼<\u0010Æí·\u00181ä\u0007Õ:½Ö¦ }È\u0001¦qÑûÚá~p.\n\n-Ù0\u0014ùýÈ= H3Âm°nOzªxB 4$o÷·\u0011V\\
nÐ\u0014à+wÅV¬® \u0003âh\u0001þ\tä\t\u0014t¶5Nþt*6\u0006FΧû¿¿\u0012}¾Ë\\¥^igiî¸×/._'*öÃq=}Ì=M\u0012½£á9\t\u0004?L\u0010ÕÓ&sÄ& Ø\u0015>\u0000:Áê7WP7'z4üºÓ.¦0àr\"ËNͨ\t°Yñ!Uñ¤¤Ó&¤0\t;ä\u0010L= ÝD¨K\u0015Ã÷Ò¿\u0015ëYFb\u001f#2¹ôñ¸ÑÑxì¾[/Ë·Ø¡ß\u0005y9?\t\u00017\u0013s*$OaìÃ\u000e=}\u0016ºñËÃàÏ¿ZC\u000eÉà×å
}ÆÏ³ÃyÈ\"¦ø7ã\tL1\täÛqhlfó=MȨÐZ^sfúì¹9ÈLsrÂÝ\bå|\u0001.\u001fÁ%J\u0003ðó\u0012×zÆZ¶C÷òKI\u0000ÉÕkd\nÜ\u0018¹\fÚ·/vÍ6²å®v±i\u0017·4M0ñ\u0013\u0000d*\u0017-\u0017ÏÿFË\u0000Þ\u001a,X\u001a,Kîºi´å\u001f÷\u0006¹)\fZ6\u0005\u0014±\u0005Êl\u0013ãÙ,\u001b -\u001eG¡\u0010\u000eY$Ò\u0006+þ\u0016\u000eÒ\u0006\"\u000bY8\u0004\f/©\u001btxÙ\f\u001e$îæ±\nݱZîÊ'\u0013bG0}av1¶µ\u0002y©\"²'\u0014ä\u00190ô-^1Äly\"\u0006â(\u0014-7pè\u001a½þ<Õk5}JÞ¦ýé\u0016\":Rí²g:\u0001»
®ðu\u001fv\u0013\u0006²Io¥ÇUÝ{èÐ!Õ\"fl.W²½'>4N¨cóxí\f*ÃÅöèì\u0019¼qiï\thò7\u0002·\u001eUÚ£«Ü
\t¬g$Ýèõ\u0004Þ¨\u0018î\u001bÜ1cÌ(ßçÉå^cãÅ-\u000b%Q>ø$\bÎ kKÿß·µØæ¬:è¼Ãyz
µ.Rw\u0011ÃkÈ\fÚ,Ñ;Õ¸»^O¥' \nræï½|Ð:¯7Ú=}|ù¦õÇk'ð¯\u001d÷0Å·Ýêwµ\u0012²xï.WMyH¡Æ=M\n\u0012Ú
Ïò©ì/3\u0013_Ö=M ²\u000e\u0011ü|a÷\u0007²=MÄÙ¶We©ÏäN¹?ï\u001c×Ñ^W*szý~N櫤Ôèímܸ«óä³\u0019Ä´q\u00079òKKZ³Û]\u001aÂMÞе\u0019uÚÓOôxIäõx¼H&D'\u001f#È8Æ\u0007ö¥ÃrÉi\u0012\u000b\fª°ÅÎYGy\tñ\u0006ÃÐNXÛ³ÙªO2\u001d¨X¦Y=MÓ\"¦&Æ'\u001e\fZô2¸\u001aIÓÃ\u0013\u0002w6-®Ð¯SïÉ÷À\u001d»-Q9ÅÛ¡TV\\å>CÇØ¡òo[+\u000flÞé\u0006Qn\u001aU¨k®ïn \u0016³_Î>ø\u000b9ß-§¼?A(QD]>ýßOɪÝ:ï´hy'ÍRÔeL Ðĺ.jÚ-j̺¤4Ò(põ§°7\u0016\u001d>\u0001·G|wÙP¦êyÉ[YÚ/Þ5?½³wòZ= V}Äú\u0017;5l>û\u0002(ôûíy ¬Ú}\u0017bT2W\u001e\tlI7&Ò´\u0017j~\u0017®ÇvbñÁskóJ¶\u0017Â\f@æ\u0019\u001bÞÚÀ\u0004\"ÿ\u001a±\nÕ\u0001±6kVñ\u0000ò\u0001òpù¸ÅªT\u001ay\u0005ò½ÄE&\u001cÞë^·\u0007U\bI¼HÍeÈÝ'\u001a©L½8\"ýÓTÆ#
Pº\u001cn
C6ÉÏàWíPÜ\b\b}9ÅÅhoÃ'ÃR9«x®]î\u0000*§__G¦TtòÛ×ÎJ}Þ(QjÈ\u0019\u001fü³å /ìúJ®ó·ÿy'N\"ÂÚV\u0015ô\u001a/\u0000%7IEô@ä\u0003µ,»jlg~=}UQÃÌÉ\u0006\u0004Á\u0013 d\u0017hÈ\\SPbTzÒUUÔq\u0011øÖ±\u0014\u0005\u0015ÈÌ\u001aGÕY.\u001eN\t¾h=}\u0016ÔãiÆw{ÈèLºÒ;·$k¥ç<p®×\u000f\n*¥2ÕÁbÆeý\u0007£³å¢ØRÅRwîé\u000e'øa\b&\u0012a-þ*Hl¶bai\u0017\u0006ç%¦/EÐX\u0016\u000f3\u001a\u001f3\"ݳêé|hÈp-ÆVÊ7= fþj<ÚgG°¹\f\u001bÊp\u000f8ÆAº\u001fù\u0010\u000bؼóU7S7hH9]G9ÑAºLAº¾ú\u000b\u001bêB3HBºS\u001brW7\u001a\u0005s¬ÞünÏ}éì·ïQA:Q\u0002,ÑAzPfô\u00043cvüø \u001a¥Zð>ßüf\u0010\u000eÃh\u001f\u000eÅ7 1¯ÃOEã®»\u0005ga\u000ft|¸\u0005\t@c¼âp³Qû¤ºßA*Næù \u001di¸\u0016O²\u000e\n¬ÒQP{\u001e{׺Ťê3TðÒAó@U§â\u0001¤éóÃ\u0000¤+ØÞ?Ò×â\u000e0TØq©\u0016ùÆ\u0001Á^úÜ\u001cùëw©g-ÜÀ\\¦ùý¸K¾4Nï×ÿ.>Oª²\u0005\\Åm>Â,Ò\"·ÇKU3ù²\u0014\t$4ÖùÃ\tÐäO:»\bÈ<ÔøæU=}ĨJ\u001e¥:\u0015¶¨éÚêòϧ\bàÓÆx¸í0\u0017ËÜܱè\u0015üx\u0006\"R¹÷l\u001d±\u000fIm°¾3wA\u0014ðÄ(îB·2)\u00017d×Ö\u0019Äê71÷·[çW.\b©ShêÞü6®àù°íNVR-0S5\"aÄP*{ 3[9\u0002\u0001 vc\u0001Xî\u000f= ¶lJ±\u0019øÕ¥4CqèÈ´Kõ\u0017æk\f>\u0004âæiÚæo'ÇóÓÆö\t3!7ìË¢Ö/õïæ\u0002\u0019âC\u0019²,\u0016Z\u0005Ý'\u001d\u0000)í)¹Þ!iöFÆð¹>\u001aïþTTwj\u0015d\u0005\u0000æäsºRø\u000b\u0000ÝI9EyFEÜ\u0019ß\u001d¼X?«d\u001e\f\bNö&g\u000eÊ6/\fÝÁA:\u0005ÂR\u001b§5\u0004m1¨|Ê\u000fÑ\u0015O\fë»±´\u001a=}3y½>i )JFߥöÐ!í(¸\u001f×VcØS,£\u001bàe]ÅÛÓi¿cZäÀcHò«¹µc´
ªy¾/÷Ò\u001818\u0000Õ÷¯\u0017ìHyñ²Öð\u0001ëä\"ÙÈdBt 8±YªJ\b2Ûx6×JÈré\u0015îe)^#!¢ê;-WY\u0015\u0012û9\u001dÚS\fvM¹Ù^4<YÌS¢\t6wÙ\u0006h}ÿn!c ôN*5l\u0016~A¿â¶¨^2¾-2~Âc\u0004çØù-£\u001eò)¸Ë
ƪºtM\u0012~á*#xbÄõËD{ºöü\u0016uòª19NLO)L\u0018ªöçªûY\u001dPô8z:µ4Ç꺺ï¥L}æJ×U¹UJO(\tuó\u0005yx!PÍ<\"\u0012= ô\fj·ÆèÆé¤\u001a0É©òT©¥ù\u0000ÿ¡Th\u001c-í\u001cÓ½\u00063E¶ó19O[©ÕW«IoTø~ÊCN\u0017;Ò\f<X\u000b\u0006\n8NI\u0017Y$'ÕJ¢¡Ô·¶¨î2.\u0013b8¯²X^ÚØJØï\u0006Pþ6ø,\bj}\u001c\u0003\u0015)S¬\f\u0006D\u0000C\u0013Ór¿ÈXYìt\u0003ﯳ§[r'÷t\u001fªìbW\u000eÊà|hÍj6;æ#1Ä\u001c2à\nϨ]ºÄturUÀ<xd\u0016S§iÖÑÿW´ÆHð×'Åæßpº<}sæj\u0004ñ×\tjþ\u000f0LÔ ì¢[$;3_\u000fKT%'Uì\u001d¹¨®ªðv!ß*þÒY§\u0007\u0012¯¾ïÆ·¼²·ä\u0018= <2üF Ú¸\n\u001c´ñÝÀúÇÉTãN>å\u0007s&j\buZ\u000b´¼3RøÁ&~ë\\\u0019rÑPÊç'iIc\u000bY{\u0015ªþ]»\u0018âæ\u0002ãZÐÂ+~ðZpj Zþ\u0017Ã×ûÁ7îßpräÆçýÀûqEâ¾,¶éV\b¬tû³¦.ø\n¼æqÆQƶ\u001aö¸Ó¢°ÜbKmjgøÃÖ×®²T,f\u0005IZa\n]Õë´U»°F°Ý³ÑTw<\u0019hÒühÇ üE¯ÐMë>\u000b\fɳTä©lW4QJÂs©r'©> <e\u0018\u001f Ò¾Ys¨£¹@¾\u001df¶È\u001dýíZ1\u001f¡DØê£Ù~Ò>ÞÅòñ\u001f2aÆâ2@gÕùñdªÉ\u0014#¿.ÙN\u000bë\u0000Îr:·Û-tÉtÜ®½¯qµ=Mû|
èÏï±Ù}<L\t\u0003%?g xÐÂfÈM¦N\u0018î~ïîð \nÓ^iÙÈÀK÷R\u0010g\u0004ÛÅ%\u0014ÈÙ¨Þ¢\u001e×Ãp¡^gZ·t¸\u000eã|z£*Ø*2£\u0018Æ1ø\u0012+-[\u0011£çR°bb§8«sê,fµ\\\u0012±\u0015aß=}ØèÝ(ÜÈk\u0003Ó
Ã\tÔ>¦½Ø©³ZÒÐ2\buAjXø1øLDâU¼,gFV¿ãªèíB-Þs\u0000XwNc\u001e³RI+ Xjr<ä-ëèn\u0014\u0006ÑÚå©|Ãi!K1yH{ob\u0016 iµ)V\u0004ÏR¾\u000bçh\u0005¢Ë÷Þ¨vg \u001a§±<EøÅ¥Þ¿/½=M³,vá ©ù4ûÅoÑÒ\u0002Ѫ~&3]ié\u0014\u000fª@óÃÓKíÈ\u001díå².e\u0010,ÈþèJµôز'|bò6p¾ø\u0001eK\u001fß(ð¥ÖnÄ\u0001Ýh\u0012óîú\u0014¨\u0014&\u000bù\u0001ÙîxE8\u0017ó\u0006¢vÛÈñøMl¥Û|Z¶\u0000@Õp\u001bÿËÏåÑS\bÇP²¶Ï³h\u0014õºÜ!n¨kÞÝm7\u0004áü²ãüFrðý\u001câ\u0003.s&ò_åì\u0016$=}U\b@ã\u001d$üD%ZJfo=}\u0010ó´\u001f\u0014(\u0016c×\u0019}^a¥Æ·\u0015Êâ'\u000eBú5\nª}\"mù¼Ñü?W®\u0004ÑChÍ\u001f\b©\"ÃÀù¦Ç\u0014E\u001cgIË´ÄÑ®ðRÕfËøA+ö©\u000bø\u0019P\\GTu\u001bà-yAQä?=MÇì²Ð®$T~nТ\u0011òG¤õph0\u001d¤¶Qs¹ù¶\u00021®öD ý\u0007-ÝZÇ|é\u0011g®\u0005<p\u0000p ÌEÑÖ\u001fÛ|A\u000f\n>Ö>·\u0016AäÞ¡ï\fDïìoàÈ= ·N¨¯\u0013BÆïìoVìá@õvÖMA\u001a\u0016ã@&æÉÀABL'?ʾ)à¢Ñ\n\u001e\u0012+oëR\u0014¡ÌÑF«nv5°ÏÙ%åiùE\u000eqÛëXã÷\u0015míQ\u000bN1Xä!\u0019H\u0006c\n\"°ttbïØ~Å>)qcÔÒ\u0007)\u0000Òqv}ßÈ\u0017ýÈQõ\u001aç¡.¼º\u0002|Ñÿï¦@Ðo®uØ×½|\u0001:}Ð\u001cpܱ·ÿÖ·Fy£(
Uî¶\u000fK;\u001a¦3>Y@ÁèSYÀ\u0001tÛQèyM\u0014©>ÕÁÖ%ù¨\u0006\b÷¼J^Â\u000b¯ôtBíü³m¡V! ûÚ/\u0010QA ¿¼&Ñ/R\u001c¿qW.Û¬¼ñËÊhTÁºå\u0005{Ãâha]NÈÆPÙ9\u0000;bKwF[ñó\u0006+²æe²ÊWe
Ì^2¡\u000eã>1vÛÅ\u0010é¶x\u000bØ÷\u001b5¸©\u0003ð\u001ei=MiMH!UQ5çR/\u000bEÅÖm³Úö¬ûF¤ÑZjå[ÌrP\u0000=M\u0016xÂ\tÈ®ãÄO/ÕÈ\u0000d\u000b¢Ø4Wì=}·'~T\f\"Ô¶°\u0010'ûóu\u001d3\u000bý îç&5MÉQ[7s¾¾¥©c\"cë\u000f¼'lÕà{î¦\u0011\u001aÿVÙ\u0011\u0016èO\u001bÈ\nYAM%£r¼Oª6TEú ?!©ò\\\u0010Ký©1\u0000d¦ÀÙ;Pª>kdÇjm\u0002Q=MßR\u0014D>_®ð/by©§9ËM¸\t\u0017pð';hõîêe;\u0001R¤¦Ìù³ô @ãÛöa\b'Ã%´#= ¡¾g»ê°+9ß#,³è~\u0013>1[ð@÷X\feñ¸ÑÊ+>\u0002ý»ÃF;[\u0002aÿâ÷wKVÍÚmÌ\n?\tô!¯Ú\u0007d\b\u001eiø<f[2Ìz\\Y8RÛå°CW\u0019§FÆ%â3ìÀY-l\u0015òÓE\u0006ðÙ_²ÞW{¸£ ®(_4!¶WX\u0012x_0\u0000cHü\u0007Ü\u0017|ÔÑ\u0014G¦BKÑrwî?¦'Ô\tÄ<Q[Y\u0011Eý'\u0015ÝWÛæ8T¯\f\u001ekÓ©z-
Cîry´OÈÑiù$I,ò,Þ\u0015¬Eà\u0015¤ÏÁ{\u000bÙ×\u000b¼\u000fLá\tÎà\u0012æ\u001c\u0003ì\u001bÝÕ\u000e¾ã\fX\u0016\u0010ò\u000fF0\u000eã-¤·\u0016rê!nu[\u0005jZ\"Þ¹ûq[cJkÏÑìö14k\u0001òo«Ûzä©u¢2\u0016U\u0004úu}!º\u0001©ñ6øx¯ii'GBä«XÈp7\u000b)D'׿\u001d\u001dWm2[\u000e\u000f)íë8\u001eéª5D\u0014cNçZ),\u0016,ð+»6ºÂ\u0006ìßÇ:Áâ¸\u001bÙ3ZÀ+\u001a¡³PY\\®ßi?ns(\u001cDõ¶ÈÇÁºëO\tÔg]eL\u000fÓåW\u0006¸1Ï\u0016\",\u001f{4eæÑ_ÄöoÅ<7?rLè¶\u0001±Áç&k=}Î%L\t
Ρ)Q¦[õ·E§k\f\\Þ\u0016\u0012\u001f,R\u0006ø§§\tÄ×å\u0006J\u001d\u0000 þ ALÊÃð¬7Iã|X¢I=}¬#Vúo<µ;ײ®w\u000e÷\u0012º\u001dU\")LíîÈ\u0002ÂNúEnMV5P³I\u000eH,6~)Øe\u0017ÿ0¶¬= 9´MjR\\þ\u0014õËÓMVã¹I\u0015%-ªc\u0002öÇ.JJÈÎ\u0016è=Mä ÃõV$õ1¿H+å<Tz\u0007?[«bú{·>µ=MÄHÊAN¦É{cð\u0013þlÖÑ\u0011-3Û\u0000\u0007\u0016u¶Pö6p1\u0001Y9UÊöL£¶¿l3DzÃð{¼Ê\u0019'h1yZͯ8ú>ÉJH¨If~«þy3³ð½Àjþ\u0015\u0013= Á«t;\u0016\u0010FÊ^\t\u0013\u0019R³²\u0015c#\u0007ðÓq%Ë\u0017\f±¦½çcÀÕ\bòkwé{éÿMèfQ\tßß\u0012D¥ð\u001f¶ÎSË>\b\"ÿmå(\u0014<
\u0006çó£âüï·B-]²ãñÜGþ¾RFÃbg®Ý.ì¶§ÎN\u0016\\y©\u001e½\böZshàw0ønÄ\u0005¥X\u0019¶ß\u0004ù\u001d\u0011\u0004\u000bF³Ñ\u001b´Â\u0018¥¸µ!t\\=MIÔ±:S\n¯\u0018E*\u000et9|§äÅ6\u0014äÃTï9(×\u0015Ý«ÕôËWɶ©òó#í\u001d\u00037¦âHoëÚUfðd0·\u000fh\u001eWÓc0¨\\0Ë%#°´¾½f?[´Öò\u0007\u001epÕ-¿H\u0000uH\u0011',4\\âæ/=M]=}yÌ\u001dâW\u0005i\u0014¶û>\u001alõÂ\u0019Æq+IñA= =}5ëïx©ÆI\t$Cùó\u001a8{Ñ·o\u00058õJ^¼+¶è\"Ï\u0000\\ëli)î2»\u0016B¢Ã tÁ=Mu/g~k\u000b\u0004Y\"Þü=}à42YÑì½\u0007ÅÈ9$sS@7ëHë
ï¾lQÆ\në¦\u001d¶è¿ÁÒ\u001e\u0017eÇ\u0018£'»ïïZ4Ðzsñ\u0004Nùá·\u0000ôá= e˸¬f&\u001dàÔ\u001eD\u001fIÏ\u0016Â!6\u001b[µ¨Ö\u0005ýù«j+ad´_R6ÂÏóâÏíð'záaXD<Ç\n\u0014¨Çä\tni?P\u0012-oP\u0010桬-ÀÝóïM/Ð-¸½Åã<nyµ W\u0015L(H\u0013«3õ<4!:\u00049Ù²©Öh+!8N¯ûÅ(zæ9B*ú¦oL´V^ÿ;öKåSë\u0002ÁÙRÓE²«W_x7\u001ckÒß8\fð!Æ\u001dª\u0005 A[ QÅôy²Ù°wyf=}\u001e4µ'g~L´#ÃÕ÷5ÈÛ\u001f#\u00033÷1\u0001¬C= J>èG\u000fL\u001bÂ=Mîtºô\u001ftRÏ?Ùôyê\u00071?´u\nî7\u0003&0L÷zãE¼.ʹ\u0006N6)6?sG=M¹?BE.WÕ³\u0004!çÃÓ\u000e\nzÎ\u001cä}\"ú3Ö\u0005¢/µIê\"þøÍ¢DZ\t(ÕÿIõÒÙ\u000bTIzL0fõjûNHÛ\u0000û]=M£WÐ\u0010Ór@\u0002\u001f\u0001Gúi<\u0001ò,\u0003¾8bo µ¸\u0006ê \u0011\u0016ÐN\u0010Ø9¯.eáV\u0014H^cxùê<÷pÂÆ¼
&ÆmQ6þý¥XÖuE\u0011»Ö&´Ù<\u0010¿>Aö4K®%\u001aÇ\u0000äwiõ/#\u0010\u0005\u001boF¦5B\b024¾ÞCYZ\u0016©eYêgðÂú³G[¼°þUõIkòs\u0003ø0$zY6ÒÑ\u000fo<ño\u0012\u0018å&&\u001fw÷*Px\u00074H<Áë\u0019\u0006\trº?¯\u0002WìW®×î3¤öÚ6Ét\u001d´\u0002WÕ\\\u0006.ô<\u0014¨ïmÑddòiV³\u001b1\u0001;J\u0013U&æI4A5\n9Ùz.Ö\u0005Ê¿>9ÂgEb§¦Vá\u0010>¯ËE»£À\u000eÉ\u001cûÃ%TY%yrßMÁæ÷%\u0016n\u000b\u0012SÑZ\t\"¯Ê\u000e\b×H}\u0007Oþã\u001dmx9:\u0018M?\u0002+ ÃpY\u0005¦*þ\u0010\u0016Å2\u0005³
æÏ«àjð7Ó6T³Ó6\u000eJ\u00169Ü\tóÚþT2nê²¾·< ÆÛ!\u0006÷\u0011\u0017+æz·¿ä¡=MôÌpPýØU\u0016b÷_\u001bâ÷Rãm\u0016Î\u001e\u001751Êï}·?þ³ógk\u0018'X/\u0013\u0001/³Aþ0\u0018ËwfÌ\u0015òYó[\u000eèu!áôÓ\u001a3\u0014$dY[¿\u0005Í)¯g$Â\u0001\u0005åÈ7íHE¬\u001a\u0007ún~ÇÊB'y&Lãë\u0002ÅN¼ãÑ>¹µÓÄ\b¤
50ì$\u00199\u0007¶î&!ò8mÌh\u001c¹Yº\tK/wºyÿÃ6(\u000b&< {\u0013¥á¹\u000e«?'ç(î£Ý\u001ff(þ\u000e\u000f\u0012§ÝÒwD¬]sãµD\u0015gÑE¢x¬\u0014{C[Zý>\u0013>VvÆåLH×ÝîųgÚë\u001cÉÊX\u0016ë§\u0002Ú?\u0003¸)Es\u0017uy¥Êu\nÄ~Ùå8[ÈÛÏÆÕ\u0003>\\\u0018È´©@âñXÇGN%@Ý\u0007OþW\u0014ÛlÇ\u000bìu\u0007½äöÙ:øYïªpÜãr¬\u001c\u001c®2(¬Ú½õâêG×{È\u000ec\u000fxQ«vºx©Oÿ\u0012%Ù\u001cÁÆõfÈä\u0005L\u001b>ZUÀ¶J\bÃÐ$µ=MHÒ¨Ñ(Én\u000e7§4:¶¹²\u000fÓñg͵
_M\u001c\u0013ý'^½Ð}\u0011=M\\¦E³-}ÉYâ£w¹Éâ\u001dGY\\\u0018½«]=M\u001d\nçªr\u0004\u001cò\u0000¬&Ð\u001fÍà©îór\u0011ÁAìà\u000eÖP ¨Ý°ÔìÑîa´¸\u0000Ïë¹è{¢°µ\b\u0003\u0014¥Þ2x æ\u000eô²âú-~ê\u001aì\u001e\u0014\u0007\u0014íXÊ%ÕÂ\u0015v\nô~)hbüX\u0000µ¨Õ\u0005\u001e4~\u0014ìÑ_ÜIÏ\u001d¦\u0001\të£\"¤$#ç=}ø5(\u0005 yW1N\u0017a.Ð\u0005êq\u001e)àüfÑ
üpà½fæ5®y\\\u000b\u0015= ú/+\nÏ8«\bâP\b\nê\\.°ûé+<¦³º\u0019cËJ@Ò0\u0010ʰzµ$&EĶ\u0010ÁÏ2(³\t\u0010dö©´kèqTß\u001eù\u0015*ÆÊ°ó
ÛeÅ\u0017k»)p;§UyJ¨ë¦Yò\u0001O\u001e\u0011Tr\u0017E÷%´\u0017e\u001d\u0011Tr\u0017E\u001e\u001bT¯\u0014\u001eѦ0\u0011aZÞàò¸ãl²¨%Îñè4<¶E¢XÄëf¡\u0013Lð}ó;Ì}= Þ\u0013} ÛË\u0015ðQZÏLÒ¨!@È\u001b¦îö¤Õ\u00185oöüoöP â·\u0015\\\u0012\u0017îÅ¢<®w}fÿ¼T\u001c¨T\u001c¨ÛÇÆà÷öÂÕïhvPöG6ì \u0004P\u0005P-nðþ$\u0015ôpû_~=MëNXÃ\u001e\u0000ínîeÛÞµ[\u001fmª4ùG\u001b\u0011l\u0014»@i5ï9¾lX©\fëîN«6G0´÷#\u0003J¸å×ï
>RoîPîcV\u0018¡C\u0003.°\u00072Olè\u0004o\u00039\t¡üGü)g\u0013ëâ[¥=MÝÝÒ£â)\u001c\u0005îr|tSZKÀpX\"fìà§»¬= HUmÍÔlôa2Ví9Y§\u0002¬k\u0006±W\u001a¡ñ\u001eÍ\u001bjéñ\u0000Z\u0010¹\u001c¥Ê«ú\\É\u000eL)zfBÞ\u0000<_^>\u001d¬°p¥2= ûìÀàÁð\u0010\u0015uäe«¼\\{&\u000f;Ç'v¢\u0010»óÄ_¾¸\u0000\u0018\u0017\u001cÐAÕ%H<J¡Nß?ßj= ¢©'a\u000e\u000bɰi> ;uËD\u001e¸XCï¦$;\u0005³w\u0013DÑRùJ®ýà/Pä%²ð~¾à§k)ijr$R:\u0004Y®¹xv6ª\u0004ÖJ&CÖç}È´Ý\u0001Ö\\×?¿Þt¿ð¨×´]kôCÍnaØý¹\u0018õúä\u0005øt8\u0003àv{ln3û«\tÓÇm˽׵¡zü\u00157eÏø\u001bVÙbø@FE\u0014§,î9 }~T)ɪÂ\u0019¸\u0014C\u0002·-¸?\u0007zR\u0004f;êÈagÄî\u0012߯\u0019m7JòË3aJÒúã¢\u00109¹I¿f\u0017WÇç\u0016\u001c{%¨ÐÌI¡1Y¯Â\n½Ý:÷M²ip̲õùÇqgÜ5«w¯\u0004hI.[+¬Å\u0003\u0001£Ôáj¯Ï´^8O\u001aµ\u0010øþ\u0007\u0017Ò¨qÜ?\u000bX\u001e÷o5é\f¢H¤èò¨@¹Ú2\u0014PY\u00065¯DèFþRwy\u0003(Fg5\u001a8ÿ'\u0007+ DÂhÏ|I¨EÛcD\u0007¤J\u001f'K\n\tËBðö:ò= ð,¼=M,yí¤l\u0010\u001f£b\u0002\u0016í\u001e\u001bt¶ì\u001fpE,óÑ¿3\u0007Ä$H\u0019r§^+5Ö\u001bóP¬0_V®F¦\u001b\u0000=}}ä3y¸\u0015ñé\u0015%HíÓHÊ\u0010;é Ä}<\u0017?zêÀòp\u0017\u00041W§0Æ\u0010uáãE¬/E¦ÒZ8òÒêÏÚûïö\u001bí°¹\u0015!º6äBÔ:I\u0019\u0006*x5K\u001a,5(Øjz\u001bÚº\u000eP~q\n\\\\=MçEW\u0013^\u001b³\u0002æû\u0012;)\u0014!*ÊÁÍ¥8(7\f8\u001aæ\u000evuüÿIסÞEe\u001fo\tOôCúÞ¹wp£t\u0005-¨YÉÑ}¾ÁJ ç¦B¸´¦\u001cþ-â5hô ëG\nRgêUjë\u0012G¼CÎ0íÇNUjPä-:5Úý,oáé-\u001a¼ðr\u0014]\nñ|â39&9¨oe¼qô\u0005ä nñ¯\u0010Ë$reú\u001d¼æ×Ó<Né\u0011\f\u0003^MŨ\u0011Ð\u0005~N\u0006ët¥/\u0015Sh\u001f6&«}7©ÃÔ\u0006ñlÙZÞè½Ð¹·ãU§'Ä\u001c¬¡Ã>²\u0017®Q4!i\u0004Àé\u001ac¬ø{ËtÔ\u0012U3 7-_ì,?UÎì ;p¿;PÖ»õ\u0003'cîÑj1çjÓ\n«Ô%àõo\tþ\u0007vìÙ!íçsÌí\u0003\" >ËfÎDL(D\\Ï\u0014Ccð\"
Wà±{d¾]³FsHÄ´w\u0004ý6\u0007= \"\u001dÛèÌOÞ'\u001d\u0014Xñ,\u0018½Øä¿±QÆB\f×\u0003©;ËÏ\u0003ã®ÞY\u001bÍJóUýí\t~t©V~Òl\u0006Ô\u001f{Ù(¡Dk¨!§RrN®X3\u0018ª\u0004ÏE/;¾3bH=}D¸ÿUùh¾»nO@äDø\b·ÎsËÒ\u000býV\u0010××\u0006/\u0013n-<¢ÝxTcÉiª\u000fm¬NnäÑìÄò¿{\u0001®OÁ\u00172¦w0\u001b\u0005cmw\u0001\u0003§J\u001a\u001faq\\c¾ðÖAQ\u0018ÿ\u0001íÁs°N¦ôg\u000e\u0002v2QüûAÆìúÑîÕ8{æ%!¿\u000f1¦æ\u0004±&ßÒp±\u0016¶ÞD3ǪtV\u00105'Ñ\b\u0017d/×ëÝH°5Þ.Ï\t¡È®,ÿ}þî\u0010phËãý7\u0018Ú\u00197\"ù=}ýûö\\\u0000¡\u0018p;\u001d5ftñQ¦¯WyÖ\u0012&$Á>GÂU®µºÂåqöót¹7\u001bÃïçZ\u0001\u0004ñ\u000667o@\u0014\u001dÄ:@¼N6e\u001bñÀµ,ðË3= ë¾p¾+m,³Ão ý@J\u0004æAtª¼.í}ö\u0005\u0001©×íLs= ¨*R1ú¬tar!ù %þb^ø\u0011\\\fQ×Öámf\u0018ÏØ\u0013¡àdÚ\u0003º¦Wð\u0006]íÓ\t\u0017Ø\u0018a¨§¬o\u0004ãϳFÂZ\u000e\u001bJõÖ2\u001cAkæè[&õmD\u0000Þ\u0015\u001cU\u001fÝ\u0002\tänçòmÂ0\n\u001bá\u000eà\u0015®¥ÒDÕ=MÕí/\u0003³²ù+)ç+'&RIÙn0õ¨\b[<\u0007:OòëøÍ!¦ø±¨úÈßO¸~Ñu>ÿ5lçF\u0015ùD\"é¤s²\u0010Ô!Ò\u000eNU§mRu@\u0002â÷pÿ\u0003Ò»qRNlÒ÷Qv0¡8ä¤ÿP\u0006.ÆÌk\u000e¾ògih\u0015Uc=MÙ= úÓ\f9\u0006@ý6ôB²mUn(\u0012ÀÕ\u001f\ný\t)C!y'¿Wgõ#\u0007ïÜÑøÃ§«ã3ÔÛq¥m×3Wɳ÷.}Ax$«Ü9hÊ{çÕú²\u0016t]¨oo¯\nÌ\f¿Â§©ú,\u0006ê÷,M\u001c5)AÃN#Íp kÃm!?ê [\u0007%¿½¶\u0016¤¨{b>\u0006\u0017\u0016Pª
nH0%V®ÖäçÙv×\u0003þ0\u001b·}ôWOÅt»\u0011MÌ=MpeÕm¯WñÈtüb\u0013»½i\u001d\u0012Ø3#sgHÙ,º\u001cÏÇ\u0019!Êû[ñG¢s\f¹ä\u0017\u0001fI\u0004±E]MeN\u001d¸¿\bFÈVy\u001a4®È[\u0005.:=MÈG¦Ãä\u0014\n\b\u0001\u0002\u00179¯ñ:)ÿÓ9\u000f\u00175M¹AR{ëå´\u0014Y¸43ÓÞÉ\u0015©/Y¦Uµ!)r\u0010Ñ\u0006H£;s1V8\nÌO*\u0005Gã0d÷\u0010@è5¢öDt';>ÁÿÝltÊÛø Z1æ¡e,+©Á ×Þ Ýâj\u0017\u001eÒÚ9\u0018\u0004»DbÓ\u0011\u0010åHS üì\u000b±H51\u000bq|¶íÂ*ÑÁ^ïªØÛb3-ذ=}©}Ô{?jt\u000fÛÁ5ý¶?ÐôbXÐrhÞ8\u001f¯ð\u0005W\"Úéî¦Î\u001fNûò;ÊB¶Xê/<ÿçÀk\u0006¿ÖTg\u0001m\u0006÷ùÄEDö°gåXë&_/¡¥4Gö7\u0013ðÃ\u0018Mf9\u0019ã\u0002¥G\u00049ËÏ\u000f=MÀaQh±Xì\u0005\"Öô ï[ãGgnâ_dU}ư}[íáÀýí4Ú \u001aùù@Ë¥\u0010= gæý(\u0007p1\u0001ÇGuÆ3ìâ\u0004QFÙ\u001d\u0013ôLÉè»\u001eáUJÔM\u0006£'ÇÔ\u001aKöÖÀ\u0018Q£õ:gxq/c/\u0003-kMpí¯J\u001b
\u001c%Ö!§ï<n§«\u000b\u001e¨Ø\u0000RGÿøjõqY!\u0013±¥¶\u0011°*Ô\u0015YP9h\u000e\u000b= \u0006\u0012¯Þa]¡¹\u000b\"\u0007º¥= Ðh·¯fGÙOéve^E\b¼ç¡ö\u0003\u0000\u000eãH1¯Jä\u0000èØÈ\u00110¥\fÄ[\"³ïys/Ö\u0003¶¤\u0019nR<Ë\"cg¹\u0004\u0016UÌ\u0017a£¼¨ç\bƳfuåÖ[\u0010\u0002÷JÆ¢9|\u0000â@Ó
D$Á= ÚÙ)üËæI\t\u0002sm\u0012O\u001bù
ÈkþRòIaëÃlÑ1:Íi{¤\u0019w²E¯\u000fÔó
m¦7kZ\u0002ÚÈ\u001b\u0015Y{øSeõ4\u0002\u0001\u0013\u0012'n:Ú¬(:ná:\n×*BåÓè<\u0007´wCP\b!\u0011ØpæÎ¿çÎ˰%4E9{\u0004xÁU[\u0001ø©qéÒÿgÑw\u0017æ¾= 4\\\u0011´ÉB-Ú©Ý0Óʼh\u001b§HeÌ:£Àø¨]-BÕÏï2w3xÓ®º°\u001cù\u0001ÊêDÊÒæ\u001fyólÇ\u0011p\u001aV\u0002Í^µ¦ù±¿Ów!6Qòý*\u0017\u001cï»\u000fFkª¦;ÿÛÞ¬¹\u001e\u0006¦\u0005ÜÖ\u0016LÒ×\u0019ó\u000e\u0017Ó
F<Ùäf\b\u001bÒ\u0011ãã3|À7ñ\u000bêÒAu\u000f»ùª\b$\u0004Õ½ð3è\u001d¯ÁO¬(µ+6\u0011Ý^äÕeMÚ\\\u0002åÄôä>¹0Õïté¾)xêl©È\u0018û\\&kf\u0011Í5[~pv9¬ÊîRï\u0005:ÈtÅ\u0015ã\u0010¬äiÑ]\bè#Pï_ÿéA®\u0006\u0002Þ²#¦ân\\¿³âC´w*W9ðpð\u0018O®W\u0001#¡\u0001\u0003\u0006F-C(61Åõ\u001bfÃ\\¿Y´v¯\u0018»º¥Õdî\t~¢;Åvʺ²¿_1ðµmjW\\6\u001a\"h»%:ÈðäZÙ¶j6%X\u0005\u001eªíËr7{O\u001c\u0003ÕhUsWvÉ\u001eÃVã\"\u0002Æsë³PÒB?Ï~²\u0003Ìß\tx£z¿t¬Û¬´ \"¯}4\u0000åàwK\u000e·´Õñ°ÿJjý\u001a@_ÉÓS·~Y¶Ö&÷+AY8\u0015\u0015¦ª¹O4Ù¾ßRøÛüYl£Q\u000e¿þÝwþô9¨¿ÐZÙ\u0010ª¿2j\u000b6¿\u0011ìiîF6{\u0006íT\u000bjÎ&\u0017^-·ÃJq\u0007jqy~lÞS!ºdaâ¿bé[\u0018¼'®\u000b\u0013NªI²ÀÌ\u0005\u0000Jù\u0006NÔ\t?/7-¦\u001dtIç´\u000e=M\u0010¸^\u0007\\ðÚcÏ\u0002ß\u0013%\b|Ú8µ\u000b¢¶,G58J58M\u000bu=M-ýúÁO0zªÓ»®o%ÎÿaN=}Oï6.j*ÄѤÚ9[q³èr.üS¦¹\u0014Äæ1\u0007ã1Q¨óú{Æ5^¬\u0000®$:}iQ\t\u00139ØT\u0011Iáâ¤\u0003<<¸4@ífyë¼EæÓ!\u0007×ðk_8*6= T¨DÎ/®¯\u0013!ð½-ÑVª¨´[¯U&TyðÓÊÐ\u0004\u001d=}\u0000cÆÒ:ç*ü£À\u0017¯k\u0015»EÊ>õ \u0015Ñp¦éiÝ5ÓÒ¢\u000b¤@·Ëôep\fÁ#qú®×\u001dnÍ÷â Sk@ÑÂ?3pIÑAk¯»×ý ½6÷þ öþ°@2Õþ0±Â&D)î7d±BM\u0013:\u0005Ú\u0010\u0018üE¼\u001f\n\u0001)f=}6i9§(Iñeë¨9\u0013)&=}6P7tëv\u0013ÁûùÈz±B\u0016O\u0013â3®²ëh¼¸×zb±Bö\n-\"\u001f)aë.7tðv= ëJ,\"9\u0018üIC'gºY\u0019X'ÛGñ×\u001c\n[¼àFI^Ö\\òl\u0011ñ ä\u001dÇÚw§ªÈ¬\u0010õQW\u0003F¾ßÓfá%})¶»ä©\u0007q¢^âè¸FÂ~aR9;È<Å3,\u000fÉR\u0003O[P{ñf{;ø<m<Oö=}¯@ëõf{;Vö=}gD¦»Ý
Dp{õ;\u000bÐfù4A'M7ìU÷¶¨¹ì;Y\u0019P[Pû8ö=}ï?«¥»;b²@#E\u001bÿé;x<W\u0014P;±@C\b±Û¥F;ÜV\f°\u0016\u0015ݦù\u0012=M°n\u000b°Ï\ns¹\u001e&®7ÊúfÁ:'ö\u001e2\"\u001aXö:\u000bö\u001e1¢\u001aXòz.)ó8*É\u0016z7)ó88*É\u0016Úµ²\u00179\u001f\u0012 1䮫¬6ªSJ\u001f=M§D;\u0007Z3XV^hÄyçäÐ=MÍÑn çp\u0014\u000fÞ§¦\u0014 Âô=Mr˹ Õùü/·õ×\u0003fMkåÒ¥Ü(Úµ\"2þìÔèr³Ýª2ìV\u0011¡ôÿóQ\nè\t\u0015\u0000Ñ\u001a§~-]D\u001dþÆOjÚ¦xµ5è5ù°A\u0014ðóß%}+੾ðѶþÏéX\u0019ù⵪,øð\b¶o8D®4yÇØ5¶qB\u001a\u0010¶\u00072Ùúf\n= ßå6BË%Zù\u0012zT@\u0014çº\u0015'ZDÉó±OýÂ\u001eÁòÊ\u001chÖð&Y#Ì\u0001oÿO- \"d¶ø!= X¦_QÄA³/×\u001d¨\f=M¢\u0010-\u0006,\u0018ÇÁî¯Vñh\u0019K1\b\u0005\u0007DóW:²¶5Ìó\u0004\u0016ðu£Ln7ÔráÔr%\u0007Î\u0000\u0007.¹ÞÃä{C<\u000f\u0003ÖÈ]¤\u001fN\u001aýx\u0011C:ůn¹³/*\u0017¸\"£s\u0015Wh¾Ï+\u0006Æ(³âóÆYt<0j]9LMsScÒíß\fr¹aÍ3\t= ,ýø¡\u0016\u0005\u0010U\u0000¥9^f,u\u001053\u0004J\u0019µìíɳAð#ç¾õH¨hüÁTJt¶Md°JÛ\u0003ÝîtÅ+~ÈsOggËóÊ$«c§-,uY¸Ù\u0017ZýÚn\\8\u001e¾¼âé\u001b\u0018\u001c\u0015A#¹'à×Á\b\u001fàò&v¹É>\u0018\u0000=}7#PbWU<w\u0005íî\f\u0019\"ÜV]Åx%U£\u0004¯ð]\u0006ÖÃçv\u000eâõ÷/S±@ÝË>DiT:ÿ\u0002iHiì+;HQ]\nßãT´j\\è\b´gl2X£\u0000\u001e/+\u0011S\u001eÒy\\+#ÈÆ\u001e
²t\u0007>äÏ\u0012(ô%²ÞóuôëÏ\u0001ÈAC¡ON¾\n\u001ap¥qTXü&ÛC\bæáÆhLH\\°<ìñU*ñhÜlÙWîtxç\u0010Üd¢4ɦÑèÕ\u001b æëdw÷HÏ~~äÀ\u0015\u001c/µ$ûE2à¶\fKÌ©KcfB°î»Q'ëÏà~¯¥+Þh\\3víÈ\u0017Oÿú¾\u0002ívUÈ\u000fWí¹\u0015\u0002ÊIWsVþl .\u001a\u0014²0K\u0010²·&%÷?=M\u001f\u0005SÝì\u0007^júï)r)\n³#\u0004eó§þ'6- \u000fβÿ²UR\u0005p§/c°,}êùzI\f5Ê\\¦r(/rí\f\u0016³ZPRÁñÁo;\u001eë;T\"¯æ*£þ8 u.1= J¢iY8K\u0003mÙ:E\ni\u0003Þæ½õíÿò\u0007èÊÁ|°±\u0016ð0¨]\u0013ï°s!ÊCp:Ýx5\"(\fz¦æ/Ü<Õ,¨9cÝM9@4= ¬À\u0001=M=Mæã\u0016HóO\u0006תÊ*õD¼Ï¾j<\u0000\u0015·WÈ%Bd,´\u000f?x\u0006\\W¨ÞË=M/üÔÜ÷Ía¼H*ò\u001dûGm4I8ÖR²¨÷*N\u0012xÇÝeU¸I]îÝ[Çð@fzc\u0014:Ïy÷ÓgÙaS\u001cçy\f\u0019\u0000½DP0D'= 1d\u001fü¸ø~Î^.ä×z+GBû0<o= ȯ(Ôí{ÇM¬Õ«-u\u0002Ëá3\büæ\u0014ßb&hX\u001f\u001d ¤(ÛæÄCYÞq\b\u0010\f8K\\sÌðdØ
ëÚ\u0018ðsvÍ\u0006\nk©ÖlVlXÒ\u001bÛ{5ÿ\u0000ÇVaNîç5³¾YRPôä= wµ\u001eb^Ùp\\= )\u0003\u000fmbV\u000f= h\u001c°¦á6u\u001f\fÕbæQ!e°\u001eYª\b¢ñ\bN¶ÄLü,\u0016wÆ\u0015\u0017ìh\u0014-æxAûQÚ3uÿ\u0012\\\\ävòe¶OÏl8%µaª\u0012\u0004ËeÒjö½dòìwÎÊãtÒ§-´×¿\u0006\u0013\u0000ïYY\u001c¦Ë[Q=Mòa:yG/bÞ\nõ¦Kz0læð¢^D= \u0018\u0017\u0002^Þoâ\b\u0018Û\u001d²@Ð÷fãÏ0)À.uùa¥/iÌ e¥ÐÈïU¯=M\u0010MdÍÅtaæsóãôV\u0012ÒpÚê³SäÞ?q¦¶]î\u001d¥úpUäÙë\u0000¿È¤ýQäù\u0013Õ\u0003§\t=}³+VѾÿü±¬Ï:\"O%oo@ú2¬l»{p©\u001d®\u0014\"¬\u0007ÚÅñ,¤\u0004«\u001dæ\u0014ÆZ\\9©2³Ø£±ä0íg|C\u001e\u0019ÍDP¬cËa8»@¤Â\u000fnà\u0002U'Ö\u001a[¦ÙÁ\u0002×Å\u0004d\u0015\u0000Û¥Æ\u0004ò&G:r ¢x:j\u0016\u0017$¶âD¨Øaï\u0018³¸?\u0007\u0001Æ\u0000ÿ7¿j×-\u0005oúFÆ3>}U[é>#ï}cÐå'ÍØnÒe!,gª2z YΰV\nu|êÂÖã\u0017mÉçñu1àX-\u0000ªbO&dùoVx\u0003\u0001\u0011Í\u000boÊÄyãhúkäçË!¯\u0012äÂÏ\f©dá_µÛh£ôY,É¥\u001cåK4\u0003\u000bzC\\Q.aïE,#\u0004´é\u00066§,(¡ú$-3÷ÀÚËz¿^j)hâù&ð4³R\u0004ĸ³êPÝ\u0019¥ó1ýÄ\u001d1\bw:= ñè>éÄï$z$Öh[ܽKV?F{ÕÀ¡Rö!;|ì\f·¨oF*À~<tK ëØ-vç×Åd,?ß?1Öó\u001a¢Ó\u0018\u0014Ô´¡9nöwö²%Äg¦\u001fؽLd§ÆyÂ\u001dæ\u001dÀÝ}Û\u0013åß«\u001bÅR-\u001e-´è4i®Z.Ñ<BAóI³ñ\u0005Gr\u0006qðqhp¬pô¥'©·\f\u0003\u0019#óÜÿ«¾ü¢ëçeÌ\u0001%\u001a\u0010Î&\u0000©ÆH\u0000e\fTåÎ/]\u000eÄösÉK¡ò@§¼bzIJÙ6Ð\u0004D¢*8ÄKU\u00021 2ù\u0010S¥½¶ñ±¯0°õ±a7÷\u0013\f\f)\u0017ùé(\u0001J'\u0002\u001fúîúºöåòðqñsò'¤rÀqØ:¡7h0æ5\u0006½j\u0010Úb·é7\u001f6$1\u0002ZÚ¸¸#³ú\u001e8\u000b2ò\u001aú\u000eº²ø¬Þí,¨~þ½ÁÜHX0ò&®%Î%¢\u0011¶\u0011Jèrç\u0002&\u00140ãY´*\u0001Ä|û= IÖý´·ÜÃÀ¿·IÒÂì\u0013½íH\u0011WNLñü¤pLbÙç\n\u0011\u0017¶¶\\xïÓ\u0003Í/Ø~§éº.\f§oØùÇÇí!Á,ÆÛ¡õÑÉ{â#\n¯[¦÷AþB´]h¨ô\u001e¬\nF= Þ\bïMÈ¡Ü\u0019{ñÎ=M\nÊ?Æyëí#Un\u0004¢\u000f§%©Bx?ôÝ¥5oØ¿\u0005\u000bèù²øY\u0012û\u0006Å,º/÷4¾ÁLJp\u000bpïÁ1\u001c;3k5dX\u0001Y\tZÄ\u001a\\zøÚüö\u0000|º\u000e/²ÕÈ\u000b[Kp*â\n\fÉ\u0004\t¹\u0001ü³ w\u000f6]f0KÄkÿ}X/õÌéÂ^B\u0014]Pe{zËB¦xæÓ°ÂÀ5$Ue#ýÉÇF$%Yg©_µ¾Eu\u001dpïY6&\u001aZ]Y\u000eX'¨%÷ô= ¯AbùÐz 5ybðp]z¸ÂÎàY\u001d±Ó!g76ǸY\b\u001ew¥Ö¢j¡:1.Ëp8v&ò)½Êsû|gWì45s\u0004§ce\u001fEóÃ~E?C0±ò¸´µ,{'ݤ¼)^ÁÓ\u0000O\\ÿ?·YÒþ¡Ü%\u0002Jæ)\u0017÷ë^¥ý\u0003|¡mL\t\"íÌ2¬LÈ\u0010\u0018ö¯%!õ Æ¡Á3¶uv\u0015IìÓTV#_É,ðÆêÑW\bs\t\u0001O´ÄÜYþè[¼ËÆÉGÌ)Ñá:5+ø\u0013\u000bj&JÙø\u0012[ð1Ôðe\u001e\u0014ÎÊßÄ\u001býßøâ*\u0011Ô\u00155Àê\u0015ç/|> seoupö/ü¶ìÄè3%X@Ъà\u0001ÙÎöFéznsÁaXgçµ¢©\"Xø){ ø·ÿÿÀ¦±\u001f¹-|¥m=Mº©\u0017\t7Vêhxbi\u0013¸å\u001dà\u0004{¢:\u0014f²!\u0011Tu@iÇ\u001a4¡)siw¹üèrÁEBÚ4,¶ÛÁ,{âÛó\btà²&HA3\nÃòúë\u001dà$û\u001dJP\u001aªkî/Ùúo #Ô%AÔ¤\u001b\u001dФ
)ùñï,CÙö%#ôBZÇ\u0007jÒ´-ýÎJ-ü\tîM\t\u001a8y'ï v\u0019·¦!KOôd\"} .\n!þbg²ë\u001f±¨.{¦Ê®\u0012Wx.ãü·\u000fÇPÊO¸7\ty¥\u0015¼7\u0006ZAt³È
\u0003y²*S¼FT©\u0000lãüÇ{F_³ó«gVlX*üiDÐûõ\u000bû&c\u0017yÿ|\u0012\u0001P\u0002ëUÃ\u0006QQ½j\u0002Û½2[àa}ûê\bàè¾Î¹_ ɱ YZG³\u001d\u0007X²\u0002бðdQÙa\u0002EÆìiåñ]ÿ\u001e\u000f¬eZ\u001a¾\u0010{pÃuÁÈýWÀ¬}^¨ sh¢¾9ªÌØcBU>°K±ÌwY\u0001 ÿÃ\u0011UëºË*\u0004Ö³BùN«\u0010²ûmE®\\-Ã,s\u001bÂE¶û±B+Xa\u0012Î\u001e¬T\u0019èý;r+û\u0012}Ñ=}\u00199\u0019ï¸3̲\u0004§\\@Ð6M[\u001a¿ÛåóHÚ¼¦\">ø¿.ä\u000f}£ëW|¬:¯a¾ä\\\u0013\u0017À»É[¦Üë]u C³SâØ
q\u001b·
\u0017Àõ¼dYÈÀ{à\u0006»£ô£÷#Æ\u001bW©>ÏÐ\u0015´§\\âÉk\u0002{]Ë=}Ñv]Á~HtÆVDÞT\u0007»ÓýU\u000b]\u0003\u001c³·V«R/ÙEÎê\f±å?oþü5Ñs±{\u0018}\u0003Dvg¢Mÿ;A¨ò+j«2kòtÝO\f \u0007ëDöÄ\"\u001ef,b«Òù\u001bn\u0004·\u0003fbÙûý\u0018a'$4¸dRÖWM\u001f\u001c!\u001d'oýü\tµ\u0013\u000bü
À\u0017»ÿtgòòp¸¤³°ø\u001f'ª6òéPlvgû¸ßÈ\u0010;ÔÚ_³#}!ñ¸B2Zy³m©\u0017òt¼å®Ë²íL,Ä= |{ƸÏ
à= \u000bOz \u0006óCº\u001aÍC*¤ùЬ\u0016J Pád¶ÌÌ\u0019ÙPPÜ-0x:å÷÷ë(\u0000ÐfÀ¨é÷\tÇwÙL²$#Üè$j\u0006\u0005E®QX\b¥6øç÷k2\u0018æ\u0007¢vêùe£\u0016ù0£|¡(&ç\u0017\u0012ºù\u0003có\u0017ÙP9õwà\u0015çÅë/04Qø´«%\u0003\u0011c:\u0017ÉÝÇçÇÞê¢\f¸øh]¡ºÞ6oêç¯
2ré$ãCûT\u000e¯¤máùÐÁ&l
¢¸\f}tÒĤeÙzû}\u0019¥ÝÀݤuÈúÖ¡ã¤é³¼äÓM+ÁÇò/t<\"%H\u001e¨Å|ôòyûüpPÏ7\u0013,iÙ\u0010o\u0018î\u0011¶ÇêåÃ8\u000fÈsÃJýkò:7»ÀË@ýÌ\u0007\u0000[{#sA\u0012?}F{ÍD\u000b¿»\u0017;LSHY(rPÒñ2ÿ4ÖÊ&dÎ7ágì¬\u0002êå¥Öÿëµ?\nÄ\u0019ë0\u000bä-BH¥\u0017{$sq¹'Á(úQ¶+áq\u0003\u0004h³\u0007\u0015\bB\u0006Y\u000fæ¬ìÀ\u000eóë@f±\u001fOö\u0016¿TG-Iï~!\f½FrÙ÷]\u0000Ñ\u0001A\nÕËñ*´\u0010&aÄ\u000f}$Wm¶¤ý\u0011^Ò*\u0012qN>§b\u0007Íï {¤ È\u001a4ͼ1)N\"ÿç\b\u00039ø7\tîA}eò°¼»pI8¹4\näôøû5ù÷Ʋ·\fníí²IÕNø±n\u001bø:ñߢr¥'ÿlæ\u000eJQ¸3hÏÓJ°IÓTÔÓ¬ß#\u0015¾ò\bMä=Mü =MÇ= D$BÐ:4åÄ\u000fnZXKqj¥þ\u00118ôR*ø¤QJS)Tí«°\u0005ÉÞ@àPÊ&kÌ\u0017\tn³\u0019-ÈvÊØø,ãéyýn5)\u001e¢é\u001aê8aÍe(wa\bõa.\u0003¤\u0003\u001a}%f'\u0017b\bÉÖ´ß#\u00058rÏÙý¡Ï:Ï\u0003¤6Ü:\u0015¡x~f¦\u0012\u001bôì&îÉQ¸ê\u0001ÿÑÉ\u001eágØñB)\u0002Î5
m\u0007¢7/4\u0006ÎnI×÷/ë\u001cöÙ\u0004ÛÌb\tÄ\u001a°7'ZzP^÷âã\u001dr(8(\u0007Ðöp*9\u0011Ç/ØTTú\\®:\u0004®GyÄ4«Ê\u001c\fÄK=}4\u000f>fÊ,\u000eR\u0001aá§z¶6.³\fm\u001d:\u001eøû\u0006CtìÆß\u0003§}HÜ ëþlVqdt«yYey^\t^ñË\u0003?}HQ³Hk&\u00176ã\u0000ÒLä0@Ü[溩\u000b9\u001cÖ3°$°¤=}\fôûæÂ]ÔÈ¢a\u000fqÙa\u001c\u0013ùa$Èͧþª\u001d\u0014Ð\u0004Ö8YãêOLu·iBéA÷Ú[!p4Õ\u0007^\u0003îÇ'»ïÃòdR{u´?îôª¿Hçÿ
\u0006?5Î/íÀÿb#\\ôLj\u0000Ô)ûJÌÉ[¯7\f,º$\fÍh<xA¥v\u0007AWeû\u0003\u001bõK= ÝM\f¤<lÇrK'DËT¦\u001eóC!òÀáÑ;0ÔÇO\u0004\u000f\u0011ìG\"Ä\u0010®%e CjÌE&½Z\u000b\b»Y\u001f\u000bìÔix-ÿfäÀSlÈlêÏÐ\u000b>³©Ï\u001f¼#p\u0007¯zùj\u001b\fD[»ÃÒk:ÿ%o\u0004\u0007zÔ{Ñ×AÀv^äÌ\u0013ý&§F\t¼\u001dËWsæÔ5= Z-æÜ\u0016I!0ANH¾\u0010üûöÅ¥!¼s^x¦léP\u0012õfØpÊ<\"<æDTçÔè ˰ÎÏßÀÏ\u0007÷>ð¬»ÆISop\u0007Já:\nNÜx16;hi\u000bê\u000eéßÓöO÷ÀUG(Gñ\u001cÞ_\u0000kÜ,Ý·÷Q¢Ë|¨¨Aa½\u0004Ëc¤ß©\u001d:À7úå#KÈÑô¦ëc%¼#[= à\u001f+\u0007Xß½Á\u0014+EúD\n:%RÌ^ôÙoâÓâF£ºÞp£½\u0012±Y7-\nX\fy\u0004k~h~\u001ba[Í||jd®%ï©ñ8.æ½ÃkóA\u0017ÛfûBèÂo÷|k0²Ìê¼JÝÐyùDy\u00043«÷\u001c9øí¢®ÉW\u0019Íóµ 'í\u0000Æ!Â3ɯ¯ëîìÓ$\u001eW2·63/ \u00004bJ¡éÆÈEJÙ\u001f*\"¢¤§{k:\b»\t)vù3)ônÐRª\u001aó#&$\u001eYSzhw&üX\u0002²W\u0019ÚANr\u0013g?÷\u0006ÐÑF\u0005\u0006î]÷·\u001bÊQÊîñ:¬ã7£\u000f½Ýã7ÃÃïQ=}Í#í\u001bÓ-ç\u0003Yz\u0018Ù·³¨ßM¤Ä Ûv3©ÖÓS$ò\u0003rmd\\\\]\f!èúÑw×ð4¬|\"ÿ¦v\u0012ÿÇë¿7µ'%ª¦\u0006nѧï= %Ý%\f¡ÐúêúÊÊ Õ¹¿êÍ\b}Ö\u001c§¤$Î9ï^bfa¡¿%05º _áê\u0015Íìßc\u0015\fm2\u00141Ø B\u0012\u0019ë\u000f\u0010º÷§ýÐ\b\u0002m]Ê_\u00073= ,Rÿ
àÊê\u0010½\u0017CÐMìBÙ\u0005wNÜÕ\u0005¡æÍMÐòÇL·vïÌ8\u001aI0¾°
\nNRé¤6òÚ$4qÛðãjR¤Ð\u0011.î wu\u001aØü\u001dmÇóþá¤uÖ¶¿¡#¿³ÉäÔW\u0013ÿcBaHW6G\t\u0012\u0012?\u0014ÇdBàx^û\u0001hƬà4s5ÿ\u000b¯¹\u0017ßlÞ\u0011\u000eo%bP\u001dÛÜ[G.ËCS?#SM]<×¢¦ú^_c«LFë{G]\u0003F<^m¿
{Ë<=M=M×zêúó²ßl6\u000eú\u0015)¦qNàeÎC.DQy~°8'£ª68\"øöò\t±®Yn\u0015\u0019Ë_«Ü;´Üå>#4ú.\u0012\u0002{˪BM
1}Ú®«/L8³®\u001ez;êUû,¼v{Q\u000e\u000bH+zsM\u001c¿¥ÅÍâ\u0014Û5V\u0002ÎR³|ÿÄ»>\u0013&\u0013ÅÔÔ2p\u001a2r\u001d]\u000e³\u000f¾9Xêh\u001c\u000f\u00189ðeû\fµë\u0010{À4;nN^~>3\u0010ÎÃOÛ5ê:aùëS@s\u0016ûiZ´\u001aë= *\u001f(ò§ü\u000f;Jb¦F^lÁùr7°\"\u0005\u0014\u0017þv=M\u0012éí¡£ÛÒÆÞ(\u001b¼!\u0001mDd\u001fìÌè\\ÇG_O¿\\i\u001aû~ÃÈKtSà4dñqLì5wÂ8'S\u001fè\u001c¯®¸?ØM\f\u001b\u0019¼ãÚcþ\\_è/m&)ý\u0002\u0013#ìSÆ\u0000ªÚk%¢\u0016Ó¨j¢éÔ\u0001¯ÃVâÎȽCâܨòã\u000bÏ^'Í8=M\u0000 ¯ÖÝ*>¸\u0014¸'6ÿW\u0015{mç\u0016\u0007Cê\u0018µaÒ\u0010\")\b\u0012\u000bx\u001eØzà.\u0007º]lÚÆp\u0013:\u001bëdI3¨¥ö¸\u000fºë¾L64+\u0015\u001eHvöÈ\u001d\u0016s×\t4>óX\u001d[2*o²XþTw\u00103NÖíáOAU¢¶ÕñE4\\(-Ù4.ªTr§ÿvTÕ\u0003¤ 8ïØ\u000e\u0004%p/¯\nZ\u0011\u0001VmÝÜ)ßlðz§:\u00008W\u0001^s=}qM\u001dnÎ= [\u0003C¤¤øÎäù3º\u0017Í\u0016'G:âà!\u0017OrVFCO½Èþè\u001d\u0017A9¶2Âæáv\u0004àOÉ0õù\u0010Ï¢b,T x\u000b\u000f{Êý\u0012òÂôD|1¡M󮆦ö¦:\u0003×!m\u0003Ç.ô§ë/¯o\u0012sï©\fÿl~\bHÿ\u0007ê4\n\u0015N\f\u001eçB#Î}yg~+\nYDø*\u0012\nâ\nÓk¿%©9õh\u0015 Ãy.êçþç/\u0007U¸q{¨ ¼?%·Ñ§h{ØHÀÜaw\u000f\u000e¯¶þ£¸I%©4&\u0013flJ°ºåeÙt\u0005¿Êohj\u00052hHSå\nøzU)\u001fbÂöccI%&3-/=M\u0019 \u001e¨È«»\u0011èéöHY\u0012¼Myîîï¸å9ÊxìN(Y\u000e¢\u0006Ö\u0005\u0017\u001ft)5S\u0016\u0014\u001aZYÒ)ÄØ\u001faM«Ó\u0001L\u000bàÛÉãdÁ\u0015\u0006>¬\u000fÎ\b\u0018Èú\nk\u001eÝÙjPäÙmi%©µ¯·,«xIÝ\u0010jjáÀH^Óx&\u0006ølYmqãYQa²oM»\u0019\u0018---ùà9~/TwÕZȲ<Øî×\u001dm(ÚÙk\u0010ÂÖKhõ!\u0012PbÎ\"µIÍ¥\f0°ºª·«©2-KbôÓJ¤\u001c\u001a/¤\fÈǶ\u0014³W°zT\u0001~Õ\n\u0000\u000eÈtã¸r\u0000\u0007ø¨j®\"H\u0001ãòø,µ»Ô;ïÉ\u0002ÑsVl[uú\u0010\u0013o¨óÏ\u0002\u000f3,á\u001d÷:[ö&±¹¸G6þ\\\u0001\u0011Ñ\u0012\u0016Znd\u001c&ñ(Z*)<1l!OòÚ²·è!©Ã®T¯%Ì»iP\u0018°Ú\u001c\t]\u0012îVy¾©A¾)¶ÕîÃH2&\bä´SFYð\nrøÈSSxèºØ§b!m%Êõ\u0006¤NAMW(»y9Ôîÿ\u0000Æâ2\"ò¢R=Mâ\u0015
@8#%eÊè+Ű#µÑ= \"Él^sõ¦&ÖÅ×3\u00115\u0001\u001bø¢o\\¡.¿]ÔÔÐ(£*Û+ãÿh«öN¼¸^\u0001@Ùö3qܪç\u0015\f1yün!xQTv4\u000b.ÝÑèØ\u000bt\u0005j¯!7Cÿ}ÃLQ\bÝ\u0014¸'yj¼
¾\u0015\u0002|\u0019dç!X@\\\u001b;A5êúîü>e¿$wo.~î[ZöÒ\b$\u0010«o©JêöÂ\u001a\u0000\"z:Â[ázÕä\n{»= §+;æZW}ÇÒÁZ{þ$&>§\u000e|@!/¼È\u0006( 0¥3UyêB&)$M-Ô¨T¿>Í·@Ü_sV/Fum¦g=M-
A#\u001dk߯^{%ü1\u0013WOtC¯9µ@Wá]\u001fkHÜ\n[QQC¨@_)Û¶[\u001dä~\bÁ£i\u001d\\yM{WÌ¿_ÁÇ\f;ÄÁ]B\u001fɽÌE´òöK\u0010ç+\u000bĹØGðoÒ$\u001eãÚ\u001c¾>÷Ø'ÁÓ\u0005Øl\\q)/\u000bÄ9\u0019©ÞÁJSÄôC£~\u001dÅã4îá?B5óÊYyÿýÊ?ÖraèÅs¶Õ\tu\u0007\u0005\u0017½î± ßéT.\u00067ÔÎb4¶ô{!¼á\u0011Ü\u0018Ô$¦\u001eÒjo¢µ#¿¬Y\u0013c çN2(\u0013ï¬\b%àLFýâA@{x¶t&¯\tÜØT¤&Næ!\bC{\u0016\u0004)1\u000e(ÖjØjisÔ®³
O-é²^ɬlßÄÑH»ÈÌtG{įOxö.\u001ff§è¦¥.GòÇ\u0000\"\u0018s:Dõ;:e@wk\u0017twïy²wWÞÙw\f-\u0000w9Á,wÖæKx@èex¿ýx!xLĽxÂÚÎx\u0006íàx\fùóxuú\u0007xê\u001cxOÅ2xI= By\u0014/MylZy£\u0012fyÅ\u001esykyÏZyúyÉ\u0001«yëÒºyÂyJÊyÓ Ñy´\u0016Ùy«)áy\u0013Vêy6òyLöúyb\u0003yòÝ\u000by³e\u0014yÏö\u001cyG%y\u0019(-yAÄ6yùK=}zZAz_ÚEz\u0019IzfQNGÔ>{×WûÖ¨\u0016±8í¨\u0016ó\u0001\u001cÈô¡\u0016ñ¨\u00161\u001d§\u001e¶ñ\u001aÚ\u0015±Jma1\u001c-Ï<ÐJ\\t=}½\u0001\u000b¨ëI\u0010Ê0Ôr\fSØI!×eî_\"ØHý\u0013¼\\ä\ti«ÞíûÎJdyS5ÎVÃèC\u001c\"Êkm=}^\u0014ícÕâônÙ±¢NôùoT³eYH\u0002-´Å×å5$WE\bÛ\níÉ\u0005ý: qf®Ó®xÒRV-\u0003\n¢\u0003K@\u0010\"PgEÝ2}\u0004ý{PÂÉæc#Þ!ì\bÁx¥é·n³ÓÛû«sk¶Ù\u001b\u001d±|\u0002n½Ù²?NCYøQ'9_c4is6«6ÊÛ\u0004züe\u0004\u00129Ê\u001fàþ$\\QQpp4bÔUL=Mâ#f¸Æá=M2£cD¿ÐXÐï·LÚ\u0002Ô®Á:ßùPÍ5fÓ,U2âo\u0002¤ÉÊ=}\bò^ Ú Jà5Ö½\u001fƽdbß41FI¨L×d#p«ïëCâDíÞ@\ty=}ÔÈ\u001bìɹºüÅñ½Úº\u000fgå¹\bÀ¥7qåTxÈò®u¼öÕÔ5¥\u00190nòùÕd\u0010e©LòÀ\u0018¯PÔÔey3åsãê\u001d¢Páз÷ä\u001f&±= ÉÐ÷
-û|ʼ
\u00118³ü\t¨EoO7É\u000b\u0000ü¿qE\u0007e.¬\u0013Ú\n-Å·ÞßïynÖ\u001fÞ´jÊ&.C\u0005\nÞ\u0011lÊî.3ÐÆ¢i©\u001e®\u0004«\bàé¦i\u0016\u001f«¤I\u0001tt7[Â!®Ë\u0004¡\u000b'§\u0001¿\u0011jV\u000eågg\u0011¢lbpFf\bggz¡m®aaÔÔS#¡3d¾Ì\u0016nSg\n[¶A\u0018&=M$óuØÓ\u0003¯Õ2â\f(o7âßÜ\u001cË\u0001úº·2\u0003äjÎ\u000e³Û×ã¶$lÑùÔ/A¦ ³B\u0004s\u0015}üüàß=Mæ¢e*\tâ\u000b^jÀ ¾S²^Ô>]TÊL\u0004\u0017ݧM\u0015þÎ\u000böÌ\u0003G]é>MÄtÚû´=}¦vb«&{wLL,soÇ¢\u0005Õs¯×\u001d\u000bºX\u0006×-7\u0002Í®tÁjäl\u0017§T~6H\f§®Ã¡¦ O¨b¬èOÚ1Í\u001eX\u0003ÖCQ\u001b\u0011b½\u001bx\u001c«F¢¬ SòO\u0003\u0016À\\X\u0005°\u001e!I\u001c¯C¼Ú¾,gC¡®Ò=M\u0012Aì\u0003kÃ\f¢>T\u001dZ ;)T<CÈ;õÏ6\u000eðÖzN5\u001cr\u0001ÊT6·lñ1\u00004ÝJ¢··\u00137\u000bÖµl\u0019Wä.Ý)À3%\u0004?ÀbZ:´« ÝB\u0018Ö³«ø\u0013ØÚh\u0017Ô)\u0001\u0007\u0011©oÖ\u001d\u0005Ö\u0011éó\u000bãÐFaà\tw¦%\u0007Ê\u0004ç*¿v-1Â>mXS3\tÙrD1G¶©\u00028[vo©\u0013íû\u0004ÑÈ\u0002§\u000bqï\u0007¡¦ÑJëá·éP*¬±×= \u0018zT¢ü\u000b¶$?xIÕ®¬ßt\u001aQÕìãàTÂPá¿\u000fÔËP}.\u000e\u0001/=Ml¡\u000eM^Iïkýy\u0002K\n\"A\u0017²l\u001b\u0000©¸Í6%Îç\u0002ÚJõoD=M \u0001lXÑI\u0010|®ÅqïóVß\u0000Â^ÕG\u000f\fS·Ê¡÷6£ïòÊ]ì\u001ecÁÊ_4\tCGGu²s,\u001a¬\fºS6²Jö\u000e¯mÁ«\u001f%©ÊU\u0004[\u0011H_=M¥[&QH{0øz÷5® zV2^s÷j\u001a2/\u0016ywÊ*È!Ìï(\u0017Æ,dxÔ¯÷B\u0018ö1ûuðvU\u0002ö\u001c\u0014ôV5\u0014±ãF\u0002\u0015±\\yõnf±°]öbÙ@¯\u001f õIÃÚ(\u0014\u001c\u000fÙ¬.\u0016\u0016ÑUþñe§þ¼èäS\u000bÕú-oz\u0017ÍX\b-\u000eê@Ñrb5¨nEÇÕ\u001csädVjr\u0012a3p¡üÁ7\u0017Ëq¡HlÖ\u0017»qÒ%\u000bìy\u0006½&Lô¾d\u00129N?J;}{<;\u0000í¨\u0016ñ:\u0006ñ¨\u0016ñ¢\u0016ñ¨\u0016ñ¨¦¦:§V>E+µ\u0017Ǧ^úr\u001btëYb4µçü{òEðôÐÏÏ^ô÷GD\u0002ME\u0011PÞ\u001fÃ\u001c\u0001=}Á¶\"ÌùtÒy\u0014©\t\u001dÈA<V=M´\u001cÑ\u0005Úðd/«]ª¤]F\u0007\u001eÚXÞ±Gª\u0002®iÍË<L\u0003ºF^åp¿ò½gE!À;¡\u00005Üù\u000eÒé\u0019Ïg-ý\u0016¾\f^\u0017\u00046)\u00057¢eªuì_\u0004¼\u0005Ø1g¯ïà§áHF çã%¥\u0004%Â!¯n \u0013iNQ\u0015T\\l\u0014˺/dê\u000eà7½Iª½ïËå\u0004AP°°\u0006XPoÞÐËÞ\u0003C´Q0Ï^.ÉGîÞß#öÍ*\u0005:¦:\u0006ü\u0006º\u000b-6À\u001f'Ú5.Ø> Ô\u001bF-ÑÚëS-Ìï÷²S%ú\u000165FQ\t·
)~õ$\u0017\u001e,\u0000\u0016çÖ«¾cËø3¼®Ç$¶ÕKÚ\u001e\u001føxý(PBtñR²\u0018Ø\u0014=MËh\u0003B§['è\u001bþÍpÓ è\u001bç=M9)ÿá.´¦pÖ¡[t·e27aÍ7§Wn®r©sE«µ\u0014{×í5j\fÆ^¯áónPÆÊ°\u001dôõá'Ò\u0007M\u001c4\u0004ýÿÅé=Mý^\u001aè0Oe:Ø¿²Ñðóî\u0017cº\u0012NN\u0010À5W,)ðÏãF9hu;º;»:FWÀxÂ\u0012·x±ªxOx\u0011ìxôxK&tx Ágx{]ZxgøLxí?xð\u001e(wR\u000ew±
ówF¸Øwmê½w5üw9_UweJ\u0004vÔâvvi¸\u0011ô=M¬öæ\u0019\u001eöáÇb÷¼d÷\u001cÄ÷Ûkß÷'8ù÷î\u0005\u0014÷\u001bÑ/÷lìBøÎQP?ü>SAO{ü\u0014¨\u0016ñ¨\u0016ñ¨\u0016Ȩ\u00165jñ¨\u0016q*\u001f\u0018\u0018\\-º\u0011Të§ùSUêL\b\u001a±\u0002ô\u001e}ÿPd$45AøË-Ö* \u001a@tÕÛa(\n¯ ÿN\tíͺzs
\u0003WJ$c+LîjüMoz
ñP= \u0003Õj$kr1\"Ð\u0003в\u0010Íyð\u000fuÆ\u0012²ï82NfÊ:\u0005O\"z«6 Z=M²:ÊÅJ
µNðázf\u0010Aìܳc\u0014n-\bÆlS\u0000Éb±\u000bÙÙÚÁÞ&É:sÒêÖQk¸l¶-ÒpP\br\u0012\b¦>6º\u0014½8\u0001(\u0015À\u0015\u0001Gt\u001aÎsª¹×¼ÐâSr WE\u0012ií\b$E¢UêNv.q*ª\u0019~\u0004$\\\u0012*w¡´*âóuz^¥6F\u0010ù_6\u000e¦\u0001ú \u0003vG·\u001b\u0015²Ú\u0003\u000f7\u0019çêwÉû$÷Mʺ\\Ðÿ\u0014%WÇ\f\u001b1ThÁ¹âþ<=M\"¹»<Â1TL¨ûF1p¢Îð@çãÊò!\u001edg':\t¼F8Ø3\u0002\u0005ÔFÄG²ÞÚB
@À\u0016ÙG7\u0014ÖÜEy£J-\u001eîÀzn>Ä0D\u00035KM}4:sÉL3Åo\u001eZ\u0001-/\u0002³Ñù\u001b7z¯e_\u000e\u0017fÐ\u0018U¤/ZÓüE\u0018Â\u001eèÚþzþ-{zÚë\\À\u0007=Mh\u001dÖ¼= G\u000ecêt²Oek:öÅäªå4*Â\u0017ê^íùÙi½\u001b<{é?<Ûwñ¨\u0016ñ¨\u0016ñzñ¨\u0016\n1Ƭùðv\u0001¶v97«2j¬\u0014À.:\u001adÍMzc×8ãCqU¾7ºóv¢g\u0002\u001c+©W\u0002\u0001.&?-§bÍ2þ¹oÄ\u001b= g\u0019fì0ÃmVÓªá\u0005\u0006:å-¡ÕU\u0006½\u000f4:°1ª\u000bûyÎ\u001b¬wwáÀª¾q\u0001ÁuçõÝþ\u001c|%W0s3ÈYá&Þ\u001c¢»\u0010h>éhot\u0017ÃYUÌ÷ýÓ\u001fSN¹¹¥ý¿\u0010áׯp~&ÔTjÕR¨|.^Fyiìÿ\\\u000fÅÚªr\u0002Õòq¸¦~éÿÑê¨'ó®\u0000IÜ\bÙIÏZ®~Ü^\bºvýubqsÞ±þÔ½F¦áØ®â\u0015Hâ©\u0015\u001b\tþkJÑ9\u001bü\u0000|/÷s¹\u0003Æùoª\u00182Ó\u001dþz\b·®ýÒ\u0002Ô¹·,ûJ\u0018\u00049woE[%;Áļ¯9W}ªK&н$Z\u0007 *KE\u001c¹cZÂ-M\u0001@\b«\u0001ªI\"÷²?ª\n«[vÍÚ©mènÅX*ÞÃÙVÙGrò\u0000«\u0012fÑ¥´g´Ä¬c9R\u0002\u0001=M³9óN\nÀ1?a9Ùûã_ÌÂ\u001eÎÓnrÄH\u0015\u0004sç\u0001\u0015gÀÀÖ#í 7\t¡õßlõjÈuʯB\u000eT\"Ðü\u0016¾T\u000fµ¡M[NÔQ¹¶íc«\u0007!9\u0011§)!ËøqB¢¾uQ äÍ\u0013\u000fwiù\b\u001eªyÁÊ.ô»)²@Wj\u001f\u000f4}×=}ÆSîòÃÆÙie!\u001e\u0013MÁ6
côý\u00117iÐ=M#\u0001(h \u000fe\tä fã[-·@\u0001)ÐOèç\u001f*з¥éÝ4:3ÀöôÕrÎ¥ó\u0012~#Òp÷Gç´hÎz\u0011\u0002=Mưóv\u000f\u001ekîY\u00148µ½MV\u0003\u0017\fû ,Èçè¤\u001f\u001aÅe\bÕ\u0003S¥(Òÿ¶oÎqæÔ¾rÖ$E¤\u0019ÍQaw¥\u001cÂãñí7f\u001d#qÒò-ëÈçë±qj£b(v\u0019XWÓ\u0017|þ:uSë%\u001fb\u001fØ\u0003Ðö+g#\u001dê\bÓx(rÎö·øVh\u0018Y)Ò/ÛòàÂJµ#,# ®ªjÉâµT6éR\u001a\u0003y)4ÀyiÈ*b= ùZ\u0016$8'\"\u0006ì>'ÉU\u001b\u0004;\u0014¢Aë4¸»?*|ù£X11|±9mÃÜ\u001cKzG,5K-\\¯H\u001csÇã¯S\u0012ÀþóØZ5¡SVÂLGFcÚtý&N^7³²?xL¦Þ/°Ã\u0013ë¿\u001c LrÃ3\u0006×S\u000e±lñ\u0006\u0000Ã\u001fçªÆlÑ)\\\u001c É¿êA_^á}üjM5y
ód ¨ßϨP\u0019Åà§^ $d¸dà1ôÏcPTh±m©À\u0006\u0013[\u001e§ÂGîTméêά$ÃGÈæmñ9_\u0001FTb\u0001D3UC÷²O\u000bFQSQ«eQëªM#WKÓs\u001b\u001c]<Î0=}f±DXP#ZP3)íûÇ:C4\u001b\u0015j=}P²@]YFïùKó.\nÚ=}-\nGÇ>¯<OÎ\u0015ñ¨öüöì¨\u0016\u0011Uúñ¨\u0016ñ¨\u0016ñ¨WÈ\"\u0002:\u0018ª *Üz:4 *ÊúE¸:cg:é\u001b4|Ü\fnÀ!rPýe'\u001aáKôÜ\bÀ\u0011´EL<E¶öe¿£4\u0007æø¡ÝaÕtÑaøöT6úa·ÊÔÓm\u0001È;NbæÔ\u0013°\t\u0003\u000eÌ÷ØÇ÷8©\u001b/e>\nÞGsÑn«¶ÎÙhµ\t%$ï\u0002TXV)¤ôà\u0012\u001dÄàU
/\u00107:.c\bÌveù_æøcýdæÃ\u001fÒÀ\u0017h\u001c8=}I¿P\u000b2¯y \u0004â\u0002Õw±\u0011\u0006\u0019ÛYø\u0007¿INrhÖ\u0006txÙ\u0004\u0011aÔW \u001b¹gØù°=MÔÔ×)õ±·ücd§&Ú)¼_Q_LÎ\u0003³=}æ\u001dT®jÉ+¥¬çìÊ ·G\u0000⡺O.Ùñ§_\u000e\u0015+\u000eh×\u001a\u0007pÂ-³C\"?ÎóvÃ4â>T°n»\u00118ø.~2\u0010ÒYú·4\u0002Ööº÷ó/\u0006Î\u001awc2üØ»\"©_\u001a¬\u00000÷Fz2vn£ØNÊ¢t=Mã>ô1/CñÞµóS1þÁ\u0012ç\u0014ï\fÅÞ6íqäJ\bçµnìj
\u0019(¼¬²ùVõlûðf°æ±\u001cûðc®uMÍ\u000b<òQ(ij\u000fѬF\u0015+máp4°\f-}F\u0005Iª®¤Á%¸N
g§\u0007À»wí£Ã(%5\u0017Jè\u0002Æõ\u000fÖ\u0019ð,ùAúb¢~Ê¥×õ@ú7\u0005sçÿÝàPk\u0015Ð\"/\u0010í\u0007\u0003iþ®\u0006=M'ÙÍõè
·l\u0007Ño3±7ÍZ¢ù\u0006Ķ\u001f\f\u0016Ê\u001d:&Ø\u000ff0fù϶Ú\u0004&%Ê8¼GèÏú= \u0000êö*Ò \fæF51¶%Ï?§zi¶RYÌz^J
ؽ¸fò/\u0014\\2¥ªÐ\u0018Úr\u00057.&-\u0005\u0010í\u001bEtVù²_Vg!Æ)7§TwªÁ\u0017\bÙe6Í´\u0000\u0002øÞà\u001fÿLÍTq}UGÍ\u000e²5\u0004QG ªÌ'ï\tÌ\u001eÖ\u0000ö÷¿jÃËúp½ÿºëò_¹¯LÒvä³÷ê×#=M\u0001$[@z\u0005»ã\u0001X\u0012êaÅ1Z¾\u0011;\u001a\u0010\u0016æt\u0016©±Ù).ب\u0016§q¹óh\u0016ñ¨ò(ybJ\u0014\u0011ö'hJ:ø¸³y1¬b\u00119ÉeVM\u0014]\u001f°4eSøOÍ*C\u0019xæ@\bÅ\u000eýäÓ¸ýoÐÈýÍ(Æ@H\"¤}\nõÜh{\u0007g¿¨À~¿ÑxX¿u$õ+ãpq¬\u0018§i)çïQ\u0005½fï×Ve¶yã-Øîî\u00056¤¸ÏÑo
,ÈÈbýßJ @=MûHn= 6\u0011 3Q¤\u0001ľ²%ÖbèÐ)\"öúÑ=M\u001dUàß¾¨Íö}ØâÉ#ýÖ\t2\u001dÚNB\u0010L·\u001a¡xY[Ó-)2\u0002,\u0011·ÁåxZë\u0005ÐÒU3+ â½³ë_z«xÙ\nI\u001e2Ù.\u0004l÷\u001fô×BYc\" Zâ¬Føwj©i\u0012î»v\u0018\u0007êåj\"è,jT¦´ü5HóíÔ\u00169\u0018\u0001.ð²,&¶ô\u001c<9£\býÊ,|j-ÅñE)l¿.¥Æî\u0002:=}Êæ!¬\u0005u©ù3eê\u0015·¾òv¯Ör\u0019\u001enjy\u001f:I÷7!zê³6º·2(\u0012÷$\u0001vi9\u0003z×:ýr+\u0013¸z3Õ°ú4\u001bt7´|f\no¨BÐ\b(=M@ª\u00057HÌU+ç\fÿ\u000blXÌìáN\u0001ï*½Ç\u001fé#\u0012Ha\u0001xëªg5\u0013F²6Û£\u001f9\u0012J¢½B[¹:{3°SÇt|~Ûð®ci:UÁfÉ^Ûð³_\u001fÊ|Bèί\f\u001cËY\u0007ú&\u0015s~o V\u001c\u000b¢N£#ÔÜy\u0015WrÑÈ\bS¦UÆÁ\u001e,i¯=}¹ÖÃIBhÛ¬\u001aMeè£S©¾&1=}\u0011ÿn3a÷¦Æ\u000f\u001e±ó¯\u0000Y(:\"»¹zXÜÝ)ÇFøKwýPbÇ\u0017+çv)µù\u001bDh-½^.Á(¾ª\u001e¸L©%¨ºó2J{Ø[¹:Dÿð\u0012|+õLÇ×\\Óó\\O&\u0005þëdyW\u0007i=}À~]2vMé\u0014\u0011£/iÅü\"/Åþþ¢¬K²\u0001²¡=}=}b}\u0014ÓC\u0018þ«\u0006\u0001¦\u0018O7´Õ½\u0004\\®þö*¤sú¤Mu¶ß\u001euÙè\u0007{Ýa·Z ¬Q=}µ¡^´qYI±\u001a\u0005ü\u00183·\u0006ÀÐgJôe4£ØÐÊ¢ØE\u000b<£P]¸\\QñOÝLßóOÇ9\"Ŭÿó?ÒÐÛ-ªD/^,ëíO6ÒÜ~¹T
&\u0005qA(T}\n\u0003\u0016ÉÝt\u0011\u0006l àWjeWâ»\u0006µ@·)dëÛîMåñ
W\u0005\u0004A= ±\u0012e,î|Äý¹]Gç¯JRgÝìÃzö'Ìg÷i6nLÚzÃ9\\Ý.z7ÚÃJ¨]ø9^=MÉr]Ô\u000fÅ_\u001a_=M-GÌ
mé=M\u001c4
%Ý_uæ[º²@ô\u0011\u0003\u001aúò\u0003¥fÞ\u0004¹ \u001fõåÏÁ\u0019d\\hðM% \t\tïjóË÷^F\u0003]_ÚÅ-ãÒiH\u0011\u0007ÜHJí£6ÁíH\n[ â¯
zÍ>·¤\u0000\u0006¥]1i¼!\u0001\u000eÂìÏäR~õ\u0005c=MúW|\u000eöÁ»¦c¨hDáôV>¤ó\u001fr¸¤&NªÍÙ´=M\u001e6)\u000fæ\u0001Ð\u001fBØ\u0004¯¼^\u0014= \u0015\u000eð\fñ/$Ò+Òç\u0004y\u0010Í12Ù\u0018ÊÞT|\u0003\u001b¾T0dqÜßQ~UáÖú$\u000bàÓ¯áµs(\u000eZ
öâGÝv²6Î6\u0003ùÓ\u0015ÆÑ)'\u0016¯\\ê¤æè\u0004¥/±¡Bm¬©Lôº\u0014\u0005\u0000\u001aÔ1\t\n\u0007$\u0003¡®/= .\u0017.3º°Ò\u0010\u0005énY\u0006Ù&Ú¢tÈ'\u001f\fNçt\u001eKfZõÂhä\u0014\u0005-\u000e\u0012îGÈÐ'\u001dõç\u0015£Iv¸§eæ\ti^=MnÊ\u0003¡\u001bKûÂvî\u001cúgÓ)´^ñ¨\u0011¡\u001d=M¾Àïäëç¿\nýt$Ñ+ã&d\u001c\u0003µÜ´0OÜ¥ÚÊËo³ÛëõèÈ\u001c¦Öî= 2eW®æ})\u0012´Ñ&\u0006õ¸\u0017¢\u001c%\u0016ß\u0007
iȸc´²5\\\u00106¤«îø4*6^31)¡·ÂØH×\u001f\u0001ø!?.æÖMó*9W)¯üö?\"V¥!-iQ³\n\bæ³í\u0005É#(7üÌøwè(krw\u0000Z!\u0017+3@93X\u001aéÎvHô\nFÙ-Áì0÷\u00037xzn-fÚ\u001a,b6ñÄ\u001aɧBFPwYÝÉðzpL\u0018DúÒ¯£J31&Èæ\u001264;\u0017kYǼrÂ]n¦?1å¥\u001e\u001fOGm{0^g(¨Å\u0005$!\u000b8uAb¸\u0002^£\n\u000frý\u0018\u0004AnSaýQ®ú\u0015^ÛÚNEbó\u001bÌâV=Mþx\u000bx\u0001Fþ¸û÷7ë¡};É1H}\u0019\"çC\u0000 s©]9¸OgQ\u0000û\u0011_Id¢\u001dì\thL\u0012¥Í+|8é'\u000fÕ?ø\u0013¯?)\u0006ûëjÔc\u000e\u0004ãºI1Q\u001f] Yÿ\u00104³öñ;\u0006ÒQ}tôCf\u001dƬ\u0002í?¡%à\u0013Ź\u0005mgnËÜØG l\u0017¸j:o@\u0013@§ØÐS÷ÄfúÏ+]\u0011ÐÄsìÿ%Ö]WyÄs\u0011gÖ\u0006%òßf\u0015]&L@\ftTiÏ\f²æmõ}xõP\u000eêÄÀ¯²·y¤¥ þ\u001cg5¦Ù|Æ¡ßÌ\u0014\fEsÔ{\u000eÑ\u0001Íò¦Ot\u0018F^PQÎ8d¤ørê«âf$\to¤ãx8x[Ë(%ÍtÉ\u0001çnÞÔ6G$\u001eAXݽ\u001cϤmÃ\u001di2Üiy\u0018d0¯
*ßá.9*oíÁ\u0001r·2Ã(s´È\bÅz\u0002÷zY¢Á¼öÔ\u001a\u0001°ç0\u0015}Ñ4µEöÖ\t\u001dr5l®\u001aÄ'1Æüç\\ã>Æøi\u0003\u0016èLïÖÀ|\u0016e¨ùRBaEHТMßÏãØª$Äß=Mç\u0004.\u0000·\u0017¼ªnD õ\u0019´÷\"\u0003T·ñ\u0015y)5¹ùÊÊ(·ÕJÏ\u001fL\u0010r4\u0010jô*\u00122÷5=Mù#¯v#Ñå~¶¢\u0007z\u000f>\u0004õ8ySæ\tÉ{Ú\u0012õ«:£¿\u001b\u0016!ÃrYØç\u000bµÐÜ ×>å
Û&¼¤æ¸kgz;Ö0}Ë«]WÒÁþwqI\u0018\u0005M,[x@U\u001eb\u0013\u0018G'1\u0003\u0001ÿôÃê\u0003(\u001c}/Q\u001e\u0012\u000bÇÁÛâm¿p\u0004\f/|¼éBÐc«Q\f(ë3º(z2é¹:ºoû;@ÕS?¿\u0010GSk\u0017«70>³r<ÞaåUGÒ;\u001cBAi¤°óGåÅ¥Û7BëUi~vJ\u0001;ãG}@OUm½ÛXKÁn\u0001nál!kýKe[kWG\u001e¼ëÃì½ìÉìÔLs\u001c4F³\u001eSÆAvÌ{¾\u001a\u000b\u0003\u0013ÿ\u000f\u0007\u0017\u0017=M\u0005\u0015\u0001\u0011\t\u0019\u0019\f\u0004\u0014\u0000\u0010\b\u0018~\u000eû\u000f=M\u0011ü\u0004\u0010\u0018\u000e\u0016\u0002j[cowmuai\\dpxnvbêÛãï÷íõáé|~\u0018\u0013\u0001\u0014\u000ezswuil= hnvúóçíáéìôøöª\u001dϤn¢\n÷§ Õ°Vrf\u0006Su5a¢R\u000fð¯/×u®9=M\u0010Vñ'\u0017¶\u001b3\u0014\u0006r)w·5\u001d8\u0012\u001aÝÅ9Ä@ðØ!iò¨*\u001cÎ\"ªy¹84òÛí¸°2ÇàV²Zx²(\u0019îòú_ \bøÞnVõa\bó\u0018ÑØ6ó¹*$&J:Fãs!pÓú±\"Ì.rZø5/Æ\u000efø5Õ8RZ¹7\nä(Ú\u0012ð³\u00124\u0002\u001a³\u000f\u0018Îæbg\u0014±'\u0015Îʺt°=}F6Wó15zö8½8²ùîT\u0002òèu8Åz÷µ1Éfª\u0014Mv\u00123û¥Ôp8û®&7´âyîÕâ\u00198»\u0010á«\u001côZgÉ&Zës\u0012ª¶@JÛ<K'\u0017ô®\u000eáP¨ñåküJ{«974\u0002ñ>Óëâ@\\S@;ýn\u0014ñð\u0005±æ§\u0016ñ(\bñ¨\u0016ñ¨\u001e+ò¨ !5¶½ÔTT7}÷ÂØu°\u001bû\u0011\u0004\u001c¼jÿ¦°\u001e%\u0010æâ(ØLT7}÷â\u0006ÃÛR\u001dðõµ$=MàÞ²ÆGy0âÚy³«\u0016ÏÃÛR\u001dðõ¯974^±ÈGa\u001dúºM:fÍ\u0000cîK\u0000úD²à\u001cç?´=Ms¯\u001d]üoÓÄ·= rÄÈÿìÎR}j©Í\u001aÔ!¢a\u0006Ø\u0011b' \u000ekÃÂO²Ü\u0000\u0003\no-ÛÈsUB4\u000bSï\u001egtW¦I\u0001-º\u0005ô\u0011ç= Á(w¦=}õ¬Ð\u0017pr4×¥©ðUrêÕ½¹\u0017àë®h\u0007ùâÙ¶è\u0002\u0013\nö¡Sd(îÏ\u001a¤!Ö¬ÏGI.ä=MÕ°ÏT\u0000ºÃ«ÐLç}¶\u0005ó¯!M\\m¿·} rÔÿðîÒ
ª©ûQQ\u001a\u0016\u0011¡R((h\u000emÓÏ«Ì= ÿjo1ËÈtB6\u0003Óï\"W<Én»¬·{´\u0012Ù°ÿïø\"²éÌ\u0002¤!U\u0018¨¢VD()p=MÚ¶O¬ÙÓ\u0002J\u000f²Ú0\u0014
6¶\nÇG\"T ¡TÑ,B\bx¡®ÉÌ\f\u001cynU¨sqÖÈ\f7ÒV\u0004¥Ý\u0014\u0001\u000e\u0001ÞFÒ\u0004$®mÔä\u001d¡æëÔ³±,í\u0004#þ¨Eu\u0016½\u0007!%ó\u0016u'aÔ¸÷¨uÁ+ÓÍiñ_Æ4ÐaYñDÂ\"KZVÆI×b\u000b,AmÙJä\u001bµfëÙ±+÷Ä#ü°-u\u0018÷\"¥ó\u0018U§bÌx÷©eA«ÚÝ\tòc.4ÌA)ò<6 ;*ÖÄLwb\u000f Áí×z¤\u001c¬«×É+ô\f¤\u0006Tív\u0001'Ç\u001cºÏ°È ~¯\u0016µ\u00013¯ Eô×iá+T\u0018ñK\u001aélt¸ô~\\\"Ãt·2Òx_òê²\nÙ\u0005= ÑDú\f\u000f^q C$X%N\u000eÌF?tü[a+LP\u0018qK\u0016Éklxô|y¢ÓÊT·²ÎX_ñâr\b{Y\u0007@Q<z\f\u000b>q\u001f;äX#>nnͺL!Eþüï/¿ht|¡5j\\eGÃ¥6&zf꺾ÞyTTQê28ÞºH¼°@{ë±V\u0016ñ\bĨ\u0016ñ4\u0016ñ¨6(\u0011ñ¨\u0016¡)®TòÙÑ\u001d$Tü¡ôO)ýÁµdOyGNùvùÜ[:=}Âýxý*ÔM¯ó]'°ÎÛ¹\u0002v\\,çSf±âÎä'´f\u0012\u0003ë\u0010à\u001dLyÒ\f\u0007((3s\u0002ØìXBIB\u000e¾\u001dq×¹Í{ørñ+Ú-·\u0018½\u0003¹\u0010oâ@® /]ãTªÁGà!7a³:S\tÈÈ£gÖñÝAÕ|ðh0£®Ô\u0006%ë\u00055OÆø\nïH·ØrÌ\u0019\u001ae¯Q(Ûá^Ð3ºSÏpß=}
ªJ=Mâ\u0017\fs|\u0015²
¬W\"½\u0004¤#ÍlyÑ\u001aÝÁÀ:»uæPÛñ1TÈVÚÂÙÀª\u0003/IÝy\fÎ/§ï7|ò±#\u0002mmÛ,ãFjG
~.¼)wºEù\u0007)\u0000Í\u000b\u0014Ò(©a\u001bÁ\u0016;¹6x)zÉf¬½P\u000bÃÁ¥æmº\u000eÉÿ¤Fp±F\u0002ÄæUwíc\u0019Æïô\n\u0002[S¥#,4F<C\u0015§û4ü\u0018\nÓâï3\u001b\u001cDQ÷øOüN¹´\u001b\u001cf\u0011\u001a'Á\téñwl\u0016@ÀÆ(:l¯Z?;ÿkG>Ô\u0000\u000bh2¶ïY]\u000bgªp¢Ù\"9\bÓÇØtÔvU\fU\b£Ê÷\u0001n\u0019Î\\aí\u0001Ø\u0007\u0004yX=M uà\u0016¯\u0012$×)þ[gÁ\u0013GÞëU¡rGþ-kH\u0016þsçJ.ëºÁ$»;;KC}l:å\b ¾ïÓa¤nÈ=M¥Õà\u0018o\u0006¤Õñ\u000esèâ´\u0015ʼSNìl \u0007ÿ\tSÅàlPg\u0011\u0001'ÈüWÎìt°\u0007\u0001)SÉ lX\u0016w\u0011\u0002·'\n>´Ù\u0003V.t\n\u001fØ.u è.v\n ø.w!\b\"\f÷5w\u0016âÓyCg;S»\u0001;iKKÞ£ý6©\u001aZÇaj¸²4¹±8\né\"\u00140µ±øÚ&즸±(\u0002é8\u0014°Y±ØÊ\" \u00124\u0014°Z±\u0018Ê2 \u00128\u0014pJ±\bÂ.\u00127\u0013p±\bÒ.¡\u00127\u0014ÐBö-'\u0005Ê´íf± \bé7\u0014\u0010B±0¾¸º\u0013\u0010b±0Ƹ:\u0013\u0010±0θ º\u0014\u0010¢±0Ö¸¢:\u0014 ¼y\u0013 À¹\u0013 Äù\u0013 È9\u0013 Ìy\u0014 Ð\u001a91Ó\"÷\u0001¦ø\u0002¶èh¦\u0016Y1íâøØü×\u0004\u0014×\fØ\u0014\u0014\u0018ü\u0017\u0004\u0018\u0017\f\u0018\u0014\u0018\bûg\u0007ÿ§\u0007\u0003ç\u0007\u0007'\u0007\u000bg\b\u000f§\b\u0013ç\b\u0017' [FÔ\u0003íÍÔ'cÔ\u0005\u0001íÑô'°{R¯}r¯¯²¯Ò¯
ò¯\u0012¯2¯R°r°°²°Ò°ò°\u0012°2T¼DqSÀT±SÄdñSÈt1SÌqT б\u000eng\u000eüP»kGþ\u000b\u0000U´1\u001f-ÊwÛ§$.7÷ºùz:Ú.\t4\"ù®:Ô\"\u0007Ò´nº1\u0004¹\u0014r6bÊ\u001fÎ÷Í-ù\u0004v4âÊ/Îù=M5ú$v8ÂÂ+Lý³E\u001ch7HÊþ\"+u7I\nþ2+y7ÊJ\u001e\u00023m9Ç\u001e\u00123q9ÈÊ\u001e\"3u9É\n\u001e23y9:g\u0011D<»{;»kÖLýDZì\u0010øf<J=MÂ/]8=MÒ/a8Ê=Mâ/e8
\n=Mò/i8J\u000e\u0002/m8\u000e\u0012/q8Ê\u000e\"/u8\n\u000e2/y8\nJ-Â7]:\u0003-Ò7a:\u0004Ê-â7e:\u0005\n-ò7i:\u0006J.\u00027m:\u0007.\u00127ñ\"ºú¨£z\tÚ.&7vz\n\u001a.67zYÃJ\u001dÀ3\\ÙÃj\u001dÈ3^YÄ\u001dÐ3= ÙĪ\u001dØ3bYÅÊ\u001dà3dÙÅê\u001dè3fYÆ\n\u001dð3hÙÆ*\u001dø3jYÇJ\u001e\u00003lÙÇj\u001e\b3nYÈ\u001e\u00103pÙȪ\u001e\u00183rYÉÊ\u001e 3tÙÉê\u001e(3vYÊ\n\u001e03xÙÊ*\u001e83ºíB@;»{K¿Å´î84¼Q\u0007B!B.À4þ·¹l\u001aÓº\u0007-η= º\u0004¢-Ö·b:\u0004Â-Þ·dº\u0005â-æ·f:\u0005\u0002-î·hº\u0006\"-ö·j:\u0006B.þ·lº\u0007b.\u0006·.7.·/7/·070·1714)6?ü>}[;;;ëØ¨\u0016ñ¨\u0016ñ¨\u0016ñ¨\u0016ñ¨V\u0014xÜÈí5&éï%U¦êò-¥¦éî9
ãݼqµcÞÁau#Þ½u#Ý{p\u000f \u0010\u000f¸PeàÕ\u0015$à×Õ$ßÚ
%¤àÖ]\u0000z&\u0017Îx\u001e'.y(\u0007®\tzÄm\u0003aÊ=M\u0003_·bÆM_Ô¥Á\u0014!Ô§ÕÔ!ÓªÅ$¡Ô¦ýß\u0006cö÷Ífî×-døçÏ3\u0005&ªø6=Mæª÷8\u0019\u0006êø4\t6jì\u0005A\u0016'ì\u0007UÖ'ë\nE&§ì\u0006½= \u0018«\u0016xÒ®\u000eX2¬\u0018h²ó\u000f¥V¨ò\u0012¦¨ñ\u000e¹fèò\u0010©ÆÑ{@>§+{AH«ûB@¯ëû@<ÍãÃhÙ\u0003ÝÄdÉ3ÝÃiÑó]EpÇëþFtïkþDzÏ\u000bþErÞÉl1³^Êq!s\u001eÊm5\u001eÉSì¬'\u0017>Ç_;»\u001cúõ\u0002ñ¨êÞ\u0011¥§\u0016ñôW\u0016¢\u0016ñ¨@\"Ó¢ÿ\u0004$èP.Ï\u0005ñZ¼4ôôDk rWkt7\"9ö= ¦î»÷n\u0000ºP>.mJ±Î}HQ?Û\\ÂQWÃ{DxÓ\u001b¾½GUë\\¿_E#ûÀSIü;MÙ'\\ÐgD_Ù¬_M>à/Åj
m¤ÿÑÍdßNt= ¾\u0003+j¤\u000fKD\u001f\fÁNSdÞJn7ÌN±¿ÜàÃi\u0017Ã\u001eKG\\\u0002Ö¸ßÊpü_Ív\tîÚ5l\u0002Zp\u0014osuÅ$\u0001ØWáÕ»ôtÆ_TÅB-ÆF¸¸êsv5½n¢\"lëg\u0014\u001b|Cölü<Z]¼F<ÿÛ|ýQ}\u0014¾dÉ3MÄMD_ѳ\u0013\u001cS¶lþDzÝÀV|ÿÌ»W¶÷D¢Z!s\u001eo¥ç¬bÓ_ͯ!Ua\u0004<§ËÚ\u0016þè6= &ÓÙ}K¶C;\u0017Ûà Nh\u0002¹K8.;\t\u000büB\u0004SyLÆ\u0017a8\u0004ô!JDï4±ñfR\u0018(Hº\u0019<a{.V«+n³ \u0016®Àz\u000fþ\u0016ý\u000eýøýèýðýÕë_j'CVý\u0005\u0014\u001ch\u001c\u0017w¢Âêyvø\"
ÁJ
\u0011ú\u0005ÉUÉVÊTÉ$ʤ@8ìÅçÅ'Åçí'¼\u00039ÃùÃdêdê°\u0002§Yñµÿ\u0015\u001eì\u0018Få\u0010ÏnèÙ= 2XåfjdfpÑ*ª'\u0013vMlQVØðrzæ[ò_øcè3«¥ ¢\u0003\u000b\u000bå\u001eõ\u000eÁ.èq²x¥9½\u0014ÆQÊõzå%\u0012pT&I\u0011âÐYih\neh\u0005äk%ÖMÖÎÍAP\u001elFü\u000e9ðÔì\u0004 Ðè(Ìì>øxN\u0019®\ti\u0012\u0014\u0018\u001f«Þ\u000eøñÊx¢,í\u0014~ÑrôyÕ\u0013°ócøë[ú\u0017Í×ÌÒ=MÕ\u000bé%/ä¶o\u00022'?i4\u0011@¢È\u0011SvÝö^A\u0001>}Á>ÊA\t?hõ©õ(Þ\"ð²õy\u001b+ï(\u000evñÆ1©Ê%5=M-E-f-Õðpdp6V\u0016µ\u0010~Å\u0000Ëxö¢y7Á»°\u001a\u0015û\u0007C£=M|ÁKaÛáÂ×ÉÙRï·×ÜÐSÉz]\u0012\u0013usöõ¶³´6354B??A@@Æ7uÜ\"Τ
\u001b!ãã=}Ò³öYÕ[ßPÑ\u0015[àXÙRgu{j\u000fC^ýÏ;[ó8d\u00045ÐD3\u001a:9ä\t÷ÐüWë?ç\u001c·\u0000iÉ»n\u001bEó>Ù»r\u001bF3>¼{k+R¾/OkDM¾<«¨*ª\u0016ñ¨\u0016w\u0016ñ¨\u0016ñ¨\u0016ñ¨6ñY¥w\u0018\u0004Ò_Íe$Íi4Od h0o=Mf(¯=Mj8Gm\u0007c\u001em\bgVîdÖî= îh\u0016î^vîföîb¶îj6®[B®c®_®g\u0002®]b®eâ®a¢®i\"®\\R®dÒ®= ®h\u0012®^r®fò®b²®j2.[J.cÊ._.g\n.]j.eê.aª.i*.\\Z.dÚ.= .h\u001a.^z.fú.bº.j:n²é4îË\u0000g tf\b\u0011NkÜ¿NoìÿÎmäßÎqô\u001flàÏpð\u000f\u000enèï\u000erø/n\u0003kÞÇn\u0004o1\u000fõÒ
A\u0014ÌNôPt$\u0004ø§\u0006à·'wvþð7&·n µRÓV¼F(Dmõ\u0003£§¡\u000filnuÒÕDiÎdâi\u0012.E®\u0000ém1hÎp!ÿÀ¦((uÔèrb)Gë²¼µEÍë\u0007~\u0007Èp±ªÓØEò²L±m=MÙ\u0014\u0014£÷É0×*\u001d8aüªN8b\u0004ºÎØ\\Ëýo¢ávvþXÔ)\u0005¢Éö®\u0010ËâÑ·pPåèÈ\u0000¥h®Ô\u0015\u00060[\u0007æ/èòx\u0011$ð|\nȵªÑ|Æg\u0015=MiÖT°\u0004塸í&Ò\u001cÛgÂu]\u0016lTÊ\u0006µ!\u000eíÚp¾È\u0007Nn\u0014\u0007§ñkÞè\u0007¥¦n\u0016\u0011'ñr~~W\u0017\u0014²p\u0016\u0018\b³î\u0019\u0016Ù)¦¢2\"{êJ1\u0014Üùv\u0017ªÉ/\u0016Þ8\":x\u0019Tbu&¢Ù%'n\u0017¬Ñö\t¬\"´)ù{HRæ péñf\u0010³Èê.H¥úJò% Ix\u0018àò¶/³úZ\u000f.^µºA\u0005\u001d¤ÔwbÖR/íçÐ\u0014Ví¶Á*\u0005->Ô¹g\u0016 7ÀçrkI\u000bì_O9åBxÙsä¢nñ6íñ¨\u0016E¶¦¨\u0016ñ(\u0019\u0016ñ¦¨Èút7\b¶º½ªº¼æºBB\u000b»<\u0001?sQãK×SATÀûAÐ;νQ\u0017¥\u000b0\n=}tZ÷= [Õû¯û\u0013;³Þ\u001bêBb©<¢«2>:ck\u0002~)Cé<¬j\u0013\n»·J×Z{ÒûD\u0001ÑFW= \u0016Cw[\nM?òÐ0Ò@!|i¤\u001cq#g'Þg\u001fÐQ\u0019.Q\u001dFnvÿ\u0013õ\\÷,K9è\\7g¿çI\u001eéX\u0001\u0012\u0007Þ:ÀDõ]Ã^]\u0013JË\u0000C\tO¸
O.Ïì4q\t|q\u0005òtìaÁ\u0017b\u001b\u0002î\u001dÓÞ\u001d\u001f\u0019Ê\u001e1= \u000bÒbëþ\u001f9÷JÍÃpÓBÇè\u001eØ\u0001ÚÌ\u001cÿFm\u0003\u0015g)@\u0014í¼ôõ½\u0017\u0005
½ÂeL¦ºÀwßUb¾ùìAîhz\u000f\u001d×Â%è\"ÿª%Ì\"pKç\\= Ä´Aô~¢\u001d±\t}:zF6\u0004\u0014\u0003\"\u001b¨xR\fsJ^!n1,·÷ÂQ\u001bÒij\u001d/]\u001fÙÆ¬r½zõO\u000eîÇ\u0006½Ðf\u0005,fìVÌøsæpÞr¦ü'\u0010\u0005Ó©þôÝX °Ï6²]n\u0018?>xã>µl\u00120Ì6÷Z²)[µ\u0012\\'\u0016ÁÌtBªXÀóµ?S §\u0016\u0010,÷p+Òè\u0019º¨·\u0017Þ\u0012þjéÊÔ\u0015Ë£½nq|\u0007\u0018G6ù\bÌV§Ä.\u0006#îòü/ª\u0019º¶×\u0006²¨ìnb\u0011'Å7r½æ1{XóR¡Zn2þ\b*ÊM«î@,C3lTÃ\u0012ü\b.ûªAÜ4KzW/ÛÚÁ3ºë÷[a@9&½Öh\u001dãô\\7v~ÿrH®®]½5[½¹w\u0005-\u0002§\u001d*\u0000K$?æ%uF\u001bóì_G2ÎÁ\u0019ÛÔ\u0002E×\u0014V\u000e\u0013\u0015kÓÔ(psÔHIby6\u0007aÀÔHEnnnnî\nÕÕW¸0922\u001ahPåcA3åWãÜ
·G»ñm=}ñ¾D\u001b=}n\u001b\t;¡Hs\u0013Q\u0013kB\u001b\u0001s>5#A\u000fÕɻҳ;®þBÓÇi»äKÛý¹BïÝb«\u001cûIǨ\u001aÔG/ýg\u001bIQ;ÉY;'*ÛRÇ>á³efæ<â\b<o¸T[:H»®²> ¬CÓ¿®{v\u0018Añ7@\u001bL\u001a»Î
LX§ÄëLÀ\u0013ú@[©Z¿!ß\\\u0005®;ýt¥UKïUTÂã\fÒK\u00156M¬²?¶\u0016Éû6>CõuÉ\u001býBMóè½è]#¿^?^¹}6lĦuÍV|ÝL¾wúÌßÙrÌ\f>ÍñE¤R<I\u0005L«Öæ?/ãa<Ù4ûUãÀ\u0017îC\\-gR2òDì%ÀË\u0014)g)âÆ+÷Ô]%,´Lu_!ÿ'3l\tócá\u001aó©\u0014M×\t
\u0013\u001a\u001a#ZU\u0007\u000f\u0005\u001bu\u0001º±ÑÝ.\u001eàã\u000edÙ\u0015øÙg
*\u0005£Ó×\u0018ö{É\u0012]@²w|²séûb¸Ð§&=}= bã\u000b\u0011\fe%+PI\nl5p\u0000U\u001dâGäÄL#+d^©®çlV°\u0010Sê\u0007lÜ2øm\u001cÊp\u0000= A¡ç¯ÔTR§\tSmâeÁàä= ïþM¡§tªî¡m.¨#ÖÑ¥±\u0010¤pyp\u0018ÑÆ* 2\u00011³\u0006D¶±ø>¢Ô(Ãu³u\u0012D¢W¯\u0000ÔÄ\u0019'\u0006ºêÐ;eV;~Z»\u000f;= »1A{{s½×ÂC%rN\u0002Ì\u001bÛQý%]ó|KªÑüÌÚ
+¤n½Bâ\u0007üÞ
HT\t+hæNç¨1¾\u0001Ë7sËVüê¦d¿õÉ>õÜI5Ù>WI¾\u0016ÌÂ+ÿGÞ®äY£=MÆO$uH\"pÜt\u0005c·Ázìø2£\u000eáH´ØÑ\u0007/ó¡Ò/Ow¶öÛFQ1'µÃ6áÅÁ\u0013·RôOë\u001d<²_¾µ°ý|ß/\u0000öb=MR©\u0006¡\u0018µg*5ÑI6#ÜU²¸Û<n2Û\u001cGºª\u001eáEW]\bãt¿Àl¸\u0015-{+&å\u0011¡°ð3é\u0018ð³¢\u0002ú¹Ù'7äö\u0007¨\"÷\u000føýìØèAµg#w\b¶L°\u0007ê\u001e7\u001a=}=MB\u0004¤C&hé#ñ4\u0003á´8 \u001c&2\bÉ\u0019ósn\u000fæï\u000f\tî%í\u0007¢-ê·\u0015m\u001a\u0015|h*¤W\u000e\u0002åØ;AÀ>\n@3\u001cÅ[ûNhDîQFü*Ý?uJûØ6\u0001\u001bë\nA§²Âp[ôsFû .oCtï@ÝÚý\u001e#\u0001\u0014\f£=M\u0016Ö#wìî\u001exý\u000fß½GÒÿDó|Ü}5jìÝNȰ\u001d5EÇ>ïvßøN\u0005Àªf\u000eÈÆHø\u0017ý\t§åpª( øç°ÓX*)· ©T0¢Ç\u0014\u001c¹ÆÑB¿\u000e¤\u0018\u0012i\u0003Å\u00135mt\u0004ímhâ\u0003¡'»BNiÇ©¦=}{fLÐË+¡ùC}Ø\u001fûÀÓ}\u0010qb³.x;\u0015Ý<¸Ø<墯rEØø>¬\u0012\u0006C\u0010ä ·|\u0016ãKL\u0015QfäÕ65avTõÝýîtÐ\"¦6Ál¬¨6ñý>\bHG8\u001c\u0013¶\u000b\u001f\u0011\u001f\u000b$ =MøÄd»¥BGÁØÇ¼¹$=}¯ã)uYGz\u0018;\u000fC}pd¿\\\u0015|6(L=Mf_ï#ß\u0017«\u000eWÞ¥\u0010§fp\u0017@0N6\n'¤sªQø÷Õ¬Åq¾>.øü·¢D\u00075³T
áhÅ8zDvO= ¯óÝ\u0001yàÙåFÆÒçcËóz\u0001?Ê\u00155cèúë.ÌðÐÞ\u0015~O\u000bË|¿ÓQ§\b\f\u001dv)BHX6ø\u0005öÇ\u0007¥kÒ\u0018Úa¡cÙ7¦x©\u0001nº¡6¾}®i\u0002\u0004\u0016Ï<\u0000ÎWh2 9's\u001a\"IÉ<»ïX\\#F\\Ë_4F[ eÚ\u001b\u000b\u0011¸\u0002ø¹2øH$ß9_\u0015\u001cxì9i\u000b2µã\nã/¸Äyf\u0012\"5TàyÊ0îE\u0018\u0017ê²Þ\u001am6ëÞ\u0018è6ð\u0000Ïâ§9¬\u0011k=}¼àt<¦\u0006Mdç6\"\u0000p_î3,\foO3p\"pw÷\u0011´/(1ñøs.íA/\u0000&Ï\u0017\u0018U\bÃ_XÍpÕ1h\u0012Ì\u000780E\u0018Qö\now÷!x.AÜ\"¢j\u0012+惡¦¶\u0017®äR\u0002\u000eow÷!xêpn
â#\u001bðù\nz AÍp\\0N\u0011\u001e\u0001HJê´ª\u001eØ^U\nIwu¸öô\u0002ú!3å6³âVq£³¹´RN\u0011£%y1\u001b\u001c0º\u0018:p#\\:J:\u0015b9Hµ7h_:¢I9 _¼µV\u0004\u0003,þ\u000b\u001a<`});\n\nvar imports = {\n \"a\": wasmImports\n};\n\n// No ATMODULES hooks\n// Begin runtime exports\n// End runtime exports\n// Begin JS library exports\n// End JS library exports\n\nthis.setModule = (data) => {\n WASMAudioDecoderCommon.setModule(EmscriptenWASM, data);\n};\n\nthis.getModule = () =>\n WASMAudioDecoderCommon.getModule(EmscriptenWASM);\n\nthis.instantiate = () => {\n this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then(instance => {\n const wasmExports = instance.exports;\n assignWasmExports(wasmExports);\n wasmMemory = wasmExports[\"g\"];\n updateMemoryViews();\n // No ATPRERUNS hooks\n initRuntime(wasmExports);\n ready();\n});\n\n// end include: postamble_minimal.js\n// include: src/opus-decoder/src/emscripten-post.js\nthis.ready = new Promise(resolve => {\n ready = resolve;\n}).then(() => {\n this.HEAP = wasmMemory.buffer;\n this.malloc = _malloc;\n this.free = _free;\n this.opus_frame_decoder_create = _opus_frame_decoder_create;\n this.opus_frame_decode_float_deinterleaved = _opus_frame_decode_float_deinterleaved;\n this.opus_frame_decoder_destroy = _opus_frame_decoder_destroy;\n});\nreturn this;\n}}","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\n\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\n\nexport default function OpusDecoder(options = {}) {\n // static properties\n if (!OpusDecoder.errors) {\n // prettier-ignore\n Object.defineProperties(OpusDecoder, {\n errors: {\n value: new Map([\n [-1, \"OPUS_BAD_ARG: One or more invalid/out of range arguments\"],\n [-2, \"OPUS_BUFFER_TOO_SMALL: Not enough bytes allocated in the buffer\"],\n [-3, \"OPUS_INTERNAL_ERROR: An internal error was detected\"],\n [-4, \"OPUS_INVALID_PACKET: The compressed data passed is corrupted\"],\n [-5, \"OPUS_UNIMPLEMENTED: Invalid/unsupported request number\"],\n [-6, \"OPUS_INVALID_STATE: An encoder or decoder structure is invalid or already freed\"],\n [-7, \"OPUS_ALLOC_FAIL: Memory allocation has failed\"],\n ]),\n },\n });\n }\n\n // injects dependencies when running as a web worker\n // async\n this._init = () =>\n new this._WASMAudioDecoderCommon(this)\n .instantiate(this._EmscriptenWASM, this._module)\n .then((common) => {\n this._common = common;\n\n this._inputBytes = 0;\n this._outputSamples = 0;\n this._frameNumber = 0;\n\n this._input = this._common.allocateTypedArray(\n this._inputSize,\n Uint8Array,\n );\n\n this._output = this._common.allocateTypedArray(\n this._outputChannels * this._outputChannelSize,\n Float32Array,\n );\n\n const mapping = this._common.allocateTypedArray(\n this._channels,\n Uint8Array,\n );\n\n mapping.buf.set(this._channelMappingTable);\n\n this._decoder = this._common.wasm.opus_frame_decoder_create(\n this._sampleRate,\n this._channels,\n this._streamCount,\n this._coupledStreamCount,\n mapping.ptr,\n this._preSkip,\n this._forceStereo,\n );\n });\n\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n get: () => this._ready,\n });\n\n // async\n this.reset = () => {\n this.free();\n return this._init();\n };\n\n this.free = () => {\n this._common.free();\n this._common.wasm.opus_frame_decoder_destroy(this._decoder);\n this._common.wasm.free(this._decoder);\n };\n\n this._decode = (opusFrame) => {\n if (!(opusFrame instanceof Uint8Array))\n throw Error(\n \"Data to decode must be Uint8Array. Instead got \" + typeof opusFrame,\n );\n\n this._input.buf.set(opusFrame);\n\n let samplesDecoded =\n this._common.wasm.opus_frame_decode_float_deinterleaved(\n this._decoder,\n this._input.ptr,\n opusFrame.length,\n this._output.ptr,\n );\n\n let error;\n\n if (samplesDecoded < 0) {\n error =\n \"libopus \" +\n samplesDecoded +\n \" \" +\n (OpusDecoder.errors.get(samplesDecoded) || \"Unknown Error\");\n\n console.error(error);\n samplesDecoded = 0;\n }\n\n return {\n outputBuffer: this._common.getOutputChannels(\n this._output.buf,\n this._outputChannels,\n samplesDecoded,\n ),\n samplesDecoded: samplesDecoded,\n error: error,\n };\n };\n\n this.decodeFrame = (opusFrame) => {\n let errors = [];\n\n const decoded = this._decode(opusFrame);\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n opusFrame.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._frameNumber++;\n this._inputBytes += opusFrame.length;\n this._outputSamples += decoded.samplesDecoded;\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n [decoded.outputBuffer],\n this._outputChannels,\n decoded.samplesDecoded,\n this._sampleRate,\n );\n };\n\n this.decodeFrames = (opusFrames) => {\n let outputBuffers = [],\n errors = [],\n samplesDecoded = 0,\n i = 0;\n\n while (i < opusFrames.length) {\n const opusFrame = opusFrames[i++];\n const decoded = this._decode(opusFrame);\n\n outputBuffers.push(decoded.outputBuffer);\n samplesDecoded += decoded.samplesDecoded;\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n opusFrame.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._frameNumber++;\n this._inputBytes += opusFrame.length;\n this._outputSamples += decoded.samplesDecoded;\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n outputBuffers,\n this._outputChannels,\n samplesDecoded,\n this._sampleRate,\n );\n };\n\n // injects dependencies when running as a web worker\n this._isWebWorker = OpusDecoder.isWebWorker;\n this._WASMAudioDecoderCommon =\n OpusDecoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;\n this._EmscriptenWASM = OpusDecoder.EmscriptenWASM || EmscriptenWASM;\n this._module = OpusDecoder.module;\n\n const MAX_FORCE_STEREO_CHANNELS = 8;\n const isNumber = (param) => typeof param === \"number\";\n\n const sampleRate = options.sampleRate;\n const channels = options.channels;\n const streamCount = options.streamCount;\n const coupledStreamCount = options.coupledStreamCount;\n const channelMappingTable = options.channelMappingTable;\n const preSkip = options.preSkip;\n const forceStereo = options.forceStereo ? 1 : 0;\n\n // channel mapping family >= 1\n if (\n channels > 2 &&\n (!isNumber(streamCount) ||\n !isNumber(coupledStreamCount) ||\n !Array.isArray(channelMappingTable))\n ) {\n throw new Error(\"Invalid Opus Decoder Options for multichannel decoding.\");\n }\n\n // libopus sample rate\n this._sampleRate = [8e3, 12e3, 16e3, 24e3, 48e3].includes(sampleRate)\n ? sampleRate\n : 48000;\n\n // channel mapping family 0\n this._channels = isNumber(channels) ? channels : 2;\n this._streamCount = isNumber(streamCount) ? streamCount : 1;\n this._coupledStreamCount = isNumber(coupledStreamCount)\n ? coupledStreamCount\n : this._channels - 1;\n this._channelMappingTable =\n channelMappingTable || (this._channels === 2 ? [0, 1] : [0]);\n this._preSkip = preSkip || 0;\n\n this._forceStereo =\n channels <= MAX_FORCE_STEREO_CHANNELS && channels != 2 ? forceStereo : 0;\n\n this._inputSize = 32000 * 0.12 * this._channels; // 256kbs per channel\n this._outputChannelSize = 120 * 48;\n this._outputChannels = this._forceStereo ? 2 : this._channels;\n\n this._ready = this._init();\n\n return this;\n}\n","import { WASMAudioDecoderWorker } from \"@wasm-audio-decoders/common\";\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\nimport OpusDecoder from \"./OpusDecoder.js\";\n\nexport default class OpusDecoderWebWorker extends WASMAudioDecoderWorker {\n constructor(options) {\n super(options, \"opus-decoder\", OpusDecoder, EmscriptenWASM);\n }\n\n async decodeFrame(data) {\n return this.postToDecoder(\"decodeFrame\", data);\n }\n\n async decodeFrames(data) {\n return this.postToDecoder(\"decodeFrames\", data);\n }\n}\n","const symbol = Symbol;\n\n// prettier-ignore\n/*\n[\n [\n \"left, right\",\n \"left, right, center\",\n \"left, center, right\",\n \"center, left, right\",\n \"center\"\n ],\n [\n \"front left, front right\",\n \"front left, front right, front center\",\n \"front left, front center, front right\",\n \"front center, front left, front right\",\n \"front center\"\n ],\n [\n \"side left, side right\",\n \"side left, side right, side center\",\n \"side left, side center, side right\",\n \"side center, side left, side right\",\n \"side center\"\n ],\n [\n \"rear left, rear right\",\n \"rear left, rear right, rear center\",\n \"rear left, rear center, rear right\",\n \"rear center, rear left, rear right\",\n \"rear center\"\n ]\n]\n*/\n\nconst mappingJoin = \", \";\n\nexport const channelMappings = (() => {\n const front = \"front\";\n const side = \"side\";\n const rear = \"rear\";\n const left = \"left\";\n const center = \"center\";\n const right = \"right\";\n\n return [\"\", front + \" \", side + \" \", rear + \" \"].map((x) =>\n [\n [left, right],\n [left, right, center],\n [left, center, right],\n [center, left, right],\n [center],\n ].flatMap((y) => y.map((z) => x + z).join(mappingJoin)),\n );\n})();\n\nexport const lfe = \"LFE\";\nexport const monophonic = \"monophonic (mono)\";\nexport const stereo = \"stereo\";\nconst surround = \"surround\";\n\nexport const getChannelMapping = (channelCount, ...mappings) =>\n `${\n [\n monophonic,\n stereo,\n `linear ${surround}`,\n \"quadraphonic\",\n `5.0 ${surround}`,\n `5.1 ${surround}`,\n `6.1 ${surround}`,\n `7.1 ${surround}`,\n ][channelCount - 1]\n } (${mappings.join(mappingJoin)})`;\n\n// prettier-ignore\nexport const vorbisOpusChannelMapping = [\n monophonic,\n getChannelMapping(2,channelMappings[0][0]),\n getChannelMapping(3,channelMappings[0][2]),\n getChannelMapping(4,channelMappings[1][0],channelMappings[3][0]),\n getChannelMapping(5,channelMappings[1][2],channelMappings[3][0]),\n getChannelMapping(6,channelMappings[1][2],channelMappings[3][0],lfe),\n getChannelMapping(7,channelMappings[1][2],channelMappings[2][0],channelMappings[3][4],lfe),\n getChannelMapping(8,channelMappings[1][2],channelMappings[2][0],channelMappings[3][0],lfe),\n]\n\n// sampleRates\nexport const rate192000 = 192000;\nexport const rate176400 = 176400;\nexport const rate96000 = 96000;\nexport const rate88200 = 88200;\nexport const rate64000 = 64000;\nexport const rate48000 = 48000;\nexport const rate44100 = 44100;\nexport const rate32000 = 32000;\nexport const rate24000 = 24000;\nexport const rate22050 = 22050;\nexport const rate16000 = 16000;\nexport const rate12000 = 12000;\nexport const rate11025 = 11025;\nexport const rate8000 = 8000;\nexport const rate7350 = 7350;\n\n// header key constants\nexport const absoluteGranulePosition = \"absoluteGranulePosition\";\nexport const bandwidth = \"bandwidth\";\nexport const bitDepth = \"bitDepth\";\nexport const bitrate = \"bitrate\";\nexport const bitrateMaximum = bitrate + \"Maximum\";\nexport const bitrateMinimum = bitrate + \"Minimum\";\nexport const bitrateNominal = bitrate + \"Nominal\";\nexport const buffer = \"buffer\";\nexport const bufferFullness = buffer + \"Fullness\";\nexport const codec = \"codec\";\nexport const codecFrames = codec + \"Frames\";\nexport const coupledStreamCount = \"coupledStreamCount\";\nexport const crc = \"crc\";\nexport const crc16 = crc + \"16\";\nexport const crc32 = crc + \"32\";\nexport const data = \"data\";\nexport const description = \"description\";\nexport const duration = \"duration\";\nexport const emphasis = \"emphasis\";\nexport const hasOpusPadding = \"hasOpusPadding\";\nexport const header = \"header\";\nexport const isContinuedPacket = \"isContinuedPacket\";\nexport const isCopyrighted = \"isCopyrighted\";\nexport const isFirstPage = \"isFirstPage\";\nexport const isHome = \"isHome\";\nexport const isLastPage = \"isLastPage\";\nexport const isOriginal = \"isOriginal\";\nexport const isPrivate = \"isPrivate\";\nexport const isVbr = \"isVbr\";\nexport const layer = \"layer\";\nexport const length = \"length\";\nexport const mode = \"mode\";\nexport const modeExtension = mode + \"Extension\";\nexport const mpeg = \"mpeg\";\nexport const mpegVersion = mpeg + \"Version\";\nexport const numberAACFrames = \"numberAAC\" + \"Frames\";\nexport const outputGain = \"outputGain\";\nexport const preSkip = \"preSkip\";\nexport const profile = \"profile\";\nexport const profileBits = symbol();\nexport const protection = \"protection\";\nexport const rawData = \"rawData\";\nexport const segments = \"segments\";\nexport const subarray = \"subarray\";\nexport const version = \"version\";\nexport const vorbis = \"vorbis\";\nexport const vorbisComments = vorbis + \"Comments\";\nexport const vorbisSetup = vorbis + \"Setup\";\n\nconst block = \"block\";\nexport const blockingStrategy = block + \"ingStrategy\";\nexport const blockingStrategyBits = symbol();\nexport const blockSize = block + \"Size\";\nexport const blocksize0 = block + \"size0\";\nexport const blocksize1 = block + \"size1\";\nexport const blockSizeBits = symbol();\n\nconst channel = \"channel\";\nexport const channelMappingFamily = channel + \"MappingFamily\";\nexport const channelMappingTable = channel + \"MappingTable\";\nexport const channelMode = channel + \"Mode\";\nexport const channelModeBits = symbol();\nexport const channels = channel + \"s\";\n\nconst copyright = \"copyright\";\nexport const copyrightId = copyright + \"Id\";\nexport const copyrightIdStart = copyright + \"IdStart\";\n\nexport const frame = \"frame\";\nexport const frameCount = frame + \"Count\";\nexport const frameLength = frame + \"Length\";\n\nconst Number = \"Number\";\nexport const frameNumber = frame + Number;\nexport const framePadding = frame + \"Padding\";\nexport const frameSize = frame + \"Size\";\n\nconst Rate = \"Rate\";\nexport const inputSampleRate = \"inputSample\" + Rate;\n\nconst page = \"page\";\nexport const pageChecksum = page + \"Checksum\";\nexport const pageSegmentBytes = symbol();\nexport const pageSegmentTable = page + \"SegmentTable\";\nexport const pageSequenceNumber = page + \"Sequence\" + Number;\n\nconst sample = \"sample\";\nexport const sampleNumber = sample + Number;\nexport const sampleRate = sample + Rate;\nexport const sampleRateBits = symbol();\nexport const samples = sample + \"s\";\n\nconst stream = \"stream\";\nexport const streamCount = stream + \"Count\";\nexport const streamInfo = stream + \"Info\";\nexport const streamSerialNumber = stream + \"Serial\" + Number;\nexport const streamStructureVersion = stream + \"StructureVersion\";\n\nconst total = \"total\";\nexport const totalBytesOut = total + \"BytesOut\";\nexport const totalDuration = total + \"Duration\";\nexport const totalSamples = total + \"Samples\";\n\n// private methods\nexport const readRawData = symbol();\nexport const incrementRawData = symbol();\nexport const mapCodecFrameStats = symbol();\nexport const mapFrameStats = symbol();\nexport const logWarning = symbol();\nexport const logError = symbol();\nexport const syncFrame = symbol();\nexport const fixedLengthFrameSync = symbol();\nexport const getHeader = symbol();\nexport const setHeader = symbol();\nexport const getFrame = symbol();\nexport const parseFrame = symbol();\nexport const parseOggPage = symbol();\nexport const checkCodecUpdate = symbol();\nexport const reset = symbol();\nexport const enable = symbol();\nexport const getHeaderFromUint8Array = symbol();\nexport const checkFrameFooterCrc16 = symbol();\n\nexport const uint8Array = Uint8Array;\nexport const dataView = DataView;\n\nexport const reserved = \"reserved\";\nexport const bad = \"bad\";\nexport const free = \"free\";\nexport const none = \"none\";\nexport const sixteenBitCRC = \"16bit CRC\";\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { length, uint8Array } from \"./constants.js\";\n\nconst getCrcTable = (crcTable, crcInitialValueFunction, crcFunction) => {\n for (let byte = 0; byte < crcTable[length]; byte++) {\n let crc = crcInitialValueFunction(byte);\n\n for (let bit = 8; bit > 0; bit--) crc = crcFunction(crc);\n\n crcTable[byte] = crc;\n }\n return crcTable;\n};\n\nconst crc8Table = getCrcTable(\n new uint8Array(256),\n (b) => b,\n (crc) => (crc & 0x80 ? 0x07 ^ (crc << 1) : crc << 1),\n);\n\nconst flacCrc16Table = [\n getCrcTable(\n new Uint16Array(256),\n (b) => b << 8,\n (crc) => (crc << 1) ^ (crc & (1 << 15) ? 0x8005 : 0),\n ),\n];\n\nconst crc32Table = [\n getCrcTable(\n new Uint32Array(256),\n (b) => b,\n (crc) => (crc >>> 1) ^ ((crc & 1) * 0xedb88320),\n ),\n];\n\n// build crc tables\nfor (let i = 0; i < 15; i++) {\n flacCrc16Table.push(new Uint16Array(256));\n crc32Table.push(new Uint32Array(256));\n\n for (let j = 0; j <= 0xff; j++) {\n flacCrc16Table[i + 1][j] =\n flacCrc16Table[0][flacCrc16Table[i][j] >>> 8] ^\n (flacCrc16Table[i][j] << 8);\n\n crc32Table[i + 1][j] =\n (crc32Table[i][j] >>> 8) ^ crc32Table[0][crc32Table[i][j] & 0xff];\n }\n}\n\nconst crc8 = (data) => {\n let crc = 0;\n const dataLength = data[length];\n\n for (let i = 0; i !== dataLength; i++) crc = crc8Table[crc ^ data[i]];\n\n return crc;\n};\n\nconst flacCrc16 = (data) => {\n const dataLength = data[length];\n const crcChunkSize = dataLength - 16;\n let crc = 0;\n let i = 0;\n\n while (i <= crcChunkSize) {\n crc ^= (data[i++] << 8) | data[i++];\n crc =\n flacCrc16Table[15][crc >> 8] ^\n flacCrc16Table[14][crc & 0xff] ^\n flacCrc16Table[13][data[i++]] ^\n flacCrc16Table[12][data[i++]] ^\n flacCrc16Table[11][data[i++]] ^\n flacCrc16Table[10][data[i++]] ^\n flacCrc16Table[9][data[i++]] ^\n flacCrc16Table[8][data[i++]] ^\n flacCrc16Table[7][data[i++]] ^\n flacCrc16Table[6][data[i++]] ^\n flacCrc16Table[5][data[i++]] ^\n flacCrc16Table[4][data[i++]] ^\n flacCrc16Table[3][data[i++]] ^\n flacCrc16Table[2][data[i++]] ^\n flacCrc16Table[1][data[i++]] ^\n flacCrc16Table[0][data[i++]];\n }\n\n while (i !== dataLength)\n crc = ((crc & 0xff) << 8) ^ flacCrc16Table[0][(crc >> 8) ^ data[i++]];\n\n return crc;\n};\n\nconst crc32Function = (data) => {\n const dataLength = data[length];\n const crcChunkSize = dataLength - 16;\n let crc = 0;\n let i = 0;\n\n while (i <= crcChunkSize)\n crc =\n crc32Table[15][(data[i++] ^ crc) & 0xff] ^\n crc32Table[14][(data[i++] ^ (crc >>> 8)) & 0xff] ^\n crc32Table[13][(data[i++] ^ (crc >>> 16)) & 0xff] ^\n crc32Table[12][data[i++] ^ (crc >>> 24)] ^\n crc32Table[11][data[i++]] ^\n crc32Table[10][data[i++]] ^\n crc32Table[9][data[i++]] ^\n crc32Table[8][data[i++]] ^\n crc32Table[7][data[i++]] ^\n crc32Table[6][data[i++]] ^\n crc32Table[5][data[i++]] ^\n crc32Table[4][data[i++]] ^\n crc32Table[3][data[i++]] ^\n crc32Table[2][data[i++]] ^\n crc32Table[1][data[i++]] ^\n crc32Table[0][data[i++]];\n\n while (i !== dataLength)\n crc = crc32Table[0][(crc ^ data[i++]) & 0xff] ^ (crc >>> 8);\n\n return crc ^ -1;\n};\n\nconst concatBuffers = (...buffers) => {\n const buffer = new uint8Array(\n buffers.reduce((acc, buf) => acc + buf[length], 0),\n );\n\n buffers.reduce((offset, buf) => {\n buffer.set(buf, offset);\n return offset + buf[length];\n }, 0);\n\n return buffer;\n};\n\nconst bytesToString = (bytes) => String.fromCharCode(...bytes);\n\n// prettier-ignore\nconst reverseTable = [0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf];\nconst reverse = (val) =>\n (reverseTable[val & 0b1111] << 4) | reverseTable[val >> 4];\n\nclass BitReader {\n constructor(data) {\n this._data = data;\n this._pos = data[length] * 8;\n }\n\n set position(position) {\n this._pos = position;\n }\n\n get position() {\n return this._pos;\n }\n\n read(bits) {\n const byte = Math.floor(this._pos / 8);\n const bit = this._pos % 8;\n this._pos -= bits;\n\n const window =\n (reverse(this._data[byte - 1]) << 8) + reverse(this._data[byte]);\n\n return (window >> (7 - bit)) & 0xff;\n }\n}\n\n/**\n * @todo Old versions of Safari do not support BigInt\n */\nconst readInt64le = (view, offset) => {\n try {\n return view.getBigInt64(offset, true);\n } catch {\n const sign = view.getUint8(offset + 7) & 0x80 ? -1 : 1;\n let firstPart = view.getUint32(offset, true);\n let secondPart = view.getUint32(offset + 4, true);\n\n if (sign === -1) {\n firstPart = ~firstPart + 1;\n secondPart = ~secondPart + 1;\n }\n\n if (secondPart > 0x000fffff) {\n console.warn(\"This platform does not support BigInt\");\n }\n\n return sign * (firstPart + secondPart * 2 ** 32);\n }\n};\n\nexport {\n crc8,\n flacCrc16,\n crc32Function,\n reverse,\n concatBuffers,\n bytesToString,\n readInt64le,\n BitReader,\n};\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport {\n getHeader,\n setHeader,\n checkCodecUpdate,\n reset,\n enable,\n} from \"../constants.js\";\n\nexport default class HeaderCache {\n constructor(onCodecHeader, onCodecUpdate) {\n this._onCodecHeader = onCodecHeader;\n this._onCodecUpdate = onCodecUpdate;\n this[reset]();\n }\n\n [enable]() {\n this._isEnabled = true;\n }\n\n [reset]() {\n this._headerCache = new Map();\n this._codecUpdateData = new WeakMap();\n this._codecHeaderSent = false;\n this._codecShouldUpdate = false;\n this._bitrate = null;\n this._isEnabled = false;\n }\n\n [checkCodecUpdate](bitrate, totalDuration) {\n if (this._onCodecUpdate) {\n if (this._bitrate !== bitrate) {\n this._bitrate = bitrate;\n this._codecShouldUpdate = true;\n }\n\n // only update if codec data is available\n const codecData = this._codecUpdateData.get(\n this._headerCache.get(this._currentHeader),\n );\n\n if (this._codecShouldUpdate && codecData) {\n this._onCodecUpdate(\n {\n bitrate,\n ...codecData,\n },\n totalDuration,\n );\n }\n\n this._codecShouldUpdate = false;\n }\n }\n\n [getHeader](key) {\n const header = this._headerCache.get(key);\n\n if (header) {\n this._updateCurrentHeader(key);\n }\n\n return header;\n }\n\n [setHeader](key, header, codecUpdateFields) {\n if (this._isEnabled) {\n if (!this._codecHeaderSent) {\n this._onCodecHeader({ ...header });\n this._codecHeaderSent = true;\n }\n this._updateCurrentHeader(key);\n\n this._headerCache.set(key, header);\n this._codecUpdateData.set(header, codecUpdateFields);\n }\n }\n\n _updateCurrentHeader(key) {\n if (this._onCodecUpdate && key !== this._currentHeader) {\n this._codecShouldUpdate = true;\n this._currentHeader = key;\n }\n }\n}\n","export const headerStore = new WeakMap();\nexport const frameStore = new WeakMap();\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../globals.js\";\nimport {\n frame,\n length,\n incrementRawData,\n mapFrameStats,\n logWarning,\n syncFrame,\n fixedLengthFrameSync,\n getFrame,\n getHeader,\n reset,\n enable,\n} from \"../constants.js\";\n\n/**\n * @abstract\n * @description Abstract class containing methods for parsing codec frames\n */\nexport default class Parser {\n constructor(codecParser, headerCache) {\n this._codecParser = codecParser;\n this._headerCache = headerCache;\n }\n\n *[syncFrame]() {\n let frameData;\n\n do {\n frameData = yield* this.Frame[getFrame](\n this._codecParser,\n this._headerCache,\n 0,\n );\n if (frameData) return frameData;\n this._codecParser[incrementRawData](1); // increment to continue syncing\n } while (true);\n }\n\n /**\n * @description Searches for Frames within bytes containing a sequence of known codec frames.\n * @param {boolean} ignoreNextFrame Set to true to return frames even if the next frame may not exist at the expected location\n * @returns {Frame}\n */\n *[fixedLengthFrameSync](ignoreNextFrame) {\n let frameData = yield* this[syncFrame]();\n const frameLength = frameStore.get(frameData)[length];\n\n if (\n ignoreNextFrame ||\n this._codecParser._flushing ||\n // check if there is a frame right after this one\n (yield* this.Header[getHeader](\n this._codecParser,\n this._headerCache,\n frameLength,\n ))\n ) {\n this._headerCache[enable](); // start caching when synced\n\n this._codecParser[incrementRawData](frameLength); // increment to the next frame\n this._codecParser[mapFrameStats](frameData);\n return frameData;\n }\n\n this._codecParser[logWarning](\n `Missing ${frame} at ${frameLength} bytes from current position.`,\n `Dropping current ${frame} and trying again.`,\n );\n this._headerCache[reset](); // frame is invalid and must re-sync and clear cache\n this._codecParser[incrementRawData](1); // increment to invalidate the current frame\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../globals.js\";\nimport { data, header } from \"../constants.js\";\n\n/**\n * @abstract\n */\nexport default class Frame {\n constructor(headerValue, dataValue) {\n frameStore.set(this, { [header]: headerValue });\n\n this[data] = dataValue;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore, headerStore } from \"../globals.js\";\nimport {\n sampleRate,\n length,\n frameNumber,\n header,\n samples,\n duration,\n totalBytesOut,\n totalSamples,\n totalDuration,\n frameLength,\n subarray,\n readRawData,\n getFrame,\n getHeader,\n} from \"../constants.js\";\nimport Frame from \"../containers/Frame.js\";\n\nexport default class CodecFrame extends Frame {\n static *[getFrame](Header, Frame, codecParser, headerCache, readOffset) {\n const headerValue = yield* Header[getHeader](\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (headerValue) {\n const frameLengthValue = headerStore.get(headerValue)[frameLength];\n const samplesValue = headerStore.get(headerValue)[samples];\n\n const frame = (yield* codecParser[readRawData](\n frameLengthValue,\n readOffset,\n ))[subarray](0, frameLengthValue);\n\n return new Frame(headerValue, frame, samplesValue);\n } else {\n return null;\n }\n }\n\n constructor(headerValue, dataValue, samplesValue) {\n super(headerValue, dataValue);\n\n this[header] = headerValue;\n this[samples] = samplesValue;\n this[duration] = (samplesValue / headerValue[sampleRate]) * 1000;\n this[frameNumber] = null;\n this[totalBytesOut] = null;\n this[totalSamples] = null;\n this[totalDuration] = null;\n\n frameStore.get(this)[length] = dataValue[length];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n// https://id3.org/Developer%20Information\n\nimport { length, version, readRawData } from \"../constants.js\";\n\nconst unsynchronizationFlag = \"unsynchronizationFlag\";\nconst extendedHeaderFlag = \"extendedHeaderFlag\";\nconst experimentalFlag = \"experimentalFlag\";\nconst footerPresent = \"footerPresent\";\n\nexport default class ID3v2 {\n static *getID3v2Header(codecParser, headerCache, readOffset) {\n const headerLength = 10;\n const header = {};\n\n let data = yield* codecParser[readRawData](3, readOffset);\n // Byte (0-2 of 9)\n // ID3\n if (data[0] !== 0x49 || data[1] !== 0x44 || data[2] !== 0x33) return null;\n\n data = yield* codecParser[readRawData](headerLength, readOffset);\n\n // Byte (3-4 of 9)\n // * `BBBBBBBB|........`: Major version\n // * `........|BBBBBBBB`: Minor version\n header[version] = `id3v2.${data[3]}.${data[4]}`;\n\n // Byte (5 of 9)\n // * `....0000.: Zeros (flags not implemented yet)\n if (data[5] & 0b00001111) return null;\n\n // Byte (5 of 9)\n // * `CDEF0000`: Flags\n // * `C.......`: Unsynchronisation (indicates whether or not unsynchronisation is used)\n // * `.D......`: Extended header (indicates whether or not the header is followed by an extended header)\n // * `..E.....`: Experimental indicator (indicates whether or not the tag is in an experimental stage)\n // * `...F....`: Footer present (indicates that a footer is present at the very end of the tag)\n header[unsynchronizationFlag] = !!(data[5] & 0b10000000);\n header[extendedHeaderFlag] = !!(data[5] & 0b01000000);\n header[experimentalFlag] = !!(data[5] & 0b00100000);\n header[footerPresent] = !!(data[5] & 0b00010000);\n\n // Byte (6-9 of 9)\n // * `0.......|0.......|0.......|0.......`: Zeros\n if (\n data[6] & 0b10000000 ||\n data[7] & 0b10000000 ||\n data[8] & 0b10000000 ||\n data[9] & 0b10000000\n )\n return null;\n\n // Byte (6-9 of 9)\n // * `.FFFFFFF|.FFFFFFF|.FFFFFFF|.FFFFFFF`: Tag Length\n // The ID3v2 tag size is encoded with four bytes where the most significant bit (bit 7)\n // is set to zero in every byte, making a total of 28 bits. The zeroed bits are ignored,\n // so a 257 bytes long tag is represented as $00 00 02 01.\n const dataLength =\n (data[6] << 21) | (data[7] << 14) | (data[8] << 7) | data[9];\n\n header[length] = headerLength + dataLength;\n\n return new ID3v2(header);\n }\n\n constructor(header) {\n this[version] = header[version];\n this[unsynchronizationFlag] = header[unsynchronizationFlag];\n this[extendedHeaderFlag] = header[extendedHeaderFlag];\n this[experimentalFlag] = header[experimentalFlag];\n this[footerPresent] = header[footerPresent];\n this[length] = header[length];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore } from \"../globals.js\";\nimport {\n bitDepth,\n channelMode,\n sampleRate,\n bitrate,\n channels,\n} from \"../constants.js\";\n\nexport default class CodecHeader {\n /**\n * @private\n */\n constructor(header) {\n headerStore.set(this, header);\n\n this[bitDepth] = header[bitDepth];\n this[bitrate] = null; // set during frame mapping\n this[channels] = header[channels];\n this[channelMode] = header[channelMode];\n this[sampleRate] = header[sampleRate];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport {\n reserved,\n bad,\n free,\n none,\n sixteenBitCRC,\n rate44100,\n rate48000,\n rate32000,\n rate22050,\n rate24000,\n rate16000,\n rate11025,\n rate12000,\n rate8000,\n monophonic,\n stereo,\n bitDepth,\n channelMode,\n sampleRate,\n bitrate,\n channels,\n isOriginal,\n isPrivate,\n layer,\n length,\n mpegVersion,\n frameLength,\n protection,\n emphasis,\n framePadding,\n isCopyrighted,\n modeExtension,\n description,\n samples,\n subarray,\n readRawData,\n incrementRawData,\n getHeader,\n setHeader,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport ID3v2 from \"../../metadata/ID3v2.js\";\nimport CodecHeader from \"../CodecHeader.js\";\n\n// http://www.mp3-tech.org/programmer/frame_header.html\n\nconst bitrateMatrix = {\n // bits | V1,L1 | V1,L2 | V1,L3 | V2,L1 | V2,L2 & L3\n 0b00000000: [free, free, free, free, free],\n 0b00010000: [32, 32, 32, 32, 8],\n // 0b00100000: [64, 48, 40, 48, 16,],\n // 0b00110000: [96, 56, 48, 56, 24,],\n // 0b01000000: [128, 64, 56, 64, 32,],\n // 0b01010000: [160, 80, 64, 80, 40,],\n // 0b01100000: [192, 96, 80, 96, 48,],\n // 0b01110000: [224, 112, 96, 112, 56,],\n // 0b10000000: [256, 128, 112, 128, 64,],\n // 0b10010000: [288, 160, 128, 144, 80,],\n // 0b10100000: [320, 192, 160, 160, 96,],\n // 0b10110000: [352, 224, 192, 176, 112,],\n // 0b11000000: [384, 256, 224, 192, 128,],\n // 0b11010000: [416, 320, 256, 224, 144,],\n // 0b11100000: [448, 384, 320, 256, 160,],\n 0b11110000: [bad, bad, bad, bad, bad],\n};\n\nconst calcBitrate = (idx, interval, intervalOffset) =>\n 8 *\n (((idx + intervalOffset) % interval) + interval) *\n (1 << ((idx + intervalOffset) / interval)) -\n 8 * interval * ((interval / 8) | 0);\n\n// generate bitrate matrix\nfor (let i = 2; i < 15; i++)\n bitrateMatrix[i << 4] = [\n i * 32, // V1,L1\n calcBitrate(i, 4, 0), // V1,L2\n calcBitrate(i, 4, -1), // V1,L3\n calcBitrate(i, 8, 4), // V2,L1\n calcBitrate(i, 8, 0), // V2,L2 & L3\n ];\n\nconst v1Layer1 = 0;\nconst v1Layer2 = 1;\nconst v1Layer3 = 2;\nconst v2Layer1 = 3;\nconst v2Layer23 = 4;\n\nconst bands = \"bands \";\nconst to31 = \" to 31\";\nconst layer12ModeExtensions = {\n 0b00000000: bands + 4 + to31,\n 0b00010000: bands + 8 + to31,\n 0b00100000: bands + 12 + to31,\n 0b00110000: bands + 16 + to31,\n};\n\nconst bitrateIndex = \"bitrateIndex\";\nconst v2 = \"v2\";\nconst v1 = \"v1\";\n\nconst intensityStereo = \"Intensity stereo \";\nconst msStereo = \", MS stereo \";\nconst on = \"on\";\nconst off = \"off\";\nconst layer3ModeExtensions = {\n 0b00000000: intensityStereo + off + msStereo + off,\n 0b00010000: intensityStereo + on + msStereo + off,\n 0b00100000: intensityStereo + off + msStereo + on,\n 0b00110000: intensityStereo + on + msStereo + on,\n};\n\nconst layersValues = {\n 0b00000000: { [description]: reserved },\n 0b00000010: {\n [description]: \"Layer III\",\n [framePadding]: 1,\n [modeExtension]: layer3ModeExtensions,\n [v1]: {\n [bitrateIndex]: v1Layer3,\n [samples]: 1152,\n },\n [v2]: {\n [bitrateIndex]: v2Layer23,\n [samples]: 576,\n },\n },\n 0b00000100: {\n [description]: \"Layer II\",\n [framePadding]: 1,\n [modeExtension]: layer12ModeExtensions,\n [samples]: 1152,\n [v1]: {\n [bitrateIndex]: v1Layer2,\n },\n [v2]: {\n [bitrateIndex]: v2Layer23,\n },\n },\n 0b00000110: {\n [description]: \"Layer I\",\n [framePadding]: 4,\n [modeExtension]: layer12ModeExtensions,\n [samples]: 384,\n [v1]: {\n [bitrateIndex]: v1Layer1,\n },\n [v2]: {\n [bitrateIndex]: v2Layer1,\n },\n },\n};\n\nconst mpegVersionDescription = \"MPEG Version \";\nconst isoIec = \"ISO/IEC \";\nconst mpegVersions = {\n 0b00000000: {\n [description]: `${mpegVersionDescription}2.5 (later extension of MPEG 2)`,\n [layer]: v2,\n [sampleRate]: {\n 0b00000000: rate11025,\n 0b00000100: rate12000,\n 0b00001000: rate8000,\n 0b00001100: reserved,\n },\n },\n 0b00001000: { [description]: reserved },\n 0b00010000: {\n [description]: `${mpegVersionDescription}2 (${isoIec}13818-3)`,\n [layer]: v2,\n [sampleRate]: {\n 0b00000000: rate22050,\n 0b00000100: rate24000,\n 0b00001000: rate16000,\n 0b00001100: reserved,\n },\n },\n 0b00011000: {\n [description]: `${mpegVersionDescription}1 (${isoIec}11172-3)`,\n [layer]: v1,\n [sampleRate]: {\n 0b00000000: rate44100,\n 0b00000100: rate48000,\n 0b00001000: rate32000,\n 0b00001100: reserved,\n },\n },\n length,\n};\n\nconst protectionValues = {\n 0b00000000: sixteenBitCRC,\n 0b00000001: none,\n};\n\nconst emphasisValues = {\n 0b00000000: none,\n 0b00000001: \"50/15 ms\",\n 0b00000010: reserved,\n 0b00000011: \"CCIT J.17\",\n};\n\nconst channelModes = {\n 0b00000000: { [channels]: 2, [description]: stereo },\n 0b01000000: { [channels]: 2, [description]: \"joint \" + stereo },\n 0b10000000: { [channels]: 2, [description]: \"dual channel\" },\n 0b11000000: { [channels]: 1, [description]: monophonic },\n};\n\nexport default class MPEGHeader extends CodecHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // check for id3 header\n const id3v2Header = yield* ID3v2.getID3v2Header(\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (id3v2Header) {\n // throw away the data. id3 parsing is not implemented yet.\n yield* codecParser[readRawData](id3v2Header[length], readOffset);\n codecParser[incrementRawData](id3v2Header[length]);\n }\n\n // Must be at least four bytes.\n const data = yield* codecParser[readRawData](4, readOffset);\n\n // Check header cache\n const key = bytesToString(data[subarray](0, 4));\n const cachedHeader = headerCache[getHeader](key);\n if (cachedHeader) return new MPEGHeader(cachedHeader);\n\n // Frame sync (all bits must be set): `11111111|111`:\n if (data[0] !== 0xff || data[1] < 0xe0) return null;\n\n // Byte (2 of 4)\n // * `111BBCCD`\n // * `...BB...`: MPEG Audio version ID\n // * `.....CC.`: Layer description\n // * `.......D`: Protection bit (0 - Protected by CRC (16bit CRC follows header), 1 = Not protected)\n\n // Mpeg version (1, 2, 2.5)\n const mpegVersionValues = mpegVersions[data[1] & 0b00011000];\n if (mpegVersionValues[description] === reserved) return null;\n\n // Layer (I, II, III)\n const layerBits = data[1] & 0b00000110;\n if (layersValues[layerBits][description] === reserved) return null;\n const layerValues = {\n ...layersValues[layerBits],\n ...layersValues[layerBits][mpegVersionValues[layer]],\n };\n\n header[mpegVersion] = mpegVersionValues[description];\n header[layer] = layerValues[description];\n header[samples] = layerValues[samples];\n header[protection] = protectionValues[data[1] & 0b00000001];\n\n header[length] = 4;\n\n // Byte (3 of 4)\n // * `EEEEFFGH`\n // * `EEEE....`: Bitrate index. 1111 is invalid, everything else is accepted\n // * `....FF..`: Sample rate\n // * `......G.`: Padding bit, 0=frame not padded, 1=frame padded\n // * `.......H`: Private bit.\n header[bitrate] =\n bitrateMatrix[data[2] & 0b11110000][layerValues[bitrateIndex]];\n if (header[bitrate] === bad) return null;\n\n header[sampleRate] = mpegVersionValues[sampleRate][data[2] & 0b00001100];\n if (header[sampleRate] === reserved) return null;\n\n header[framePadding] = data[2] & 0b00000010 && layerValues[framePadding];\n header[isPrivate] = !!(data[2] & 0b00000001);\n\n header[frameLength] = Math.floor(\n (125 * header[bitrate] * header[samples]) / header[sampleRate] +\n header[framePadding],\n );\n if (!header[frameLength]) return null;\n\n // Byte (4 of 4)\n // * `IIJJKLMM`\n // * `II......`: Channel mode\n // * `..JJ....`: Mode extension (only if joint stereo)\n // * `....K...`: Copyright\n // * `.....L..`: Original\n // * `......MM`: Emphasis\n const channelModeBits = data[3] & 0b11000000;\n header[channelMode] = channelModes[channelModeBits][description];\n header[channels] = channelModes[channelModeBits][channels];\n\n header[modeExtension] = layerValues[modeExtension][data[3] & 0b00110000];\n header[isCopyrighted] = !!(data[3] & 0b00001000);\n header[isOriginal] = !!(data[3] & 0b00000100);\n\n header[emphasis] = emphasisValues[data[3] & 0b00000011];\n if (header[emphasis] === reserved) return null;\n\n header[bitDepth] = 16;\n\n // set header cache\n {\n const { length, frameLength, samples, ...codecUpdateFields } = header;\n\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n return new MPEGHeader(header);\n }\n\n /**\n * @private\n * Call MPEGHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[bitrate] = header[bitrate];\n this[emphasis] = header[emphasis];\n this[framePadding] = header[framePadding];\n this[isCopyrighted] = header[isCopyrighted];\n this[isOriginal] = header[isOriginal];\n this[isPrivate] = header[isPrivate];\n this[layer] = header[layer];\n this[modeExtension] = header[modeExtension];\n this[mpegVersion] = header[mpegVersion];\n this[protection] = header[protection];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { getFrame } from \"../../constants.js\";\n\nimport CodecFrame from \"../CodecFrame.js\";\nimport MPEGHeader from \"./MPEGHeader.js\";\n\nexport default class MPEGFrame extends CodecFrame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n return yield* super[getFrame](\n MPEGHeader,\n MPEGFrame,\n codecParser,\n headerCache,\n readOffset,\n );\n }\n\n constructor(header, frame, samples) {\n super(header, frame, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport {\n codec,\n mpeg,\n fixedLengthFrameSync,\n parseFrame,\n} from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport MPEGFrame from \"./MPEGFrame.js\";\nimport MPEGHeader from \"./MPEGHeader.js\";\n\nexport default class MPEGParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = MPEGFrame;\n this.Header = MPEGHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return mpeg;\n }\n\n *[parseFrame]() {\n return yield* this[fixedLengthFrameSync]();\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://wiki.multimedia.cx/index.php/ADTS\n\nAAAAAAAA AAAABCCD EEFFFFGH HHIJKLMM MMMMMMMM MMMOOOOO OOOOOOPP (QQQQQQQQ QQQQQQQQ)\n\nAACHeader consists of 7 or 9 bytes (without or with CRC).\nLetter Length (bits) Description\nA 12 syncword 0xFFF, all bits must be 1\nB 1 MPEG Version: 0 for MPEG-4, 1 for MPEG-2\nC 2 Layer: always 0\nD 1 protection absent, Warning, set to 1 if there is no CRC and 0 if there is CRC\nE 2 profile, the MPEG-4 Audio Object Type minus 1\nF 4 MPEG-4 Sampling Frequency Index (15 is forbidden)\nG 1 private bit, guaranteed never to be used by MPEG, set to 0 when encoding, ignore when decoding\nH 3 MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)\nI 1 originality, set to 0 when encoding, ignore when decoding\nJ 1 home, set to 0 when encoding, ignore when decoding\nK 1 copyrighted id bit, the next bit of a centrally registered copyright identifier, set to 0 when encoding, ignore when decoding\nL 1 copyright id start, signals that this frame's copyright id bit is the first bit of the copyright id, set to 0 when encoding, ignore when decoding\nM 13 frame length, this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)\nO 11 Buffer fullness // 0x7FF for VBR\nP 2 Number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame\nQ 16 CRC if protection absent is 0 \n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport { bytesToString } from \"../../utilities.js\";\nimport {\n reserved,\n bad,\n none,\n sixteenBitCRC,\n rate96000,\n rate88200,\n rate64000,\n rate48000,\n rate44100,\n rate32000,\n rate24000,\n rate22050,\n rate16000,\n rate12000,\n rate11025,\n rate8000,\n rate7350,\n channelMappings,\n getChannelMapping,\n monophonic,\n lfe,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n copyrightId,\n copyrightIdStart,\n bufferFullness,\n isHome,\n isOriginal,\n isPrivate,\n layer,\n length,\n mpegVersion,\n numberAACFrames,\n profile,\n protection,\n frameLength,\n description,\n samples,\n sampleRateBits,\n profileBits,\n channelModeBits,\n buffer,\n readRawData,\n getHeader,\n setHeader,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst mpegVersionValues = {\n 0b00000000: \"MPEG-4\",\n 0b00001000: \"MPEG-2\",\n};\n\nconst layerValues = {\n 0b00000000: \"valid\",\n 0b00000010: bad,\n 0b00000100: bad,\n 0b00000110: bad,\n};\n\nconst protectionValues = {\n 0b00000000: sixteenBitCRC,\n 0b00000001: none,\n};\n\nconst profileValues = {\n 0b00000000: \"AAC Main\",\n 0b01000000: \"AAC LC (Low Complexity)\",\n 0b10000000: \"AAC SSR (Scalable Sample Rate)\",\n 0b11000000: \"AAC LTP (Long Term Prediction)\",\n};\n\nconst sampleRates = {\n 0b00000000: rate96000,\n 0b00000100: rate88200,\n 0b00001000: rate64000,\n 0b00001100: rate48000,\n 0b00010000: rate44100,\n 0b00010100: rate32000,\n 0b00011000: rate24000,\n 0b00011100: rate22050,\n 0b00100000: rate16000,\n 0b00100100: rate12000,\n 0b00101000: rate11025,\n 0b00101100: rate8000,\n 0b00110000: rate7350,\n 0b00110100: reserved,\n 0b00111000: reserved,\n 0b00111100: \"frequency is written explicitly\",\n};\n\n// prettier-ignore\nconst channelModeValues = {\n 0b000000000: { [channels]: 0, [description]: \"Defined in AOT Specific Config\" },\n /*\n 'monophonic (mono)'\n 'stereo (left, right)'\n 'linear surround (front center, front left, front right)'\n 'quadraphonic (front center, front left, front right, rear center)'\n '5.0 surround (front center, front left, front right, rear left, rear right)'\n '5.1 surround (front center, front left, front right, rear left, rear right, LFE)'\n '7.1 surround (front center, front left, front right, side left, side right, rear left, rear right, LFE)'\n */\n 0b001000000: { [channels]: 1, [description]: monophonic },\n 0b010000000: { [channels]: 2, [description]: getChannelMapping(2,channelMappings[0][0]) },\n 0b011000000: { [channels]: 3, [description]: getChannelMapping(3,channelMappings[1][3]), },\n 0b100000000: { [channels]: 4, [description]: getChannelMapping(4,channelMappings[1][3],channelMappings[3][4]), },\n 0b101000000: { [channels]: 5, [description]: getChannelMapping(5,channelMappings[1][3],channelMappings[3][0]), },\n 0b110000000: { [channels]: 6, [description]: getChannelMapping(6,channelMappings[1][3],channelMappings[3][0],lfe), },\n 0b111000000: { [channels]: 8, [description]: getChannelMapping(8,channelMappings[1][3],channelMappings[2][0],channelMappings[3][0],lfe), },\n};\n\nexport default class AACHeader extends CodecHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // Must be at least seven bytes. Out of data\n const data = yield* codecParser[readRawData](7, readOffset);\n\n // Check header cache\n const key = bytesToString([\n data[0],\n data[1],\n data[2],\n (data[3] & 0b11111100) | (data[6] & 0b00000011), // frame length, buffer fullness varies so don't cache it\n ]);\n const cachedHeader = headerCache[getHeader](key);\n\n if (!cachedHeader) {\n // Frame sync (all bits must be set): `11111111|1111`:\n if (data[0] !== 0xff || data[1] < 0xf0) return null;\n\n // Byte (2 of 7)\n // * `1111BCCD`\n // * `....B...`: MPEG Version: 0 for MPEG-4, 1 for MPEG-2\n // * `.....CC.`: Layer: always 0\n // * `.......D`: protection absent, Warning, set to 1 if there is no CRC and 0 if there is CRC\n header[mpegVersion] = mpegVersionValues[data[1] & 0b00001000];\n\n header[layer] = layerValues[data[1] & 0b00000110];\n if (header[layer] === bad) return null;\n\n const protectionBit = data[1] & 0b00000001;\n header[protection] = protectionValues[protectionBit];\n header[length] = protectionBit ? 7 : 9;\n\n // Byte (3 of 7)\n // * `EEFFFFGH`\n // * `EE......`: profile, the MPEG-4 Audio Object Type minus 1\n // * `..FFFF..`: MPEG-4 Sampling Frequency Index (15 is forbidden)\n // * `......G.`: private bit, guaranteed never to be used by MPEG, set to 0 when encoding, ignore when decoding\n header[profileBits] = data[2] & 0b11000000;\n header[sampleRateBits] = data[2] & 0b00111100;\n const privateBit = data[2] & 0b00000010;\n\n header[profile] = profileValues[header[profileBits]];\n\n header[sampleRate] = sampleRates[header[sampleRateBits]];\n if (header[sampleRate] === reserved) return null;\n\n header[isPrivate] = !!privateBit;\n\n // Byte (3,4 of 7)\n // * `.......H|HH......`: MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)\n header[channelModeBits] = ((data[2] << 8) | data[3]) & 0b111000000;\n header[channelMode] =\n channelModeValues[header[channelModeBits]][description];\n header[channels] = channelModeValues[header[channelModeBits]][channels];\n\n // Byte (4 of 7)\n // * `HHIJKLMM`\n // * `..I.....`: originality, set to 0 when encoding, ignore when decoding\n // * `...J....`: home, set to 0 when encoding, ignore when decoding\n // * `....K...`: copyrighted id bit, the next bit of a centrally registered copyright identifier, set to 0 when encoding, ignore when decoding\n // * `.....L..`: copyright id start, signals that this frame's copyright id bit is the first bit of the copyright id, set to 0 when encoding, ignore when decoding\n header[isOriginal] = !!(data[3] & 0b00100000);\n header[isHome] = !!(data[3] & 0b00001000);\n header[copyrightId] = !!(data[3] & 0b00001000);\n header[copyrightIdStart] = !!(data[3] & 0b00000100);\n header[bitDepth] = 16;\n header[samples] = 1024;\n\n // Byte (7 of 7)\n // * `......PP` Number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame\n header[numberAACFrames] = data[6] & 0b00000011;\n\n {\n const {\n length,\n channelModeBits,\n profileBits,\n sampleRateBits,\n frameLength,\n samples,\n numberAACFrames,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n } else {\n Object.assign(header, cachedHeader);\n }\n\n // Byte (4,5,6 of 7)\n // * `.......MM|MMMMMMMM|MMM.....`: frame length, this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)\n header[frameLength] =\n ((data[3] << 11) | (data[4] << 3) | (data[5] >> 5)) & 0x1fff;\n if (!header[frameLength]) return null;\n\n // Byte (6,7 of 7)\n // * `...OOOOO|OOOOOO..`: Buffer fullness\n const bufferFullnessBits = ((data[5] << 6) | (data[6] >> 2)) & 0x7ff;\n header[bufferFullness] =\n bufferFullnessBits === 0x7ff ? \"VBR\" : bufferFullnessBits;\n\n return new AACHeader(header);\n }\n\n /**\n * @private\n * Call AACHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[copyrightId] = header[copyrightId];\n this[copyrightIdStart] = header[copyrightIdStart];\n this[bufferFullness] = header[bufferFullness];\n this[isHome] = header[isHome];\n this[isOriginal] = header[isOriginal];\n this[isPrivate] = header[isPrivate];\n this[layer] = header[layer];\n this[length] = header[length];\n this[mpegVersion] = header[mpegVersion];\n this[numberAACFrames] = header[numberAACFrames];\n this[profile] = header[profile];\n this[protection] = header[protection];\n }\n\n get audioSpecificConfig() {\n // Audio Specific Configuration\n // * `000EEFFF|F0HHH000`:\n // * `000EE...|........`: Object Type (profileBit + 1)\n // * `.....FFF|F.......`: Sample Rate\n // * `........|.0HHH...`: Channel Configuration\n // * `........|.....0..`: Frame Length (1024)\n // * `........|......0.`: does not depend on core coder\n // * `........|.......0`: Not Extension\n const header = headerStore.get(this);\n\n const audioSpecificConfig =\n ((header[profileBits] + 0x40) << 5) |\n (header[sampleRateBits] << 5) |\n (header[channelModeBits] >> 3);\n\n const bytes = new uint8Array(2);\n new dataView(bytes[buffer]).setUint16(0, audioSpecificConfig, false);\n return bytes;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { getFrame } from \"../../constants.js\";\n\nimport CodecFrame from \"../CodecFrame.js\";\nimport AACHeader from \"./AACHeader.js\";\n\nexport default class AACFrame extends CodecFrame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n return yield* super[getFrame](\n AACHeader,\n AACFrame,\n codecParser,\n headerCache,\n readOffset,\n );\n }\n\n constructor(header, frame, samples) {\n super(header, frame, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { codec, fixedLengthFrameSync, parseFrame } from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport AACFrame from \"./AACFrame.js\";\nimport AACHeader from \"./AACHeader.js\";\n\nexport default class AACParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = AACFrame;\n this.Header = AACHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return \"aac\";\n }\n\n *[parseFrame]() {\n return yield* this[fixedLengthFrameSync]();\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport { flacCrc16 } from \"../../utilities.js\";\nimport {\n length,\n streamInfo,\n crc16,\n samples,\n subarray,\n checkFrameFooterCrc16,\n} from \"../../constants.js\";\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class FLACFrame extends CodecFrame {\n static _getFrameFooterCrc16(data) {\n return (data[data[length] - 2] << 8) + data[data[length] - 1];\n }\n\n // check frame footer crc\n // https://xiph.org/flac/format.html#frame_footer\n static [checkFrameFooterCrc16](data) {\n const expectedCrc16 = FLACFrame._getFrameFooterCrc16(data);\n const actualCrc16 = flacCrc16(data[subarray](0, -2));\n\n return expectedCrc16 === actualCrc16;\n }\n\n constructor(data, header, streamInfoValue) {\n header[streamInfo] = streamInfoValue;\n header[crc16] = FLACFrame._getFrameFooterCrc16(data);\n\n super(header, data, headerStore.get(header)[samples]);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://xiph.org/flac/format.html\n\nAAAAAAAA AAAAAABC DDDDEEEE FFFFGGGH \n(IIIIIIII...)\n(JJJJJJJJ|JJJJJJJJ)\n(KKKKKKKK|KKKKKKKK)\nLLLLLLLLL\n\nFLAC Frame Header\nLetter Length (bits) Description\nA 13 11111111|11111\nB 1 Reserved 0 - mandatory, 1 - reserved\nC 1 Blocking strategy, 0 - fixed, 1 - variable\nD 4 Block size in inter-channel samples\nE 4 Sample rate\nF 4 Channel assignment\nG 3 Sample size in bits\nH 1 Reserved 0 - mandatory, 1 - reserved\nI ? if(variable blocksize)\n <8-56>:\"UTF-8\" coded sample number (decoded number is 36 bits) [4]\n else\n <8-48>:\"UTF-8\" coded frame number (decoded number is 31 bits) [4]\nJ ? if(blocksize bits == 011x)\n 8/16 bit (blocksize-1)\nK ? if(sample rate bits == 11xx)\n 8/16 bit sample rate\nL 8 CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) of everything before the crc, including the sync code\n \n*/\n\nimport {\n reserved,\n bad,\n rate88200,\n rate176400,\n rate192000,\n rate8000,\n rate16000,\n rate22050,\n rate24000,\n rate32000,\n rate44100,\n rate48000,\n rate96000,\n channelMappings,\n getChannelMapping,\n monophonic,\n stereo,\n lfe,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n crc16,\n blockingStrategy,\n blockSize,\n frameNumber,\n sampleNumber,\n streamInfo,\n description,\n samples,\n sampleRateBits,\n blockingStrategyBits,\n blockSizeBits,\n crc,\n subarray,\n readRawData,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\nimport { bytesToString, crc8 } from \"../../utilities.js\";\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst getFromStreamInfo = \"get from STREAMINFO metadata block\";\n\nconst blockingStrategyValues = {\n 0b00000000: \"Fixed\",\n 0b00000001: \"Variable\",\n};\n\nconst blockSizeValues = {\n 0b00000000: reserved,\n 0b00010000: 192,\n // 0b00100000: 576,\n // 0b00110000: 1152,\n // 0b01000000: 2304,\n // 0b01010000: 4608,\n // 0b01100000: \"8-bit (blocksize-1) from end of header\",\n // 0b01110000: \"16-bit (blocksize-1) from end of header\",\n // 0b10000000: 256,\n // 0b10010000: 512,\n // 0b10100000: 1024,\n // 0b10110000: 2048,\n // 0b11000000: 4096,\n // 0b11010000: 8192,\n // 0b11100000: 16384,\n // 0b11110000: 32768,\n};\nfor (let i = 2; i < 16; i++)\n blockSizeValues[i << 4] = i < 6 ? 576 * 2 ** (i - 2) : 2 ** i;\n\nconst sampleRateValues = {\n 0b00000000: getFromStreamInfo,\n 0b00000001: rate88200,\n 0b00000010: rate176400,\n 0b00000011: rate192000,\n 0b00000100: rate8000,\n 0b00000101: rate16000,\n 0b00000110: rate22050,\n 0b00000111: rate24000,\n 0b00001000: rate32000,\n 0b00001001: rate44100,\n 0b00001010: rate48000,\n 0b00001011: rate96000,\n // 0b00001100: \"8-bit sample rate (in kHz) from end of header\",\n // 0b00001101: \"16-bit sample rate (in Hz) from end of header\",\n // 0b00001110: \"16-bit sample rate (in tens of Hz) from end of header\",\n 0b00001111: bad,\n};\n\n/* prettier-ignore */\nconst channelAssignments = {\n /*'\n 'monophonic (mono)'\n 'stereo (left, right)'\n 'linear surround (left, right, center)'\n 'quadraphonic (front left, front right, rear left, rear right)'\n '5.0 surround (front left, front right, front center, rear left, rear right)'\n '5.1 surround (front left, front right, front center, LFE, rear left, rear right)'\n '6.1 surround (front left, front right, front center, LFE, rear center, side left, side right)'\n '7.1 surround (front left, front right, front center, LFE, rear left, rear right, side left, side right)'\n */\n 0b00000000: {[channels]: 1, [description]: monophonic},\n 0b00010000: {[channels]: 2, [description]: getChannelMapping(2,channelMappings[0][0])},\n 0b00100000: {[channels]: 3, [description]: getChannelMapping(3,channelMappings[0][1])},\n 0b00110000: {[channels]: 4, [description]: getChannelMapping(4,channelMappings[1][0],channelMappings[3][0])},\n 0b01000000: {[channels]: 5, [description]: getChannelMapping(5,channelMappings[1][1],channelMappings[3][0])},\n 0b01010000: {[channels]: 6, [description]: getChannelMapping(6,channelMappings[1][1],lfe,channelMappings[3][0])},\n 0b01100000: {[channels]: 7, [description]: getChannelMapping(7,channelMappings[1][1],lfe,channelMappings[3][4],channelMappings[2][0])},\n 0b01110000: {[channels]: 8, [description]: getChannelMapping(8,channelMappings[1][1],lfe,channelMappings[3][0],channelMappings[2][0])},\n 0b10000000: {[channels]: 2, [description]: `${stereo} (left, diff)`},\n 0b10010000: {[channels]: 2, [description]: `${stereo} (diff, right)`},\n 0b10100000: {[channels]: 2, [description]: `${stereo} (avg, diff)`},\n 0b10110000: reserved,\n 0b11000000: reserved,\n 0b11010000: reserved,\n 0b11100000: reserved,\n 0b11110000: reserved,\n}\n\nconst bitDepthValues = {\n 0b00000000: getFromStreamInfo,\n 0b00000010: 8,\n 0b00000100: 12,\n 0b00000110: reserved,\n 0b00001000: 16,\n 0b00001010: 20,\n 0b00001100: 24,\n 0b00001110: reserved,\n};\n\nexport default class FLACHeader extends CodecHeader {\n // https://datatracker.ietf.org/doc/html/rfc3629#section-3\n // Char. number range | UTF-8 octet sequence\n // (hexadecimal) | (binary)\n // --------------------+---------------------------------------------\n // 0000 0000-0000 007F | 0xxxxxxx\n // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n static _decodeUTF8Int(data) {\n if (data[0] > 0xfe) {\n return null; // length byte must have at least one zero as the lsb\n }\n\n if (data[0] < 0x80) return { value: data[0], length: 1 };\n\n // get length by counting the number of msb that are set to 1\n let length = 1;\n for (let zeroMask = 0x40; zeroMask & data[0]; zeroMask >>= 1) length++;\n\n let idx = length - 1,\n value = 0,\n shift = 0;\n\n // sum together the encoded bits in bytes 2 to length\n // 1110xxxx 10[cccccc] 10[bbbbbb] 10[aaaaaa]\n //\n // value = [cccccc] | [bbbbbb] | [aaaaaa]\n for (; idx > 0; shift += 6, idx--) {\n if ((data[idx] & 0xc0) !== 0x80) {\n return null; // each byte should have leading 10xxxxxx\n }\n value |= (data[idx] & 0x3f) << shift; // add the encoded bits\n }\n\n // read the final encoded bits in byte 1\n // 1110[dddd] 10[cccccc] 10[bbbbbb] 10[aaaaaa]\n //\n // value = [dddd] | [cccccc] | [bbbbbb] | [aaaaaa]\n value |= (data[idx] & (0x7f >> length)) << shift;\n\n return { value, length };\n }\n\n static [getHeaderFromUint8Array](data, headerCache) {\n const codecParserStub = {\n [readRawData]: function* () {\n return data;\n },\n };\n\n return FLACHeader[getHeader](codecParserStub, headerCache, 0).next().value;\n }\n\n static *[getHeader](codecParser, headerCache, readOffset) {\n // Must be at least 6 bytes.\n let data = yield* codecParser[readRawData](6, readOffset);\n\n // Bytes (1-2 of 6)\n // * `11111111|111110..`: Frame sync\n // * `........|......0.`: Reserved 0 - mandatory, 1 - reserved\n if (data[0] !== 0xff || !(data[1] === 0xf8 || data[1] === 0xf9)) {\n return null;\n }\n\n const header = {};\n\n // Check header cache\n const key = bytesToString(data[subarray](0, 4));\n const cachedHeader = headerCache[getHeader](key);\n\n if (!cachedHeader) {\n // Byte (2 of 6)\n // * `.......C`: Blocking strategy, 0 - fixed, 1 - variable\n header[blockingStrategyBits] = data[1] & 0b00000001;\n header[blockingStrategy] =\n blockingStrategyValues[header[blockingStrategyBits]];\n\n // Byte (3 of 6)\n // * `DDDD....`: Block size in inter-channel samples\n // * `....EEEE`: Sample rate\n header[blockSizeBits] = data[2] & 0b11110000;\n header[sampleRateBits] = data[2] & 0b00001111;\n\n header[blockSize] = blockSizeValues[header[blockSizeBits]];\n if (header[blockSize] === reserved) {\n return null;\n }\n\n header[sampleRate] = sampleRateValues[header[sampleRateBits]];\n if (header[sampleRate] === bad) {\n return null;\n }\n\n // Byte (4 of 6)\n // * `FFFF....`: Channel assignment\n // * `....GGG.`: Sample size in bits\n // * `.......H`: Reserved 0 - mandatory, 1 - reserved\n if (data[3] & 0b00000001) {\n return null;\n }\n\n const channelAssignment = channelAssignments[data[3] & 0b11110000];\n if (channelAssignment === reserved) {\n return null;\n }\n\n header[channels] = channelAssignment[channels];\n header[channelMode] = channelAssignment[description];\n\n header[bitDepth] = bitDepthValues[data[3] & 0b00001110];\n if (header[bitDepth] === reserved) {\n return null;\n }\n } else {\n Object.assign(header, cachedHeader);\n }\n\n // Byte (5...)\n // * `IIIIIIII|...`: VBR block size ? sample number : frame number\n header[length] = 5;\n\n // check if there is enough data to parse UTF8\n data = yield* codecParser[readRawData](header[length] + 8, readOffset);\n\n const decodedUtf8 = FLACHeader._decodeUTF8Int(data[subarray](4));\n if (!decodedUtf8) {\n return null;\n }\n\n if (header[blockingStrategyBits]) {\n header[sampleNumber] = decodedUtf8.value;\n } else {\n header[frameNumber] = decodedUtf8.value;\n }\n\n header[length] += decodedUtf8[length];\n\n // Byte (...)\n // * `JJJJJJJJ|(JJJJJJJJ)`: Blocksize (8/16bit custom value)\n if (header[blockSizeBits] === 0b01100000) {\n // 8 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[blockSize] = data[header[length] - 1] + 1;\n header[length] += 1;\n } else if (header[blockSizeBits] === 0b01110000) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[blockSize] =\n (data[header[length] - 1] << 8) + data[header[length]] + 1;\n header[length] += 2;\n }\n\n header[samples] = header[blockSize];\n\n // Byte (...)\n // * `KKKKKKKK|(KKKKKKKK)`: Sample rate (8/16bit custom value)\n if (header[sampleRateBits] === 0b00001100) {\n // 8 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] = data[header[length] - 1] * 1000;\n header[length] += 1;\n } else if (header[sampleRateBits] === 0b00001101) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] =\n (data[header[length] - 1] << 8) + data[header[length]];\n header[length] += 2;\n } else if (header[sampleRateBits] === 0b00001110) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] =\n ((data[header[length] - 1] << 8) + data[header[length]]) * 10;\n header[length] += 2;\n }\n\n // Byte (...)\n // * `LLLLLLLL`: CRC-8\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[crc] = data[header[length] - 1];\n if (header[crc] !== crc8(data[subarray](0, header[length] - 1))) {\n return null;\n }\n\n {\n if (!cachedHeader) {\n const {\n blockingStrategyBits,\n frameNumber,\n sampleNumber,\n samples,\n sampleRateBits,\n blockSizeBits,\n crc,\n length,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n }\n return new FLACHeader(header);\n }\n\n /**\n * @private\n * Call FLACHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[crc16] = null; // set in FLACFrame\n this[blockingStrategy] = header[blockingStrategy];\n this[blockSize] = header[blockSize];\n this[frameNumber] = header[frameNumber];\n this[sampleNumber] = header[sampleNumber];\n this[streamInfo] = null; // set during ogg parsing\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore, headerStore } from \"../../globals.js\";\nimport {\n length,\n pageSequenceNumber,\n data,\n codec,\n codecFrames,\n segments,\n subarray,\n readRawData,\n incrementRawData,\n mapFrameStats,\n logWarning,\n parseFrame,\n parseOggPage,\n getHeader,\n enable,\n checkFrameFooterCrc16,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\nimport Parser from \"../Parser.js\";\nimport FLACFrame from \"./FLACFrame.js\";\nimport FLACHeader from \"./FLACHeader.js\";\n\nconst MIN_FLAC_FRAME_SIZE = 2;\nconst MAX_FLAC_FRAME_SIZE = 512 * 1024;\n\nexport default class FLACParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = FLACFrame;\n this.Header = FLACHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return \"flac\";\n }\n\n *_getNextFrameSyncOffset(offset) {\n const data = yield* this._codecParser[readRawData](2, 0);\n const dataLength = data[length] - 2;\n\n while (offset < dataLength) {\n // * `11111111|111110..`: Frame sync\n // * `........|......0.`: Reserved 0 - mandatory, 1 - reserved\n const firstByte = data[offset];\n if (firstByte === 0xff) {\n const secondByte = data[offset + 1];\n if (secondByte === 0xf8 || secondByte === 0xf9) break;\n if (secondByte !== 0xff) offset++; // might as well check for the next sync byte\n }\n offset++;\n }\n\n return offset;\n }\n\n *[parseFrame]() {\n // find the first valid frame header\n do {\n const header = yield* FLACHeader[getHeader](\n this._codecParser,\n this._headerCache,\n 0,\n );\n\n if (header) {\n // found a valid frame header\n // find the next valid frame header\n let nextHeaderOffset =\n headerStore.get(header)[length] + MIN_FLAC_FRAME_SIZE;\n\n while (nextHeaderOffset <= MAX_FLAC_FRAME_SIZE) {\n if (\n this._codecParser._flushing ||\n (yield* FLACHeader[getHeader](\n this._codecParser,\n this._headerCache,\n nextHeaderOffset,\n ))\n ) {\n // found a valid next frame header\n let frameData =\n yield* this._codecParser[readRawData](nextHeaderOffset);\n\n if (!this._codecParser._flushing)\n frameData = frameData[subarray](0, nextHeaderOffset);\n\n // check that this is actually the next header by validating the frame footer crc16\n if (FLACFrame[checkFrameFooterCrc16](frameData)) {\n // both frame headers, and frame footer crc16 are valid, we are synced (odds are pretty low of a false positive)\n const frame = new FLACFrame(frameData, header);\n\n this._headerCache[enable](); // start caching when synced\n this._codecParser[incrementRawData](nextHeaderOffset); // increment to the next frame\n this._codecParser[mapFrameStats](frame);\n\n return frame;\n }\n }\n\n nextHeaderOffset = yield* this._getNextFrameSyncOffset(\n nextHeaderOffset + 1,\n );\n }\n\n this._codecParser[logWarning](\n `Unable to sync FLAC frame after searching ${nextHeaderOffset} bytes.`,\n );\n this._codecParser[incrementRawData](nextHeaderOffset);\n } else {\n // not synced, increment data to continue syncing\n this._codecParser[incrementRawData](\n yield* this._getNextFrameSyncOffset(1),\n );\n }\n } while (true);\n }\n\n [parseOggPage](oggPage) {\n if (oggPage[pageSequenceNumber] === 0) {\n // Identification header\n\n this._headerCache[enable]();\n this._streamInfo = oggPage[data][subarray](13);\n } else if (oggPage[pageSequenceNumber] === 1) {\n // Vorbis comments\n } else {\n oggPage[codecFrames] = frameStore\n .get(oggPage)\n [segments].map((segment) => {\n const header = FLACHeader[getHeaderFromUint8Array](\n segment,\n this._headerCache,\n );\n\n if (header) {\n return new FLACFrame(segment, header, this._streamInfo);\n } else {\n this._codecParser[logWarning](\n \"Failed to parse Ogg FLAC frame\",\n \"Skipping invalid FLAC frame\",\n );\n }\n })\n .filter((frame) => !!frame);\n }\n\n return oggPage;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://xiph.org/ogg/doc/framing.html\n\nAAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA BBBBBBBB 00000CDE\n\n(LSB) (MSB)\nFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF\nGGGGGGGG GGGGGGGG GGGGGGGG GGGGGGGG\nHHHHHHHH HHHHHHHH HHHHHHHH HHHHHHHH\nIIIIIIII IIIIIIII IIIIIIII IIIIIIII\n\nJJJJJJJJ\nLLLLLLLL...\n\nOgg Page Header\nLetter Length (bits) Description\nA 32 0x4f676753, \"OggS\"\nB 8 stream_structure_version\nC 1 (0 no, 1 yes) last page of logical bitstream (eos)\nD 1 (0 no, 1 yes) first page of logical bitstream (bos)\nE 1 (0 no, 1 yes) continued packet\n\nF 64 absolute granule position\nG 32 stream serial number\nH 32 page sequence no\nI 32 page checksum\nJ 8 Number of page segments in the segment table\nL n Segment table (n=page_segments+26).\n Segment table values sum to the total length of the packet.\n Last value is always < 0xFF. Last lacing value will be 0x00 if evenly divisible by 0xFF.\n \n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport {\n absoluteGranulePosition,\n isContinuedPacket,\n isFirstPage,\n isLastPage,\n pageSequenceNumber,\n streamSerialNumber,\n length,\n pageChecksum,\n frameLength,\n streamStructureVersion,\n pageSegmentTable,\n pageSegmentBytes,\n buffer,\n subarray,\n readRawData,\n getHeader,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { readInt64le } from \"../../utilities.js\";\n\nexport default class OggPageHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // Must be at least 28 bytes.\n let data = yield* codecParser[readRawData](28, readOffset);\n\n // Bytes (1-4 of 28)\n // Frame sync (must equal OggS): `AAAAAAAA|AAAAAAAA|AAAAAAAA|AAAAAAAA`:\n if (\n data[0] !== 0x4f || // O\n data[1] !== 0x67 || // g\n data[2] !== 0x67 || // g\n data[3] !== 0x53 // S\n ) {\n return null;\n }\n\n // Byte (5 of 28)\n // * `BBBBBBBB`: stream_structure_version\n header[streamStructureVersion] = data[4];\n\n // Byte (6 of 28)\n // * `00000CDE`\n // * `00000...`: All zeros\n // * `.....C..`: (0 no, 1 yes) last page of logical bitstream (eos)\n // * `......D.`: (0 no, 1 yes) first page of logical bitstream (bos)\n // * `.......E`: (0 no, 1 yes) continued packet\n const zeros = data[5] & 0b11111000;\n if (zeros) return null;\n\n header[isLastPage] = !!(data[5] & 0b00000100);\n header[isFirstPage] = !!(data[5] & 0b00000010);\n header[isContinuedPacket] = !!(data[5] & 0b00000001);\n\n const view = new dataView(uint8Array.from(data[subarray](0, 28))[buffer]);\n\n // Byte (7-14 of 28)\n // * `FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF`\n // * Absolute Granule Position\n header[absoluteGranulePosition] = readInt64le(view, 6);\n\n // Byte (15-18 of 28)\n // * `GGGGGGGG|GGGGGGGG|GGGGGGGG|GGGGGGGG`\n // * Stream Serial Number\n header[streamSerialNumber] = view.getInt32(14, true);\n\n // Byte (19-22 of 28)\n // * `HHHHHHHH|HHHHHHHH|HHHHHHHH|HHHHHHHH`\n // * Page Sequence Number\n header[pageSequenceNumber] = view.getInt32(18, true);\n\n // Byte (23-26 of 28)\n // * `IIIIIIII|IIIIIIII|IIIIIIII|IIIIIIII`\n // * Page Checksum\n header[pageChecksum] = view.getInt32(22, true);\n\n // Byte (27 of 28)\n // * `JJJJJJJJ`: Number of page segments in the segment table\n const pageSegmentTableLength = data[26];\n header[length] = pageSegmentTableLength + 27;\n\n data = yield* codecParser[readRawData](header[length], readOffset); // read in the page segment table\n\n header[frameLength] = 0;\n header[pageSegmentTable] = [];\n header[pageSegmentBytes] = uint8Array.from(\n data[subarray](27, header[length]),\n );\n\n for (let i = 0, segmentLength = 0; i < pageSegmentTableLength; i++) {\n const segmentByte = header[pageSegmentBytes][i];\n\n header[frameLength] += segmentByte;\n segmentLength += segmentByte;\n\n if (segmentByte !== 0xff || i === pageSegmentTableLength - 1) {\n header[pageSegmentTable].push(segmentLength);\n segmentLength = 0;\n }\n }\n\n return new OggPageHeader(header);\n }\n\n /**\n * @private\n * Call OggPageHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n headerStore.set(this, header);\n\n this[absoluteGranulePosition] = header[absoluteGranulePosition];\n this[isContinuedPacket] = header[isContinuedPacket];\n this[isFirstPage] = header[isFirstPage];\n this[isLastPage] = header[isLastPage];\n this[pageSegmentTable] = header[pageSegmentTable];\n this[pageSequenceNumber] = header[pageSequenceNumber];\n this[pageChecksum] = header[pageChecksum];\n this[streamSerialNumber] = header[streamSerialNumber];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore, frameStore } from \"../../globals.js\";\nimport {\n codecFrames,\n rawData,\n absoluteGranulePosition,\n crc32,\n duration,\n isContinuedPacket,\n isFirstPage,\n isLastPage,\n pageSequenceNumber,\n samples,\n streamSerialNumber,\n length,\n pageChecksum,\n frameLength,\n subarray,\n readRawData,\n getFrame,\n getHeader,\n} from \"../../constants.js\";\n\nimport Frame from \"../Frame.js\";\nimport OggPageHeader from \"./OggPageHeader.js\";\n\nexport default class OggPage extends Frame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n const header = yield* OggPageHeader[getHeader](\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (header) {\n const frameLengthValue = headerStore.get(header)[frameLength];\n const headerLength = headerStore.get(header)[length];\n const totalLength = headerLength + frameLengthValue;\n\n const rawDataValue = (yield* codecParser[readRawData](totalLength, 0))[\n subarray\n ](0, totalLength);\n\n const frame = rawDataValue[subarray](headerLength, totalLength);\n\n return new OggPage(header, frame, rawDataValue);\n } else {\n return null;\n }\n }\n\n constructor(header, frame, rawDataValue) {\n super(header, frame);\n\n frameStore.get(this)[length] = rawDataValue[length];\n\n this[codecFrames] = [];\n this[rawData] = rawDataValue;\n this[absoluteGranulePosition] = header[absoluteGranulePosition];\n this[crc32] = header[pageChecksum];\n this[duration] = 0;\n this[isContinuedPacket] = header[isContinuedPacket];\n this[isFirstPage] = header[isFirstPage];\n this[isLastPage] = header[isLastPage];\n this[pageSequenceNumber] = header[pageSequenceNumber];\n this[samples] = 0;\n this[streamSerialNumber] = header[streamSerialNumber];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class OpusFrame extends CodecFrame {\n constructor(data, header, samples) {\n super(header, data, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\nhttps://tools.ietf.org/html/rfc7845.html\n 0 1 2 3\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| 'O' | 'p' | 'u' | 's' |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| 'H' | 'e' | 'a' | 'd' |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Version = 1 | Channel Count | Pre-skip |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Input Sample Rate (Hz) |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Output Gain (Q7.8 in dB) | Mapping Family| |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :\n| |\n: Optional Channel Mapping Table... :\n| |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\nLetter Length (bits) Description\nA 64 Magic Signature - OpusHead\nB 8 Version number - 00000001\nC 8 Output channel count (unsigned)\nD 16 Pre-skip (unsigned, little endian)\nE 32 Sample rate (unsigned, little endian)\nF 16 Output Gain (signed, little endian)\nG 8 Channel Mapping family (unsigned)\n\n// if(channel mapping !== 0)\nH 8 Stream count (unsigned)\nI 8 Coupled Stream Count (unsigned)\nJ 8*C Channel Mapping\n*/\n\nimport {\n rate48000,\n vorbisOpusChannelMapping,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n bandwidth,\n channelMappingFamily,\n channelMappingTable,\n coupledStreamCount,\n frameCount,\n frameSize,\n hasOpusPadding,\n inputSampleRate,\n isVbr,\n mode,\n outputGain,\n preSkip,\n streamCount,\n data,\n buffer,\n subarray,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\n/* prettier-ignore */\nconst channelMappingFamilies = {\n 0b00000000: vorbisOpusChannelMapping.slice(0,2),\n /*\n 0: \"monophonic (mono)\"\n 1: \"stereo (left, right)\"\n */\n 0b00000001: vorbisOpusChannelMapping\n /*\n 0: \"monophonic (mono)\"\n 1: \"stereo (left, right)\"\n 2: \"linear surround (left, center, right)\"\n 3: \"quadraphonic (front left, front right, rear left, rear right)\"\n 4: \"5.0 surround (front left, front center, front right, rear left, rear right)\"\n 5: \"5.1 surround (front left, front center, front right, rear left, rear right, LFE)\"\n 6: \"6.1 surround (front left, front center, front right, side left, side right, rear center, LFE)\"\n 7: \"7.1 surround (front left, front center, front right, side left, side right, rear left, rear right, LFE)\"\n */\n // additional channel mappings are user defined\n};\n\nconst silkOnly = \"SILK-only\";\nconst celtOnly = \"CELT-only\";\nconst hybrid = \"Hybrid\";\n\nconst narrowBand = \"narrowband\";\nconst mediumBand = \"medium-band\";\nconst wideBand = \"wideband\";\nconst superWideBand = \"super-wideband\";\nconst fullBand = \"fullband\";\n\n// 0 1 2 3 4 5 6 7\n// +-+-+-+-+-+-+-+-+\n// | config |s| c |\n// +-+-+-+-+-+-+-+-+\n// prettier-ignore\nconst configTable = {\n 0b00000000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 10 },\n 0b00001000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 20 },\n 0b00010000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 40 },\n 0b00011000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 60 },\n 0b00100000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 10 },\n 0b00101000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 20 },\n 0b00110000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 40 },\n 0b00111000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 60 },\n 0b01000000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 10 },\n 0b01001000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 20 },\n 0b01010000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 40 },\n 0b01011000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 60 },\n 0b01100000: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 10 },\n 0b01101000: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 20 },\n 0b01110000: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 10 },\n 0b01111000: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 20 },\n 0b10000000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 2.5 },\n 0b10001000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 5 },\n 0b10010000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 10 },\n 0b10011000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 20 },\n 0b10100000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 2.5 },\n 0b10101000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 5 },\n 0b10110000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 10 },\n 0b10111000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 20 },\n 0b11000000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 2.5 },\n 0b11001000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 5 },\n 0b11010000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 10 },\n 0b11011000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 20 },\n 0b11100000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 2.5 },\n 0b11101000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 5 },\n 0b11110000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 10 },\n 0b11111000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 20 },\n};\n\nexport default class OpusHeader extends CodecHeader {\n static [getHeaderFromUint8Array](dataValue, packetData, headerCache) {\n const header = {};\n\n // get length of header\n // Byte (10 of 19)\n // * `CCCCCCCC`: Channel Count\n header[channels] = dataValue[9];\n // Byte (19 of 19)\n // * `GGGGGGGG`: Channel Mapping Family\n header[channelMappingFamily] = dataValue[18];\n\n header[length] =\n header[channelMappingFamily] !== 0 ? 21 + header[channels] : 19;\n\n if (dataValue[length] < header[length])\n throw new Error(\"Out of data while inside an Ogg Page\");\n\n // Page Segment Bytes (1-2)\n // * `AAAAA...`: Packet config\n // * `.....B..`:\n // * `......CC`: Packet code\n const packetMode = packetData[0] & 0b00000011;\n const packetLength = packetMode === 3 ? 2 : 1;\n\n // Check header cache\n const key =\n bytesToString(dataValue[subarray](0, header[length])) +\n bytesToString(packetData[subarray](0, packetLength));\n const cachedHeader = headerCache[getHeader](key);\n\n if (cachedHeader) return new OpusHeader(cachedHeader);\n\n // Bytes (1-8 of 19): OpusHead - Magic Signature\n if (key.substr(0, 8) !== \"OpusHead\") {\n return null;\n }\n\n // Byte (9 of 19)\n // * `00000001`: Version number\n if (dataValue[8] !== 1) return null;\n\n header[data] = uint8Array.from(dataValue[subarray](0, header[length]));\n\n const view = new dataView(header[data][buffer]);\n\n header[bitDepth] = 16;\n\n // Byte (10 of 19)\n // * `CCCCCCCC`: Channel Count\n // set earlier to determine length\n\n // Byte (11-12 of 19)\n // * `DDDDDDDD|DDDDDDDD`: Pre skip\n header[preSkip] = view.getUint16(10, true);\n\n // Byte (13-16 of 19)\n // * `EEEEEEEE|EEEEEEEE|EEEEEEEE|EEEEEEEE`: Sample Rate\n header[inputSampleRate] = view.getUint32(12, true);\n // Opus is always decoded at 48kHz\n header[sampleRate] = rate48000;\n\n // Byte (17-18 of 19)\n // * `FFFFFFFF|FFFFFFFF`: Output Gain\n header[outputGain] = view.getInt16(16, true);\n\n // Byte (19 of 19)\n // * `GGGGGGGG`: Channel Mapping Family\n // set earlier to determine length\n if (header[channelMappingFamily] in channelMappingFamilies) {\n header[channelMode] =\n channelMappingFamilies[header[channelMappingFamily]][\n header[channels] - 1\n ];\n if (!header[channelMode]) return null;\n }\n\n if (header[channelMappingFamily] !== 0) {\n // * `HHHHHHHH`: Stream count\n header[streamCount] = dataValue[19];\n\n // * `IIIIIIII`: Coupled Stream count\n header[coupledStreamCount] = dataValue[20];\n\n // * `JJJJJJJJ|...` Channel Mapping table\n header[channelMappingTable] = [\n ...dataValue[subarray](21, header[channels] + 21),\n ];\n }\n\n const packetConfig = configTable[0b11111000 & packetData[0]];\n header[mode] = packetConfig[mode];\n header[bandwidth] = packetConfig[bandwidth];\n header[frameSize] = packetConfig[frameSize];\n\n // https://tools.ietf.org/html/rfc6716#appendix-B\n switch (packetMode) {\n case 0:\n // 0: 1 frame in the packet\n header[frameCount] = 1;\n break;\n case 1:\n // 1: 2 frames in the packet, each with equal compressed size\n case 2:\n // 2: 2 frames in the packet, with different compressed sizes\n header[frameCount] = 2;\n break;\n case 3:\n // 3: an arbitrary number of frames in the packet\n header[isVbr] = !!(0b10000000 & packetData[1]);\n header[hasOpusPadding] = !!(0b01000000 & packetData[1]);\n header[frameCount] = 0b00111111 & packetData[1];\n break;\n default:\n return null;\n }\n\n // set header cache\n {\n const {\n length,\n data: headerData,\n channelMappingFamily,\n ...codecUpdateFields\n } = header;\n\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n\n return new OpusHeader(header);\n }\n\n /**\n * @private\n * Call OpusHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[data] = header[data];\n this[bandwidth] = header[bandwidth];\n this[channelMappingFamily] = header[channelMappingFamily];\n this[channelMappingTable] = header[channelMappingTable];\n this[coupledStreamCount] = header[coupledStreamCount];\n this[frameCount] = header[frameCount];\n this[frameSize] = header[frameSize];\n this[hasOpusPadding] = header[hasOpusPadding];\n this[inputSampleRate] = header[inputSampleRate];\n this[isVbr] = header[isVbr];\n this[mode] = header[mode];\n this[outputGain] = header[outputGain];\n this[preSkip] = header[preSkip];\n this[streamCount] = header[streamCount];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../../globals.js\";\nimport {\n codecFrames,\n data,\n pageSequenceNumber,\n codec,\n segments,\n logError,\n parseOggPage,\n enable,\n getHeaderFromUint8Array,\n preSkip,\n frameSize,\n frameCount,\n sampleRate,\n} from \"../../constants.js\";\nimport Parser from \"../Parser.js\";\nimport OpusFrame from \"./OpusFrame.js\";\nimport OpusHeader from \"./OpusHeader.js\";\n\nexport default class OpusParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = OpusFrame;\n this.Header = OpusHeader;\n\n onCodec(this[codec]);\n this._identificationHeader = null;\n this._preSkipRemaining = null;\n }\n\n get [codec]() {\n return \"opus\";\n }\n\n /**\n * @todo implement continued page support\n */\n [parseOggPage](oggPage) {\n if (oggPage[pageSequenceNumber] === 0) {\n // Identification header\n\n this._headerCache[enable]();\n this._identificationHeader = oggPage[data];\n } else if (oggPage[pageSequenceNumber] === 1) {\n // OpusTags\n } else {\n oggPage[codecFrames] = frameStore\n .get(oggPage)\n [segments].map((segment) => {\n const header = OpusHeader[getHeaderFromUint8Array](\n this._identificationHeader,\n segment,\n this._headerCache,\n );\n\n if (header) {\n if (this._preSkipRemaining === null)\n this._preSkipRemaining = header[preSkip];\n\n let samples =\n ((header[frameSize] * header[frameCount]) / 1000) *\n header[sampleRate];\n\n if (this._preSkipRemaining > 0) {\n this._preSkipRemaining -= samples;\n samples =\n this._preSkipRemaining < 0 ? -this._preSkipRemaining : 0;\n }\n\n return new OpusFrame(segment, header, samples);\n }\n\n this._codecParser[logError](\n \"Failed to parse Ogg Opus Header\",\n \"Not a valid Ogg Opus file\",\n );\n });\n }\n\n return oggPage;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class VorbisFrame extends CodecFrame {\n constructor(data, header, samples) {\n super(header, data, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\n/*\n\n1 1) [packet_type] : 8 bit value\n2 2) 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73: the characters ’v’,’o’,’r’,’b’,’i’,’s’ as six octets\n\nLetter bits Description\nA 8 Packet type\nB 48 Magic signature (vorbis)\nC 32 Version number\nD 8 Channels\nE 32 Sample rate\nF 32 Bitrate Maximum (signed)\nG 32 Bitrate Nominal (signed)\nH 32 Bitrate Minimum (signed)\nI 4 blocksize 1\nJ 4 blocksize 0\nK 1 Framing flag\n*/\n\nimport {\n vorbisOpusChannelMapping,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n bitrateMaximum,\n bitrateMinimum,\n bitrateNominal,\n blocksize0,\n blocksize1,\n data,\n vorbisComments,\n vorbisSetup,\n version,\n buffer,\n subarray,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst blockSizes = {\n // 0b0110: 64,\n // 0b0111: 128,\n // 0b1000: 256,\n // 0b1001: 512,\n // 0b1010: 1024,\n // 0b1011: 2048,\n // 0b1100: 4096,\n // 0b1101: 8192\n};\nfor (let i = 0; i < 8; i++) blockSizes[i + 6] = 2 ** (6 + i);\n\nexport default class VorbisHeader extends CodecHeader {\n static [getHeaderFromUint8Array](\n dataValue,\n headerCache,\n vorbisCommentsData,\n vorbisSetupData,\n ) {\n // Must be at least 30 bytes.\n if (dataValue[length] < 30)\n throw new Error(\"Out of data while inside an Ogg Page\");\n\n // Check header cache\n const key = bytesToString(dataValue[subarray](0, 30));\n const cachedHeader = headerCache[getHeader](key);\n if (cachedHeader) return new VorbisHeader(cachedHeader);\n\n const header = { [length]: 30 };\n\n // Bytes (1-7 of 30): /01vorbis - Magic Signature\n if (key.substr(0, 7) !== \"\\x01vorbis\") {\n return null;\n }\n\n header[data] = uint8Array.from(dataValue[subarray](0, 30));\n const view = new dataView(header[data][buffer]);\n\n // Byte (8-11 of 30)\n // * `CCCCCCCC|CCCCCCCC|CCCCCCCC|CCCCCCCC`: Version number\n header[version] = view.getUint32(7, true);\n if (header[version] !== 0) return null;\n\n // Byte (12 of 30)\n // * `DDDDDDDD`: Channel Count\n header[channels] = dataValue[11];\n header[channelMode] =\n vorbisOpusChannelMapping[header[channels] - 1] || \"application defined\";\n\n // Byte (13-16 of 30)\n // * `EEEEEEEE|EEEEEEEE|EEEEEEEE|EEEEEEEE`: Sample Rate\n header[sampleRate] = view.getUint32(12, true);\n\n // Byte (17-20 of 30)\n // * `FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF`: Bitrate Maximum\n header[bitrateMaximum] = view.getInt32(16, true);\n\n // Byte (21-24 of 30)\n // * `GGGGGGGG|GGGGGGGG|GGGGGGGG|GGGGGGGG`: Bitrate Nominal\n header[bitrateNominal] = view.getInt32(20, true);\n\n // Byte (25-28 of 30)\n // * `HHHHHHHH|HHHHHHHH|HHHHHHHH|HHHHHHHH`: Bitrate Minimum\n header[bitrateMinimum] = view.getInt32(24, true);\n\n // Byte (29 of 30)\n // * `IIII....` Blocksize 1\n // * `....JJJJ` Blocksize 0\n header[blocksize1] = blockSizes[(dataValue[28] & 0b11110000) >> 4];\n header[blocksize0] = blockSizes[dataValue[28] & 0b00001111];\n if (header[blocksize0] > header[blocksize1]) return null;\n\n // Byte (29 of 30)\n // * `00000001` Framing bit\n if (dataValue[29] !== 0x01) return null;\n\n header[bitDepth] = 32;\n header[vorbisSetup] = vorbisSetupData;\n header[vorbisComments] = vorbisCommentsData;\n\n {\n // set header cache\n const {\n length,\n data,\n version,\n vorbisSetup,\n vorbisComments,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n\n return new VorbisHeader(header);\n }\n\n /**\n * @private\n * Call VorbisHeader.getHeader(Array<Uint8>) to get instance\n */\n constructor(header) {\n super(header);\n\n this[bitrateMaximum] = header[bitrateMaximum];\n this[bitrateMinimum] = header[bitrateMinimum];\n this[bitrateNominal] = header[bitrateNominal];\n this[blocksize0] = header[blocksize0];\n this[blocksize1] = header[blocksize1];\n this[data] = header[data];\n this[vorbisComments] = header[vorbisComments];\n this[vorbisSetup] = header[vorbisSetup];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { frameStore } from \"../../globals.js\";\nimport { BitReader, reverse } from \"../../utilities.js\";\nimport {\n data,\n codec,\n blocksize0,\n blocksize1,\n codecFrames,\n segments,\n vorbis,\n logWarning,\n parseOggPage,\n enable,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport VorbisFrame from \"./VorbisFrame.js\";\nimport VorbisHeader from \"./VorbisHeader.js\";\n\nexport default class VorbisParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = VorbisFrame;\n\n onCodec(this[codec]);\n\n this._identificationHeader = null;\n this._setupComplete = false;\n\n this._prevBlockSize = null;\n }\n\n get [codec]() {\n return vorbis;\n }\n\n [parseOggPage](oggPage) {\n oggPage[codecFrames] = [];\n\n for (const oggPageSegment of frameStore.get(oggPage)[segments]) {\n if (oggPageSegment[0] === 1) {\n // Identification header\n\n this._headerCache[enable]();\n this._identificationHeader = oggPage[data];\n this._setupComplete = false;\n } else if (oggPageSegment[0] === 3) {\n // comment header\n\n this._vorbisComments = oggPageSegment;\n } else if (oggPageSegment[0] === 5) {\n // setup header\n\n this._vorbisSetup = oggPageSegment;\n this._mode = this._parseSetupHeader(oggPageSegment);\n this._setupComplete = true;\n } else if (this._setupComplete) {\n const header = VorbisHeader[getHeaderFromUint8Array](\n this._identificationHeader,\n this._headerCache,\n this._vorbisComments,\n this._vorbisSetup,\n );\n\n if (header) {\n oggPage[codecFrames].push(\n new VorbisFrame(\n oggPageSegment,\n header,\n this._getSamples(oggPageSegment, header),\n ),\n );\n } else {\n this._codecParser[logError](\n \"Failed to parse Ogg Vorbis Header\",\n \"Not a valid Ogg Vorbis file\",\n );\n }\n }\n }\n\n return oggPage;\n }\n\n _getSamples(segment, header) {\n const blockFlag =\n this._mode.blockFlags[(segment[0] >> 1) & this._mode.mask];\n\n const currentBlockSize = blockFlag\n ? header[blocksize1]\n : header[blocksize0];\n\n // data is not returned on the first frame, but is used to prime the decoder\n // https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-590004\n const samplesValue =\n this._prevBlockSize === null\n ? 0\n : (this._prevBlockSize + currentBlockSize) / 4;\n\n this._prevBlockSize = currentBlockSize;\n\n return samplesValue;\n }\n\n // https://gitlab.xiph.org/xiph/liboggz/-/blob/master/src/liboggz/oggz_auto.c#L911\n // https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/vorbis_parser.c\n /*\n * This is the format of the mode data at the end of the packet for all\n * Vorbis Version 1 :\n *\n * [ 6:number_of_modes ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:framing(1) ]\n *\n * e.g.:\n *\n * MsB LsB\n * <-\n * 0 0 0 0 0 1 0 0\n * 0 0 1 0 0 0 0 0\n * 0 0 1 0 0 0 0 0\n * 0 0 1|0 0 0 0 0\n * 0 0 0 0|0|0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0 0 0|0 0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0 0 0|0 0 0 0\n * 0 0 0|1|0 0 0 0 |\n * 0 0 0 0 0 0 0 0 V\n * 0 0 0|0 0 0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0|1 0 0 0 0 0\n *\n * The simplest way to approach this is to start at the end\n * and read backwards to determine the mode configuration.\n *\n * liboggz and ffmpeg both use this method.\n */\n _parseSetupHeader(setup) {\n const bitReader = new BitReader(setup);\n const mode = {\n count: 0,\n blockFlags: [],\n };\n\n // sync with the framing bit\n while ((bitReader.read(1) & 0x01) !== 1) {}\n\n let modeBits;\n // search in reverse to parse out the mode entries\n // limit mode count to 63 so previous block flag will be in first packet byte\n while (mode.count < 64 && bitReader.position > 0) {\n reverse(bitReader.read(8)); // read mapping\n\n // 16 bits transform type, 16 bits window type, all values must be zero\n let currentByte = 0;\n while (bitReader.read(8) === 0x00 && currentByte++ < 3) {} // a non-zero value may indicate the end of the mode entries, or invalid data\n\n if (currentByte === 4) {\n // transform type and window type were all zeros\n modeBits = bitReader.read(7); // modeBits may need to be used in the next iteration if this is the last mode entry\n mode.blockFlags.unshift(modeBits & 0x01); // read and store mode number -> block flag\n bitReader.position += 6; // go back 6 bits so next iteration starts right after the block flag\n mode.count++;\n } else {\n // transform type and window type were not all zeros\n // check for mode count using previous iteration modeBits\n if (((reverse(modeBits) & 0b01111110) >> 1) + 1 !== mode.count) {\n this._codecParser[logWarning](\n \"vorbis derived mode count did not match actual mode count\",\n );\n }\n\n break;\n }\n }\n\n // xxxxxxxa packet type\n // xxxxxxbx mode count (number of mode count bits)\n // xxxxxcxx previous window flag\n // xxxxdxxx next window flag\n mode.mask = (1 << Math.log2(mode.count)) - 1;\n\n return mode;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { headerStore, frameStore } from \"../../globals.js\";\nimport { bytesToString, concatBuffers } from \"../../utilities.js\";\nimport {\n header,\n pageSequenceNumber,\n pageSegmentBytes,\n pageSegmentTable,\n codec,\n data,\n length,\n samples,\n segments,\n subarray,\n vorbis,\n mapFrameStats,\n logWarning,\n fixedLengthFrameSync,\n parseFrame,\n parseOggPage,\n reset,\n uint8Array,\n isLastPage,\n streamSerialNumber,\n absoluteGranulePosition,\n} from \"../../constants.js\";\n\nimport Parser from \"../../codecs/Parser.js\";\nimport OggPage from \"./OggPage.js\";\nimport OggPageHeader from \"./OggPageHeader.js\";\n\nimport FLACParser from \"../../codecs/flac/FLACParser.js\";\nimport OpusParser from \"../../codecs/opus/OpusParser.js\";\nimport VorbisParser from \"../../codecs/vorbis/VorbisParser.js\";\n\nclass OggStream {\n constructor(codecParser, headerCache, onCodec) {\n this._codecParser = codecParser;\n this._headerCache = headerCache;\n this._onCodec = onCodec;\n\n this._continuedPacket = new uint8Array();\n this._codec = null;\n this._isSupported = null;\n this._previousAbsoluteGranulePosition = null;\n }\n\n get [codec]() {\n return this._codec || \"\";\n }\n\n _updateCodec(codec, Parser) {\n if (this._codec !== codec) {\n this._headerCache[reset]();\n this._parser = new Parser(\n this._codecParser,\n this._headerCache,\n this._onCodec,\n );\n this._codec = codec;\n }\n }\n\n _checkCodecSupport({ data }) {\n const idString = bytesToString(data[subarray](0, 8));\n\n switch (idString) {\n case \"fishead\\0\":\n return false; // ignore ogg skeleton packets\n case \"OpusHead\":\n this._updateCodec(\"opus\", OpusParser);\n return true;\n case /^\\x7fFLAC/.test(idString) && idString:\n this._updateCodec(\"flac\", FLACParser);\n return true;\n case /^\\x01vorbis/.test(idString) && idString:\n this._updateCodec(vorbis, VorbisParser);\n return true;\n default:\n return false;\n }\n }\n\n _checkPageSequenceNumber(oggPage) {\n if (\n oggPage[pageSequenceNumber] !== this._pageSequenceNumber + 1 &&\n this._pageSequenceNumber > 1 &&\n oggPage[pageSequenceNumber] > 1\n ) {\n this._codecParser[logWarning](\n \"Unexpected gap in Ogg Page Sequence Number.\",\n `Expected: ${this._pageSequenceNumber + 1}, Got: ${\n oggPage[pageSequenceNumber]\n }`,\n );\n }\n\n this._pageSequenceNumber = oggPage[pageSequenceNumber];\n }\n\n _parsePage(oggPage) {\n if (this._isSupported === null) {\n this._pageSequenceNumber = oggPage[pageSequenceNumber];\n this._isSupported = this._checkCodecSupport(oggPage);\n }\n\n this._checkPageSequenceNumber(oggPage);\n\n const oggPageStore = frameStore.get(oggPage);\n const headerData = headerStore.get(oggPageStore[header]);\n\n let offset = 0;\n oggPageStore[segments] = headerData[pageSegmentTable].map((segmentLength) =>\n oggPage[data][subarray](offset, (offset += segmentLength)),\n );\n\n // prepend any existing continued packet data\n if (this._continuedPacket[length]) {\n oggPageStore[segments][0] = concatBuffers(\n this._continuedPacket,\n oggPageStore[segments][0],\n );\n\n this._continuedPacket = new uint8Array();\n }\n\n // save any new continued packet data\n if (\n headerData[pageSegmentBytes][headerData[pageSegmentBytes][length] - 1] ===\n 0xff\n ) {\n this._continuedPacket = concatBuffers(\n this._continuedPacket,\n oggPageStore[segments].pop(),\n );\n }\n\n // set total samples in this ogg page\n if (this._previousAbsoluteGranulePosition !== null) {\n oggPage[samples] = Number(\n oggPage[absoluteGranulePosition] -\n this._previousAbsoluteGranulePosition,\n );\n }\n\n this._previousAbsoluteGranulePosition = oggPage[absoluteGranulePosition];\n\n if (this._isSupported) {\n const frame = this._parser[parseOggPage](oggPage);\n this._codecParser[mapFrameStats](frame);\n\n return frame;\n } else {\n return oggPage;\n }\n }\n}\n\nexport default class OggParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n\n this._onCodec = onCodec;\n this.Frame = OggPage;\n this.Header = OggPageHeader;\n\n this._streams = new Map();\n this._currentSerialNumber = null;\n }\n\n get [codec]() {\n const oggStream = this._streams.get(this._currentSerialNumber);\n\n return oggStream ? oggStream.codec : \"\";\n }\n\n *[parseFrame]() {\n const oggPage = yield* this[fixedLengthFrameSync](true);\n this._currentSerialNumber = oggPage[streamSerialNumber];\n\n let oggStream = this._streams.get(this._currentSerialNumber);\n if (!oggStream) {\n oggStream = new OggStream(\n this._codecParser,\n this._headerCache,\n this._onCodec,\n );\n this._streams.set(this._currentSerialNumber, oggStream);\n }\n\n if (oggPage[isLastPage]) this._streams.delete(this._currentSerialNumber);\n\n return oggStream._parsePage(oggPage);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>\n*/\n\nimport { crc32Function, concatBuffers } from \"./utilities.js\";\nimport {\n header,\n sampleRate,\n bitrate,\n length,\n frameNumber,\n data,\n samples,\n codec,\n codecFrames,\n totalBytesOut,\n totalSamples,\n totalDuration,\n crc32,\n duration,\n subarray,\n readRawData,\n incrementRawData,\n mapCodecFrameStats,\n mapFrameStats,\n logWarning,\n logError,\n parseFrame,\n checkCodecUpdate,\n reset,\n isLastPage,\n} from \"./constants.js\";\nimport HeaderCache from \"./codecs/HeaderCache.js\";\nimport MPEGParser from \"./codecs/mpeg/MPEGParser.js\";\nimport AACParser from \"./codecs/aac/AACParser.js\";\nimport FLACParser from \"./codecs/flac/FLACParser.js\";\nimport OggParser from \"./containers/ogg/OggParser.js\";\n\nconst noOp = () => {};\n\nexport default class CodecParser {\n constructor(\n mimeType,\n {\n onCodec,\n onCodecHeader,\n onCodecUpdate,\n enableLogging = false,\n enableFrameCRC32 = true,\n } = {},\n ) {\n this._inputMimeType = mimeType;\n this._onCodec = onCodec || noOp;\n this._onCodecHeader = onCodecHeader || noOp;\n this._onCodecUpdate = onCodecUpdate;\n this._enableLogging = enableLogging;\n this._crc32 = enableFrameCRC32 ? crc32Function : noOp;\n\n this[reset]();\n }\n\n /**\n * @public\n * @returns The detected codec\n */\n get [codec]() {\n return this._parser ? this._parser[codec] : \"\";\n }\n\n [reset]() {\n this._headerCache = new HeaderCache(\n this._onCodecHeader,\n this._onCodecUpdate,\n );\n\n this._generator = this._getGenerator();\n this._generator.next();\n }\n\n /**\n * @public\n * @description Generator function that yields any buffered CodecFrames and resets the CodecParser\n * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.\n * @yields {CodecFrame|OggPage} Parsed codec or ogg page data\n */\n *flush() {\n this._flushing = true;\n\n for (let i = this._generator.next(); i.value; i = this._generator.next()) {\n yield i.value;\n }\n\n this._flushing = false;\n\n this[reset]();\n }\n\n /**\n * @public\n * @description Generator function takes in a Uint8Array of data and returns a CodecFrame from the data for each iteration\n * @param {Uint8Array} chunk Next chunk of codec data to read\n * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.\n * @yields {CodecFrame|OggPage} Parsed codec or ogg page data\n */\n *parseChunk(chunk) {\n for (\n let i = this._generator.next(chunk);\n i.value;\n i = this._generator.next()\n ) {\n yield i.value;\n }\n }\n\n /**\n * @public\n * @description Parses an entire file and returns all of the contained frames.\n * @param {Uint8Array} fileData Coded data to read\n * @returns {Array<CodecFrame|OggPage>} CodecFrames\n */\n parseAll(fileData) {\n return [...this.parseChunk(fileData), ...this.flush()];\n }\n\n /**\n * @private\n */\n *_getGenerator() {\n if (this._inputMimeType.match(/aac/)) {\n this._parser = new AACParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/mpeg/)) {\n this._parser = new MPEGParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/flac/)) {\n this._parser = new FLACParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/ogg/)) {\n this._parser = new OggParser(this, this._headerCache, this._onCodec);\n } else {\n throw new Error(`Unsupported Codec ${mimeType}`);\n }\n\n this._frameNumber = 0;\n this._currentReadPosition = 0;\n this._totalBytesIn = 0;\n this._totalBytesOut = 0;\n this._totalSamples = 0;\n this._sampleRate = undefined;\n\n this._rawData = new Uint8Array(0);\n\n // start parsing out frames\n while (true) {\n const frame = yield* this._parser[parseFrame]();\n if (frame) yield frame;\n }\n }\n\n /**\n * @protected\n * @param {number} minSize Minimum bytes to have present in buffer\n * @returns {Uint8Array} rawData\n */\n *[readRawData](minSize = 0, readOffset = 0) {\n let rawData;\n\n while (this._rawData[length] <= minSize + readOffset) {\n rawData = yield;\n\n if (this._flushing) return this._rawData[subarray](readOffset);\n\n if (rawData) {\n this._totalBytesIn += rawData[length];\n this._rawData = concatBuffers(this._rawData, rawData);\n }\n }\n\n return this._rawData[subarray](readOffset);\n }\n\n /**\n * @protected\n * @param {number} increment Bytes to increment codec data\n */\n [incrementRawData](increment) {\n this._currentReadPosition += increment;\n this._rawData = this._rawData[subarray](increment);\n }\n\n /**\n * @protected\n */\n [mapCodecFrameStats](frame) {\n this._sampleRate = frame[header][sampleRate];\n\n frame[header][bitrate] =\n frame[duration] > 0\n ? Math.round(frame[data][length] / frame[duration]) * 8\n : 0;\n frame[frameNumber] = this._frameNumber++;\n frame[totalBytesOut] = this._totalBytesOut;\n frame[totalSamples] = this._totalSamples;\n frame[totalDuration] = (this._totalSamples / this._sampleRate) * 1000;\n frame[crc32] = this._crc32(frame[data]);\n\n this._headerCache[checkCodecUpdate](\n frame[header][bitrate],\n frame[totalDuration],\n );\n\n this._totalBytesOut += frame[data][length];\n this._totalSamples += frame[samples];\n }\n\n /**\n * @protected\n */\n [mapFrameStats](frame) {\n if (frame[codecFrames]) {\n // Ogg container\n if (frame[isLastPage]) {\n // cut any excess samples that fall outside of the absolute granule position\n // some streams put invalid data in absolute granule position, so only do this\n // for the end of the stream\n let absoluteGranulePositionSamples = frame[samples];\n\n frame[codecFrames].forEach((codecFrame) => {\n const untrimmedCodecSamples = codecFrame[samples];\n\n if (absoluteGranulePositionSamples < untrimmedCodecSamples) {\n codecFrame[samples] =\n absoluteGranulePositionSamples > 0\n ? absoluteGranulePositionSamples\n : 0;\n codecFrame[duration] =\n (codecFrame[samples] / codecFrame[header][sampleRate]) * 1000;\n }\n\n absoluteGranulePositionSamples -= untrimmedCodecSamples;\n\n this[mapCodecFrameStats](codecFrame);\n });\n } else {\n frame[samples] = 0;\n frame[codecFrames].forEach((codecFrame) => {\n frame[samples] += codecFrame[samples];\n this[mapCodecFrameStats](codecFrame);\n });\n }\n\n frame[duration] = (frame[samples] / this._sampleRate) * 1000 || 0;\n frame[totalSamples] = this._totalSamples;\n frame[totalDuration] =\n (this._totalSamples / this._sampleRate) * 1000 || 0;\n frame[totalBytesOut] = this._totalBytesOut;\n } else {\n this[mapCodecFrameStats](frame);\n }\n }\n\n /**\n * @private\n */\n _log(logger, messages) {\n if (this._enableLogging) {\n const stats = [\n `${codec}: ${this[codec]}`,\n `inputMimeType: ${this._inputMimeType}`,\n `readPosition: ${this._currentReadPosition}`,\n `totalBytesIn: ${this._totalBytesIn}`,\n `${totalBytesOut}: ${this._totalBytesOut}`,\n ];\n\n const width = Math.max(...stats.map((s) => s[length]));\n\n messages.push(\n `--stats--${\"-\".repeat(width - 9)}`,\n ...stats,\n \"-\".repeat(width),\n );\n\n logger(\n \"codec-parser\",\n messages.reduce((acc, message) => acc + \"\\n \" + message, \"\"),\n );\n }\n }\n\n /**\n * @protected\n */\n [logWarning](...messages) {\n this._log(console.warn, messages);\n }\n\n /**\n * @protected\n */\n [logError](...messages) {\n this._log(console.error, messages);\n }\n}\n","import CodecParser from \"./src/CodecParser.js\";\nimport * as constants from \"./src/constants.js\";\n\nexport default CodecParser;\n\nexport const absoluteGranulePosition = constants.absoluteGranulePosition;\nexport const bandwidth = constants.bandwidth;\nexport const bitDepth = constants.bitDepth;\nexport const bitrate = constants.bitrate;\nexport const bitrateMaximum = constants.bitrateMaximum;\nexport const bitrateMinimum = constants.bitrateMinimum;\nexport const bitrateNominal = constants.bitrateNominal;\nexport const buffer = constants.buffer;\nexport const bufferFullness = constants.bufferFullness;\nexport const codec = constants.codec;\nexport const codecFrames = constants.codecFrames;\nexport const coupledStreamCount = constants.coupledStreamCount;\nexport const crc = constants.crc;\nexport const crc16 = constants.crc16;\nexport const crc32 = constants.crc32;\nexport const data = constants.data;\nexport const description = constants.description;\nexport const duration = constants.duration;\nexport const emphasis = constants.emphasis;\nexport const hasOpusPadding = constants.hasOpusPadding;\nexport const header = constants.header;\nexport const isContinuedPacket = constants.isContinuedPacket;\nexport const isCopyrighted = constants.isCopyrighted;\nexport const isFirstPage = constants.isFirstPage;\nexport const isHome = constants.isHome;\nexport const isLastPage = constants.isLastPage;\nexport const isOriginal = constants.isOriginal;\nexport const isPrivate = constants.isPrivate;\nexport const isVbr = constants.isVbr;\nexport const layer = constants.layer;\nexport const length = constants.length;\nexport const mode = constants.mode;\nexport const modeExtension = constants.modeExtension;\nexport const mpeg = constants.mpeg;\nexport const mpegVersion = constants.mpegVersion;\nexport const numberAACFrames = constants.numberAACFrames;\nexport const outputGain = constants.outputGain;\nexport const preSkip = constants.preSkip;\nexport const profile = constants.profile;\nexport const protection = constants.protection;\nexport const rawData = constants.rawData;\nexport const segments = constants.segments;\nexport const subarray = constants.subarray;\nexport const version = constants.version;\nexport const vorbis = constants.vorbis;\nexport const vorbisComments = constants.vorbisComments;\nexport const vorbisSetup = constants.vorbisSetup;\nexport const blockingStrategy = constants.blockingStrategy;\nexport const blockSize = constants.blockSize;\nexport const blocksize0 = constants.blocksize0;\nexport const blocksize1 = constants.blocksize1;\nexport const channelMappingFamily = constants.channelMappingFamily;\nexport const channelMappingTable = constants.channelMappingTable;\nexport const channelMode = constants.channelMode;\nexport const channels = constants.channels;\nexport const copyrightId = constants.copyrightId;\nexport const copyrightIdStart = constants.copyrightIdStart;\nexport const frame = constants.frame;\nexport const frameCount = constants.frameCount;\nexport const frameLength = constants.frameLength;\nexport const frameNumber = constants.frameNumber;\nexport const framePadding = constants.framePadding;\nexport const frameSize = constants.frameSize;\nexport const inputSampleRate = constants.inputSampleRate;\nexport const pageChecksum = constants.pageChecksum;\nexport const pageSegmentTable = constants.pageSegmentTable;\nexport const pageSequenceNumber = constants.pageSequenceNumber;\nexport const sampleNumber = constants.sampleNumber;\nexport const sampleRate = constants.sampleRate;\nexport const samples = constants.samples;\nexport const streamCount = constants.streamCount;\nexport const streamInfo = constants.streamInfo;\nexport const streamSerialNumber = constants.streamSerialNumber;\nexport const streamStructureVersion = constants.streamStructureVersion;\nexport const totalBytesOut = constants.totalBytesOut;\nexport const totalDuration = constants.totalDuration;\nexport const totalSamples = constants.totalSamples;\n","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\nimport { OpusDecoder, OpusDecoderWebWorker } from \"opus-decoder\";\nimport CodecParser, {\n codecFrames,\n header,\n channels,\n streamCount,\n coupledStreamCount,\n channelMappingTable,\n preSkip,\n isLastPage,\n absoluteGranulePosition,\n data,\n totalSamples,\n} from \"codec-parser\";\n\n// prettier-ignore\nconst 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]));\n\nexport default class OggOpusDecoder {\n constructor(options = {}) {\n this._sampleRate = options.sampleRate || 48000;\n this._speechQualityEnhancement = options.speechQualityEnhancement;\n this._forceStereo =\n options.forceStereo !== undefined ? options.forceStereo : false;\n\n this._onCodec = (codec) => {\n if (codec !== \"opus\")\n throw new Error(\n \"ogg-opus-decoder does not support this codec \" + codec,\n );\n };\n\n // instantiate to create static properties\n new WASMAudioDecoderCommon();\n this._useMLDecoder = [\"lace\", \"nolace\"].includes(\n this._speechQualityEnhancement,\n );\n\n this._decoderLibraryLoaded = this._loadDecoderLibrary();\n this._ready = this._init();\n }\n\n _initDecoderClass() {\n this._decoderClass = this._useMLDecoder\n ? this.OpusMLDecoder\n : this.OpusDecoder;\n }\n\n async _loadDecoderLibrary() {\n if (this._useMLDecoder) {\n const simdSupported = await simd();\n\n if (simdSupported) {\n const { OpusMLDecoder, OpusMLDecoderWebWorker } = await import(\n /* webpackChunkName: \"opus-ml\" */ \"@wasm-audio-decoders/opus-ml\"\n );\n this.OpusMLDecoder = OpusMLDecoder;\n this.OpusMLDecoderWebWorker = OpusMLDecoderWebWorker;\n } else {\n console.warn(\n `ogg-opus-decoder: This platform does not support WebAssembly SIMD; { speechQualityEnhancements: '${this._speechQualityEnhancement}' } has been disabled`,\n );\n this._useMLDecoder = false;\n }\n }\n this.OpusDecoder = OpusDecoder;\n this.OpusDecoderWebWorker = OpusDecoderWebWorker;\n\n this._initDecoderClass();\n }\n\n async _init() {\n if (this._decoder) await this._decoder.free();\n this._decoder = null;\n this._decoderReady = null;\n\n this._codecParser = new CodecParser(\"application/ogg\", {\n onCodec: this._onCodec,\n enableFrameCRC32: false,\n });\n }\n\n async _instantiateDecoder(header) {\n this._totalSamplesDecoded = 0;\n this._preSkip = header[preSkip];\n this._channels = this._forceStereo ? 2 : header[channels];\n\n await this._decoderLibraryLoaded;\n\n this._decoder = new this._decoderClass({\n channels: header[channels],\n streamCount: header[streamCount],\n coupledStreamCount: header[coupledStreamCount],\n channelMappingTable: header[channelMappingTable],\n preSkip: Math.round((this._preSkip / 48000) * this._sampleRate),\n sampleRate: this._sampleRate,\n speechQualityEnhancement: this._speechQualityEnhancement,\n forceStereo: this._forceStereo,\n });\n return this._decoder.ready;\n }\n\n get ready() {\n return this._ready;\n }\n\n async reset() {\n this._ready = this._init();\n await this._ready;\n }\n\n free() {\n if (this._decoder) this._decoder.free();\n }\n\n async _decode(oggPages) {\n let opusFrames = [],\n allErrors = [],\n allChannelData = [],\n samplesThisDecode = 0;\n\n const flushFrames = async () => {\n if (opusFrames.length) {\n await this._decoderReady;\n\n const { channelData, samplesDecoded, errors } =\n await this._decoder.decodeFrames(opusFrames);\n\n allChannelData.push(channelData);\n allErrors.push(...errors);\n samplesThisDecode += samplesDecoded;\n this._totalSamplesDecoded += samplesDecoded;\n\n opusFrames = [];\n }\n };\n\n for (let i = 0; i < oggPages.length; i++) {\n const oggPage = oggPages[i];\n\n // only decode Ogg pages that have codec frames\n const frames = oggPage[codecFrames].map((f) => f[data]);\n if (frames.length) {\n opusFrames.push(...frames);\n\n if (!this._decoderReady)\n // wait until there is an Opus header before instantiating\n this._decoderReady = this._instantiateDecoder(\n oggPage[codecFrames][0][header],\n );\n }\n\n if (oggPage[isLastPage]) {\n // decode anything left in the current ogg file\n await flushFrames();\n\n // in cases where BigInt isn't supported, don't do any absoluteGranulePosition logic (i.e. old iOS versions)\n if (\n oggPage[absoluteGranulePosition] !== undefined &&\n allChannelData.length\n ) {\n const totalDecodedSamples_48000 =\n (this._totalSamplesDecoded / this._sampleRate) * 48000;\n\n // trim any extra samples that are decoded beyond the absoluteGranulePosition, relative to where we started in the stream\n const samplesToTrim = Math.round(\n ((totalDecodedSamples_48000 - oggPage[totalSamples]) / 48000) *\n this._sampleRate,\n );\n\n const channelData = allChannelData[allChannelData.length - 1];\n if (samplesToTrim > 0) {\n for (let i = 0; i < channelData.length; i++) {\n channelData[i] = channelData[i].subarray(\n 0,\n channelData[i].length - samplesToTrim,\n );\n }\n }\n\n samplesThisDecode -= samplesToTrim;\n this._totalSamplesDecoded -= samplesToTrim;\n }\n\n // reached the end of an ogg stream, reset the decoder\n await this.reset();\n }\n }\n\n await flushFrames();\n\n return [\n allErrors,\n allChannelData,\n this._channels,\n samplesThisDecode,\n this._sampleRate,\n 16,\n ];\n }\n\n async decode(oggOpusData) {\n const decoded = await this._decode([\n ...this._codecParser.parseChunk(oggOpusData),\n ]);\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n\n async decodeFile(oggOpusData) {\n const decoded = await this._decode([\n ...this._codecParser.parseAll(oggOpusData),\n ]);\n await this.reset();\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n\n async flush() {\n const decoded = await this._decode([...this._codecParser.flush()]);\n await this.reset();\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n}\n","import OggOpusDecoder from \"./OggOpusDecoder.js\";\n\nexport default class OggOpusDecoderWebWorker extends OggOpusDecoder {\n constructor(options) {\n super(options);\n }\n\n _initDecoderClass() {\n this._decoderClass = this._useMLDecoder\n ? this.OpusMLDecoderWebWorker\n : this.OpusDecoderWebWorker;\n }\n\n async free() {\n if (this._decoder) await this._decoder.free();\n }\n}\n","import OggOpusDecoder from \"./src/OggOpusDecoder.js\";\nimport OggOpusDecoderWebWorker from \"./src/OggOpusDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(OggOpusDecoder, \"OggOpusDecoder\");\nassignNames(OggOpusDecoderWebWorker, \"OggOpusDecoderWebWorker\");\n\nexport { OggOpusDecoder, OggOpusDecoderWebWorker };\n"],"names":["factory","module","exports","Worker","t","n","e","r","Int32Array","o","s","i","c","length","Uint8Array","map","parseInt","substring","Map","forEach","set","a","l","f","g","h","p","u","DataView","buffer","getInt32","d","charCodeAt","get","m","subarray","console","error","Error","WASMAudioDecoderCommon","uint8Array","float32Array","Float32Array","modules","Object","defineProperties","value","WeakMap","setModule","Ref","Promise","resolve","getModule","wasmString","WebAssembly","compile","wasm","inflateDynEncodeString","then","data","concatFloat32","buffers","ret","offset","getDecodedAudio","errors","channelData","samplesDecoded","sampleRate","bitDepth","getDecodedAudioMultiChannel","input","channelsDecoded","j","channel","push","source","puffString","String","raw","instantiate","instanceExports","entries","puff","memory","dataArray","heapView","heapPos","sourceLength","sourceLengthPtr","setInt32","sourcePtr","destLengthPtr","byteLength","slice","defineProperty","this","enumerable","_wasm","getOutputChannels","outputData","output","allocateTypedArray","len","TypedArray","setPointer","ptr","malloc","BYTES_PER_ELEMENT","_pointers","add","buf","HEAP","free","clear","codeToString","characters","heap","character","fromCharCode","apply","addError","message","frameLength","frameNumber","inputBytes","outputSamples","_EmscriptenWASM","_module","Set","ready","WASMAudioDecoderWorker","globalThis","_eshaz_web_worker__WEBPACK_IMPORTED_MODULE_0__","getWorker","constructor","options","name","Decoder","EmscriptenWASM","_WASMAudioDecoderCommon_js__WEBPACK_IMPORTED_MODULE_1__","A","isNode","type","webworkerSourceCode","_Decoder","_WASMAudioDecoderCommon","decoder","moduleResolve","modulePromise","self","onmessage","id","command","transferList","messagePromise","messagePayload","isWebWorker","reset","assign","Array","isArray","postMessage","process","versions","node","Buffer","from","toString","URL","createObjectURL","Blob","super","_id","Number","MIN_SAFE_INTEGER","_enqueuedOperations","rest","delete","postToDecoder","finally","terminate","Class","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","definition","key","binding","descriptor","chunkId","all","keys","reduce","promises","Function","window","obj","prop","prototype","hasOwnProperty","call","inProgress","dataWebpackPrefix","url","done","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","replace","installedChunks","installedChunkData","promise","reject","loadingEnded","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","HEAPU8","wasmMemory","timers","_emscripten_math_cos","Math","cos","base64ReverseLookup","_opus_frame_decoder_create","_malloc","_opus_frame_decode_float_deinterleaved","_opus_frame_decoder_destroy","_free","__emscripten_timeout","wasmImports","abort","__emscripten_runtime_keepalive_clear","__setitimer_js","which","timeout_ms","performance","now","requestedSize","_proc_exit","code","imports","instance","wasmExports","b","assignWasmExports","Int8Array","Int16Array","Uint16Array","Uint32Array","Float64Array","BigInt64Array","BigUint64Array","initRuntime","opus_frame_decoder_create","opus_frame_decode_float_deinterleaved","opus_frame_decoder_destroy","OpusDecoder","_init","common","_common","_inputBytes","_outputSamples","_frameNumber","_input","_inputSize","_output","_outputChannels","_outputChannelSize","mapping","_channels","_channelMappingTable","_decoder","_sampleRate","_streamCount","_coupledStreamCount","_preSkip","_forceStereo","_ready","_decode","opusFrame","outputBuffer","decodeFrame","decoded","decodeFrames","opusFrames","outputBuffers","_isWebWorker","isNumber","param","channels","streamCount","coupledStreamCount","channelMappingTable","preSkip","forceStereo","includes","OpusDecoderWebWorker","symbol","channelMappings","left","center","right","front","side","rear","x","flatMap","y","z","join","lfe","monophonic","surround","getChannelMapping","channelCount","mappings","vorbisOpusChannelMapping","absoluteGranulePosition","bandwidth","bitrate","bitrateMaximum","bitrateMinimum","bitrateNominal","bufferFullness","codecFrames","codec","description","duration","emphasis","hasOpusPadding","isContinuedPacket","isCopyrighted","isFirstPage","isLastPage","isOriginal","isPrivate","modeExtension","mode","mpegVersion","mpeg","numberAACFrames","outputGain","profile","profileBits","protection","segments","version","vorbis","vorbisComments","vorbisSetup","block","blockingStrategy","blockingStrategyBits","blockSize","blocksize0","blocksize1","blockSizeBits","channelMappingFamily","channelMode","channelModeBits","copyright","copyrightId","copyrightIdStart","constants_frame","frameCount","constants_Number","framePadding","frameSize","Rate","inputSampleRate","page","pageChecksum","pageSegmentBytes","pageSegmentTable","pageSequenceNumber","sample","sampleNumber","sampleRateBits","samples","stream","streamInfo","streamSerialNumber","streamStructureVersion","total","totalBytesOut","totalDuration","totalSamples","readRawData","incrementRawData","mapCodecFrameStats","mapFrameStats","logWarning","constants_logError","syncFrame","fixedLengthFrameSync","getHeader","setHeader","getFrame","parseFrame","parseOggPage","checkCodecUpdate","constants_reset","enable","getHeaderFromUint8Array","checkFrameFooterCrc16","dataView","reserved","sixteenBitCRC","getCrcTable","crcTable","crcInitialValueFunction","crcFunction","byte","crc","bit","crc8Table","flacCrc16Table","crc32Table","crc32Function","dataLength","crcChunkSize","concatBuffers","acc","bytesToString","bytes","reverseTable","reverse","val","BitReader","_data","_pos","position","read","bits","floor","HeaderCache","onCodecHeader","onCodecUpdate","_onCodecHeader","_onCodecUpdate","_isEnabled","_headerCache","_codecUpdateData","_codecHeaderSent","_codecShouldUpdate","_bitrate","codecData","_currentHeader","header","_updateCurrentHeader","codecUpdateFields","headerStore","frameStore","Parser","codecParser","headerCache","_codecParser","frameData","Frame","ignoreNextFrame","_flushing","Header","headerValue","dataValue","CodecFrame","readOffset","frameLengthValue","samplesValue","unsynchronizationFlag","extendedHeaderFlag","experimentalFlag","footerPresent","ID3v2","getID3v2Header","CodecHeader","bitrateMatrix","calcBitrate","idx","interval","intervalOffset","bands","to31","layer12ModeExtensions","bitrateIndex","v2","v1","intensityStereo","msStereo","on","off","layer3ModeExtensions","layersValues","mpegVersionDescription","isoIec","mpegVersions","layer","protectionValues","emphasisValues","channelModes","MPEGHeader","id3v2Header","cachedHeader","mpegVersionValues","layerBits","layerValues","MPEGFrame","frame","MPEGParser","onCodec","AACHeader_protectionValues","profileValues","sampleRates","channelModeValues","AACHeader","protectionBit","privateBit","bufferFullnessBits","audioSpecificConfig","setUint16","AACFrame","AACParser","FLACFrame","_getFrameFooterCrc16","flacCrc16","streamInfoValue","getFromStreamInfo","blockingStrategyValues","blockSizeValues","sampleRateValues","channelAssignments","bitDepthValues","FLACHeader","_decodeUTF8Int","zeroMask","shift","codecParserStub","next","channelAssignment","decodedUtf8","crc8","FLACParser","_getNextFrameSyncOffset","secondByte","nextHeaderOffset","oggPage","_streamInfo","segment","filter","OggPageHeader","view","getBigInt64","sign","getUint8","firstPart","getUint32","secondPart","warn","readInt64le","pageSegmentTableLength","segmentLength","segmentByte","OggPage","headerLength","totalLength","rawDataValue","OpusFrame","channelMappingFamilies","silkOnly","celtOnly","hybrid","narrowBand","mediumBand","wideBand","superWideBand","fullBand","configTable","OpusHeader","packetData","packetMode","packetLength","substr","getUint16","getInt16","packetConfig","headerData","OpusParser","_identificationHeader","_preSkipRemaining","VorbisFrame","blockSizes","VorbisHeader","vorbisCommentsData","vorbisSetupData","VorbisParser","_setupComplete","_prevBlockSize","oggPageSegment","_vorbisComments","_vorbisSetup","_mode","_parseSetupHeader","_getSamples","logError","currentBlockSize","blockFlags","mask","setup","bitReader","count","modeBits","currentByte","unshift","log2","OggStream","_onCodec","_continuedPacket","_codec","_isSupported","_previousAbsoluteGranulePosition","_updateCodec","_parser","_checkCodecSupport","idString","_checkPageSequenceNumber","_pageSequenceNumber","_parsePage","oggPageStore","pop","OggParser","_streams","_currentSerialNumber","oggStream","noOp","codec_parser","mimeType","enableLogging","enableFrameCRC32","_inputMimeType","_enableLogging","_crc32","_generator","_getGenerator","flush","parseChunk","chunk","parseAll","fileData","match","_currentReadPosition","_totalBytesIn","_totalBytesOut","_totalSamples","_rawData","minSize","rawData","increment","round","absoluteGranulePositionSamples","codecFrame","untrimmedCodecSamples","_log","logger","messages","stats","width","max","repeat","codec_parser_absoluteGranulePosition","codec_parser_codecFrames","codec_parser_coupledStreamCount","codec_parser_isLastPage","codec_parser_preSkip","codec_parser_channelMappingTable","codec_parser_channels","codec_parser_streamCount","codec_parser_totalSamples","OggOpusDecoder","_speechQualityEnhancement","speechQualityEnhancement","_useMLDecoder","_decoderLibraryLoaded","_loadDecoderLibrary","_initDecoderClass","_decoderClass","OpusMLDecoder","async","validate","simd","OpusMLDecoderWebWorker","_decoderReady","_instantiateDecoder","_totalSamplesDecoded","oggPages","allErrors","allChannelData","samplesThisDecode","flushFrames","frames","totalDecodedSamples_48000","samplesToTrim","decode","oggOpusData","decodeFile","OggOpusDecoderWebWorker","utilities","define","amd"],"sourceRoot":""}
|