From 2919bdfc907b655e095cadc048b4559824587a2d Mon Sep 17 00:00:00 2001 From: ljx120 <10717296+ljx120@user.noreply.gitee.com> Date: Sat, 21 Dec 2024 18:03:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hbuilderx/launch.json | 9 + common/Order/OrderAll.vue | 435 +++ common/Order/addressTracking.vue | 138 + common/Order/commodity.vue | 100 + common/Order/description.vue | 79 + common/Order/priceDetails.vue | 77 + common/common.css | 559 +++ common/http/config.ts | 16 + common/http/index.ts | 33 + common/http/interface.ts | 244 ++ node_modules/.package-lock.json | 56 + node_modules/@types/dom-webcodecs/LICENSE | 21 + node_modules/@types/dom-webcodecs/README.md | 15 + node_modules/@types/dom-webcodecs/index.d.ts | 185 + .../@types/dom-webcodecs/package.json | 26 + .../dom-webcodecs/webcodecs.generated.d.ts | 517 +++ node_modules/@types/emscripten/LICENSE | 21 + node_modules/@types/emscripten/README.md | 15 + node_modules/@types/emscripten/index.d.ts | 451 +++ node_modules/@types/emscripten/package.json | 40 + node_modules/barcode-detector/LICENSE | 21 + node_modules/barcode-detector/README.md | 263 ++ .../dist/cjs/BarcodeDetector.d.ts | 35 + .../barcode-detector/dist/cjs/index.d.ts | 2 + .../barcode-detector/dist/cjs/index.js | 1 + .../barcode-detector/dist/cjs/package.json | 3 + .../barcode-detector/dist/cjs/pure.d.ts | 1 + .../barcode-detector/dist/cjs/pure.js | 3 + .../dist/cjs/side-effects.d.ts | 8 + .../barcode-detector/dist/cjs/side-effects.js | 1 + .../barcode-detector/dist/cjs/utils.d.ts | 15 + .../dist/es/BarcodeDetector.d.ts | 35 + .../barcode-detector/dist/es/index.d.ts | 2 + .../barcode-detector/dist/es/index.js | 6 + .../barcode-detector/dist/es/pure.d.ts | 1 + node_modules/barcode-detector/dist/es/pure.js | 2252 +++++++++++ .../dist/es/side-effects.d.ts | 8 + .../barcode-detector/dist/es/side-effects.js | 7 + .../barcode-detector/dist/es/utils.d.ts | 15 + .../barcode-detector/dist/iife/index.js | 3 + .../barcode-detector/dist/iife/pure.js | 3 + .../dist/iife/side-effects.js | 3 + node_modules/barcode-detector/package.json | 102 + node_modules/sdp/.eslintrc | 61 + .../sdp/.github/workflows/npm-test.yml | 16 + .../a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json | 1 + .../a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json | 1 + .../sdp/.nyc_output/processinfo/index.json | 1 + node_modules/sdp/LICENSE | 19 + node_modules/sdp/README.md | 4 + node_modules/sdp/coverage.lcov | 1083 ++++++ node_modules/sdp/dist/sdp.js | 773 ++++ node_modules/sdp/package.json | 36 + node_modules/sdp/sdp.d.ts | 220 ++ node_modules/sdp/sdp.js | 802 ++++ node_modules/vue-qrcode-reader/LICENSE | 21 + node_modules/vue-qrcode-reader/README.md | 205 + .../dist/components/QrcodeCapture.vue.d.ts | 20 + .../dist/components/QrcodeDropZone.vue.d.ts | 33 + .../dist/components/QrcodeStream.vue.d.ts | 98 + .../vue-qrcode-reader/dist/index.d.ts | 9 + .../dist/misc/callforth.d.ts | 6 + .../vue-qrcode-reader/dist/misc/camera.d.ts | 6 + .../vue-qrcode-reader/dist/misc/errors.d.ts | 13 + .../vue-qrcode-reader/dist/misc/scanner.d.ts | 26 + .../dist/misc/shimGetUserMedia.d.ts | 2 + .../vue-qrcode-reader/dist/misc/util.d.ts | 29 + .../dist/vue-qrcode-reader.js | 3306 ++++++++++++++++ .../dist/vue-qrcode-reader.umd.js | 3 + node_modules/vue-qrcode-reader/package.json | 77 + node_modules/webrtc-adapter/.eslintrc | 70 + node_modules/webrtc-adapter/.travis.yml | 65 + node_modules/webrtc-adapter/CONTRIBUTING.md | 15 + node_modules/webrtc-adapter/Gruntfile.js | 71 + node_modules/webrtc-adapter/LICENSE.md | 30 + node_modules/webrtc-adapter/README.md | 79 + node_modules/webrtc-adapter/bower.json | 25 + .../webrtc-adapter/dist/adapter_core.js | 21 + .../webrtc-adapter/dist/adapter_core5.js | 16 + .../webrtc-adapter/dist/adapter_factory.js | 141 + .../webrtc-adapter/dist/chrome/chrome_shim.js | 698 ++++ .../dist/chrome/getdisplaymedia.js | 49 + .../dist/chrome/getusermedia.js | 199 + .../dist/chrome/selectaudiooutput.js | 40 + .../webrtc-adapter/dist/common_shim.js | 436 +++ .../dist/firefox/firefox_shim.js | 318 ++ .../dist/firefox/getdisplaymedia.js | 39 + .../dist/firefox/getusermedia.js | 64 + .../webrtc-adapter/dist/safari/safari_shim.js | 346 ++ node_modules/webrtc-adapter/dist/utils.js | 260 ++ node_modules/webrtc-adapter/index.d.ts | 59 + node_modules/webrtc-adapter/out/adapter.js | 3364 +++++++++++++++++ .../webrtc-adapter/out/adapter_no_global.js | 3363 ++++++++++++++++ node_modules/webrtc-adapter/out/esbuild.js | 35 + node_modules/webrtc-adapter/package.json | 62 + .../webrtc-adapter/src/js/adapter_core.js | 16 + .../webrtc-adapter/src/js/adapter_core5.js | 16 + .../webrtc-adapter/src/js/adapter_factory.js | 139 + .../src/js/chrome/chrome_shim.js | 702 ++++ .../src/js/chrome/getdisplaymedia.js | 50 + .../src/js/chrome/getusermedia.js | 189 + .../webrtc-adapter/src/js/common_shim.js | 462 +++ .../src/js/firefox/firefox_shim.js | 300 ++ .../src/js/firefox/getdisplaymedia.js | 36 + .../src/js/firefox/getusermedia.js | 67 + .../src/js/safari/safari_shim.js | 352 ++ node_modules/webrtc-adapter/src/js/utils.js | 263 ++ node_modules/zxing-wasm/LICENSE | 21 + node_modules/zxing-wasm/README.md | 246 ++ .../dist/cjs/bindings/barcodeFormat.d.ts | 21 + .../dist/cjs/bindings/binarizer.d.ts | 10 + .../dist/cjs/bindings/characterSet.d.ts | 10 + .../dist/cjs/bindings/contentType.d.ts | 10 + .../dist/cjs/bindings/eanAddOnSymbol.d.ts | 10 + .../dist/cjs/bindings/eccLevel.d.ts | 4 + .../zxing-wasm/dist/cjs/bindings/enum.d.ts | 6 + .../cjs/bindings/exposedReaderBindings.d.ts | 17 + .../cjs/bindings/exposedWriterBindings.d.ts | 17 + .../zxing-wasm/dist/cjs/bindings/index.d.ts | 14 + .../dist/cjs/bindings/position.d.ts | 55 + .../dist/cjs/bindings/readResult.d.ts | 123 + .../dist/cjs/bindings/readerOptions.d.ts | 204 + .../dist/cjs/bindings/textMode.d.ts | 10 + .../zxing-wasm/dist/cjs/bindings/vector.d.ts | 7 + .../dist/cjs/bindings/writeResult.d.ts | 24 + .../dist/cjs/bindings/writerOptions.d.ts | 64 + .../zxing-wasm/dist/cjs/core-D9FNMpWh.cjs | 1 + node_modules/zxing-wasm/dist/cjs/core.d.ts | 41 + .../zxing-wasm/dist/cjs/full/index.d.ts | 10 + .../zxing-wasm/dist/cjs/full/index.js | 3 + node_modules/zxing-wasm/dist/cjs/package.json | 3 + .../zxing-wasm/dist/cjs/reader/index.d.ts | 8 + .../zxing-wasm/dist/cjs/reader/index.js | 3 + .../zxing-wasm/dist/cjs/writer/index.d.ts | 13 + .../zxing-wasm/dist/cjs/writer/index.js | 2 + .../dist/es/bindings/barcodeFormat.d.ts | 21 + .../dist/es/bindings/binarizer.d.ts | 10 + .../dist/es/bindings/characterSet.d.ts | 10 + .../dist/es/bindings/contentType.d.ts | 10 + .../dist/es/bindings/eanAddOnSymbol.d.ts | 10 + .../zxing-wasm/dist/es/bindings/eccLevel.d.ts | 4 + .../zxing-wasm/dist/es/bindings/enum.d.ts | 6 + .../es/bindings/exposedReaderBindings.d.ts | 17 + .../es/bindings/exposedWriterBindings.d.ts | 17 + .../zxing-wasm/dist/es/bindings/index.d.ts | 14 + .../zxing-wasm/dist/es/bindings/position.d.ts | 55 + .../dist/es/bindings/readResult.d.ts | 123 + .../dist/es/bindings/readerOptions.d.ts | 204 + .../zxing-wasm/dist/es/bindings/textMode.d.ts | 10 + .../zxing-wasm/dist/es/bindings/vector.d.ts | 7 + .../dist/es/bindings/writeResult.d.ts | 24 + .../dist/es/bindings/writerOptions.d.ts | 64 + .../zxing-wasm/dist/es/core-gSM15mHH.js | 286 ++ node_modules/zxing-wasm/dist/es/core.d.ts | 41 + .../zxing-wasm/dist/es/full/index.d.ts | 10 + node_modules/zxing-wasm/dist/es/full/index.js | 1746 +++++++++ .../zxing-wasm/dist/es/reader/index.d.ts | 8 + .../zxing-wasm/dist/es/reader/index.js | 1724 +++++++++ .../zxing-wasm/dist/es/writer/index.d.ts | 13 + .../zxing-wasm/dist/es/writer/index.js | 1096 ++++++ .../zxing-wasm/dist/full/zxing_full.wasm | Bin 0 -> 1230430 bytes .../zxing-wasm/dist/iife/full/index.js | 3 + .../zxing-wasm/dist/iife/reader/index.js | 3 + .../zxing-wasm/dist/iife/writer/index.js | 2 + .../zxing-wasm/dist/reader/zxing_reader.wasm | Bin 0 -> 952016 bytes .../zxing-wasm/dist/writer/zxing_writer.wasm | Bin 0 -> 337639 bytes node_modules/zxing-wasm/package.json | 122 + package-lock.json | 59 +- package.json | 3 +- pages.json | 43 + pages/index/index.vue | 29 +- pages/lecher/l-flaws.vue | 10 +- pages/login/login.vue | 89 + pages/whiteEmbryo/scanCode.vue | 58 - pages/whiteEmbryo/w-level.vue | 64 +- pages/whiteEmbryo/w-list.vue | 149 + pages/whiteEmbryo/w-scanCode.vue | 78 + pages/whiteEmbryo/w-suppliers.vue | 10 +- pages/whiteEmbryo/w-warehouse.vue | 183 + pages/whiteEmbryo/w-warehousing.vue | 71 +- uni_modules/cshaptx4869-scancode/changelog.md | 10 + .../cshaptx4869-scancode.vue | 459 +++ uni_modules/cshaptx4869-scancode/package.json | 90 + uni_modules/cshaptx4869-scancode/readme.md | 82 + .../dist/cache/.vite/deps/_metadata.json | 14 +- .../cache/.vite/deps/vue-qrcode-reader.js | 3323 ++++++++++++++++ .../cache/.vite/deps/vue-qrcode-reader.js.map | 7 + utils/date.ts | 17 + 188 files changed, 36513 insertions(+), 107 deletions(-) create mode 100644 .hbuilderx/launch.json create mode 100644 common/Order/OrderAll.vue create mode 100644 common/Order/addressTracking.vue create mode 100644 common/Order/commodity.vue create mode 100644 common/Order/description.vue create mode 100644 common/Order/priceDetails.vue create mode 100644 common/common.css create mode 100644 common/http/config.ts create mode 100644 common/http/index.ts create mode 100644 common/http/interface.ts create mode 100644 node_modules/@types/dom-webcodecs/LICENSE create mode 100644 node_modules/@types/dom-webcodecs/README.md create mode 100644 node_modules/@types/dom-webcodecs/index.d.ts create mode 100644 node_modules/@types/dom-webcodecs/package.json create mode 100644 node_modules/@types/dom-webcodecs/webcodecs.generated.d.ts create mode 100644 node_modules/@types/emscripten/LICENSE create mode 100644 node_modules/@types/emscripten/README.md create mode 100644 node_modules/@types/emscripten/index.d.ts create mode 100644 node_modules/@types/emscripten/package.json create mode 100644 node_modules/barcode-detector/LICENSE create mode 100644 node_modules/barcode-detector/README.md create mode 100644 node_modules/barcode-detector/dist/cjs/BarcodeDetector.d.ts create mode 100644 node_modules/barcode-detector/dist/cjs/index.d.ts create mode 100644 node_modules/barcode-detector/dist/cjs/index.js create mode 100644 node_modules/barcode-detector/dist/cjs/package.json create mode 100644 node_modules/barcode-detector/dist/cjs/pure.d.ts create mode 100644 node_modules/barcode-detector/dist/cjs/pure.js create mode 100644 node_modules/barcode-detector/dist/cjs/side-effects.d.ts create mode 100644 node_modules/barcode-detector/dist/cjs/side-effects.js create mode 100644 node_modules/barcode-detector/dist/cjs/utils.d.ts create mode 100644 node_modules/barcode-detector/dist/es/BarcodeDetector.d.ts create mode 100644 node_modules/barcode-detector/dist/es/index.d.ts create mode 100644 node_modules/barcode-detector/dist/es/index.js create mode 100644 node_modules/barcode-detector/dist/es/pure.d.ts create mode 100644 node_modules/barcode-detector/dist/es/pure.js create mode 100644 node_modules/barcode-detector/dist/es/side-effects.d.ts create mode 100644 node_modules/barcode-detector/dist/es/side-effects.js create mode 100644 node_modules/barcode-detector/dist/es/utils.d.ts create mode 100644 node_modules/barcode-detector/dist/iife/index.js create mode 100644 node_modules/barcode-detector/dist/iife/pure.js create mode 100644 node_modules/barcode-detector/dist/iife/side-effects.js create mode 100644 node_modules/barcode-detector/package.json create mode 100644 node_modules/sdp/.eslintrc create mode 100644 node_modules/sdp/.github/workflows/npm-test.yml create mode 100644 node_modules/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json create mode 100644 node_modules/sdp/.nyc_output/processinfo/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json create mode 100644 node_modules/sdp/.nyc_output/processinfo/index.json create mode 100644 node_modules/sdp/LICENSE create mode 100644 node_modules/sdp/README.md create mode 100644 node_modules/sdp/coverage.lcov create mode 100644 node_modules/sdp/dist/sdp.js create mode 100644 node_modules/sdp/package.json create mode 100644 node_modules/sdp/sdp.d.ts create mode 100644 node_modules/sdp/sdp.js create mode 100644 node_modules/vue-qrcode-reader/LICENSE create mode 100644 node_modules/vue-qrcode-reader/README.md create mode 100644 node_modules/vue-qrcode-reader/dist/components/QrcodeCapture.vue.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/components/QrcodeDropZone.vue.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/components/QrcodeStream.vue.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/index.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/misc/callforth.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/misc/camera.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/misc/errors.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/misc/scanner.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/misc/shimGetUserMedia.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/misc/util.d.ts create mode 100644 node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js create mode 100644 node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js create mode 100644 node_modules/vue-qrcode-reader/package.json create mode 100644 node_modules/webrtc-adapter/.eslintrc create mode 100644 node_modules/webrtc-adapter/.travis.yml create mode 100644 node_modules/webrtc-adapter/CONTRIBUTING.md create mode 100644 node_modules/webrtc-adapter/Gruntfile.js create mode 100644 node_modules/webrtc-adapter/LICENSE.md create mode 100644 node_modules/webrtc-adapter/README.md create mode 100644 node_modules/webrtc-adapter/bower.json create mode 100644 node_modules/webrtc-adapter/dist/adapter_core.js create mode 100644 node_modules/webrtc-adapter/dist/adapter_core5.js create mode 100644 node_modules/webrtc-adapter/dist/adapter_factory.js create mode 100644 node_modules/webrtc-adapter/dist/chrome/chrome_shim.js create mode 100644 node_modules/webrtc-adapter/dist/chrome/getdisplaymedia.js create mode 100644 node_modules/webrtc-adapter/dist/chrome/getusermedia.js create mode 100644 node_modules/webrtc-adapter/dist/chrome/selectaudiooutput.js create mode 100644 node_modules/webrtc-adapter/dist/common_shim.js create mode 100644 node_modules/webrtc-adapter/dist/firefox/firefox_shim.js create mode 100644 node_modules/webrtc-adapter/dist/firefox/getdisplaymedia.js create mode 100644 node_modules/webrtc-adapter/dist/firefox/getusermedia.js create mode 100644 node_modules/webrtc-adapter/dist/safari/safari_shim.js create mode 100644 node_modules/webrtc-adapter/dist/utils.js create mode 100644 node_modules/webrtc-adapter/index.d.ts create mode 100644 node_modules/webrtc-adapter/out/adapter.js create mode 100644 node_modules/webrtc-adapter/out/adapter_no_global.js create mode 100644 node_modules/webrtc-adapter/out/esbuild.js create mode 100644 node_modules/webrtc-adapter/package.json create mode 100644 node_modules/webrtc-adapter/src/js/adapter_core.js create mode 100644 node_modules/webrtc-adapter/src/js/adapter_core5.js create mode 100644 node_modules/webrtc-adapter/src/js/adapter_factory.js create mode 100644 node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js create mode 100644 node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js create mode 100644 node_modules/webrtc-adapter/src/js/chrome/getusermedia.js create mode 100644 node_modules/webrtc-adapter/src/js/common_shim.js create mode 100644 node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js create mode 100644 node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js create mode 100644 node_modules/webrtc-adapter/src/js/firefox/getusermedia.js create mode 100644 node_modules/webrtc-adapter/src/js/safari/safari_shim.js create mode 100644 node_modules/webrtc-adapter/src/js/utils.js create mode 100644 node_modules/zxing-wasm/LICENSE create mode 100644 node_modules/zxing-wasm/README.md create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/barcodeFormat.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/binarizer.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/characterSet.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/contentType.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/eanAddOnSymbol.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/eccLevel.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/enum.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/exposedReaderBindings.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/exposedWriterBindings.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/position.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/readResult.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/readerOptions.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/textMode.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/vector.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/writeResult.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/bindings/writerOptions.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/core-D9FNMpWh.cjs create mode 100644 node_modules/zxing-wasm/dist/cjs/core.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/full/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/full/index.js create mode 100644 node_modules/zxing-wasm/dist/cjs/package.json create mode 100644 node_modules/zxing-wasm/dist/cjs/reader/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/reader/index.js create mode 100644 node_modules/zxing-wasm/dist/cjs/writer/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/cjs/writer/index.js create mode 100644 node_modules/zxing-wasm/dist/es/bindings/barcodeFormat.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/binarizer.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/characterSet.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/contentType.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/eanAddOnSymbol.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/eccLevel.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/enum.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/exposedReaderBindings.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/exposedWriterBindings.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/position.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/readResult.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/readerOptions.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/textMode.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/vector.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/writeResult.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/bindings/writerOptions.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/core-gSM15mHH.js create mode 100644 node_modules/zxing-wasm/dist/es/core.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/full/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/full/index.js create mode 100644 node_modules/zxing-wasm/dist/es/reader/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/reader/index.js create mode 100644 node_modules/zxing-wasm/dist/es/writer/index.d.ts create mode 100644 node_modules/zxing-wasm/dist/es/writer/index.js create mode 100644 node_modules/zxing-wasm/dist/full/zxing_full.wasm create mode 100644 node_modules/zxing-wasm/dist/iife/full/index.js create mode 100644 node_modules/zxing-wasm/dist/iife/reader/index.js create mode 100644 node_modules/zxing-wasm/dist/iife/writer/index.js create mode 100644 node_modules/zxing-wasm/dist/reader/zxing_reader.wasm create mode 100644 node_modules/zxing-wasm/dist/writer/zxing_writer.wasm create mode 100644 node_modules/zxing-wasm/package.json create mode 100644 pages/login/login.vue delete mode 100644 pages/whiteEmbryo/scanCode.vue create mode 100644 pages/whiteEmbryo/w-list.vue create mode 100644 pages/whiteEmbryo/w-scanCode.vue create mode 100644 pages/whiteEmbryo/w-warehouse.vue create mode 100644 uni_modules/cshaptx4869-scancode/changelog.md create mode 100644 uni_modules/cshaptx4869-scancode/components/cshaptx4869-scancode/cshaptx4869-scancode.vue create mode 100644 uni_modules/cshaptx4869-scancode/package.json create mode 100644 uni_modules/cshaptx4869-scancode/readme.md create mode 100644 unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js create mode 100644 unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js.map create mode 100644 utils/date.ts diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..15db785 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,9 @@ +{ + "version" : "1.0", + "configurations" : [ + { + "playground" : "standard", + "type" : "uni-app:app-ios" + } + ] +} diff --git a/common/Order/OrderAll.vue b/common/Order/OrderAll.vue new file mode 100644 index 0000000..920cfdf --- /dev/null +++ b/common/Order/OrderAll.vue @@ -0,0 +1,435 @@ + + + + + \ No newline at end of file diff --git a/common/Order/addressTracking.vue b/common/Order/addressTracking.vue new file mode 100644 index 0000000..5718e41 --- /dev/null +++ b/common/Order/addressTracking.vue @@ -0,0 +1,138 @@ + + + + + \ No newline at end of file diff --git a/common/Order/commodity.vue b/common/Order/commodity.vue new file mode 100644 index 0000000..c12e230 --- /dev/null +++ b/common/Order/commodity.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/common/Order/description.vue b/common/Order/description.vue new file mode 100644 index 0000000..40c661e --- /dev/null +++ b/common/Order/description.vue @@ -0,0 +1,79 @@ + + + + + \ No newline at end of file diff --git a/common/Order/priceDetails.vue b/common/Order/priceDetails.vue new file mode 100644 index 0000000..4e431d5 --- /dev/null +++ b/common/Order/priceDetails.vue @@ -0,0 +1,77 @@ + + + + + \ No newline at end of file diff --git a/common/common.css b/common/common.css new file mode 100644 index 0000000..3a89320 --- /dev/null +++ b/common/common.css @@ -0,0 +1,559 @@ +.fill-height { + width: 100%; + height: var(--status-bar-height); +} + +.uni-navbar .uni-navbar__content { + border: 0 none !important; +} + +.uni-navbar .uni-navbar__header .uni-nav-bar-text { + font-size: 36rpx; + font-weight: 400; + font-family: PingFang SC; +} + +/* 带有筛选项的标题 */ +.filter_title { + display: flex; + align-items: center; + width: 100%; + height: 88rpx; + justify-content: space-between; + position: relative; + box-sizing: border-box; + padding-left: 28rpx; +} + +.filter_title .go_back_icon { + width: 50rpx; + height: 50rpx; + position: absolute; + left: 28rpx; + margin-top: -8rpx; +} + +.filter_title .filter_title_name { + font-family: PingFang SC; + font-size: 32rpx; + color: #000000; + font-weight: bold; + position: absolute; + left: 50%; + transform: translate(-50%); + display: flex; + align-items: center; +} + +.filter_title .filter_title_name>image { + width: 26rpx; + height: 14rpx; + margin: 10rpx; + transition: 0.3s all; +} + +.filter_title .filter_title_name .rotate_style { + transform: rotate(180deg); +} + +.filter_title .titlt_select { + width: 100%; + height: auto; + position: absolute; + z-index: 99; + top: 88rpx; +} + +.filter_title .titlt_select .titlt_div { + width: 50%; + height: auto; + background: #FFFFFF; + box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.1); + border-radius: 12rpx; + margin: auto; + display: flex; + flex-direction: column; +} + +.filter_title .titlt_select .titlt_div>text { + line-height: 88rpx; + text-align: center; + border-bottom: 1px solid #F3F8FF; +} + +/* 列表页最外层样式 */ +.content_list { + width: 100%; + /* height: calc(100vh - 88rpx); */ + height: calc(100vh - 88rpx - var(--status-bar-height)); + overflow: hidden; +} + +.content_list .list_div_3 { + display: flex; + flex-direction: column; + width: 100%; + height: calc(100% - 136rpx - 76rpx - 104rpx); + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; + background-color: #f3f8ff; +} + +.content_list .list_div_2 { + display: flex; + flex-direction: column; + width: 100%; + height: calc(100% - 104rpx - 104rpx); + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; + background-color: #f3f8ff; +} + +.content_list .list_div_1 { + display: flex; + flex-direction: column; + width: 100%; + height: calc(100% - 104rpx - 40rpx); + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; + background-color: #f3f8ff; +} + +/* 列表中卡片样式:标题-一行 */ +.list_title_1line { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding: 42rpx 28rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_1line .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; +} + +.list_title_1line .list_line { + width: 100%; + display: flex; + margin-top: 28rpx; +} + +.list_title_1line .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_1line .list_line>text { + width: 100%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* 列表中卡片样式:标题-一行半 */ +.list_title_1_5line { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding: 42rpx 28rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_1_5line .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; +} + +.list_title_1_5line .list_line { + width: 100%; + display: flex; + justify-content: space-between; + margin-top: 28rpx; +} + +.list_title_1_5line .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_1_5line .list_line:last-child>text { + width: 100%; +} + +.list_title_1_5line .list_line>text { + width: 50%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.list_title_1_5line .list_line>text:first-child { + padding-right: 20rpx; +} + +/* 列表中卡片样式:标题-两行 */ +.list_title_2line { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding: 42rpx 28rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_2line .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; +} + +.list_title_2line .list_line { + width: 100%; + display: flex; + justify-content: space-between; + margin-top: 28rpx; +} + +.list_title_2line .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_2line .list_line>text { + width: 50%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.list_title_2line .list_line>text:first-child { + padding-right: 20rpx; +} + +/* 列表中卡片样式:标题-两行 加一个底部带上边框的 */ +.list_title_2line_bottom { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding-top: 42rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_2line_bottom .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; + box-sizing: border-box; + padding: 0 28rpx; +} + +.list_title_2line_bottom .list_line { + width: 100%; + display: flex; + justify-content: space-between; + margin-top: 28rpx; + box-sizing: border-box; + padding: 0 28rpx; +} + +.list_title_2line_bottom .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_2line_bottom .list_line>text { + width: 50%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.list_title_2line_bottom .list_line>text:first-child { + padding-right: 20rpx; +} + +.list_title_2line_bottom .list_bottom { + width: 100%; + line-height: 90rpx; + box-sizing: border-box; + padding: 0 28rpx; + border-top: 2rpx solid #F3F8FF; + margin-top: 28rpx; + font-size: 24rpx; + font-family: PingFang SC; + font-weight: 400; + color: #1D1D1D; +} + +/* 列表中卡片样式:上下两块-上 左图片右内容 下 日期等 */ +.list_2block_image_content { + display: flex; + flex-direction: column; + justify-content: space-between; + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +/* 上部分 */ +.list_2block_image_content .top_block { + display: flex; + width: 100%; + height: auto; + box-sizing: border-box; + padding: 42rpx 28rpx 28rpx; +} + +.list_2block_image_content .top_block .top_block_image { + width: 144rpx; + height: 144rpx; +} + +.list_2block_image_content .top_block .top_block_content { + display: flex; + flex-direction: column; + width: calc(100% - 144rpx - 20rpx); + margin-left: 20rpx; + min-height: 142rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_title { + width: 100%; + font-family: PingFang SC; + font-size: 30rpx; + color: #1d1d1d; +} + +.list_2block_image_content .top_block .top_block_content .content_line { + display: flex; + width: 100%; + min-height: 32rpx; + margin-top: 30rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_line:last-child { + margin-top: 8rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_line>image { + width: 28rpx; + height: 28rpx; + margin-top: 4rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_line>text { + width: calc(100% - 28rpx - 4rpx); + margin-left: 4rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #b2b2b2; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* 下部分 */ +.list_2block_image_content .bottom_block { + display: flex; + align-items: center; + justify-content: space-between; + box-sizing: border-box; + padding: 0 28rpx; + width: 100%; + height: 90rpx; + border-top: 2rpx solid #F3F8FF; +} + +.list_2block_image_content .bottom_block>text { + font-family: PingFang SC; + font-size: 24rpx; + color: #1d1d1d; +} + +/* 列表卡片标签样式 */ +.list_position { + position: absolute; + top: 0; + right: 0; +} + +.list_position .label_Style { + width: auto; + line-height: 42rpx; + padding: 0 20rpx; + border-bottom-left-radius: 16rpx; + border-top-right-radius: 16rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #ffffff; + text-align: center; +} + +/* tabs切换:居中样式 */ +.tabs_center { + width: 100%; + box-sizing: border-box; + padding: 28rpx 28rpx; + display: flex; + justify-content: space-around; +} + +.tabs_center .tabs_div { + min-width: 112rpx; + line-height: 72rpx; + font-family: PingFang SC; + text-align: center; + font-style: Regular; + font-size: 30rpx; + color: #1d1d1d; +} + +.tabs_center .tabs_div_select { + color: #4285F4; + border-bottom: 8rpx solid #4285F4; +} + +/* tabs切换:居左样式 */ +.tabs_left { + width: 100%; + box-sizing: border-box; + padding: 28rpx 0; + display: flex; +} + +.tabs_left .tabs_div { + min-width: 112rpx; + line-height: 72rpx; + font-family: PingFang SC; + text-align: center; + font-style: Regular; + font-size: 28rpx; + color: #6E6E6E; + margin-right: 40rpx; +} + +.tabs_left .tabs_div_select { + color: #4285F4; + border-bottom: 8rpx solid #4285F4; +} + +/* 列表上方搜索样式 */ +.list_search { + display: flex; + justify-content: space-between; + align-items: center; + width: calc(100% - 28rpx - 28rpx); + box-sizing: border-box; + height: 76rpx; + margin: 28rpx 28rpx 0; + background-color: #F3F8FF; + border-radius: 8rpx; + box-sizing: border-box; + padding: 0 24rpx; +} + +.list_search .search_text { + flex: 1; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #ccd2dc; +} + +.list_search .search_icon { + width: 34rpx; + height: 34rpx; +} + +/* 详情-左标题 右内容 布局 */ +.detail_title_content { + width: 100%; + /* height: calc(100vh - 88rpx); */ + height: 100vh; + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; +} + +.detail_title_content .title_content { + width: 100%; + line-height: 40rpx; + display: flex; + justify-content: space-between; + margin-bottom: 40rpx; +} + +.detail_title_content .title_content .left_title { + font-family: PingFang SC; + font-size: 28rpx; + color: #1d1d1d; + word-break: break-word; +} + +.detail_title_content .title_content .right_content { + font-family: PingFang SC; + font-size: 28rpx; + color: #1d1d1d; + word-break: break-word; + margin-left: 40rpx; + text-align: right; + font-weight: 400; +} diff --git a/common/http/config.ts b/common/http/config.ts new file mode 100644 index 0000000..14aafb5 --- /dev/null +++ b/common/http/config.ts @@ -0,0 +1,16 @@ +export default { + + //正式接口 + // base_url:'https://mall.goodsilk.cn/api', + + //测试服务器 + // base_url: 'http://cs-piaowu.fangshangqu.net:10021/api/', + // upload_img_url: 'http://cs-piaowu.fangshangqu.net:10021/api/sys/common/upload', + // base_url:'http://192.168.2.65:10021/api/', + // upload_img_url: 'http://192.168.2.65:10021/api/sys/common/upload', + + //本地服务 + + base_url: 'http://192.168.1.222:8082', + +} \ No newline at end of file diff --git a/common/http/index.ts b/common/http/index.ts new file mode 100644 index 0000000..5b70c58 --- /dev/null +++ b/common/http/index.ts @@ -0,0 +1,33 @@ +import httpRequest from '../http/interface' + +export const postAction = (url : string, data = {}, headerCustom = {}) => { + return httpRequest( + url, + 'POST', + data, + headerCustom, + ) +} +export const getAction = (url : string, data = {}, headerCustom = {}) => { + return httpRequest( + url, + 'GET', + data, + headerCustom, + ) +} +export const putAction = (url : string, data = {}) => { + return httpRequest( + url, + 'PUT', + data + ) +} +export const deleteAction = (url : string, data = {}) => { + return httpRequest( + url, + 'DELETE', + data + ) +} +// 默认全部导出 import api from '@/common/vmeitime-http/' \ No newline at end of file diff --git a/common/http/interface.ts b/common/http/interface.ts new file mode 100644 index 0000000..6c3be96 --- /dev/null +++ b/common/http/interface.ts @@ -0,0 +1,244 @@ +/** + * 通用uni-app网络请求 + * 基于 Promise 对象实现更简单的 request 使用方式,支持请求和响应拦截 + */ +/* + +*/ +import myconfig from '../http/config' + +// 封装uni.request方法 +function httpRequest(url : string, method : any, data = {}, headerCustom = {}) { + return new Promise((resolve, reject) => { + const token = uni.getStorageSync('token') + // 设置请求头 + const header = { + // 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + 'Content-Type': 'application/json;charset=UTF-8', + 'Authorization': 'Bearer ' + token // 如果需要的话,可以在这里添加认证token + }; + // 合并请求头 + const finalHeader = Object.assign({}, header, headerCustom); + uni.setStorageSync('baseURL', myconfig.base_url) + uni.request({ + url: myconfig.base_url + url, // 拼接基础URL和请求路径 + method: method, + data: data, // 如果是GET请求,data应该为null + header: finalHeader, + success: (res) => { + // 如果服务器返回的状态码为200,则认为是成功的响应 + if (res.data && res.statusCode === 200) { + resolve(res.data); + }else if(res.data && res.statusCode === 401){ + uni.showToast({ + icon:'error', + title:'网络出错了!' + }) + reject(new Error('请求失败: ' + (res.data && res.data?.message || '未知错误'))); + }else { + reject(new Error('请求失败: ' + (res.data && res.data?.message || '未知错误'))); + } + }, + fail: (err) => { + reject(err); + } + }); + }); +} + +export default httpRequest; + + +// const config = { +// baseUrl: myconfig.base_url, +// header: { +// 'Content-Type': 'application/json;charset=UTF-8', +// 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' +// }, +// data: {}, +// method: "POST", +// dataType: "json", +// /* 如设为json,会对返回的数据做一次 JSON.parse */ +// responseType: "text", +// success() { }, +// fail() { }, +// complete() { } +// } +// // 拦截器 +// const interceptor = { +// request: null, //请求 +// response: null //响应 +// } +// const request = (options) => { +// if (!options) { +// options = {} +// } +// uni.showLoading({ +// title: '操作中' +// }) +// options.baseUrl = options.baseUrl || config.baseUrl +// options.dataType = options.dataType || config.dataType +// options.url = options.baseUrl + options.url +// options.sslVerify = false +// options.data = options.data || {} +// options.method = options.method || config.method +// if (options.dataType == 'json') { +// options.header = { +// ...options.header, +// 'Content-Type': 'application/json;charset=UTF-8', +// } +// } else { +// options.header = { +// ...options.header, +// 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' +// } +// } +// options.header = { +// ...options.header, +// 'X-Access-Token': uni.getStorageSync('token') || '', +// } + +// return new Promise((resolve, reject) => { +// let _config = null +// options.complete = (response) => { +// uni.hideLoading() +// let statusCode = response.statusCode +// response.config = _config + +// if (interceptor.response) { +// let newResponse = interceptor.response(response) +// if (newResponse) { +// response = newResponse +// } +// } +// // 统一的响应日志记录 +// _reslog(response) +// if (statusCode === 200) { //成功 +// uni.$emit('login', { +// login: true +// }); +// if (response.data.code == 401) { +// uni.setStorageSync('token', '') +// // uni.reLaunch({ +// // url: '/pages/login/login' +// // }) +// } +// resolve(response.data); +// } else if (statusCode === 401) { +// // uni.clearStorageSync() +// uni.setStorageSync('token', '') +// // uni.reLaunch({ +// // url: '/pages/login/login' +// // }) +// } else { +// reject(response) +// // console.log(JSON.stringify(response)); +// // console.log("login err=: ", response); +// } +// } + +// _config = Object.assign({}, config, options) +// _config.requestId = new Date().getTime() + +// if (interceptor.request) { +// interceptor.request(_config) +// } + +// // 统一的请求日志记录 +// _reqlog(_config) + +// if (process.env.NODE_ENV === 'development') { +// // console.log("【" + _config.requestId + "】 地址:" + _config.url) +// if (_config.data) { +// // console.log("【" + _config.requestId + "】 参数:" + JSON.stringify(_config.data)) +// } +// } + +// uni.request(_config); +// }); +// } +// const get = (url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'GET' +// return request(options) +// } +// const post(url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'POST' +// return request(options) +// } +// const put = (url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'PUT' +// return request(options) +// } +// const delete=(url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'DELETE' +// return request(options) +// } + + + + +// /** +// * 请求接口日志记录 +// */ +// function _reqlog(req) { +// if (process.env.NODE_ENV === 'development') { +// // console.log("【" + req.requestId + "】 地址:" + req.url) + +// // if (req.statusCode == '401') { +// // uni.reLaunch({ +// // url: '/pages/login/login' +// // }); +// // } + +// if (req.data) { +// // console.log("【" + req.requestId + "】 请求参数:" + JSON.stringify(req.data)) +// } +// } +// //TODO 调接口异步写入日志数据库 +// } + +// /** +// * 响应接口日志记录 +// */ +// function _reslog(res) { +// let _statusCode = res.statusCode; +// // if (process.env.NODE_ENV === 'development') { +// // console.log("【" + res.config.requestId + "】 地址:" + res.config.url) +// // if (res.config.data) { +// // console.log("【" + res.config.requestId + "】 请求参数:" + JSON.stringify(res.config.data)) +// // } +// // console.log("【" + res.config.requestId + "】 响应结果:" + JSON.stringify(res)) +// // } +// //TODO 除了接口服务错误外,其他日志调接口异步写入日志数据库 +// switch (_statusCode) { +// case 200: +// break; +// case 401: +// break; +// case 404: +// break; +// default: +// break; +// } +// } +// export default request; \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 18bf0fd..9666190 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -55,6 +55,16 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "peer": true }, + "node_modules/@types/dom-webcodecs": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz", + "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==" + }, + "node_modules/@types/emscripten": { + "version": "1.39.13", + "resolved": "https://registry.npmmirror.com/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==" + }, "node_modules/@vant/popperjs": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", @@ -167,6 +177,15 @@ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==" }, + "node_modules/barcode-detector": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/barcode-detector/-/barcode-detector-2.2.2.tgz", + "integrity": "sha512-JcSekql+EV93evfzF9zBr+Y6aRfkR+QFvgyzbwQ0dbymZXoAI9+WgT7H1E429f+3RKNncHz2CW98VQtaaKpmfQ==", + "dependencies": { + "@types/dom-webcodecs": "^0.1.11", + "zxing-wasm": "1.1.3" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", @@ -252,6 +271,11 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", @@ -294,6 +318,38 @@ "optional": true } } + }, + "node_modules/vue-qrcode-reader": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/vue-qrcode-reader/-/vue-qrcode-reader-5.6.0.tgz", + "integrity": "sha512-uvaJqMRgR/1tt7XWAqaRBQf0mo3gudu5fXqZmtoq+87lvmM4dublJ7StO6ssNO3FaJqssG72hPhXWoBoYWJIeg==", + "dependencies": { + "barcode-detector": "2.2.2", + "webrtc-adapter": "8.2.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webrtc-adapter": { + "version": "8.2.3", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-8.2.3.tgz", + "integrity": "sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==", + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/zxing-wasm": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/zxing-wasm/-/zxing-wasm-1.1.3.tgz", + "integrity": "sha512-MYm9k/5YVs4ZOTIFwlRjfFKD0crhefgbnt1+6TEpmKUDFp3E2uwqGSKwQOd2hOIsta/7Usq4hnpNRYTLoljnfA==", + "dependencies": { + "@types/emscripten": "^1.39.10" + } } } } diff --git a/node_modules/@types/dom-webcodecs/LICENSE b/node_modules/@types/dom-webcodecs/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/dom-webcodecs/README.md b/node_modules/@types/dom-webcodecs/README.md new file mode 100644 index 0000000..5d438f7 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/dom-webcodecs` + +# Summary +This package contains type definitions for dom-webcodecs (https://w3c.github.io/webcodecs/). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/dom-webcodecs. + +### Additional Details + * Last updated: Tue, 08 Oct 2024 09:36:58 GMT + * Dependencies: none + +# Credits +These definitions were written by [Ben Wagner](https://github.com/dogben). diff --git a/node_modules/@types/dom-webcodecs/index.d.ts b/node_modules/@types/dom-webcodecs/index.d.ts new file mode 100644 index 0000000..8226413 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/index.d.ts @@ -0,0 +1,185 @@ +// Versioning: +// Until the WebCodecs spec is finalized, the major version number is 0. I have chosen to use minor +// version 1 to denote the API as defined by the IDL files from the Chromium repo at +// https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/modules/webcodecs. +// Please use a version number above 0.1 if using the spec at https://w3c.github.io/webcodecs/ as +// the source. + +// The declarations in webcodecs.generated.d.ts have been generated using the code in +// https://github.com/yume-chan/webcodecs-lib-generator. See +// https://github.com/yume-chan/webcodecs-lib-generator/blob/main/README.md for more detail. +/// + +// The following declarations are copied from +// https://github.com/microsoft/TypeScript-DOM-lib-generator/blob/a75338e1ea8a958bf08a5745141d2ab8f14ba2ca/baselines/dom.generated.d.ts +// and modified to expand the types to include VideoFrame. + +/** Shim for OffscreenCanvas, which was removed in TS 4.4 */ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +interface OffscreenCanvas extends EventTarget { +} + +/** + * Replaces CanvasImageSource; only applies if WebCodecs is available. + */ +type CanvasImageSourceWebCodecs = + | HTMLOrSVGImageElement + | HTMLVideoElement + | HTMLCanvasElement + | ImageBitmap + | OffscreenCanvas + | VideoFrame; + +interface CanvasRenderingContext2D { + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number): void; + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number, dw: number, dh: number): void; + drawImage( + image: CanvasImageSourceWebCodecs, + sx: number, + sy: number, + sw: number, + sh: number, + dx: number, + dy: number, + dw: number, + dh: number, + ): void; + createPattern(image: CanvasImageSourceWebCodecs, repetition: string | null): CanvasPattern | null; +} + +interface OffscreenCanvasRenderingContext2D { + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number): void; + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number, dw: number, dh: number): void; + drawImage( + image: CanvasImageSourceWebCodecs, + sx: number, + sy: number, + sw: number, + sh: number, + dx: number, + dy: number, + dw: number, + dh: number, + ): void; + createPattern(image: CanvasImageSourceWebCodecs, repetition: string | null): CanvasPattern | null; +} + +/** + * Replaces ImageBitmapSource; only applies if WebCodecs is available. + */ +type ImageBitmapSourceWebCodecs = CanvasImageSourceWebCodecs | Blob | ImageData; + +declare function createImageBitmap( + image: ImageBitmapSourceWebCodecs, + options?: ImageBitmapOptions, +): Promise; +declare function createImageBitmap( + image: ImageBitmapSourceWebCodecs, + sx: number, + sy: number, + sw: number, + sh: number, + options?: ImageBitmapOptions, +): Promise; + +/** + * Replaces TexImageSource; only applies if WebCodecs is available. + */ +type TexImageSourceWebCodecs = + | ImageBitmap + | ImageData + | HTMLImageElement + | HTMLCanvasElement + | HTMLVideoElement + | OffscreenCanvas + | VideoFrame; + +interface WebGLRenderingContextOverloads { + texImage2D( + target: GLenum, + level: GLint, + internalformat: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage2D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; +} + +interface WebGL2RenderingContextBase { + texImage3D( + target: GLenum, + level: GLint, + internalformat: GLint, + width: GLsizei, + height: GLsizei, + depth: GLsizei, + border: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage3D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + zoffset: GLint, + width: GLsizei, + height: GLsizei, + depth: GLsizei, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; +} + +interface WebGL2RenderingContextOverloads { + texImage2D( + target: GLenum, + level: GLint, + internalformat: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texImage2D( + target: GLenum, + level: GLint, + internalformat: GLint, + width: GLsizei, + height: GLsizei, + border: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage2D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage2D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + width: GLsizei, + height: GLsizei, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; +} diff --git a/node_modules/@types/dom-webcodecs/package.json b/node_modules/@types/dom-webcodecs/package.json new file mode 100644 index 0000000..57d2e88 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/package.json @@ -0,0 +1,26 @@ +{ + "name": "@types/dom-webcodecs", + "version": "0.1.13", + "description": "TypeScript definitions for dom-webcodecs", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/dom-webcodecs", + "license": "MIT", + "contributors": [ + { + "name": "Ben Wagner", + "githubUsername": "dogben", + "url": "https://github.com/dogben" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/dom-webcodecs" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "6636871774b310b05e6e4866ff18e837c547c0355726d08095658258522293f7", + "typeScriptVersion": "5.7", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/dom-webcodecs/webcodecs.generated.d.ts b/node_modules/@types/dom-webcodecs/webcodecs.generated.d.ts new file mode 100644 index 0000000..a30ca83 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/webcodecs.generated.d.ts @@ -0,0 +1,517 @@ +///////////////////////////// +/// webcodecs APIs +///////////////////////////// + +interface AudioDataCopyToOptions { + format?: AudioSampleFormat | undefined; + frameCount?: number | undefined; + frameOffset?: number | undefined; + planeIndex: number; +} + +interface AudioDataInit { + data: AllowSharedBufferSource; + format: AudioSampleFormat; + numberOfChannels: number; + numberOfFrames: number; + sampleRate: number; + timestamp: number; +} + +interface AudioDecoderConfig { + codec: string; + description?: AllowSharedBufferSource | undefined; + numberOfChannels: number; + sampleRate: number; +} + +interface AudioDecoderInit { + error: WebCodecsErrorCallback; + output: AudioDataOutputCallback; +} + +interface AudioDecoderSupport { + config?: AudioDecoderConfig; + supported?: boolean; +} + +interface AudioEncoderConfig { + bitrate?: number | undefined; + codec: string; + numberOfChannels: number; + sampleRate: number; +} + +interface AudioEncoderInit { + error: WebCodecsErrorCallback; + output: EncodedAudioChunkOutputCallback; +} + +interface AudioEncoderSupport { + config?: AudioEncoderConfig; + supported?: boolean; +} + +interface AvcEncoderConfig { + format?: AvcBitstreamFormat | undefined; +} + +interface EncodedAudioChunkInit { + data: AllowSharedBufferSource; + duration?: number | undefined; + timestamp: number; + type: EncodedAudioChunkType; +} + +interface EncodedAudioChunkMetadata { + decoderConfig?: AudioDecoderConfig | undefined; +} + +interface EncodedVideoChunkInit { + data: AllowSharedBufferSource; + duration?: number | undefined; + timestamp: number; + type: EncodedVideoChunkType; +} + +interface EncodedVideoChunkMetadata { + decoderConfig?: VideoDecoderConfig | undefined; + temporalLayerId?: number | undefined; +} + +interface ImageDecodeOptions { + completeFramesOnly?: boolean | undefined; + frameIndex?: number | undefined; +} + +interface ImageDecodeResult { + complete: boolean; + image: VideoFrame; +} + +interface ImageDecoderInit { + colorSpaceConversion?: ColorSpaceConversion | undefined; + data: ImageBufferSource; + desiredHeight?: number | undefined; + desiredWidth?: number | undefined; + preferAnimation?: boolean | undefined; + premultiplyAlpha?: PremultiplyAlpha | undefined; + type: string; +} + +interface PlaneLayout { + offset: number; + stride: number; +} + +interface VideoColorSpaceInit { + fullRange?: boolean | null | undefined; + matrix?: VideoMatrixCoefficients | null | undefined; + primaries?: VideoColorPrimaries | null | undefined; + transfer?: VideoTransferCharacteristics | null | undefined; +} + +interface VideoDecoderConfig { + codec: string; + codedHeight?: number | undefined; + codedWidth?: number | undefined; + colorSpace?: VideoColorSpaceInit | undefined; + description?: AllowSharedBufferSource | undefined; + displayAspectHeight?: number | undefined; + displayAspectWidth?: number | undefined; + hardwareAcceleration?: HardwarePreference | undefined; + optimizeForLatency?: boolean | undefined; +} + +interface VideoDecoderInit { + error: WebCodecsErrorCallback; + output: VideoFrameOutputCallback; +} + +interface VideoDecoderSupport { + config?: VideoDecoderConfig; + supported?: boolean; +} + +interface VideoEncoderConfig { + alpha?: AlphaOption | undefined; + avc?: AvcEncoderConfig | undefined; + bitrate?: number | undefined; + bitrateMode?: VideoEncoderBitrateMode | undefined; + codec: string; + displayHeight?: number | undefined; + displayWidth?: number | undefined; + framerate?: number | undefined; + hardwareAcceleration?: HardwarePreference | undefined; + height: number; + latencyMode?: LatencyMode | undefined; + scalabilityMode?: string | undefined; + width: number; +} + +interface VideoEncoderEncodeOptions { + keyFrame?: boolean; +} + +interface VideoEncoderInit { + error: WebCodecsErrorCallback; + output: EncodedVideoChunkOutputCallback; +} + +interface VideoEncoderSupport { + config?: VideoEncoderConfig; + supported?: boolean; +} + +interface VideoFrameBufferInit { + codedHeight: number; + codedWidth: number; + colorSpace?: VideoColorSpaceInit | undefined; + displayHeight?: number | undefined; + displayWidth?: number | undefined; + duration?: number | undefined; + format: VideoPixelFormat; + layout?: PlaneLayout[] | undefined; + timestamp: number; + visibleRect?: DOMRectInit | undefined; +} + +interface VideoFrameCopyToOptions { + layout?: PlaneLayout[] | undefined; + rect?: DOMRectInit | undefined; +} + +interface VideoFrameInit { + alpha?: AlphaOption | undefined; + displayHeight?: number | undefined; + displayWidth?: number | undefined; + duration?: number | undefined; + timestamp?: number | undefined; + visibleRect?: DOMRectInit | undefined; +} + +interface AudioData { + readonly duration: number; + readonly format: AudioSampleFormat | null; + readonly numberOfChannels: number; + readonly numberOfFrames: number; + readonly sampleRate: number; + readonly timestamp: number; + allocationSize(options: AudioDataCopyToOptions): number; + clone(): AudioData; + close(): void; + copyTo(destination: AllowSharedBufferSource, options: AudioDataCopyToOptions): void; +} + +declare var AudioData: { + prototype: AudioData; + new(init: AudioDataInit): AudioData; +}; + +interface AudioDecoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface AudioDecoder { + readonly decodeQueueSize: number; + readonly state: CodecState; + ondequeue: ((this: AudioDecoder, ev: Event) => any) | null; + close(): void; + configure(config: AudioDecoderConfig): void; + decode(chunk: EncodedAudioChunk): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: AudioDecoder, ev: AudioDecoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: AudioDecoder, ev: AudioDecoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var AudioDecoder: { + prototype: AudioDecoder; + new(init: AudioDecoderInit): AudioDecoder; + isConfigSupported(config: AudioDecoderConfig): Promise; +}; + +interface AudioEncoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface AudioEncoder { + readonly encodeQueueSize: number; + readonly state: CodecState; + ondequeue: ((this: AudioEncoder, ev: Event) => any) | null; + close(): void; + configure(config: AudioEncoderConfig): void; + encode(data: AudioData): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: AudioEncoder, ev: AudioEncoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: AudioEncoder, ev: AudioEncoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var AudioEncoder: { + prototype: AudioEncoder; + new(init: AudioEncoderInit): AudioEncoder; + isConfigSupported(config: AudioEncoderConfig): Promise; +}; + +interface EncodedAudioChunk { + readonly byteLength: number; + readonly duration: number | null; + readonly timestamp: number; + readonly type: EncodedAudioChunkType; + copyTo(destination: AllowSharedBufferSource): void; +} + +declare var EncodedAudioChunk: { + prototype: EncodedAudioChunk; + new(init: EncodedAudioChunkInit): EncodedAudioChunk; +}; + +interface EncodedVideoChunk { + readonly byteLength: number; + readonly duration: number | null; + readonly timestamp: number; + readonly type: EncodedVideoChunkType; + copyTo(destination: AllowSharedBufferSource): void; +} + +declare var EncodedVideoChunk: { + prototype: EncodedVideoChunk; + new(init: EncodedVideoChunkInit): EncodedVideoChunk; +}; + +/** Available only in secure contexts. */ +interface ImageDecoder { + readonly complete: boolean; + readonly completed: Promise; + readonly tracks: ImageTrackList; + readonly type: string; + close(): void; + decode(options?: ImageDecodeOptions): Promise; + reset(): void; +} + +declare var ImageDecoder: { + prototype: ImageDecoder; + new(init: ImageDecoderInit): ImageDecoder; + isTypeSupported(type: string): Promise; +}; + +interface ImageTrack { + readonly animated: boolean; + readonly frameCount: number; + readonly repetitionCount: number; + selected: boolean; +} + +declare var ImageTrack: { + prototype: ImageTrack; + new(): ImageTrack; +}; + +interface ImageTrackList { + readonly length: number; + readonly ready: Promise; + readonly selectedIndex: number; + readonly selectedTrack: ImageTrack | null; + [index: number]: ImageTrack; +} + +declare var ImageTrackList: { + prototype: ImageTrackList; + new(): ImageTrackList; +}; + +interface VideoColorSpace { + readonly fullRange: boolean | null; + readonly matrix: VideoMatrixCoefficients | null; + readonly primaries: VideoColorPrimaries | null; + readonly transfer: VideoTransferCharacteristics | null; + toJSON(): VideoColorSpaceInit; +} + +declare var VideoColorSpace: { + prototype: VideoColorSpace; + new(init?: VideoColorSpaceInit): VideoColorSpace; +}; + +interface VideoDecoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface VideoDecoder { + readonly decodeQueueSize: number; + readonly state: CodecState; + ondequeue: ((this: VideoDecoder, ev: Event) => any) | null; + close(): void; + configure(config: VideoDecoderConfig): void; + decode(chunk: EncodedVideoChunk): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: VideoDecoder, ev: VideoDecoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: VideoDecoder, ev: VideoDecoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var VideoDecoder: { + prototype: VideoDecoder; + new(init: VideoDecoderInit): VideoDecoder; + isConfigSupported(config: VideoDecoderConfig): Promise; +}; + +interface VideoEncoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface VideoEncoder { + readonly encodeQueueSize: number; + readonly state: CodecState; + close(): void; + ondequeue: ((this: VideoEncoder, ev: Event) => any) | null; + configure(config: VideoEncoderConfig): void; + encode(frame: VideoFrame, options?: VideoEncoderEncodeOptions): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: VideoEncoder, ev: VideoEncoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: VideoEncoder, ev: VideoEncoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var VideoEncoder: { + prototype: VideoEncoder; + new(init: VideoEncoderInit): VideoEncoder; + isConfigSupported(config: VideoEncoderConfig): Promise; +}; + +interface VideoFrame { + readonly codedHeight: number; + readonly codedRect: DOMRectReadOnly | null; + readonly codedWidth: number; + readonly colorSpace: VideoColorSpace; + readonly displayHeight: number; + readonly displayWidth: number; + readonly duration: number | null; + readonly format: VideoPixelFormat | null; + readonly timestamp: number; + readonly visibleRect: DOMRectReadOnly | null; + allocationSize(options?: VideoFrameCopyToOptions): number; + clone(): VideoFrame; + close(): void; + copyTo(destination: AllowSharedBufferSource, options?: VideoFrameCopyToOptions): Promise; +} + +declare var VideoFrame: { + prototype: VideoFrame; + new(source: CanvasImageSource, init?: VideoFrameInit): VideoFrame; + new(data: AllowSharedBufferSource, init: VideoFrameBufferInit): VideoFrame; +}; + +interface AudioDataOutputCallback { + (output: AudioData): void; +} + +interface EncodedAudioChunkOutputCallback { + (output: EncodedAudioChunk, metadata: EncodedAudioChunkMetadata): void; +} + +interface EncodedVideoChunkOutputCallback { + (chunk: EncodedVideoChunk, metadata: EncodedVideoChunkMetadata): void; +} + +interface VideoFrameOutputCallback { + (output: VideoFrame): void; +} + +interface WebCodecsErrorCallback { + (error: DOMException): void; +} + +// type AllowSharedBufferSource = ArrayBuffer | ArrayBufferView; +// type BitrateMode = "constant" | "variable"; +type ImageBufferSource = ArrayBuffer | ArrayBufferView | ReadableStream; +// type AlphaOption = "discard" | "keep"; +// type AudioSampleFormat = "f32" | "f32-planar" | "s16" | "s16-planar" | "s32" | "s32-planar" | "u8" | "u8-planar"; +// type AvcBitstreamFormat = "annexb" | "avc"; +// type CodecState = "closed" | "configured" | "unconfigured"; +// type EncodedAudioChunkType = "delta" | "key"; +// type EncodedVideoChunkType = "delta" | "key"; +type HardwarePreference = "no-preference" | "prefer-hardware" | "prefer-software"; +// type LatencyMode = "quality" | "realtime"; +// type VideoColorPrimaries = "bt470bg" | "bt709" | "smpte170m"; +// type VideoMatrixCoefficients = "bt470bg" | "bt709" | "rgb" | "smpte170m"; +// type VideoPixelFormat = "BGRA" | "BGRX" | "I420" | "I420A" | "I422" | "I444" | "NV12" | "RGBA" | "RGBX"; +// type VideoTransferCharacteristics = "bt709" | "iec61966-2-1" | "smpte170m"; diff --git a/node_modules/@types/emscripten/LICENSE b/node_modules/@types/emscripten/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/emscripten/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/emscripten/README.md b/node_modules/@types/emscripten/README.md new file mode 100644 index 0000000..888b0a1 --- /dev/null +++ b/node_modules/@types/emscripten/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/emscripten` + +# Summary +This package contains type definitions for emscripten (https://emscripten.org). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/emscripten. + +### Additional Details + * Last updated: Tue, 28 May 2024 20:07:23 GMT + * Dependencies: none + +# Credits +These definitions were written by [Kensuke Matsuzaki](https://github.com/zakki), [Periklis Tsirakidis](https://github.com/periklis), [Bumsik Kim](https://github.com/kbumsik), and [Louis DeScioli](https://github.com/lourd). diff --git a/node_modules/@types/emscripten/index.d.ts b/node_modules/@types/emscripten/index.d.ts new file mode 100644 index 0000000..7436fa6 --- /dev/null +++ b/node_modules/@types/emscripten/index.d.ts @@ -0,0 +1,451 @@ +/** Other WebAssembly declarations, for compatibility with older versions of Typescript */ +declare namespace WebAssembly { + interface Module {} +} + +declare namespace Emscripten { + interface FileSystemType { + mount(mount: FS.Mount): FS.FSNode; + syncfs(mount: FS.Mount, populate: () => unknown, done: (err?: number | null) => unknown): void; + } + type EnvironmentType = "WEB" | "NODE" | "SHELL" | "WORKER"; + + type JSType = "number" | "string" | "array" | "boolean"; + type TypeCompatibleWithC = number | string | any[] | boolean; + + type CIntType = "i8" | "i16" | "i32" | "i64"; + type CFloatType = "float" | "double"; + type CPointerType = "i8*" | "i16*" | "i32*" | "i64*" | "float*" | "double*" | "*"; + type CType = CIntType | CFloatType | CPointerType; + + interface CCallOpts { + async?: boolean | undefined; + } +} + +interface EmscriptenModule { + print(str: string): void; + printErr(str: string): void; + arguments: string[]; + environment: Emscripten.EnvironmentType; + preInit: Array<{ (): void }>; + preRun: Array<{ (): void }>; + postRun: Array<{ (): void }>; + onAbort: { (what: any): void }; + onRuntimeInitialized: { (): void }; + preinitializedWebGLContext: WebGLRenderingContext; + noInitialRun: boolean; + noExitRuntime: boolean; + logReadFiles: boolean; + filePackagePrefixURL: string; + wasmBinary: ArrayBuffer; + + destroy(object: object): void; + getPreloadedPackage(remotePackageName: string, remotePackageSize: number): ArrayBuffer; + instantiateWasm( + imports: WebAssembly.Imports, + successCallback: (module: WebAssembly.Instance) => void, + ): WebAssembly.Exports | undefined; + locateFile(url: string, scriptDirectory: string): string; + onCustomMessage(event: MessageEvent): void; + + // USE_TYPED_ARRAYS == 1 + HEAP: Int32Array; + IHEAP: Int32Array; + FHEAP: Float64Array; + + // USE_TYPED_ARRAYS == 2 + HEAP8: Int8Array; + HEAP16: Int16Array; + HEAP32: Int32Array; + HEAPU8: Uint8Array; + HEAPU16: Uint16Array; + HEAPU32: Uint32Array; + HEAPF32: Float32Array; + HEAPF64: Float64Array; + HEAP64: BigInt64Array; + HEAPU64: BigUint64Array; + + TOTAL_STACK: number; + TOTAL_MEMORY: number; + FAST_MEMORY: number; + + addOnPreRun(cb: () => any): void; + addOnInit(cb: () => any): void; + addOnPreMain(cb: () => any): void; + addOnExit(cb: () => any): void; + addOnPostRun(cb: () => any): void; + + preloadedImages: any; + preloadedAudios: any; + + _malloc(size: number): number; + _free(ptr: number): void; +} + +/** + * A factory function is generated when setting the `MODULARIZE` build option + * to `1` in your Emscripten build. It return a Promise that resolves to an + * initialized, ready-to-call `EmscriptenModule` instance. + * + * By default, the factory function will be named `Module`. It's recommended to + * use the `EXPORT_ES6` option, in which the factory function will be the + * default export. If used without `EXPORT_ES6`, the factory function will be a + * global variable. You can rename the variable using the `EXPORT_NAME` build + * option. It's left to you to declare any global variables as needed in your + * application's types. + * @param moduleOverrides Default properties for the initialized module. + */ +type EmscriptenModuleFactory = ( + moduleOverrides?: Partial, +) => Promise; + +declare namespace FS { + interface Lookup { + path: string; + node: FSNode; + } + + interface Analyze { + isRoot: boolean; + exists: boolean; + error: Error; + name: string; + path: Lookup["path"]; + object: Lookup["node"]; + parentExists: boolean; + parentPath: Lookup["path"]; + parentObject: Lookup["node"]; + } + + interface Mount { + type: Emscripten.FileSystemType; + opts: object; + mountpoint: string; + mounts: Mount[]; + root: FSNode; + } + + class FSStream { + constructor(); + object: FSNode; + readonly isRead: boolean; + readonly isWrite: boolean; + readonly isAppend: boolean; + flags: number; + position: number; + fd?: number; + nfd?: number; + } + + interface StreamOps { + open(stream: FSStream): void; + close(stream: FSStream): void; + read(stream: FSStream, buffer: Uint8Array, offset: number, length: number, position: number): number; + write(stream: FSStream, buffer: Uint8Array, offset: number, length: number, position: number): number; + llseek(stream: FSStream, offset: number, whence: number): number; + } + + class FSNode { + parent: FSNode; + mount: Mount; + mounted?: Mount; + id: number; + name: string; + mode: number; + rdev: number; + readMode: number; + writeMode: number; + constructor(parent: FSNode, name: string, mode: number, rdev: number); + read: boolean; + write: boolean; + readonly isFolder: boolean; + readonly isDevice: boolean; + } + + interface NodeOps { + getattr(node: FSNode): Stats; + setattr(node: FSNode, attr: Stats): void; + lookup(parent: FSNode, name: string): FSNode; + mknod(parent: FSNode, name: string, mode: number, dev: unknown): FSNode; + rename(oldNode: FSNode, newDir: FSNode, newName: string): void; + unlink(parent: FSNode, name: string): void; + rmdir(parent: FSNode, name: string): void; + readdir(node: FSNode): string[]; + symlink(parent: FSNode, newName: string, oldPath: string): void; + readlink(node: FSNode): string; + } + + interface Stats { + dev: number; + ino: number; + mode: number; + nlink: number; + uid: number; + gid: number; + rdev: number; + size: number; + blksize: number; + blocks: number; + atime: Date; + mtime: Date; + ctime: Date; + timestamp?: number; + } + + class ErrnoError extends Error { + name: "ErronoError"; + errno: number; + code: string; + constructor(errno: number); + } + + let ignorePermissions: boolean; + let trackingDelegate: { + onOpenFile(path: string, trackingFlags: number): unknown; + onCloseFile(path: string): unknown; + onSeekFile(path: string, position: number, whence: number): unknown; + onReadFile(path: string, bytesRead: number): unknown; + onWriteToFile(path: string, bytesWritten: number): unknown; + onMakeDirectory(path: string, mode: number): unknown; + onMakeSymlink(oldpath: string, newpath: string): unknown; + willMovePath(old_path: string, new_path: string): unknown; + onMovePath(old_path: string, new_path: string): unknown; + willDeletePath(path: string): unknown; + onDeletePath(path: string): unknown; + }; + let tracking: any; + let genericErrors: Record; + + // + // paths + // + function lookupPath( + path: string, + opts: Partial<{ + follow_mount: boolean; + /** + * by default, lookupPath will not follow a symlink if it is the final path component. + * setting opts.follow = true will override this behavior. + */ + follow: boolean; + recurse_count: number; + parent: boolean; + }>, + ): Lookup; + function getPath(node: FSNode): string; + function analyzePath(path: string, dontResolveLastLink?: boolean): Analyze; + + // + // nodes + // + function isFile(mode: number): boolean; + function isDir(mode: number): boolean; + function isLink(mode: number): boolean; + function isChrdev(mode: number): boolean; + function isBlkdev(mode: number): boolean; + function isFIFO(mode: number): boolean; + function isSocket(mode: number): boolean; + + // + // devices + // + function major(dev: number): number; + function minor(dev: number): number; + function makedev(ma: number, mi: number): number; + function registerDevice(dev: number, ops: Partial): void; + function getDevice(dev: number): { stream_ops: StreamOps }; + + // + // core + // + function getMounts(mount: Mount): Mount[]; + function syncfs(populate: boolean, callback: (e: any) => any): void; + function syncfs(callback: (e: any) => any, populate?: boolean): void; + function mount(type: Emscripten.FileSystemType, opts: any, mountpoint: string): any; + function unmount(mountpoint: string): void; + + function mkdir(path: string, mode?: number): FSNode; + function mkdev(path: string, mode?: number, dev?: number): FSNode; + function symlink(oldpath: string, newpath: string): FSNode; + function rename(old_path: string, new_path: string): void; + function rmdir(path: string): void; + function readdir(path: string): string[]; + function unlink(path: string): void; + function readlink(path: string): string; + function stat(path: string, dontFollow?: boolean): Stats; + function lstat(path: string): Stats; + function chmod(path: string, mode: number, dontFollow?: boolean): void; + function lchmod(path: string, mode: number): void; + function fchmod(fd: number, mode: number): void; + function chown(path: string, uid: number, gid: number, dontFollow?: boolean): void; + function lchown(path: string, uid: number, gid: number): void; + function fchown(fd: number, uid: number, gid: number): void; + function truncate(path: string, len: number): void; + function ftruncate(fd: number, len: number): void; + function utime(path: string, atime: number, mtime: number): void; + function open(path: string, flags: string, mode?: number, fd_start?: number, fd_end?: number): FSStream; + function close(stream: FSStream): void; + function llseek(stream: FSStream, offset: number, whence: number): number; + function read(stream: FSStream, buffer: ArrayBufferView, offset: number, length: number, position?: number): number; + function write( + stream: FSStream, + buffer: ArrayBufferView, + offset: number, + length: number, + position?: number, + canOwn?: boolean, + ): number; + function allocate(stream: FSStream, offset: number, length: number): void; + function mmap( + stream: FSStream, + buffer: ArrayBufferView, + offset: number, + length: number, + position: number, + prot: number, + flags: number, + ): { + allocated: boolean; + ptr: number; + }; + function ioctl(stream: FSStream, cmd: any, arg: any): any; + function readFile(path: string, opts: { encoding: "binary"; flags?: string | undefined }): Uint8Array; + function readFile(path: string, opts: { encoding: "utf8"; flags?: string | undefined }): string; + function readFile(path: string, opts?: { flags?: string | undefined }): Uint8Array; + function writeFile(path: string, data: string | ArrayBufferView, opts?: { flags?: string | undefined }): void; + + // + // module-level FS code + // + function cwd(): string; + function chdir(path: string): void; + function init( + input: null | (() => number | null), + output: null | ((c: number) => any), + error: null | ((c: number) => any), + ): void; + + function createLazyFile( + parent: string | FSNode, + name: string, + url: string, + canRead: boolean, + canWrite: boolean, + ): FSNode; + function createPreloadedFile( + parent: string | FSNode, + name: string, + url: string, + canRead: boolean, + canWrite: boolean, + onload?: () => void, + onerror?: () => void, + dontCreateFile?: boolean, + canOwn?: boolean, + ): void; + function createDataFile( + parent: string | FSNode, + name: string, + data: ArrayBufferView, + canRead: boolean, + canWrite: boolean, + canOwn: boolean, + ): FSNode; +} + +declare var MEMFS: Emscripten.FileSystemType; +declare var NODEFS: Emscripten.FileSystemType; +declare var IDBFS: Emscripten.FileSystemType; + +// https://emscripten.org/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html +type StringToType = R extends Emscripten.JSType ? { + number: number; + string: string; + array: number[] | string[] | boolean[] | Uint8Array | Int8Array; + boolean: boolean; + null: null; + }[R] + : never; + +type ArgsToType> = Extract< + { + [P in keyof T]: StringToType; + }, + any[] +>; + +type ReturnToType = R extends null ? null : StringToType>; + +// Below runtime function/variable declarations are exportable by +// -s EXTRA_EXPORTED_RUNTIME_METHODS. You can extend or merge +// EmscriptenModule interface to add runtime functions. +// +// For example, by using -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall']" +// You can access ccall() via Module["ccall"]. In this case, you should +// extend EmscriptenModule to pass the compiler check like the following: +// +// interface YourOwnEmscriptenModule extends EmscriptenModule { +// ccall: typeof ccall; +// } +// +// See: https://emscripten.org/docs/getting_started/FAQ.html#why-do-i-get-typeerror-module-something-is-not-a-function + +declare function cwrap | [], R extends Emscripten.JSType | null>( + ident: string, + returnType: R, + argTypes: I, + opts?: Emscripten.CCallOpts, +): (...arg: ArgsToType) => ReturnToType; + +declare function ccall | [], R extends Emscripten.JSType | null>( + ident: string, + returnType: R, + argTypes: I, + args: ArgsToType, + opts?: Emscripten.CCallOpts, +): ReturnToType; + +declare function setValue(ptr: number, value: any, type: Emscripten.CType, noSafe?: boolean): void; +declare function getValue(ptr: number, type: Emscripten.CType, noSafe?: boolean): number; + +declare function allocate( + slab: number[] | ArrayBufferView | number, + types: Emscripten.CType | Emscripten.CType[], + allocator: number, + ptr?: number, +): number; + +declare function stackAlloc(size: number): number; +declare function stackSave(): number; +declare function stackRestore(ptr: number): void; + +declare function UTF8ToString(ptr: number, maxBytesToRead?: number): string; +declare function stringToUTF8(str: string, outPtr: number, maxBytesToRead?: number): void; +declare function lengthBytesUTF8(str: string): number; +declare function allocateUTF8(str: string): number; +declare function allocateUTF8OnStack(str: string): number; +declare function UTF16ToString(ptr: number): string; +declare function stringToUTF16(str: string, outPtr: number, maxBytesToRead?: number): void; +declare function lengthBytesUTF16(str: string): number; +declare function UTF32ToString(ptr: number): string; +declare function stringToUTF32(str: string, outPtr: number, maxBytesToRead?: number): void; +declare function lengthBytesUTF32(str: string): number; + +declare function intArrayFromString(stringy: string, dontAddNull?: boolean, length?: number): number[]; +declare function intArrayToString(array: number[]): string; +declare function writeStringToMemory(str: string, buffer: number, dontAddNull: boolean): void; +declare function writeArrayToMemory(array: number[], buffer: number): void; +declare function writeAsciiToMemory(str: string, buffer: number, dontAddNull: boolean): void; + +declare function addRunDependency(id: any): void; +declare function removeRunDependency(id: any): void; + +declare function addFunction(func: (...args: any[]) => any, signature?: string): number; +declare function removeFunction(funcPtr: number): void; + +declare var ALLOC_NORMAL: number; +declare var ALLOC_STACK: number; +declare var ALLOC_STATIC: number; +declare var ALLOC_DYNAMIC: number; +declare var ALLOC_NONE: number; diff --git a/node_modules/@types/emscripten/package.json b/node_modules/@types/emscripten/package.json new file mode 100644 index 0000000..f2ddacc --- /dev/null +++ b/node_modules/@types/emscripten/package.json @@ -0,0 +1,40 @@ +{ + "name": "@types/emscripten", + "version": "1.39.13", + "description": "TypeScript definitions for emscripten", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/emscripten", + "license": "MIT", + "contributors": [ + { + "name": "Kensuke Matsuzaki", + "githubUsername": "zakki", + "url": "https://github.com/zakki" + }, + { + "name": "Periklis Tsirakidis", + "githubUsername": "periklis", + "url": "https://github.com/periklis" + }, + { + "name": "Bumsik Kim", + "githubUsername": "kbumsik", + "url": "https://github.com/kbumsik" + }, + { + "name": "Louis DeScioli", + "githubUsername": "lourd", + "url": "https://github.com/lourd" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/emscripten" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "e4c38466f07759bfefe22fd073222d18f79b78112fc989c972f3e86c81b49800", + "typeScriptVersion": "4.7" +} \ No newline at end of file diff --git a/node_modules/barcode-detector/LICENSE b/node_modules/barcode-detector/LICENSE new file mode 100644 index 0000000..5dd3d5b --- /dev/null +++ b/node_modules/barcode-detector/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Ze-Zheng Wu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/barcode-detector/README.md b/node_modules/barcode-detector/README.md new file mode 100644 index 0000000..4f4226d --- /dev/null +++ b/node_modules/barcode-detector/README.md @@ -0,0 +1,263 @@ +# barcode-detector + +[![npm](https://img.shields.io/npm/v/barcode-detector)](https://www.npmjs.com/package/barcode-detector/v/latest) [![npm bundle size (scoped)](https://img.shields.io/bundlephobia/minzip/barcode-detector)](https://www.npmjs.com/package/barcode-detector/v/latest) [![jsDelivr hits (npm scoped)](https://img.shields.io/jsdelivr/npm/hm/barcode-detector?color=%23ff5627)](https://cdn.jsdelivr.net/npm/barcode-detector@latest/) + +A [Barcode Detection API](https://wicg.github.io/shape-detection-api/#barcode-detection-api) polyfill that uses [ZXing-C++ WebAssembly](https://github.com/Sec-ant/zxing-wasm) under the hood. + +Supported barcode formats: `aztec`, `code_128`, `code_39`, `code_93`, `codabar`, `databar`, `databar_expanded`, `data_matrix`, `dx_film_edge`, `ean_13`, `ean_8`, `itf`, `maxi_code` (only generated ones, and no position info), `micro_qr_code`, `pdf417`, `qr_code`, `rm_qr_code`, `upc_a`, `upc_e`, `linear_codes` and `matrix_codes` (for convenience). + +## Install + +To install, run the following command: + +```bash +npm i barcode-detector +``` + +## Recommended Usage with Node + ESM + +This package can be imported in three different ways: + +### Pure Module + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; +``` + +To avoid potential namespace collisions, you can also rename the export: + +```ts +import { BarcodeDetector as BarcodeDetectorPolyfill } from "barcode-detector/pure"; +``` + +This approach is beneficial when you want to use a package to detect barcodes without polluting `globalThis`, or when your runtime already provides an implementation of the Barcode Detection API, but you still want this package to function. + +### Side Effects + +```ts +import "barcode-detector/side-effects"; +``` + +This approach is beneficial when you need a drop-in polyfill. If there's already an implementation of Barcode Detection API on `globalThis`, this won't take effect (type declarations will, as we cannot optionally declare types). In such cases, please use the [pure module](#pure-module) instead. + +### Both + +```ts +import { BarcodeDetector } from "barcode-detector"; +``` + +This approach combines the [pure module](#pure-module) and [side effects](#side-effects). + +## Recommended Usage in Modern Browsers + +For [modern browsers that support ES modules](https://caniuse.com/es6-module), this package can be imported via the ` + + + + ``` + +2. Script scoped access: + + ```html + + ``` + +3. With import maps: + + ```html + + + + + + ``` + +## Usage with Legacy Compatibility + +Starting from v1.2, this package supports IIFE and CJS build outputs for use cases that require legacy compatibility. + +### IIFE + +For legacy browsers that lack support for module type ` + + + + + + +``` + +### CJS + +This package can also be consumed as a commonjs package: + +1. Vanilla Javascript: + + ```js + // src/index.js + const { BarcodeDetector } = require("barcode-detector/pure"); + ``` + +2. With Typescript: + + ```ts + // src/index.ts + import { BarcodeDetector } from "barcode-detector/pure"; + ``` + + `tsconfig.json`: + + ```json + { + "compilerOptions": { + "module": "CommonJS", + "moduleResolution": "Node", + "skipLibCheck": true + }, + "include": ["src"] + } + ``` + +## `setZXingModuleOverrides` + +In addition to `BarcodeDetector`, this package exports another function called `setZXingModuleOverrides`. + +This package employs [zxing-wasm](https://github.com/Sec-ant/zxing-wasm) to enable the core barcode reading functionality. As a result, a `.wasm` binary file is fetched at runtime. The default fetch path for this binary file is: + +``` +https://fastly.jsdelivr.net/npm/zxing-wasm@/dist/reader/zxing_reader.wasm +``` + +The `setZXingModuleOverrides` function allows you to govern where the `.wasm` binary is served from, thereby enabling offline use of the package, use within a local network, or within a site having strict [CSP](https://developer.mozilla.org/docs/Web/HTTP/CSP) rules. + +For instance, should you want to inline this `.wasm` file in your build output for offline usage, with the assistance of build tools, you could try: + +```ts +// src/index.ts +import wasmFile from "../node_modules/zxing-wasm/dist/reader/zxing_reader.wasm?url"; + +import { + setZXingModuleOverrides, + BarcodeDetector, +} from "barcode-detector/pure"; + +setZXingModuleOverrides({ + locateFile: (path, prefix) => { + if (path.endsWith(".wasm")) { + return wasmFile; + } + return prefix + path; + }, +}); + +const barcodeDetector = new BarcodeDetector(); + +// detect barcodes +// ... +``` + +Alternatively, the `.wasm` file could be copied to your dist folder to be served from your local server, without incorporating it into the output as an extensive base64 data URL. + +It's noteworthy that you'll always want to choose the correct version of the `.wasm` file, so the APIs exported by it are exactly what the js code expects. + +For more information on how to use this function, you can check [the notes here](https://github.com/Sec-ant/zxing-wasm#notes) and [discussions here](https://github.com/Sec-ant/barcode-detector/issues/18) and [here](https://github.com/gruhn/vue-qrcode-reader/issues/354). + +This function is exported from all the subpaths, including the [side effects](#side-effects). + +## API + +Please check the [spec](https://wicg.github.io/shape-detection-api/#barcode-detection-api), [MDN doc](https://developer.mozilla.org/docs/Web/API/Barcode_Detection_API) and [Chromium implementation](https://github.com/chromium/chromium/tree/main/third_party/blink/renderer/modules/shapedetection) for more information. + +## Lifecycle Events + +The `BarcodeDetector` provided by this package also extends class `EventTarget` and provides 2 lifecycle events: `load` and `error`. You can use `addEventListener` and `removeEventListener` to register and remove callback hooks on these events. + +### `load` Event + +The `load` event, which is a `CustomEvent`, will be dispatched on the successful instantiation of ZXing wasm module. For advanced usage, the instantiated module is passed as the `detail` parameter. + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; + +const barcodeDetector = new BarcodeDetector(); + +barcodeDetector.addEventListener("load", ({ detail }) => { + console.log(detail); // zxing wasm module +}); +``` + +### `error` Event + +The `error` event, which is a `CustomEvent`, will be dispatched if the instantiation of ZXing wasm module is failed. An error is passed as the `detail` parameter. + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; + +const barcodeDetector = new BarcodeDetector(); + +barcodeDetector.addEventListener("error", ({ detail }) => { + console.log(detail); // an error +}); +``` + +## Example + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; + +const barcodeDetector: BarcodeDetector = new BarcodeDetector({ + formats: ["qr_code"], +}); + +const imageFile = await fetch( + "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Hello%20world!", +).then((resp) => resp.blob()); + +barcodeDetector.detect(imageFile).then(console.log); +``` + +## License + +The source code in this repository, as well as the build output, except for the parts listed below, is licensed under the [MIT license](./LICENSE). + +Test samples and resources are collected from [zxing-cpp/zxing-cpp](https://github.com/zxing-cpp/zxing-cpp), which is licensed under the [Apache-2.0 license](https://raw.githubusercontent.com/zxing-cpp/zxing-cpp/master/LICENSE), and [web-platform-tests/wpt](https://github.com/web-platform-tests/wpt), which is licensed under the [3-Clause BSD license](https://raw.githubusercontent.com/web-platform-tests/wpt/master/LICENSE.md). diff --git a/node_modules/barcode-detector/dist/cjs/BarcodeDetector.d.ts b/node_modules/barcode-detector/dist/cjs/BarcodeDetector.d.ts new file mode 100644 index 0000000..6dca7d7 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/BarcodeDetector.d.ts @@ -0,0 +1,35 @@ +/// +import { type ZXingReaderModule } from "zxing-wasm/reader"; +import { type BarcodeFormat, type ReadResultBarcodeFormat } from "./utils.js"; +export { type BarcodeFormat } from "./utils.js"; +export interface BarcodeDetectorOptions { + formats?: BarcodeFormat[]; +} +export interface Point2D { + x: number; + y: number; +} +export interface DetectedBarcode { + boundingBox: DOMRectReadOnly; + rawValue: string; + format: ReadResultBarcodeFormat; + cornerPoints: [Point2D, Point2D, Point2D, Point2D]; +} +interface CustomEventMap { + load: CustomEvent; + error: CustomEvent; +} +type ChangeEventListener = (type: K, callback: ((evt: CustomEventMap[K]) => void) | { + handleEvent(evt: CustomEventMap[K]): void; +} | null, options?: boolean | AddEventListenerOptions | undefined) => void; +export interface BarcodeDetector { + addEventListener: ChangeEventListener; + removeEventListener: ChangeEventListener; +} +export declare class BarcodeDetector extends EventTarget { + #private; + constructor(barcodeDectorOptions?: BarcodeDetectorOptions); + static getSupportedFormats(): Promise; + detect(image: ImageBitmapSourceWebCodecs): Promise; +} +export { setZXingModuleOverrides } from "zxing-wasm/reader"; diff --git a/node_modules/barcode-detector/dist/cjs/index.d.ts b/node_modules/barcode-detector/dist/cjs/index.d.ts new file mode 100644 index 0000000..5785a01 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/index.d.ts @@ -0,0 +1,2 @@ +import "./side-effects.js"; +export * from "./pure.js"; diff --git a/node_modules/barcode-detector/dist/cjs/index.js b/node_modules/barcode-detector/dist/cjs/index.js new file mode 100644 index 0000000..b986716 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/index.js @@ -0,0 +1 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./side-effects.js");const e=require("./pure.js");exports.BarcodeDetector=e.BarcodeDetector;exports.setZXingModuleOverrides=e.setZXingModuleOverrides; diff --git a/node_modules/barcode-detector/dist/cjs/package.json b/node_modules/barcode-detector/dist/cjs/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/node_modules/barcode-detector/dist/cjs/pure.d.ts b/node_modules/barcode-detector/dist/cjs/pure.d.ts new file mode 100644 index 0000000..29bd716 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/pure.d.ts @@ -0,0 +1 @@ +export * from "./BarcodeDetector.js"; diff --git a/node_modules/barcode-detector/dist/cjs/pure.js b/node_modules/barcode-detector/dist/cjs/pure.js new file mode 100644 index 0000000..0dd6016 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/pure.js @@ -0,0 +1,3 @@ +"use strict";var Ye=(o,h,s)=>{if(!h.has(o))throw TypeError("Cannot "+s)};var re=(o,h,s)=>(Ye(o,h,"read from private field"),s?s.call(o):h.get(o)),ze=(o,h,s)=>{if(h.has(o))throw TypeError("Cannot add the same private member more than once");h instanceof WeakSet?h.add(o):h.set(o,s)},Ne=(o,h,s,$)=>(Ye(o,h,"write to private field"),$?$.call(o,s):h.set(o,s),s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Qe=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],Da=[...Qe,["unknown"]].map(o=>o[0]),It=new Map(Qe);function xa(o){for(const[h,s]of It)if(o===s)return h;return"unknown"}function Fa(o){if(Ze(o))return{width:o.naturalWidth,height:o.naturalHeight};if(Je(o))return{width:o.width.baseVal.value,height:o.height.baseVal.value};if(Ke(o))return{width:o.videoWidth,height:o.videoHeight};if(er(o))return{width:o.width,height:o.height};if(nr(o))return{width:o.displayWidth,height:o.displayHeight};if(tr(o))return{width:o.width,height:o.height};if(rr(o))return{width:o.width,height:o.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ze(o){try{return o instanceof HTMLImageElement}catch{return!1}}function Je(o){try{return o instanceof SVGImageElement}catch{return!1}}function Ke(o){try{return o instanceof HTMLVideoElement}catch{return!1}}function tr(o){try{return o instanceof HTMLCanvasElement}catch{return!1}}function er(o){try{return o instanceof ImageBitmap}catch{return!1}}function rr(o){try{return o instanceof OffscreenCanvas}catch{return!1}}function nr(o){try{return o instanceof VideoFrame}catch{return!1}}function ar(o){try{return o instanceof Blob}catch{return!1}}function Sa(o){try{return o instanceof ImageData}catch{return!1}}function Ma(o,h){try{const s=new OffscreenCanvas(o,h);if(s.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return s;throw void 0}catch{const s=document.createElement("canvas");return s.width=o,s.height=h,s}}async function or(o){if(Ze(o)&&!await Wa(o))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Je(o)&&!await ka(o))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(nr(o)&&Ha(o))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(Ke(o)&&(o.readyState===0||o.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(er(o)&&Ua(o))throw new DOMException("The image source is detached.","InvalidStateError");const{width:h,height:s}=Fa(o);if(h===0||s===0)return null;const g=Ma(h,s).getContext("2d");g.drawImage(o,0,0);try{return g.getImageData(0,0,h,s)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function ja(o){let h;try{if(globalThis.createImageBitmap)h=await createImageBitmap(o);else if(globalThis.Image){h=new Image;let $="";try{$=URL.createObjectURL(o),h.src=$,await h.decode()}finally{URL.revokeObjectURL($)}}else return o}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await or(h)}function Ia(o){const{width:h,height:s}=o;if(h===0||s===0)return null;const $=o.getContext("2d");try{return $.getImageData(0,0,h,s)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Ra(o){if(ar(o))return await ja(o);if(Sa(o)){if(Ba(o))throw new DOMException("The image data has been detached.","InvalidStateError");return o}return tr(o)||rr(o)?Ia(o):await or(o)}async function Wa(o){try{return await o.decode(),!0}catch{return!1}}async function ka(o){var h;try{return await((h=o.decode)==null?void 0:h.call(o)),!0}catch{return!1}}function Ha(o){return o.format===null}function Ba(o){return o.data.buffer.byteLength===0}function Ua(o){return o.width===0&&o.height===0}function Ge(o,h){return o instanceof DOMException?new DOMException(`${h}: ${o.message}`,o.name):o instanceof Error?new o.constructor(`${h}: ${o.message}`):new Error(`${h}: ${o}`)}const Xe=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Va(o){return o.join("|")}function La(o){const h=qe(o);let s=0,$=Xe.length-1;for(;s<=$;){const g=Math.floor((s+$)/2),b=Xe[g],H=qe(b);if(H===h)return b;H{const s=o.match(/_(.+?)\.wasm$/);return s?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${s[1]}/${o}`:h+o}};let ne=new WeakMap;function ae(o,h){var s;const $=ne.get(o);if($!=null&&$.modulePromise&&(h===void 0||Object.is(h,$.moduleOverrides)))return $.modulePromise;const g=(s=h!=null?h:$==null?void 0:$.moduleOverrides)!=null?s:Qa,b=o({...g});return ne.set(o,{moduleOverrides:g,modulePromise:b}),b}function Za(o,h){ne.set(o,{moduleOverrides:h})}async function Ja(o,h,s=lt){const $={...lt,...s},g=await ae(o),{size:b}=h,H=new Uint8Array(await h.arrayBuffer()),L=g._malloc(b);g.HEAPU8.set(H,L);const B=g.readBarcodesFromImage(L,b,ir(g,$));g._free(L);const S=[];for(let Y=0;Y{var o=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(h={}){var s=h,$,g;s.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},s),H="./this.program",L=typeof window=="object",B=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function Y(t){return s.locateFile?s.locateFile(t,S):S+t}var G;(L||B)&&(B?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),o&&(S=o),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",B&&(G=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),s.print||console.log.bind(console);var U=s.printErr||console.error.bind(console);Object.assign(s,b),b=null,s.arguments&&s.arguments,s.thisProgram&&(H=s.thisProgram),s.quit&&s.quit;var Q;s.wasmBinary&&(Q=s.wasmBinary),typeof WebAssembly!="object"&&bt("no native wasm support detected");var tt,dt=!1,V,W,at,ft,k,_,oe,ie;function se(){var t=tt.buffer;s.HEAP8=V=new Int8Array(t),s.HEAP16=at=new Int16Array(t),s.HEAPU8=W=new Uint8Array(t),s.HEAPU16=ft=new Uint16Array(t),s.HEAP32=k=new Int32Array(t),s.HEAPU32=_=new Uint32Array(t),s.HEAPF32=oe=new Float32Array(t),s.HEAPF64=ie=new Float64Array(t)}var ue=[],ce=[],le=[];function ur(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)dr(s.preRun.shift());Wt(ue)}function cr(){Wt(ce)}function lr(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)hr(s.postRun.shift());Wt(le)}function dr(t){ue.unshift(t)}function fr(t){ce.unshift(t)}function hr(t){le.unshift(t)}var et=0,ht=null;function pr(t){var e;et++,(e=s.monitorRunDependencies)===null||e===void 0||e.call(s,et)}function mr(t){var e;if(et--,(e=s.monitorRunDependencies)===null||e===void 0||e.call(s,et),et==0&&ht){var r=ht;ht=null,r()}}function bt(t){var e;(e=s.onAbort)===null||e===void 0||e.call(s,t),t="Aborted("+t+")",U(t),dt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var vr="data:application/octet-stream;base64,",de=t=>t.startsWith(vr),ot;ot="zxing_reader.wasm",de(ot)||(ot=Y(ot));function fe(t){if(t==ot&&Q)return new Uint8Array(Q);if(G)return G(t);throw"both async and sync fetching of the wasm failed"}function yr(t){return!Q&&(L||B)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>fe(t)):Promise.resolve().then(()=>fe(t))}function he(t,e,r){return yr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{U(`failed to asynchronously prepare wasm: ${n}`),bt(n)})}function gr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!de(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,r);return i.then(n,function(u){return U(`wasm streaming compile failed: ${u}`),U("falling back to ArrayBuffer instantiation"),he(e,r,n)})}):he(e,r,n)}function wr(){var t={a:sa};function e(n,a){return M=n.exports,tt=M.ia,se(),Te=M.ma,fr(M.ja),mr(),M}pr();function r(n){e(n.instance)}if(s.instantiateWasm)try{return s.instantiateWasm(t,e)}catch(n){U(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return gr(Q,ot,t,r).catch(g),{}}var Wt=t=>{for(;t.length>0;)t.shift()(s)};s.noExitRuntime;var Ct=[],Tt=0,$r=t=>{var e=new kt(t);return e.get_caught()||(e.set_caught(!0),Tt--),e.set_rethrown(!1),Ct.push(e),We(e.excPtr),e.get_exception_ptr()},Z=0,br=()=>{P(0,0);var t=Ct.pop();Re(t.excPtr),Z=0};function kt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,V[this.ptr+12>>0]=e},this.get_caught=function(){return V[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,V[this.ptr+13>>0]=e},this.get_rethrown=function(){return V[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=He(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var Cr=t=>{throw Z||(Z=t),Z},Ht=t=>{var e=Z;if(!e)return $t(0),0;var r=new kt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return $t(0),e;for(var a in t){var i=t[a];if(i===0||i===n)break;var u=r.ptr+16;if(ke(i,n,u))return $t(i),e}return $t(n),e},Tr=()=>Ht([]),_r=t=>Ht([t]),Pr=(t,e)=>Ht([t,e]),Er=()=>{var t=Ct.pop();t||bt("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(Ct.push(t),t.set_rethrown(!0),t.set_caught(!1),Tt++),Z=e,Z},Ar=(t,e,r)=>{var n=new kt(t);throw n.init(e,r),Z=t,Tt++,Z},Or=()=>Tt,_t={},Bt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Ut(t){return this.fromWireType(k[t>>2])}var it={},rt={},Pt={},pe,Et=t=>{throw new pe(t)},nt=(t,e,r)=>{t.forEach(function(c){Pt[c]=e});function n(c){var l=r(c);l.length!==t.length&&Et("Mismatched type converter count");for(var f=0;f{rt.hasOwnProperty(c)?a[l]=rt[c]:(i.push(c),it.hasOwnProperty(c)||(it[c]=[]),it[c].push(()=>{a[l]=rt[c],++u,u===i.length&&n(a)}))}),i.length===0&&n(a)},Dr=t=>{var e=_t[t];delete _t[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,i=a.map(u=>u.getterReturnType).concat(a.map(u=>u.setterArgumentType));nt([t],i,u=>{var c={};return a.forEach((l,f)=>{var p=l.fieldName,v=u[f],y=l.getter,w=l.getterContext,E=u[f+a.length],x=l.setter,T=l.setterContext;c[p]={read:R=>v.fromWireType(y(w,R)),write:(R,d)=>{var m=[];x(T,R,E.toWireType(m,d)),Bt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var p in c)f[p]=c[p].read(l);return n(l),f},toWireType:(l,f)=>{for(var p in c)if(!(p in f))throw new TypeError(`Missing field: "${p}"`);var v=r();for(p in c)c[p].write(v,f[p]);return l!==null&&l.push(n,v),v},argPackAdvance:q,readValueFromPointer:Ut,destructorFunction:n}]})},xr=(t,e,r,n,a)=>{},Fr=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);me=t},me,I=t=>{for(var e="",r=t;W[r];)e+=me[W[r++]];return e},st,C=t=>{throw new st(t)};function Sr(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),rt.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(rt[t]=e,delete Pt[t],it.hasOwnProperty(t)){var a=it[t];delete it[t],a.forEach(i=>i())}}function X(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Sr(t,e,r)}var q=8,Mr=(t,e,r,n)=>{e=I(e),X(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?r:n},argPackAdvance:q,readValueFromPointer:function(a){return this.fromWireType(W[a])},destructorFunction:null})},jr=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Vt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Lt=!1,ve=t=>{},Ir=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},ye=t=>{t.count.value-=1;var e=t.count.value===0;e&&Ir(t)},ge=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=ge(t,e,r.baseClass);return n===null?null:r.downcast(n)},we={},Rr=()=>Object.keys(vt).length,Wr=()=>{var t=[];for(var e in vt)vt.hasOwnProperty(e)&&t.push(vt[e]);return t},pt=[],Yt=()=>{for(;pt.length;){var t=pt.pop();t.$$.deleteScheduled=!1,t.delete()}},mt,kr=t=>{mt=t,pt.length&&mt&&mt(Yt)},Hr=()=>{s.getInheritedInstanceCount=Rr,s.getLiveInheritedInstances=Wr,s.flushPendingDeletes=Yt,s.setDelayFunction=kr},vt={},Br=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},Ur=(t,e)=>(e=Br(t,e),vt[e]),At=(t,e)=>{(!e.ptrType||!e.ptr)&&Et("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&Et("Both smartPtrType and smartPtr must be specified"),e.count={value:1},yt(Object.create(t,{$$:{value:e,writable:!0}}))};function Vr(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=Ur(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?At(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):At(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var i=this.registeredClass.getActualType(e),u=we[i];if(!u)return a.call(this);var c;this.isConst?c=u.constPointerType:c=u.pointerType;var l=ge(e,this.registeredClass,c.registeredClass);return l===null?a.call(this):this.isSmartPointer?At(c.registeredClass.instancePrototype,{ptrType:c,ptr:l,smartPtrType:this,smartPtr:t}):At(c.registeredClass.instancePrototype,{ptrType:c,ptr:l})}var yt=t=>typeof FinalizationRegistry>"u"?(yt=e=>e,t):(Lt=new FinalizationRegistry(e=>{ye(e.$$)}),yt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Lt.register(e,a,e)}return e},ve=e=>Lt.unregister(e),yt(t)),Lr=()=>{Object.assign(Ot.prototype,{isAliasOf(t){if(!(this instanceof Ot)||!(t instanceof Ot))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Vt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=yt(Object.create(Object.getPrototypeOf(this),{$$:{value:jr(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Vt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),ve(this),ye(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Vt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),pt.push(this),pt.length===1&&mt&&mt(Yt),this.$$.deleteScheduled=!0,this}})};function Ot(){}var gt=(t,e)=>Object.defineProperty(e,"name",{value:t}),$e=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},zt=(t,e,r)=>{s.hasOwnProperty(t)?((r===void 0||s[t].overloadTable!==void 0&&s[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),$e(s,t,t),s.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[t].overloadTable[r]=e):(s[t]=e,r!==void 0&&(s[t].numArguments=r))},Yr=48,zr=57,Nr=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Yr&&e<=zr?`_${t}`:t};function Gr(t,e,r,n,a,i,u,c){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=i,this.upcast=u,this.downcast=c,this.pureVirtualFunctions=[]}var Nt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function Xr(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${Zt(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Nt(e.$$.ptr,r,this.registeredClass);return n}function qr(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${Zt(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Nt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,J.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function Qr(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${Zt(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Nt(e.$$.ptr,r,this.registeredClass);return n}function be(t){return this.fromWireType(_[t>>2])}var Zr=()=>{Object.assign(Dt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:q,readValueFromPointer:be,deleteObject(t){t!==null&&t.delete()},fromWireType:Vr})};function Dt(t,e,r,n,a,i,u,c,l,f,p){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=i,this.sharingPolicy=u,this.rawGetPointee=c,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=p,!a&&e.baseClass===void 0?n?(this.toWireType=Xr,this.destructorFunction=null):(this.toWireType=Qr,this.destructorFunction=null):this.toWireType=qr}var Ce=(t,e,r)=>{s.hasOwnProperty(t)||Et("Replacing nonexistant public symbol"),s[t].overloadTable!==void 0&&r!==void 0?s[t].overloadTable[r]=e:(s[t]=e,s[t].argCount=r)},Jr=(t,e,r)=>{var n=s["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},xt=[],Te,A=t=>{var e=xt[t];return e||(t>=xt.length&&(xt.length=t+1),xt[t]=e=Te.get(t)),e},Kr=(t,e,r)=>{if(t.includes("j"))return Jr(t,e,r);var n=A(e).apply(null,r);return n},tn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Kr(t,e,r)}},N=(t,e)=>{t=I(t);function r(){return t.includes("j")?tn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},en=(t,e)=>{var r=gt(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},_e,Pe=t=>{var e=Ie(t),r=I(e);return K(e),r},Ft=(t,e)=>{var r=[],n={};function a(i){if(!n[i]&&!rt[i]){if(Pt[i]){Pt[i].forEach(a);return}r.push(i),n[i]=!0}}throw e.forEach(a),new _e(`${t}: `+r.map(Pe).join([", "]))},rn=(t,e,r,n,a,i,u,c,l,f,p,v,y)=>{p=I(p),i=N(a,i),c&&(c=N(u,c)),f&&(f=N(l,f)),y=N(v,y);var w=Nr(p);zt(w,function(){Ft(`Cannot construct ${p} due to unbound types`,[n])}),nt([t,e,r],n?[n]:[],function(E){E=E[0];var x,T;n?(x=E.registeredClass,T=x.instancePrototype):T=Ot.prototype;var R=gt(p,function(){if(Object.getPrototypeOf(this)!==d)throw new st("Use 'new' to construct "+p);if(m.constructor_body===void 0)throw new st(p+" has no accessible constructor");var Le=m.constructor_body[arguments.length];if(Le===void 0)throw new st(`Tried to invoke ctor of ${p} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return Le.apply(this,arguments)}),d=Object.create(T,{constructor:{value:R}});R.prototype=d;var m=new Gr(p,R,d,y,x,i,c,f);if(m.baseClass){var F,j;(j=(F=m.baseClass).__derivedClasses)!==null&&j!==void 0||(F.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var ut=new Dt(p,m,!0,!1,!1),jt=new Dt(p+"*",m,!1,!1,!1),Ve=new Dt(p+" const*",m,!1,!0,!1);return we[t]={pointerType:jt,constPointerType:Ve},Ce(w,R),[ut,jt,Ve]})},Gt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function nn(t){for(var e=1;e{var u=Gt(e,r);a=N(n,a),nt([],[t],function(c){c=c[0];var l=`constructor ${c.name}`;if(c.registeredClass.constructor_body===void 0&&(c.registeredClass.constructor_body=[]),c.registeredClass.constructor_body[e-1]!==void 0)throw new st(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${c.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return c.registeredClass.constructor_body[e-1]=()=>{Ft(`Cannot construct ${c.name} due to unbound types`,u)},nt([],u,f=>(f.splice(1,0,null),c.registeredClass.constructor_body[e-1]=Xt(l,f,null,a,i),[])),[]})},Ee=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},on=(t,e,r,n,a,i,u,c,l)=>{var f=Gt(r,n);e=I(e),e=Ee(e),i=N(a,i),nt([],[t],function(p){p=p[0];var v=`${p.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),c&&p.registeredClass.pureVirtualFunctions.push(e);function y(){Ft(`Cannot call ${v} due to unbound types`,f)}var w=p.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==p.name&&E.argCount===r-2?(y.argCount=r-2,y.className=p.name,w[e]=y):($e(w,e,v),w[e].overloadTable[r-2]=y),nt([],f,function(x){var T=Xt(v,x,p,i,u);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function sn(){Object.assign(Ae.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function Ae(){this.allocated=[void 0],this.freelist=[]}var z=new Ae,qt=t=>{t>=z.reserved&&--z.get(t).refcount===0&&z.free(t)},un=()=>{for(var t=0,e=z.reserved;e{z.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),z.reserved=z.allocated.length,s.count_emval_handles=un},J={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),z.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return z.allocate({refcount:1,value:t})}}},ln=(t,e)=>{e=I(e),X(t,{name:e,fromWireType:r=>{var n=J.toValue(r);return qt(r),n},toWireType:(r,n)=>J.toHandle(n),argPackAdvance:q,readValueFromPointer:Ut,destructorFunction:null})},dn=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(V[n>>0])}:function(n){return this.fromWireType(W[n>>0])};case 2:return r?function(n){return this.fromWireType(at[n>>1])}:function(n){return this.fromWireType(ft[n>>1])};case 4:return r?function(n){return this.fromWireType(k[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},fn=(t,e,r,n)=>{e=I(e);function a(){}a.values={},X(t,{name:e,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,u)=>u.value,argPackAdvance:q,readValueFromPointer:dn(e,r,n),destructorFunction:null}),zt(e,a)},Qt=(t,e)=>{var r=rt[t];return r===void 0&&C(e+" has unknown type "+Pe(t)),r},hn=(t,e,r)=>{var n=Qt(t,"enum");e=I(e);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:gt(`${n.name}_${e}`,function(){})}});a.values[r]=i,a[e]=i},Zt=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},pn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(oe[r>>2])};case 8:return function(r){return this.fromWireType(ie[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},mn=(t,e,r)=>{e=I(e),X(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:q,readValueFromPointer:pn(e,r),destructorFunction:null})},vn=(t,e,r,n,a,i,u)=>{var c=Gt(e,r);t=I(t),t=Ee(t),a=N(n,a),zt(t,function(){Ft(`Cannot call ${t} due to unbound types`,c)},e-1),nt([],c,function(l){var f=[l[0],null].concat(l.slice(1));return Ce(t,Xt(t,f,null,a,i),e-1),[]})},yn=(t,e,r)=>{switch(e){case 1:return r?n=>V[n>>0]:n=>W[n>>0];case 2:return r?n=>at[n>>1]:n=>ft[n>>1];case 4:return r?n=>k[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},gn=(t,e,r,n,a)=>{e=I(e);var i=p=>p;if(n===0){var u=32-8*r;i=p=>p<>>u}var c=e.includes("unsigned"),l=(p,v)=>{},f;c?f=function(p,v){return l(v,this.name),v>>>0}:f=function(p,v){return l(v,this.name),v},X(t,{name:e,fromWireType:i,toWireType:f,argPackAdvance:q,readValueFromPointer:yn(e,r,n!==0),destructorFunction:null})},wn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function i(u){var c=_[u>>2],l=_[u+4>>2];return new a(V.buffer,l,c)}r=I(r),X(t,{name:r,fromWireType:i,argPackAdvance:q,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},Oe=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,i=r+n-1,u=0;u=55296&&c<=57343){var l=t.charCodeAt(++u);c=65536+((c&1023)<<10)|l&1023}if(c<=127){if(r>=i)break;e[r++]=c}else if(c<=2047){if(r+1>=i)break;e[r++]=192|c>>6,e[r++]=128|c&63}else if(c<=65535){if(r+2>=i)break;e[r++]=224|c>>12,e[r++]=128|c>>6&63,e[r++]=128|c&63}else{if(r+3>=i)break;e[r++]=240|c>>18,e[r++]=128|c>>12&63,e[r++]=128|c>>6&63,e[r++]=128|c&63}}return e[r]=0,r-a},$n=(t,e,r)=>Oe(t,W,e,r),De=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},xe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,bn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&xe)return xe.decode(t.subarray(e,a));for(var i="";e>10,56320|f&1023)}}return i},Jt=(t,e)=>t?bn(W,t,e):"",Cn=(t,e)=>{e=I(e);var r=e==="std::string";X(t,{name:e,fromWireType(n){var a=_[n>>2],i=n+4,u;if(r)for(var c=i,l=0;l<=a;++l){var f=i+l;if(l==a||W[f]==0){var p=f-c,v=Jt(c,p);u===void 0?u=v:(u+="\0",u+=v),c=f+1}}else{for(var y=new Array(a),l=0;l>2]=i,r&&u)$n(a,l,i+1);else if(u)for(var f=0;f255&&(K(l),C("String has UTF-16 code units that do not fit in 8 bits")),W[l+f]=p}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&ft[n];)++n;if(r=n<<1,r-t>32&&Fe)return Fe.decode(W.subarray(t,r));for(var i="",u=0;!(u>=e/2);++u){var c=at[t+u*2>>1];if(c==0)break;i+=String.fromCharCode(c)}return i},_n=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,i=r>1]=c,e+=2}return at[e>>1]=0,e-a},Pn=t=>t.length*2,En=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=k[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},An=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,i=a+r-4,u=0;u=55296&&c<=57343){var l=t.charCodeAt(++u);c=65536+((c&1023)<<10)|l&1023}if(k[e>>2]=c,e+=4,e+4>i)break}return k[e>>2]=0,e-a},On=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},Dn=(t,e,r)=>{r=I(r);var n,a,i,u,c;e===2?(n=Tn,a=_n,u=Pn,i=()=>ft,c=1):e===4&&(n=En,a=An,u=On,i=()=>_,c=2),X(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],p=i(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||p[E>>c]==0){var x=E-y,T=n(y,x);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return K(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var p=u(f),v=ee(4+p+e);return _[v>>2]=p>>c,a(f,v+4,p+e),l!==null&&l.push(K,v),v},argPackAdvance:q,readValueFromPointer:Ut,destructorFunction(l){K(l)}})},xn=(t,e,r,n,a,i)=>{_t[t]={name:I(e),rawConstructor:N(r,n),rawDestructor:N(a,i),fields:[]}},Fn=(t,e,r,n,a,i,u,c,l,f)=>{_t[t].fields.push({fieldName:I(e),getterReturnType:r,getter:N(n,a),getterContext:i,setterArgumentType:u,setter:N(c,l),setterContext:f})},Sn=(t,e)=>{e=I(e),X(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},Kt=[],Mn=(t,e,r,n)=>(t=Kt[t],e=J.toValue(e),t(null,e,r,n)),jn={},In=t=>{var e=jn[t];return e===void 0?I(t):e},Se=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Rn=t=>t===0?J.toHandle(Se()):(t=In(t),J.toHandle(Se()[t])),Wn=t=>{var e=Kt.length;return Kt.push(t),e},kn=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},Hn=Reflect.construct,Bn=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=J.toHandle(n)),a},Un=(t,e,r)=>{var n=kn(t,e),a=n.shift();t--;var i=new Array(t),u=(l,f,p,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return Wn(gt(c,u))},Vn=t=>{t>4&&(z.get(t).refcount+=1)},Ln=t=>{var e=J.toValue(t);Bt(e),qt(t)},Yn=(t,e)=>{t=Qt(t,"_emval_take_value");var r=t.readValueFromPointer(e);return J.toHandle(r)},zn=()=>{bt("")},Nn=(t,e,r)=>W.copyWithin(t,e,e+r),Gn=()=>2147483648,Xn=t=>{var e=tt.buffer,r=(t-e.byteLength+65535)/65536;try{return tt.grow(r),se(),1}catch{}},qn=t=>{var e=W.length;t>>>=0;var r=Gn();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var i=e*(1+.2/a);i=Math.min(i,t+100663296);var u=Math.min(r,n(Math.max(t,i),65536)),c=Xn(u);if(c)return!0}return!1},te={},Qn=()=>H||"./this.program",wt=()=>{if(!wt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Qn()};for(var r in te)te[r]===void 0?delete e[r]:e[r]=te[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);wt.strings=n}return wt.strings},Zn=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);V[e>>0]=0},Jn=(t,e)=>{var r=0;return wt().forEach((n,a)=>{var i=e+r;_[t+a*4>>2]=i,Zn(n,i),r+=n.length+1}),0},Kn=(t,e)=>{var r=wt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},ta=t=>t,St=t=>t%4===0&&(t%100!==0||t%400===0),ea=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Me=[31,29,31,30,31,30,31,31,30,31,30,31],je=[31,28,31,30,31,30,31,31,30,31,30,31],ra=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=St(r.getFullYear()),a=r.getMonth(),i=(n?Me:je)[a];if(e>i-r.getDate())e-=i-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function na(t,e,r){var n=r>0?r:De(t)+1,a=new Array(n),i=Oe(t,a,0,a.length);return e&&(a.length=i),a}var aa=(t,e)=>{V.set(t,e)},oa=(t,e,r,n)=>{var a=_[n+40>>2],i={tm_sec:k[n>>2],tm_min:k[n+4>>2],tm_hour:k[n+8>>2],tm_mday:k[n+12>>2],tm_mon:k[n+16>>2],tm_year:k[n+20>>2],tm_wday:k[n+24>>2],tm_yday:k[n+28>>2],tm_isdst:k[n+32>>2],tm_gmtoff:k[n+36>>2],tm_zone:a?Jt(a):""},u=Jt(r),c={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in c)u=u.replace(new RegExp(l,"g"),c[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],p=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,F){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=F(d.getFullYear()-m.getFullYear()))===0&&(j=F(d.getMonth()-m.getMonth()))===0&&(j=F(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function x(d){var m=ra(new Date(d.tm_year+1900,0,1),d.tm_yday),F=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),ut=E(F),jt=E(j);return w(ut,m)<=0?w(jt,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>p[d.tm_mon].substring(0,3),"%B":d=>p[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>x(d).toString().substring(2),"%G":d=>x(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+ea(St(d.tm_year+1900)?Me:je,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var F=(d.tm_wday+371-d.tm_yday)%7;F!=4&&(F!=3||!St(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&St(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,F=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(F?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};u=u.replace(/%%/g,"\0\0");for(var l in T)u.includes(l)&&(u=u.replace(new RegExp(l,"g"),T[l](i)));u=u.replace(/\0\0/g,"%");var R=na(u,!1);return R.length>e?0:(aa(R,t),R.length-1)},ia=(t,e,r,n,a)=>oa(t,e,r,n);pe=s.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},Fr(),st=s.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},Lr(),Hr(),Zr(),_e=s.UnboundTypeError=en(Error,"UnboundTypeError"),sn(),cn();var sa={s:$r,u:br,b:Tr,g:_r,q:Pr,J:Er,f:Ar,V:Or,d:Cr,da:Dr,Q:xr,_:Mr,ca:rn,ba:an,w:on,Y:ln,x:fn,h:hn,L:mn,M:vn,t:gn,o:wn,K:Cn,C:Dn,A:xn,ea:Fn,$:Sn,R:Mn,ha:qt,fa:Rn,Z:Un,N:Vn,O:Ln,aa:Yn,B:zn,X:Nn,W:qn,T:Jn,U:Kn,E:Ta,D:fa,F:Ca,n:_a,a:ua,e:pa,m:da,k:va,H:$a,v:ga,G:ba,z:Ea,P:Oa,l:ma,j:ha,c:la,p:ca,I:wa,r:Pa,i:ya,y:Aa,ga:ta,S:ia},M=wr(),K=s._free=t=>(K=s._free=M.ka)(t),ee=s._malloc=t=>(ee=s._malloc=M.la)(t),Ie=t=>(Ie=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),$t=t=>($t=M.pa)(t),O=()=>(O=M.qa)(),D=t=>(D=M.ra)(t),Re=t=>(Re=M.sa)(t),We=t=>(We=M.ta)(t),ke=(t,e,r)=>(ke=M.ua)(t,e,r),He=t=>(He=M.va)(t);s.dynCall_viijii=(t,e,r,n,a,i,u)=>(s.dynCall_viijii=M.wa)(t,e,r,n,a,i,u);var Be=s.dynCall_jiiii=(t,e,r,n,a)=>(Be=s.dynCall_jiiii=M.xa)(t,e,r,n,a);s.dynCall_iiiiij=(t,e,r,n,a,i,u)=>(s.dynCall_iiiiij=M.ya)(t,e,r,n,a,i,u),s.dynCall_iiiiijj=(t,e,r,n,a,i,u,c,l)=>(s.dynCall_iiiiijj=M.za)(t,e,r,n,a,i,u,c,l),s.dynCall_iiiiiijj=(t,e,r,n,a,i,u,c,l,f)=>(s.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,i,u,c,l,f);function ua(t,e){var r=O();try{return A(t)(e)}catch(n){if(D(r),n!==n+0)throw n;P(1,0)}}function ca(t,e,r,n){var a=O();try{A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function la(t,e,r){var n=O();try{A(t)(e,r)}catch(a){if(D(n),a!==a+0)throw a;P(1,0)}}function da(t,e,r,n){var a=O();try{return A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function fa(t,e,r,n,a){var i=O();try{return A(t)(e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}function ha(t,e){var r=O();try{A(t)(e)}catch(n){if(D(r),n!==n+0)throw n;P(1,0)}}function pa(t,e,r){var n=O();try{return A(t)(e,r)}catch(a){if(D(n),a!==a+0)throw a;P(1,0)}}function ma(t){var e=O();try{A(t)()}catch(r){if(D(e),r!==r+0)throw r;P(1,0)}}function va(t,e,r,n,a){var i=O();try{return A(t)(e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}function ya(t,e,r,n,a,i,u,c,l,f,p){var v=O();try{A(t)(e,r,n,a,i,u,c,l,f,p)}catch(y){if(D(v),y!==y+0)throw y;P(1,0)}}function ga(t,e,r,n,a,i,u){var c=O();try{return A(t)(e,r,n,a,i,u)}catch(l){if(D(c),l!==l+0)throw l;P(1,0)}}function wa(t,e,r,n,a){var i=O();try{A(t)(e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}function $a(t,e,r,n,a,i){var u=O();try{return A(t)(e,r,n,a,i)}catch(c){if(D(u),c!==c+0)throw c;P(1,0)}}function ba(t,e,r,n,a,i,u,c){var l=O();try{return A(t)(e,r,n,a,i,u,c)}catch(f){if(D(l),f!==f+0)throw f;P(1,0)}}function Ca(t,e,r,n){var a=O();try{return A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function Ta(t,e,r,n){var a=O();try{return A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function _a(t){var e=O();try{return A(t)()}catch(r){if(D(e),r!==r+0)throw r;P(1,0)}}function Pa(t,e,r,n,a,i,u,c){var l=O();try{A(t)(e,r,n,a,i,u,c)}catch(f){if(D(l),f!==f+0)throw f;P(1,0)}}function Ea(t,e,r,n,a,i,u,c,l,f,p,v){var y=O();try{return A(t)(e,r,n,a,i,u,c,l,f,p,v)}catch(w){if(D(y),w!==w+0)throw w;P(1,0)}}function Aa(t,e,r,n,a,i,u,c,l,f,p,v,y,w,E,x){var T=O();try{A(t)(e,r,n,a,i,u,c,l,f,p,v,y,w,E,x)}catch(R){if(D(T),R!==R+0)throw R;P(1,0)}}function Oa(t,e,r,n,a){var i=O();try{return Be(t,e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}var Mt;ht=function t(){Mt||Ue(),Mt||(ht=t)};function Ue(){if(et>0||(ur(),et>0))return;function t(){Mt||(Mt=!0,s.calledRun=!0,!dt&&(cr(),$(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),lr()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),t()},1)):t()}if(s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ue(),h.ready}})();function to(o){return ae(Rt,o)}function eo(o){return Za(Rt,o)}async function ro(o,h){return Ja(Rt,o,h)}async function no(o,h){return Ka(Rt,o,h)}var ct;class ao extends EventTarget{constructor(s={}){var $;super();ze(this,ct,void 0);try{const g=($=s==null?void 0:s.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!It.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),Ne(this,ct,g!=null?g:[]),to().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw Ge(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return Da.filter(s=>s!=="unknown")}async detect(s){try{const $=await Ra(s);if($===null)return[];let g;try{ar($)?g=await ro($,{tryHarder:!0,formats:re(this,ct).map(b=>It.get(b))}):g=await no($,{tryHarder:!0,formats:re(this,ct).map(b=>It.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:H,y:L},topRight:{x:B,y:S},bottomLeft:{x:Y,y:G},bottomRight:{x:U,y:Q}}=b.position,tt=Math.min(H,B,Y,U),dt=Math.min(L,S,G,Q),V=Math.max(H,B,Y,U),W=Math.max(L,S,G,Q);return{boundingBox:new DOMRectReadOnly(tt,dt,V-tt,W-dt),rawValue:b.text,format:xa(b.format),cornerPoints:[{x:H,y:L},{x:B,y:S},{x:U,y:Q},{x:Y,y:G}]}})}catch($){throw Ge($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}ct=new WeakMap;exports.BarcodeDetector=ao;exports.setZXingModuleOverrides=eo; diff --git a/node_modules/barcode-detector/dist/cjs/side-effects.d.ts b/node_modules/barcode-detector/dist/cjs/side-effects.d.ts new file mode 100644 index 0000000..9b0973c --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/side-effects.d.ts @@ -0,0 +1,8 @@ +export { setZXingModuleOverrides } from "./BarcodeDetector.js"; +declare global { + var BarcodeDetector: typeof import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeDetector = import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeFormat = import("./BarcodeDetector.js").BarcodeFormat; + type BarcodeDetectorOptions = import("./BarcodeDetector.js").BarcodeDetectorOptions; + type DetectedBarcode = import("./BarcodeDetector.js").DetectedBarcode; +} diff --git a/node_modules/barcode-detector/dist/cjs/side-effects.js b/node_modules/barcode-detector/dist/cjs/side-effects.js new file mode 100644 index 0000000..4173943 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/side-effects.js @@ -0,0 +1 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./pure.js");var e;(e=globalThis.BarcodeDetector)!=null||(globalThis.BarcodeDetector=r.BarcodeDetector);exports.setZXingModuleOverrides=r.setZXingModuleOverrides; diff --git a/node_modules/barcode-detector/dist/cjs/utils.d.ts b/node_modules/barcode-detector/dist/cjs/utils.d.ts new file mode 100644 index 0000000..65583cb --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/utils.d.ts @@ -0,0 +1,15 @@ +/// +import { type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat } from "zxing-wasm/reader"; +export declare const BARCODE_FORMATS: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +export type BarcodeFormat = (typeof BARCODE_FORMATS)[number]; +export type ReadResultBarcodeFormat = Exclude; +export declare const formatMap: Map<"aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown", ReadInputBarcodeFormat>; +export declare function convertFormat(target: ReadOutputBarcodeFormat): ReadResultBarcodeFormat; +export declare function isBlob(image: ImageBitmapSourceWebCodecs): image is Blob; +export declare function getImageDataOrBlobFromImageBitmapSource(image: ImageBitmapSourceWebCodecs): Promise; +declare global { + interface SVGImageElement { + decode?(): Promise; + } +} +export declare function addPrefixToExceptionOrError(e: unknown, prefix: string): TypeError | DOMException; diff --git a/node_modules/barcode-detector/dist/es/BarcodeDetector.d.ts b/node_modules/barcode-detector/dist/es/BarcodeDetector.d.ts new file mode 100644 index 0000000..6dca7d7 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/BarcodeDetector.d.ts @@ -0,0 +1,35 @@ +/// +import { type ZXingReaderModule } from "zxing-wasm/reader"; +import { type BarcodeFormat, type ReadResultBarcodeFormat } from "./utils.js"; +export { type BarcodeFormat } from "./utils.js"; +export interface BarcodeDetectorOptions { + formats?: BarcodeFormat[]; +} +export interface Point2D { + x: number; + y: number; +} +export interface DetectedBarcode { + boundingBox: DOMRectReadOnly; + rawValue: string; + format: ReadResultBarcodeFormat; + cornerPoints: [Point2D, Point2D, Point2D, Point2D]; +} +interface CustomEventMap { + load: CustomEvent; + error: CustomEvent; +} +type ChangeEventListener = (type: K, callback: ((evt: CustomEventMap[K]) => void) | { + handleEvent(evt: CustomEventMap[K]): void; +} | null, options?: boolean | AddEventListenerOptions | undefined) => void; +export interface BarcodeDetector { + addEventListener: ChangeEventListener; + removeEventListener: ChangeEventListener; +} +export declare class BarcodeDetector extends EventTarget { + #private; + constructor(barcodeDectorOptions?: BarcodeDetectorOptions); + static getSupportedFormats(): Promise; + detect(image: ImageBitmapSourceWebCodecs): Promise; +} +export { setZXingModuleOverrides } from "zxing-wasm/reader"; diff --git a/node_modules/barcode-detector/dist/es/index.d.ts b/node_modules/barcode-detector/dist/es/index.d.ts new file mode 100644 index 0000000..5785a01 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/index.d.ts @@ -0,0 +1,2 @@ +import "./side-effects.js"; +export * from "./pure.js"; diff --git a/node_modules/barcode-detector/dist/es/index.js b/node_modules/barcode-detector/dist/es/index.js new file mode 100644 index 0000000..d82ed8f --- /dev/null +++ b/node_modules/barcode-detector/dist/es/index.js @@ -0,0 +1,6 @@ +import "./side-effects.js"; +import { BarcodeDetector as t, setZXingModuleOverrides as d } from "./pure.js"; +export { + t as BarcodeDetector, + d as setZXingModuleOverrides +}; diff --git a/node_modules/barcode-detector/dist/es/pure.d.ts b/node_modules/barcode-detector/dist/es/pure.d.ts new file mode 100644 index 0000000..29bd716 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/pure.d.ts @@ -0,0 +1 @@ +export * from "./BarcodeDetector.js"; diff --git a/node_modules/barcode-detector/dist/es/pure.js b/node_modules/barcode-detector/dist/es/pure.js new file mode 100644 index 0000000..98b66d9 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/pure.js @@ -0,0 +1,2252 @@ +var Ye = (o, h, s) => { + if (!h.has(o)) + throw TypeError("Cannot " + s); +}; +var re = (o, h, s) => (Ye(o, h, "read from private field"), s ? s.call(o) : h.get(o)), ze = (o, h, s) => { + if (h.has(o)) + throw TypeError("Cannot add the same private member more than once"); + h instanceof WeakSet ? h.add(o) : h.set(o, s); +}, Ne = (o, h, s, $) => (Ye(o, h, "write to private field"), $ ? $.call(o, s) : h.set(o, s), s); +const Qe = [ + ["aztec", "Aztec"], + ["code_128", "Code128"], + ["code_39", "Code39"], + ["code_93", "Code93"], + ["codabar", "Codabar"], + ["databar", "DataBar"], + ["databar_expanded", "DataBarExpanded"], + ["data_matrix", "DataMatrix"], + ["dx_film_edge", "DXFilmEdge"], + ["ean_13", "EAN-13"], + ["ean_8", "EAN-8"], + ["itf", "ITF"], + ["maxi_code", "MaxiCode"], + ["micro_qr_code", "MicroQRCode"], + ["pdf417", "PDF417"], + ["qr_code", "QRCode"], + ["rm_qr_code", "rMQRCode"], + ["upc_a", "UPC-A"], + ["upc_e", "UPC-E"], + ["linear_codes", "Linear-Codes"], + ["matrix_codes", "Matrix-Codes"] +], Da = [...Qe, ["unknown"]].map((o) => o[0]), It = new Map( + Qe +); +function xa(o) { + for (const [h, s] of It) + if (o === s) + return h; + return "unknown"; +} +function Fa(o) { + if (Ze(o)) + return { + width: o.naturalWidth, + height: o.naturalHeight + }; + if (Je(o)) + return { + width: o.width.baseVal.value, + height: o.height.baseVal.value + }; + if (Ke(o)) + return { + width: o.videoWidth, + height: o.videoHeight + }; + if (er(o)) + return { + width: o.width, + height: o.height + }; + if (nr(o)) + return { + width: o.displayWidth, + height: o.displayHeight + }; + if (tr(o)) + return { + width: o.width, + height: o.height + }; + if (rr(o)) + return { + width: o.width, + height: o.height + }; + throw new TypeError( + "The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'." + ); +} +function Ze(o) { + try { + return o instanceof HTMLImageElement; + } catch { + return !1; + } +} +function Je(o) { + try { + return o instanceof SVGImageElement; + } catch { + return !1; + } +} +function Ke(o) { + try { + return o instanceof HTMLVideoElement; + } catch { + return !1; + } +} +function tr(o) { + try { + return o instanceof HTMLCanvasElement; + } catch { + return !1; + } +} +function er(o) { + try { + return o instanceof ImageBitmap; + } catch { + return !1; + } +} +function rr(o) { + try { + return o instanceof OffscreenCanvas; + } catch { + return !1; + } +} +function nr(o) { + try { + return o instanceof VideoFrame; + } catch { + return !1; + } +} +function ar(o) { + try { + return o instanceof Blob; + } catch { + return !1; + } +} +function Ma(o) { + try { + return o instanceof ImageData; + } catch { + return !1; + } +} +function Sa(o, h) { + try { + const s = new OffscreenCanvas(o, h); + if (s.getContext("2d") instanceof OffscreenCanvasRenderingContext2D) + return s; + throw void 0; + } catch { + const s = document.createElement("canvas"); + return s.width = o, s.height = h, s; + } +} +async function or(o) { + if (Ze(o) && !await Wa(o)) + throw new DOMException( + "Failed to load or decode HTMLImageElement.", + "InvalidStateError" + ); + if (Je(o) && !await ka(o)) + throw new DOMException( + "Failed to load or decode SVGImageElement.", + "InvalidStateError" + ); + if (nr(o) && Ha(o)) + throw new DOMException("VideoFrame is closed.", "InvalidStateError"); + if (Ke(o) && (o.readyState === 0 || o.readyState === 1)) + throw new DOMException("Invalid element or state.", "InvalidStateError"); + if (er(o) && Ua(o)) + throw new DOMException( + "The image source is detached.", + "InvalidStateError" + ); + const { width: h, height: s } = Fa(o); + if (h === 0 || s === 0) + return null; + const g = Sa(h, s).getContext("2d"); + g.drawImage(o, 0, 0); + try { + return g.getImageData(0, 0, h, s); + } catch { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function ja(o) { + let h; + try { + if (globalThis.createImageBitmap) + h = await createImageBitmap(o); + else if (globalThis.Image) { + h = new Image(); + let $ = ""; + try { + $ = URL.createObjectURL(o), h.src = $, await h.decode(); + } finally { + URL.revokeObjectURL($); + } + } else + return o; + } catch { + throw new DOMException( + "Failed to load or decode Blob.", + "InvalidStateError" + ); + } + return await or(h); +} +function Ia(o) { + const { width: h, height: s } = o; + if (h === 0 || s === 0) + return null; + const $ = o.getContext("2d"); + try { + return $.getImageData(0, 0, h, s); + } catch { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Ra(o) { + if (ar(o)) + return await ja(o); + if (Ma(o)) { + if (Ba(o)) + throw new DOMException( + "The image data has been detached.", + "InvalidStateError" + ); + return o; + } + return tr(o) || rr(o) ? Ia(o) : await or(o); +} +async function Wa(o) { + try { + return await o.decode(), !0; + } catch { + return !1; + } +} +async function ka(o) { + var h; + try { + return await ((h = o.decode) == null ? void 0 : h.call(o)), !0; + } catch { + return !1; + } +} +function Ha(o) { + return o.format === null; +} +function Ba(o) { + return o.data.buffer.byteLength === 0; +} +function Ua(o) { + return o.width === 0 && o.height === 0; +} +function Ge(o, h) { + return o instanceof DOMException ? new DOMException(`${h}: ${o.message}`, o.name) : o instanceof Error ? new o.constructor(`${h}: ${o.message}`) : new Error(`${h}: ${o}`); +} +const Xe = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function Va(o) { + return o.join("|"); +} +function La(o) { + const h = qe(o); + let s = 0, $ = Xe.length - 1; + for (; s <= $; ) { + const g = Math.floor((s + $) / 2), b = Xe[g], H = qe(b); + if (H === h) + return b; + H < h ? s = g + 1 : $ = g - 1; + } + return "None"; +} +function qe(o) { + return o.toLowerCase().replace(/_-\[\]/g, ""); +} +function Ya(o, h) { + return o.Binarizer[h]; +} +function za(o, h) { + return o.CharacterSet[h]; +} +const Na = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function Ga(o) { + return Na[o.value]; +} +function Xa(o, h) { + return o.EanAddOnSymbol[h]; +} +function qa(o, h) { + return o.TextMode[h]; +} +const lt = { + formats: [], + tryHarder: !0, + tryRotate: !0, + tryInvert: !0, + tryDownscale: !0, + binarizer: "LocalAverage", + isPure: !1, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: !1, + validateCode39CheckSum: !1, + validateITFCheckSum: !1, + returnCodabarStartEnd: !1, + returnErrors: !1, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function ir(o, h) { + return { + ...h, + formats: Va(h.formats), + binarizer: Ya(o, h.binarizer), + eanAddOnSymbol: Xa( + o, + h.eanAddOnSymbol + ), + textMode: qa(o, h.textMode), + characterSet: za( + o, + h.characterSet + ) + }; +} +function sr(o) { + return { + ...o, + format: La(o.format), + eccLevel: o.eccLevel, + contentType: Ga(o.contentType) + }; +} +const Qa = { + locateFile: (o, h) => { + const s = o.match(/_(.+?)\.wasm$/); + return s ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${s[1]}/${o}` : h + o; + } +}; +let ne = /* @__PURE__ */ new WeakMap(); +function ae(o, h) { + var s; + const $ = ne.get(o); + if ($ != null && $.modulePromise && (h === void 0 || Object.is(h, $.moduleOverrides))) + return $.modulePromise; + const g = (s = h != null ? h : $ == null ? void 0 : $.moduleOverrides) != null ? s : Qa, b = o({ + ...g + }); + return ne.set(o, { + moduleOverrides: g, + modulePromise: b + }), b; +} +function Za(o, h) { + ne.set(o, { + moduleOverrides: h + }); +} +async function Ja(o, h, s = lt) { + const $ = { + ...lt, + ...s + }, g = await ae(o), { size: b } = h, H = new Uint8Array(await h.arrayBuffer()), L = g._malloc(b); + g.HEAPU8.set(H, L); + const B = g.readBarcodesFromImage( + L, + b, + ir(g, $) + ); + g._free(L); + const M = []; + for (let Y = 0; Y < B.size(); ++Y) + M.push( + sr(B.get(Y)) + ); + return M; +} +async function Ka(o, h, s = lt) { + const $ = { + ...lt, + ...s + }, g = await ae(o), { + data: b, + width: H, + height: L, + data: { byteLength: B } + } = h, M = g._malloc(B); + g.HEAPU8.set(b, M); + const Y = g.readBarcodesFromPixmap( + M, + H, + L, + ir(g, $) + ); + g._free(M); + const G = []; + for (let U = 0; U < Y.size(); ++U) + G.push( + sr(Y.get(U)) + ); + return G; +} +({ + ...lt, + formats: [...lt.formats] +}); +var Rt = (() => { + var o = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(h = {}) { + var s = h, $, g; + s.ready = new Promise((t, e) => { + $ = t, g = e; + }); + var b = Object.assign({}, s), H = "./this.program", L = typeof window == "object", B = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var M = ""; + function Y(t) { + return s.locateFile ? s.locateFile(t, M) : M + t; + } + var G; + (L || B) && (B ? M = self.location.href : typeof document < "u" && document.currentScript && (M = document.currentScript.src), o && (M = o), M.indexOf("blob:") !== 0 ? M = M.substr(0, M.replace(/[?#].*/, "").lastIndexOf("/") + 1) : M = "", B && (G = (t) => { + var e = new XMLHttpRequest(); + return e.open("GET", t, !1), e.responseType = "arraybuffer", e.send(null), new Uint8Array(e.response); + })), s.print || console.log.bind(console); + var U = s.printErr || console.error.bind(console); + Object.assign(s, b), b = null, s.arguments && s.arguments, s.thisProgram && (H = s.thisProgram), s.quit && s.quit; + var Q; + s.wasmBinary && (Q = s.wasmBinary), typeof WebAssembly != "object" && bt("no native wasm support detected"); + var tt, dt = !1, V, W, at, ft, k, T, oe, ie; + function se() { + var t = tt.buffer; + s.HEAP8 = V = new Int8Array(t), s.HEAP16 = at = new Int16Array(t), s.HEAPU8 = W = new Uint8Array(t), s.HEAPU16 = ft = new Uint16Array(t), s.HEAP32 = k = new Int32Array(t), s.HEAPU32 = T = new Uint32Array(t), s.HEAPF32 = oe = new Float32Array(t), s.HEAPF64 = ie = new Float64Array(t); + } + var ue = [], ce = [], le = []; + function ur() { + if (s.preRun) + for (typeof s.preRun == "function" && (s.preRun = [s.preRun]); s.preRun.length; ) + dr(s.preRun.shift()); + Wt(ue); + } + function cr() { + Wt(ce); + } + function lr() { + if (s.postRun) + for (typeof s.postRun == "function" && (s.postRun = [s.postRun]); s.postRun.length; ) + hr(s.postRun.shift()); + Wt(le); + } + function dr(t) { + ue.unshift(t); + } + function fr(t) { + ce.unshift(t); + } + function hr(t) { + le.unshift(t); + } + var et = 0, ht = null; + function pr(t) { + var e; + et++, (e = s.monitorRunDependencies) === null || e === void 0 || e.call(s, et); + } + function mr(t) { + var e; + if (et--, (e = s.monitorRunDependencies) === null || e === void 0 || e.call(s, et), et == 0 && ht) { + var r = ht; + ht = null, r(); + } + } + function bt(t) { + var e; + (e = s.onAbort) === null || e === void 0 || e.call(s, t), t = "Aborted(" + t + ")", U(t), dt = !0, t += ". Build with -sASSERTIONS for more info."; + var r = new WebAssembly.RuntimeError(t); + throw g(r), r; + } + var vr = "data:application/octet-stream;base64,", de = (t) => t.startsWith(vr), ot; + ot = "zxing_reader.wasm", de(ot) || (ot = Y(ot)); + function fe(t) { + if (t == ot && Q) + return new Uint8Array(Q); + if (G) + return G(t); + throw "both async and sync fetching of the wasm failed"; + } + function yr(t) { + return !Q && (L || B) && typeof fetch == "function" ? fetch(t, { + credentials: "same-origin" + }).then((e) => { + if (!e.ok) + throw "failed to load wasm binary file at '" + t + "'"; + return e.arrayBuffer(); + }).catch(() => fe(t)) : Promise.resolve().then(() => fe(t)); + } + function he(t, e, r) { + return yr(t).then((n) => WebAssembly.instantiate(n, e)).then((n) => n).then(r, (n) => { + U(`failed to asynchronously prepare wasm: ${n}`), bt(n); + }); + } + function gr(t, e, r, n) { + return !t && typeof WebAssembly.instantiateStreaming == "function" && !de(e) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((a) => { + var i = WebAssembly.instantiateStreaming(a, r); + return i.then(n, function(u) { + return U(`wasm streaming compile failed: ${u}`), U("falling back to ArrayBuffer instantiation"), he(e, r, n); + }); + }) : he(e, r, n); + } + function wr() { + var t = { + a: sa + }; + function e(n, a) { + return S = n.exports, tt = S.ia, se(), _e = S.ma, fr(S.ja), mr(), S; + } + pr(); + function r(n) { + e(n.instance); + } + if (s.instantiateWasm) + try { + return s.instantiateWasm(t, e); + } catch (n) { + U(`Module.instantiateWasm callback failed with error: ${n}`), g(n); + } + return gr(Q, ot, t, r).catch(g), {}; + } + var Wt = (t) => { + for (; t.length > 0; ) + t.shift()(s); + }; + s.noExitRuntime; + var Ct = [], _t = 0, $r = (t) => { + var e = new kt(t); + return e.get_caught() || (e.set_caught(!0), _t--), e.set_rethrown(!1), Ct.push(e), We(e.excPtr), e.get_exception_ptr(); + }, Z = 0, br = () => { + P(0, 0); + var t = Ct.pop(); + Re(t.excPtr), Z = 0; + }; + function kt(t) { + this.excPtr = t, this.ptr = t - 24, this.set_type = function(e) { + T[this.ptr + 4 >> 2] = e; + }, this.get_type = function() { + return T[this.ptr + 4 >> 2]; + }, this.set_destructor = function(e) { + T[this.ptr + 8 >> 2] = e; + }, this.get_destructor = function() { + return T[this.ptr + 8 >> 2]; + }, this.set_caught = function(e) { + e = e ? 1 : 0, V[this.ptr + 12 >> 0] = e; + }, this.get_caught = function() { + return V[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(e) { + e = e ? 1 : 0, V[this.ptr + 13 >> 0] = e; + }, this.get_rethrown = function() { + return V[this.ptr + 13 >> 0] != 0; + }, this.init = function(e, r) { + this.set_adjusted_ptr(0), this.set_type(e), this.set_destructor(r); + }, this.set_adjusted_ptr = function(e) { + T[this.ptr + 16 >> 2] = e; + }, this.get_adjusted_ptr = function() { + return T[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var e = He(this.get_type()); + if (e) + return T[this.excPtr >> 2]; + var r = this.get_adjusted_ptr(); + return r !== 0 ? r : this.excPtr; + }; + } + var Cr = (t) => { + throw Z || (Z = t), Z; + }, Ht = (t) => { + var e = Z; + if (!e) + return $t(0), 0; + var r = new kt(e); + r.set_adjusted_ptr(e); + var n = r.get_type(); + if (!n) + return $t(0), e; + for (var a in t) { + var i = t[a]; + if (i === 0 || i === n) + break; + var u = r.ptr + 16; + if (ke(i, n, u)) + return $t(i), e; + } + return $t(n), e; + }, _r = () => Ht([]), Tr = (t) => Ht([t]), Pr = (t, e) => Ht([t, e]), Er = () => { + var t = Ct.pop(); + t || bt("no exception to throw"); + var e = t.excPtr; + throw t.get_rethrown() || (Ct.push(t), t.set_rethrown(!0), t.set_caught(!1), _t++), Z = e, Z; + }, Ar = (t, e, r) => { + var n = new kt(t); + throw n.init(e, r), Z = t, _t++, Z; + }, Or = () => _t, Tt = {}, Bt = (t) => { + for (; t.length; ) { + var e = t.pop(), r = t.pop(); + r(e); + } + }; + function Ut(t) { + return this.fromWireType(k[t >> 2]); + } + var it = {}, rt = {}, Pt = {}, pe, Et = (t) => { + throw new pe(t); + }, nt = (t, e, r) => { + t.forEach(function(c) { + Pt[c] = e; + }); + function n(c) { + var l = r(c); + l.length !== t.length && Et("Mismatched type converter count"); + for (var f = 0; f < t.length; ++f) + X(t[f], l[f]); + } + var a = new Array(e.length), i = [], u = 0; + e.forEach((c, l) => { + rt.hasOwnProperty(c) ? a[l] = rt[c] : (i.push(c), it.hasOwnProperty(c) || (it[c] = []), it[c].push(() => { + a[l] = rt[c], ++u, u === i.length && n(a); + })); + }), i.length === 0 && n(a); + }, Dr = (t) => { + var e = Tt[t]; + delete Tt[t]; + var r = e.rawConstructor, n = e.rawDestructor, a = e.fields, i = a.map((u) => u.getterReturnType).concat(a.map((u) => u.setterArgumentType)); + nt([t], i, (u) => { + var c = {}; + return a.forEach((l, f) => { + var p = l.fieldName, v = u[f], y = l.getter, w = l.getterContext, E = u[f + a.length], x = l.setter, _ = l.setterContext; + c[p] = { + read: (R) => v.fromWireType(y(w, R)), + write: (R, d) => { + var m = []; + x(_, R, E.toWireType(m, d)), Bt(m); + } + }; + }), [{ + name: e.name, + fromWireType: (l) => { + var f = {}; + for (var p in c) + f[p] = c[p].read(l); + return n(l), f; + }, + toWireType: (l, f) => { + for (var p in c) + if (!(p in f)) + throw new TypeError(`Missing field: "${p}"`); + var v = r(); + for (p in c) + c[p].write(v, f[p]); + return l !== null && l.push(n, v), v; + }, + argPackAdvance: q, + readValueFromPointer: Ut, + destructorFunction: n + }]; + }); + }, xr = (t, e, r, n, a) => { + }, Fr = () => { + for (var t = new Array(256), e = 0; e < 256; ++e) + t[e] = String.fromCharCode(e); + me = t; + }, me, I = (t) => { + for (var e = "", r = t; W[r]; ) + e += me[W[r++]]; + return e; + }, st, C = (t) => { + throw new st(t); + }; + function Mr(t, e) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = e.name; + if (t || C(`type "${n}" must have a positive integer typeid pointer`), rt.hasOwnProperty(t)) { + if (r.ignoreDuplicateRegistrations) + return; + C(`Cannot register type '${n}' twice`); + } + if (rt[t] = e, delete Pt[t], it.hasOwnProperty(t)) { + var a = it[t]; + delete it[t], a.forEach((i) => i()); + } + } + function X(t, e) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in e)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return Mr(t, e, r); + } + var q = 8, Sr = (t, e, r, n) => { + e = I(e), X(t, { + name: e, + fromWireType: function(a) { + return !!a; + }, + toWireType: function(a, i) { + return i ? r : n; + }, + argPackAdvance: q, + readValueFromPointer: function(a) { + return this.fromWireType(W[a]); + }, + destructorFunction: null + }); + }, jr = (t) => ({ + count: t.count, + deleteScheduled: t.deleteScheduled, + preservePointerOnDelete: t.preservePointerOnDelete, + ptr: t.ptr, + ptrType: t.ptrType, + smartPtr: t.smartPtr, + smartPtrType: t.smartPtrType + }), Vt = (t) => { + function e(r) { + return r.$$.ptrType.registeredClass.name; + } + C(e(t) + " instance already deleted"); + }, Lt = !1, ve = (t) => { + }, Ir = (t) => { + t.smartPtr ? t.smartPtrType.rawDestructor(t.smartPtr) : t.ptrType.registeredClass.rawDestructor(t.ptr); + }, ye = (t) => { + t.count.value -= 1; + var e = t.count.value === 0; + e && Ir(t); + }, ge = (t, e, r) => { + if (e === r) + return t; + if (r.baseClass === void 0) + return null; + var n = ge(t, e, r.baseClass); + return n === null ? null : r.downcast(n); + }, we = {}, Rr = () => Object.keys(vt).length, Wr = () => { + var t = []; + for (var e in vt) + vt.hasOwnProperty(e) && t.push(vt[e]); + return t; + }, pt = [], Yt = () => { + for (; pt.length; ) { + var t = pt.pop(); + t.$$.deleteScheduled = !1, t.delete(); + } + }, mt, kr = (t) => { + mt = t, pt.length && mt && mt(Yt); + }, Hr = () => { + s.getInheritedInstanceCount = Rr, s.getLiveInheritedInstances = Wr, s.flushPendingDeletes = Yt, s.setDelayFunction = kr; + }, vt = {}, Br = (t, e) => { + for (e === void 0 && C("ptr should not be undefined"); t.baseClass; ) + e = t.upcast(e), t = t.baseClass; + return e; + }, Ur = (t, e) => (e = Br(t, e), vt[e]), At = (t, e) => { + (!e.ptrType || !e.ptr) && Et("makeClassHandle requires ptr and ptrType"); + var r = !!e.smartPtrType, n = !!e.smartPtr; + return r !== n && Et("Both smartPtrType and smartPtr must be specified"), e.count = { + value: 1 + }, yt(Object.create(t, { + $$: { + value: e, + writable: !0 + } + })); + }; + function Vr(t) { + var e = this.getPointee(t); + if (!e) + return this.destructor(t), null; + var r = Ur(this.registeredClass, e); + if (r !== void 0) { + if (r.$$.count.value === 0) + return r.$$.ptr = e, r.$$.smartPtr = t, r.clone(); + var n = r.clone(); + return this.destructor(t), n; + } + function a() { + return this.isSmartPointer ? At(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: e, + smartPtrType: this, + smartPtr: t + }) : At(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: t + }); + } + var i = this.registeredClass.getActualType(e), u = we[i]; + if (!u) + return a.call(this); + var c; + this.isConst ? c = u.constPointerType : c = u.pointerType; + var l = ge(e, this.registeredClass, c.registeredClass); + return l === null ? a.call(this) : this.isSmartPointer ? At(c.registeredClass.instancePrototype, { + ptrType: c, + ptr: l, + smartPtrType: this, + smartPtr: t + }) : At(c.registeredClass.instancePrototype, { + ptrType: c, + ptr: l + }); + } + var yt = (t) => typeof FinalizationRegistry > "u" ? (yt = (e) => e, t) : (Lt = new FinalizationRegistry((e) => { + ye(e.$$); + }), yt = (e) => { + var r = e.$$, n = !!r.smartPtr; + if (n) { + var a = { + $$: r + }; + Lt.register(e, a, e); + } + return e; + }, ve = (e) => Lt.unregister(e), yt(t)), Lr = () => { + Object.assign(Ot.prototype, { + isAliasOf(t) { + if (!(this instanceof Ot) || !(t instanceof Ot)) + return !1; + var e = this.$$.ptrType.registeredClass, r = this.$$.ptr; + t.$$ = t.$$; + for (var n = t.$$.ptrType.registeredClass, a = t.$$.ptr; e.baseClass; ) + r = e.upcast(r), e = e.baseClass; + for (; n.baseClass; ) + a = n.upcast(a), n = n.baseClass; + return e === n && r === a; + }, + clone() { + if (this.$$.ptr || Vt(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var t = yt(Object.create(Object.getPrototypeOf(this), { + $$: { + value: jr(this.$$) + } + })); + return t.$$.count.value += 1, t.$$.deleteScheduled = !1, t; + }, + delete() { + this.$$.ptr || Vt(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && C("Object already scheduled for deletion"), ve(this), ye(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || Vt(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && C("Object already scheduled for deletion"), pt.push(this), pt.length === 1 && mt && mt(Yt), this.$$.deleteScheduled = !0, this; + } + }); + }; + function Ot() { + } + var gt = (t, e) => Object.defineProperty(e, "name", { + value: t + }), $e = (t, e, r) => { + if (t[e].overloadTable === void 0) { + var n = t[e]; + t[e] = function() { + return t[e].overloadTable.hasOwnProperty(arguments.length) || C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`), t[e].overloadTable[arguments.length].apply(this, arguments); + }, t[e].overloadTable = [], t[e].overloadTable[n.argCount] = n; + } + }, zt = (t, e, r) => { + s.hasOwnProperty(t) ? ((r === void 0 || s[t].overloadTable !== void 0 && s[t].overloadTable[r] !== void 0) && C(`Cannot register public name '${t}' twice`), $e(s, t, t), s.hasOwnProperty(r) && C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`), s[t].overloadTable[r] = e) : (s[t] = e, r !== void 0 && (s[t].numArguments = r)); + }, Yr = 48, zr = 57, Nr = (t) => { + if (t === void 0) + return "_unknown"; + t = t.replace(/[^a-zA-Z0-9_]/g, "$"); + var e = t.charCodeAt(0); + return e >= Yr && e <= zr ? `_${t}` : t; + }; + function Gr(t, e, r, n, a, i, u, c) { + this.name = t, this.constructor = e, this.instancePrototype = r, this.rawDestructor = n, this.baseClass = a, this.getActualType = i, this.upcast = u, this.downcast = c, this.pureVirtualFunctions = []; + } + var Nt = (t, e, r) => { + for (; e !== r; ) + e.upcast || C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`), t = e.upcast(t), e = e.baseClass; + return t; + }; + function Xr(t, e) { + if (e === null) + return this.isReference && C(`null is not a valid ${this.name}`), 0; + e.$$ || C(`Cannot pass "${Zt(e)}" as a ${this.name}`), e.$$.ptr || C(`Cannot pass deleted object as a pointer of type ${this.name}`); + var r = e.$$.ptrType.registeredClass, n = Nt(e.$$.ptr, r, this.registeredClass); + return n; + } + function qr(t, e) { + var r; + if (e === null) + return this.isReference && C(`null is not a valid ${this.name}`), this.isSmartPointer ? (r = this.rawConstructor(), t !== null && t.push(this.rawDestructor, r), r) : 0; + (!e || !e.$$) && C(`Cannot pass "${Zt(e)}" as a ${this.name}`), e.$$.ptr || C(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && e.$$.ptrType.isConst && C(`Cannot convert argument of type ${e.$$.smartPtrType ? e.$$.smartPtrType.name : e.$$.ptrType.name} to parameter type ${this.name}`); + var n = e.$$.ptrType.registeredClass; + if (r = Nt(e.$$.ptr, n, this.registeredClass), this.isSmartPointer) + switch (e.$$.smartPtr === void 0 && C("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + e.$$.smartPtrType === this ? r = e.$$.smartPtr : C(`Cannot convert argument of type ${e.$$.smartPtrType ? e.$$.smartPtrType.name : e.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + r = e.$$.smartPtr; + break; + case 2: + if (e.$$.smartPtrType === this) + r = e.$$.smartPtr; + else { + var a = e.clone(); + r = this.rawShare(r, J.toHandle(() => a.delete())), t !== null && t.push(this.rawDestructor, r); + } + break; + default: + C("Unsupporting sharing policy"); + } + return r; + } + function Qr(t, e) { + if (e === null) + return this.isReference && C(`null is not a valid ${this.name}`), 0; + e.$$ || C(`Cannot pass "${Zt(e)}" as a ${this.name}`), e.$$.ptr || C(`Cannot pass deleted object as a pointer of type ${this.name}`), e.$$.ptrType.isConst && C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`); + var r = e.$$.ptrType.registeredClass, n = Nt(e.$$.ptr, r, this.registeredClass); + return n; + } + function be(t) { + return this.fromWireType(T[t >> 2]); + } + var Zr = () => { + Object.assign(Dt.prototype, { + getPointee(t) { + return this.rawGetPointee && (t = this.rawGetPointee(t)), t; + }, + destructor(t) { + var e; + (e = this.rawDestructor) === null || e === void 0 || e.call(this, t); + }, + argPackAdvance: q, + readValueFromPointer: be, + deleteObject(t) { + t !== null && t.delete(); + }, + fromWireType: Vr + }); + }; + function Dt(t, e, r, n, a, i, u, c, l, f, p) { + this.name = t, this.registeredClass = e, this.isReference = r, this.isConst = n, this.isSmartPointer = a, this.pointeeType = i, this.sharingPolicy = u, this.rawGetPointee = c, this.rawConstructor = l, this.rawShare = f, this.rawDestructor = p, !a && e.baseClass === void 0 ? n ? (this.toWireType = Xr, this.destructorFunction = null) : (this.toWireType = Qr, this.destructorFunction = null) : this.toWireType = qr; + } + var Ce = (t, e, r) => { + s.hasOwnProperty(t) || Et("Replacing nonexistant public symbol"), s[t].overloadTable !== void 0 && r !== void 0 ? s[t].overloadTable[r] = e : (s[t] = e, s[t].argCount = r); + }, Jr = (t, e, r) => { + var n = s["dynCall_" + t]; + return r && r.length ? n.apply(null, [e].concat(r)) : n.call(null, e); + }, xt = [], _e, A = (t) => { + var e = xt[t]; + return e || (t >= xt.length && (xt.length = t + 1), xt[t] = e = _e.get(t)), e; + }, Kr = (t, e, r) => { + if (t.includes("j")) + return Jr(t, e, r); + var n = A(e).apply(null, r); + return n; + }, tn = (t, e) => { + var r = []; + return function() { + return r.length = 0, Object.assign(r, arguments), Kr(t, e, r); + }; + }, N = (t, e) => { + t = I(t); + function r() { + return t.includes("j") ? tn(t, e) : A(e); + } + var n = r(); + return typeof n != "function" && C(`unknown function pointer with signature ${t}: ${e}`), n; + }, en = (t, e) => { + var r = gt(e, function(n) { + this.name = e, this.message = n; + var a = new Error(n).stack; + a !== void 0 && (this.stack = this.toString() + ` +` + a.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return r.prototype = Object.create(t.prototype), r.prototype.constructor = r, r.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, r; + }, Te, Pe = (t) => { + var e = Ie(t), r = I(e); + return K(e), r; + }, Ft = (t, e) => { + var r = [], n = {}; + function a(i) { + if (!n[i] && !rt[i]) { + if (Pt[i]) { + Pt[i].forEach(a); + return; + } + r.push(i), n[i] = !0; + } + } + throw e.forEach(a), new Te(`${t}: ` + r.map(Pe).join([", "])); + }, rn = (t, e, r, n, a, i, u, c, l, f, p, v, y) => { + p = I(p), i = N(a, i), c && (c = N(u, c)), f && (f = N(l, f)), y = N(v, y); + var w = Nr(p); + zt(w, function() { + Ft(`Cannot construct ${p} due to unbound types`, [n]); + }), nt([t, e, r], n ? [n] : [], function(E) { + E = E[0]; + var x, _; + n ? (x = E.registeredClass, _ = x.instancePrototype) : _ = Ot.prototype; + var R = gt(p, function() { + if (Object.getPrototypeOf(this) !== d) + throw new st("Use 'new' to construct " + p); + if (m.constructor_body === void 0) + throw new st(p + " has no accessible constructor"); + var Le = m.constructor_body[arguments.length]; + if (Le === void 0) + throw new st(`Tried to invoke ctor of ${p} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`); + return Le.apply(this, arguments); + }), d = Object.create(_, { + constructor: { + value: R + } + }); + R.prototype = d; + var m = new Gr(p, R, d, y, x, i, c, f); + if (m.baseClass) { + var F, j; + (j = (F = m.baseClass).__derivedClasses) !== null && j !== void 0 || (F.__derivedClasses = []), m.baseClass.__derivedClasses.push(m); + } + var ut = new Dt(p, m, !0, !1, !1), jt = new Dt(p + "*", m, !1, !1, !1), Ve = new Dt(p + " const*", m, !1, !0, !1); + return we[t] = { + pointerType: jt, + constPointerType: Ve + }, Ce(w, R), [ut, jt, Ve]; + }); + }, Gt = (t, e) => { + for (var r = [], n = 0; n < t; n++) + r.push(T[e + n * 4 >> 2]); + return r; + }; + function nn(t) { + for (var e = 1; e < t.length; ++e) + if (t[e] !== null && t[e].destructorFunction === void 0) + return !0; + return !1; + } + function Xt(t, e, r, n, a, i) { + var u = e.length; + u < 2 && C("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var c = e[1] !== null && r !== null, l = nn(e), f = e[0].name !== "void", p = u - 2, v = new Array(p), y = [], w = [], E = function() { + arguments.length !== p && C(`function ${t} called with ${arguments.length} arguments, expected ${p}`), w.length = 0; + var x; + y.length = c ? 2 : 1, y[0] = a, c && (x = e[1].toWireType(w, this), y[1] = x); + for (var _ = 0; _ < p; ++_) + v[_] = e[_ + 2].toWireType(w, arguments[_]), y.push(v[_]); + var R = n.apply(null, y); + function d(m) { + if (l) + Bt(w); + else + for (var F = c ? 1 : 2; F < e.length; F++) { + var j = F === 1 ? x : v[F - 2]; + e[F].destructorFunction !== null && e[F].destructorFunction(j); + } + if (f) + return e[0].fromWireType(m); + } + return d(R); + }; + return gt(t, E); + } + var an = (t, e, r, n, a, i) => { + var u = Gt(e, r); + a = N(n, a), nt([], [t], function(c) { + c = c[0]; + var l = `constructor ${c.name}`; + if (c.registeredClass.constructor_body === void 0 && (c.registeredClass.constructor_body = []), c.registeredClass.constructor_body[e - 1] !== void 0) + throw new st(`Cannot register multiple constructors with identical number of parameters (${e - 1}) for class '${c.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return c.registeredClass.constructor_body[e - 1] = () => { + Ft(`Cannot construct ${c.name} due to unbound types`, u); + }, nt([], u, (f) => (f.splice(1, 0, null), c.registeredClass.constructor_body[e - 1] = Xt(l, f, null, a, i), [])), []; + }); + }, Ee = (t) => { + t = t.trim(); + const e = t.indexOf("("); + return e !== -1 ? t.substr(0, e) : t; + }, on = (t, e, r, n, a, i, u, c, l) => { + var f = Gt(r, n); + e = I(e), e = Ee(e), i = N(a, i), nt([], [t], function(p) { + p = p[0]; + var v = `${p.name}.${e}`; + e.startsWith("@@") && (e = Symbol[e.substring(2)]), c && p.registeredClass.pureVirtualFunctions.push(e); + function y() { + Ft(`Cannot call ${v} due to unbound types`, f); + } + var w = p.registeredClass.instancePrototype, E = w[e]; + return E === void 0 || E.overloadTable === void 0 && E.className !== p.name && E.argCount === r - 2 ? (y.argCount = r - 2, y.className = p.name, w[e] = y) : ($e(w, e, v), w[e].overloadTable[r - 2] = y), nt([], f, function(x) { + var _ = Xt(v, x, p, i, u); + return w[e].overloadTable === void 0 ? (_.argCount = r - 2, w[e] = _) : w[e].overloadTable[r - 2] = _, []; + }), []; + }); + }; + function sn() { + Object.assign(Ae.prototype, { + get(t) { + return this.allocated[t]; + }, + has(t) { + return this.allocated[t] !== void 0; + }, + allocate(t) { + var e = this.freelist.pop() || this.allocated.length; + return this.allocated[e] = t, e; + }, + free(t) { + this.allocated[t] = void 0, this.freelist.push(t); + } + }); + } + function Ae() { + this.allocated = [void 0], this.freelist = []; + } + var z = new Ae(), qt = (t) => { + t >= z.reserved && --z.get(t).refcount === 0 && z.free(t); + }, un = () => { + for (var t = 0, e = z.reserved; e < z.allocated.length; ++e) + z.allocated[e] !== void 0 && ++t; + return t; + }, cn = () => { + z.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), z.reserved = z.allocated.length, s.count_emval_handles = un; + }, J = { + toValue: (t) => (t || C("Cannot use deleted val. handle = " + t), z.get(t).value), + toHandle: (t) => { + switch (t) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return z.allocate({ + refcount: 1, + value: t + }); + } + } + }, ln = (t, e) => { + e = I(e), X(t, { + name: e, + fromWireType: (r) => { + var n = J.toValue(r); + return qt(r), n; + }, + toWireType: (r, n) => J.toHandle(n), + argPackAdvance: q, + readValueFromPointer: Ut, + destructorFunction: null + }); + }, dn = (t, e, r) => { + switch (e) { + case 1: + return r ? function(n) { + return this.fromWireType(V[n >> 0]); + } : function(n) { + return this.fromWireType(W[n >> 0]); + }; + case 2: + return r ? function(n) { + return this.fromWireType(at[n >> 1]); + } : function(n) { + return this.fromWireType(ft[n >> 1]); + }; + case 4: + return r ? function(n) { + return this.fromWireType(k[n >> 2]); + } : function(n) { + return this.fromWireType(T[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${e}): ${t}`); + } + }, fn = (t, e, r, n) => { + e = I(e); + function a() { + } + a.values = {}, X(t, { + name: e, + constructor: a, + fromWireType: function(i) { + return this.constructor.values[i]; + }, + toWireType: (i, u) => u.value, + argPackAdvance: q, + readValueFromPointer: dn(e, r, n), + destructorFunction: null + }), zt(e, a); + }, Qt = (t, e) => { + var r = rt[t]; + return r === void 0 && C(e + " has unknown type " + Pe(t)), r; + }, hn = (t, e, r) => { + var n = Qt(t, "enum"); + e = I(e); + var a = n.constructor, i = Object.create(n.constructor.prototype, { + value: { + value: r + }, + constructor: { + value: gt(`${n.name}_${e}`, function() { + }) + } + }); + a.values[r] = i, a[e] = i; + }, Zt = (t) => { + if (t === null) + return "null"; + var e = typeof t; + return e === "object" || e === "array" || e === "function" ? t.toString() : "" + t; + }, pn = (t, e) => { + switch (e) { + case 4: + return function(r) { + return this.fromWireType(oe[r >> 2]); + }; + case 8: + return function(r) { + return this.fromWireType(ie[r >> 3]); + }; + default: + throw new TypeError(`invalid float width (${e}): ${t}`); + } + }, mn = (t, e, r) => { + e = I(e), X(t, { + name: e, + fromWireType: (n) => n, + toWireType: (n, a) => a, + argPackAdvance: q, + readValueFromPointer: pn(e, r), + destructorFunction: null + }); + }, vn = (t, e, r, n, a, i, u) => { + var c = Gt(e, r); + t = I(t), t = Ee(t), a = N(n, a), zt(t, function() { + Ft(`Cannot call ${t} due to unbound types`, c); + }, e - 1), nt([], c, function(l) { + var f = [l[0], null].concat(l.slice(1)); + return Ce(t, Xt(t, f, null, a, i), e - 1), []; + }); + }, yn = (t, e, r) => { + switch (e) { + case 1: + return r ? (n) => V[n >> 0] : (n) => W[n >> 0]; + case 2: + return r ? (n) => at[n >> 1] : (n) => ft[n >> 1]; + case 4: + return r ? (n) => k[n >> 2] : (n) => T[n >> 2]; + default: + throw new TypeError(`invalid integer width (${e}): ${t}`); + } + }, gn = (t, e, r, n, a) => { + e = I(e); + var i = (p) => p; + if (n === 0) { + var u = 32 - 8 * r; + i = (p) => p << u >>> u; + } + var c = e.includes("unsigned"), l = (p, v) => { + }, f; + c ? f = function(p, v) { + return l(v, this.name), v >>> 0; + } : f = function(p, v) { + return l(v, this.name), v; + }, X(t, { + name: e, + fromWireType: i, + toWireType: f, + argPackAdvance: q, + readValueFromPointer: yn(e, r, n !== 0), + destructorFunction: null + }); + }, wn = (t, e, r) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], a = n[e]; + function i(u) { + var c = T[u >> 2], l = T[u + 4 >> 2]; + return new a(V.buffer, l, c); + } + r = I(r), X(t, { + name: r, + fromWireType: i, + argPackAdvance: q, + readValueFromPointer: i + }, { + ignoreDuplicateRegistrations: !0 + }); + }, Oe = (t, e, r, n) => { + if (!(n > 0)) + return 0; + for (var a = r, i = r + n - 1, u = 0; u < t.length; ++u) { + var c = t.charCodeAt(u); + if (c >= 55296 && c <= 57343) { + var l = t.charCodeAt(++u); + c = 65536 + ((c & 1023) << 10) | l & 1023; + } + if (c <= 127) { + if (r >= i) + break; + e[r++] = c; + } else if (c <= 2047) { + if (r + 1 >= i) + break; + e[r++] = 192 | c >> 6, e[r++] = 128 | c & 63; + } else if (c <= 65535) { + if (r + 2 >= i) + break; + e[r++] = 224 | c >> 12, e[r++] = 128 | c >> 6 & 63, e[r++] = 128 | c & 63; + } else { + if (r + 3 >= i) + break; + e[r++] = 240 | c >> 18, e[r++] = 128 | c >> 12 & 63, e[r++] = 128 | c >> 6 & 63, e[r++] = 128 | c & 63; + } + } + return e[r] = 0, r - a; + }, $n = (t, e, r) => Oe(t, W, e, r), De = (t) => { + for (var e = 0, r = 0; r < t.length; ++r) { + var n = t.charCodeAt(r); + n <= 127 ? e++ : n <= 2047 ? e += 2 : n >= 55296 && n <= 57343 ? (e += 4, ++r) : e += 3; + } + return e; + }, xe = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, bn = (t, e, r) => { + for (var n = e + r, a = e; t[a] && !(a >= n); ) + ++a; + if (a - e > 16 && t.buffer && xe) + return xe.decode(t.subarray(e, a)); + for (var i = ""; e < a; ) { + var u = t[e++]; + if (!(u & 128)) { + i += String.fromCharCode(u); + continue; + } + var c = t[e++] & 63; + if ((u & 224) == 192) { + i += String.fromCharCode((u & 31) << 6 | c); + continue; + } + var l = t[e++] & 63; + if ((u & 240) == 224 ? u = (u & 15) << 12 | c << 6 | l : u = (u & 7) << 18 | c << 12 | l << 6 | t[e++] & 63, u < 65536) + i += String.fromCharCode(u); + else { + var f = u - 65536; + i += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023); + } + } + return i; + }, Jt = (t, e) => t ? bn(W, t, e) : "", Cn = (t, e) => { + e = I(e); + var r = e === "std::string"; + X(t, { + name: e, + fromWireType(n) { + var a = T[n >> 2], i = n + 4, u; + if (r) + for (var c = i, l = 0; l <= a; ++l) { + var f = i + l; + if (l == a || W[f] == 0) { + var p = f - c, v = Jt(c, p); + u === void 0 ? u = v : (u += "\0", u += v), c = f + 1; + } + } + else { + for (var y = new Array(a), l = 0; l < a; ++l) + y[l] = String.fromCharCode(W[i + l]); + u = y.join(""); + } + return K(n), u; + }, + toWireType(n, a) { + a instanceof ArrayBuffer && (a = new Uint8Array(a)); + var i, u = typeof a == "string"; + u || a instanceof Uint8Array || a instanceof Uint8ClampedArray || a instanceof Int8Array || C("Cannot pass non-string to std::string"), r && u ? i = De(a) : i = a.length; + var c = ee(4 + i + 1), l = c + 4; + if (T[c >> 2] = i, r && u) + $n(a, l, i + 1); + else if (u) + for (var f = 0; f < i; ++f) { + var p = a.charCodeAt(f); + p > 255 && (K(l), C("String has UTF-16 code units that do not fit in 8 bits")), W[l + f] = p; + } + else + for (var f = 0; f < i; ++f) + W[l + f] = a[f]; + return n !== null && n.push(K, c), c; + }, + argPackAdvance: q, + readValueFromPointer: be, + destructorFunction(n) { + K(n); + } + }); + }, Fe = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, _n = (t, e) => { + for (var r = t, n = r >> 1, a = n + e / 2; !(n >= a) && ft[n]; ) + ++n; + if (r = n << 1, r - t > 32 && Fe) + return Fe.decode(W.subarray(t, r)); + for (var i = "", u = 0; !(u >= e / 2); ++u) { + var c = at[t + u * 2 >> 1]; + if (c == 0) + break; + i += String.fromCharCode(c); + } + return i; + }, Tn = (t, e, r) => { + var n; + if ((n = r) !== null && n !== void 0 || (r = 2147483647), r < 2) + return 0; + r -= 2; + for (var a = e, i = r < t.length * 2 ? r / 2 : t.length, u = 0; u < i; ++u) { + var c = t.charCodeAt(u); + at[e >> 1] = c, e += 2; + } + return at[e >> 1] = 0, e - a; + }, Pn = (t) => t.length * 2, En = (t, e) => { + for (var r = 0, n = ""; !(r >= e / 4); ) { + var a = k[t + r * 4 >> 2]; + if (a == 0) + break; + if (++r, a >= 65536) { + var i = a - 65536; + n += String.fromCharCode(55296 | i >> 10, 56320 | i & 1023); + } else + n += String.fromCharCode(a); + } + return n; + }, An = (t, e, r) => { + var n; + if ((n = r) !== null && n !== void 0 || (r = 2147483647), r < 4) + return 0; + for (var a = e, i = a + r - 4, u = 0; u < t.length; ++u) { + var c = t.charCodeAt(u); + if (c >= 55296 && c <= 57343) { + var l = t.charCodeAt(++u); + c = 65536 + ((c & 1023) << 10) | l & 1023; + } + if (k[e >> 2] = c, e += 4, e + 4 > i) + break; + } + return k[e >> 2] = 0, e - a; + }, On = (t) => { + for (var e = 0, r = 0; r < t.length; ++r) { + var n = t.charCodeAt(r); + n >= 55296 && n <= 57343 && ++r, e += 4; + } + return e; + }, Dn = (t, e, r) => { + r = I(r); + var n, a, i, u, c; + e === 2 ? (n = _n, a = Tn, u = Pn, i = () => ft, c = 1) : e === 4 && (n = En, a = An, u = On, i = () => T, c = 2), X(t, { + name: r, + fromWireType: (l) => { + for (var f = T[l >> 2], p = i(), v, y = l + 4, w = 0; w <= f; ++w) { + var E = l + 4 + w * e; + if (w == f || p[E >> c] == 0) { + var x = E - y, _ = n(y, x); + v === void 0 ? v = _ : (v += "\0", v += _), y = E + e; + } + } + return K(l), v; + }, + toWireType: (l, f) => { + typeof f != "string" && C(`Cannot pass non-string to C++ string type ${r}`); + var p = u(f), v = ee(4 + p + e); + return T[v >> 2] = p >> c, a(f, v + 4, p + e), l !== null && l.push(K, v), v; + }, + argPackAdvance: q, + readValueFromPointer: Ut, + destructorFunction(l) { + K(l); + } + }); + }, xn = (t, e, r, n, a, i) => { + Tt[t] = { + name: I(e), + rawConstructor: N(r, n), + rawDestructor: N(a, i), + fields: [] + }; + }, Fn = (t, e, r, n, a, i, u, c, l, f) => { + Tt[t].fields.push({ + fieldName: I(e), + getterReturnType: r, + getter: N(n, a), + getterContext: i, + setterArgumentType: u, + setter: N(c, l), + setterContext: f + }); + }, Mn = (t, e) => { + e = I(e), X(t, { + isVoid: !0, + name: e, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (r, n) => { + } + }); + }, Kt = [], Sn = (t, e, r, n) => (t = Kt[t], e = J.toValue(e), t(null, e, r, n)), jn = {}, In = (t) => { + var e = jn[t]; + return e === void 0 ? I(t) : e; + }, Me = () => { + if (typeof globalThis == "object") + return globalThis; + function t(e) { + e.$$$embind_global$$$ = e; + var r = typeof $$$embind_global$$$ == "object" && e.$$$embind_global$$$ == e; + return r || delete e.$$$embind_global$$$, r; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && t(global) ? $$$embind_global$$$ = global : typeof self == "object" && t(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, Rn = (t) => t === 0 ? J.toHandle(Me()) : (t = In(t), J.toHandle(Me()[t])), Wn = (t) => { + var e = Kt.length; + return Kt.push(t), e; + }, kn = (t, e) => { + for (var r = new Array(t), n = 0; n < t; ++n) + r[n] = Qt(T[e + n * 4 >> 2], "parameter " + n); + return r; + }, Hn = Reflect.construct, Bn = (t, e, r) => { + var n = [], a = t.toWireType(n, r); + return n.length && (T[e >> 2] = J.toHandle(n)), a; + }, Un = (t, e, r) => { + var n = kn(t, e), a = n.shift(); + t--; + var i = new Array(t), u = (l, f, p, v) => { + for (var y = 0, w = 0; w < t; ++w) + i[w] = n[w].readValueFromPointer(v + y), y += n[w].argPackAdvance; + for (var E = r === 1 ? Hn(f, i) : f.apply(l, i), w = 0; w < t; ++w) { + var x, _; + (x = (_ = n[w]).deleteObject) === null || x === void 0 || x.call(_, i[w]); + } + return Bn(a, p, E); + }, c = `methodCaller<(${n.map((l) => l.name).join(", ")}) => ${a.name}>`; + return Wn(gt(c, u)); + }, Vn = (t) => { + t > 4 && (z.get(t).refcount += 1); + }, Ln = (t) => { + var e = J.toValue(t); + Bt(e), qt(t); + }, Yn = (t, e) => { + t = Qt(t, "_emval_take_value"); + var r = t.readValueFromPointer(e); + return J.toHandle(r); + }, zn = () => { + bt(""); + }, Nn = (t, e, r) => W.copyWithin(t, e, e + r), Gn = () => 2147483648, Xn = (t) => { + var e = tt.buffer, r = (t - e.byteLength + 65535) / 65536; + try { + return tt.grow(r), se(), 1; + } catch { + } + }, qn = (t) => { + var e = W.length; + t >>>= 0; + var r = Gn(); + if (t > r) + return !1; + for (var n = (l, f) => l + (f - l % f) % f, a = 1; a <= 4; a *= 2) { + var i = e * (1 + 0.2 / a); + i = Math.min(i, t + 100663296); + var u = Math.min(r, n(Math.max(t, i), 65536)), c = Xn(u); + if (c) + return !0; + } + return !1; + }, te = {}, Qn = () => H || "./this.program", wt = () => { + if (!wt.strings) { + var t = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", e = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: t, + _: Qn() + }; + for (var r in te) + te[r] === void 0 ? delete e[r] : e[r] = te[r]; + var n = []; + for (var r in e) + n.push(`${r}=${e[r]}`); + wt.strings = n; + } + return wt.strings; + }, Zn = (t, e) => { + for (var r = 0; r < t.length; ++r) + V[e++ >> 0] = t.charCodeAt(r); + V[e >> 0] = 0; + }, Jn = (t, e) => { + var r = 0; + return wt().forEach((n, a) => { + var i = e + r; + T[t + a * 4 >> 2] = i, Zn(n, i), r += n.length + 1; + }), 0; + }, Kn = (t, e) => { + var r = wt(); + T[t >> 2] = r.length; + var n = 0; + return r.forEach((a) => n += a.length + 1), T[e >> 2] = n, 0; + }, ta = (t) => t, Mt = (t) => t % 4 === 0 && (t % 100 !== 0 || t % 400 === 0), ea = (t, e) => { + for (var r = 0, n = 0; n <= e; r += t[n++]) + ; + return r; + }, Se = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], je = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], ra = (t, e) => { + for (var r = new Date(t.getTime()); e > 0; ) { + var n = Mt(r.getFullYear()), a = r.getMonth(), i = (n ? Se : je)[a]; + if (e > i - r.getDate()) + e -= i - r.getDate() + 1, r.setDate(1), a < 11 ? r.setMonth(a + 1) : (r.setMonth(0), r.setFullYear(r.getFullYear() + 1)); + else + return r.setDate(r.getDate() + e), r; + } + return r; + }; + function na(t, e, r) { + var n = r > 0 ? r : De(t) + 1, a = new Array(n), i = Oe(t, a, 0, a.length); + return e && (a.length = i), a; + } + var aa = (t, e) => { + V.set(t, e); + }, oa = (t, e, r, n) => { + var a = T[n + 40 >> 2], i = { + tm_sec: k[n >> 2], + tm_min: k[n + 4 >> 2], + tm_hour: k[n + 8 >> 2], + tm_mday: k[n + 12 >> 2], + tm_mon: k[n + 16 >> 2], + tm_year: k[n + 20 >> 2], + tm_wday: k[n + 24 >> 2], + tm_yday: k[n + 28 >> 2], + tm_isdst: k[n + 32 >> 2], + tm_gmtoff: k[n + 36 >> 2], + tm_zone: a ? Jt(a) : "" + }, u = Jt(r), c = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var l in c) + u = u.replace(new RegExp(l, "g"), c[l]); + var f = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], p = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function v(d, m, F) { + for (var j = typeof d == "number" ? d.toString() : d || ""; j.length < m; ) + j = F[0] + j; + return j; + } + function y(d, m) { + return v(d, m, "0"); + } + function w(d, m) { + function F(ut) { + return ut < 0 ? -1 : ut > 0 ? 1 : 0; + } + var j; + return (j = F(d.getFullYear() - m.getFullYear())) === 0 && (j = F(d.getMonth() - m.getMonth())) === 0 && (j = F(d.getDate() - m.getDate())), j; + } + function E(d) { + switch (d.getDay()) { + case 0: + return new Date(d.getFullYear() - 1, 11, 29); + case 1: + return d; + case 2: + return new Date(d.getFullYear(), 0, 3); + case 3: + return new Date(d.getFullYear(), 0, 2); + case 4: + return new Date(d.getFullYear(), 0, 1); + case 5: + return new Date(d.getFullYear() - 1, 11, 31); + case 6: + return new Date(d.getFullYear() - 1, 11, 30); + } + } + function x(d) { + var m = ra(new Date(d.tm_year + 1900, 0, 1), d.tm_yday), F = new Date(m.getFullYear(), 0, 4), j = new Date(m.getFullYear() + 1, 0, 4), ut = E(F), jt = E(j); + return w(ut, m) <= 0 ? w(jt, m) <= 0 ? m.getFullYear() + 1 : m.getFullYear() : m.getFullYear() - 1; + } + var _ = { + "%a": (d) => f[d.tm_wday].substring(0, 3), + "%A": (d) => f[d.tm_wday], + "%b": (d) => p[d.tm_mon].substring(0, 3), + "%B": (d) => p[d.tm_mon], + "%C": (d) => { + var m = d.tm_year + 1900; + return y(m / 100 | 0, 2); + }, + "%d": (d) => y(d.tm_mday, 2), + "%e": (d) => v(d.tm_mday, 2, " "), + "%g": (d) => x(d).toString().substring(2), + "%G": (d) => x(d), + "%H": (d) => y(d.tm_hour, 2), + "%I": (d) => { + var m = d.tm_hour; + return m == 0 ? m = 12 : m > 12 && (m -= 12), y(m, 2); + }, + "%j": (d) => y(d.tm_mday + ea(Mt(d.tm_year + 1900) ? Se : je, d.tm_mon - 1), 3), + "%m": (d) => y(d.tm_mon + 1, 2), + "%M": (d) => y(d.tm_min, 2), + "%n": () => ` +`, + "%p": (d) => d.tm_hour >= 0 && d.tm_hour < 12 ? "AM" : "PM", + "%S": (d) => y(d.tm_sec, 2), + "%t": () => " ", + "%u": (d) => d.tm_wday || 7, + "%U": (d) => { + var m = d.tm_yday + 7 - d.tm_wday; + return y(Math.floor(m / 7), 2); + }, + "%V": (d) => { + var m = Math.floor((d.tm_yday + 7 - (d.tm_wday + 6) % 7) / 7); + if ((d.tm_wday + 371 - d.tm_yday - 2) % 7 <= 2 && m++, m) { + if (m == 53) { + var F = (d.tm_wday + 371 - d.tm_yday) % 7; + F != 4 && (F != 3 || !Mt(d.tm_year)) && (m = 1); + } + } else { + m = 52; + var j = (d.tm_wday + 7 - d.tm_yday - 1) % 7; + (j == 4 || j == 5 && Mt(d.tm_year % 400 - 1)) && m++; + } + return y(m, 2); + }, + "%w": (d) => d.tm_wday, + "%W": (d) => { + var m = d.tm_yday + 7 - (d.tm_wday + 6) % 7; + return y(Math.floor(m / 7), 2); + }, + "%y": (d) => (d.tm_year + 1900).toString().substring(2), + "%Y": (d) => d.tm_year + 1900, + "%z": (d) => { + var m = d.tm_gmtoff, F = m >= 0; + return m = Math.abs(m) / 60, m = m / 60 * 100 + m % 60, (F ? "+" : "-") + ("0000" + m).slice(-4); + }, + "%Z": (d) => d.tm_zone, + "%%": () => "%" + }; + u = u.replace(/%%/g, "\0\0"); + for (var l in _) + u.includes(l) && (u = u.replace(new RegExp(l, "g"), _[l](i))); + u = u.replace(/\0\0/g, "%"); + var R = na(u, !1); + return R.length > e ? 0 : (aa(R, t), R.length - 1); + }, ia = (t, e, r, n, a) => oa(t, e, r, n); + pe = s.InternalError = class extends Error { + constructor(t) { + super(t), this.name = "InternalError"; + } + }, Fr(), st = s.BindingError = class extends Error { + constructor(t) { + super(t), this.name = "BindingError"; + } + }, Lr(), Hr(), Zr(), Te = s.UnboundTypeError = en(Error, "UnboundTypeError"), sn(), cn(); + var sa = { + s: $r, + u: br, + b: _r, + g: Tr, + q: Pr, + J: Er, + f: Ar, + V: Or, + d: Cr, + da: Dr, + Q: xr, + _: Sr, + ca: rn, + ba: an, + w: on, + Y: ln, + x: fn, + h: hn, + L: mn, + M: vn, + t: gn, + o: wn, + K: Cn, + C: Dn, + A: xn, + ea: Fn, + $: Mn, + R: Sn, + ha: qt, + fa: Rn, + Z: Un, + N: Vn, + O: Ln, + aa: Yn, + B: zn, + X: Nn, + W: qn, + T: Jn, + U: Kn, + E: _a, + D: fa, + F: Ca, + n: Ta, + a: ua, + e: pa, + m: da, + k: va, + H: $a, + v: ga, + G: ba, + z: Ea, + P: Oa, + l: ma, + j: ha, + c: la, + p: ca, + I: wa, + r: Pa, + i: ya, + y: Aa, + ga: ta, + S: ia + }, S = wr(), K = s._free = (t) => (K = s._free = S.ka)(t), ee = s._malloc = (t) => (ee = s._malloc = S.la)(t), Ie = (t) => (Ie = S.na)(t), P = (t, e) => (P = S.oa)(t, e), $t = (t) => ($t = S.pa)(t), O = () => (O = S.qa)(), D = (t) => (D = S.ra)(t), Re = (t) => (Re = S.sa)(t), We = (t) => (We = S.ta)(t), ke = (t, e, r) => (ke = S.ua)(t, e, r), He = (t) => (He = S.va)(t); + s.dynCall_viijii = (t, e, r, n, a, i, u) => (s.dynCall_viijii = S.wa)(t, e, r, n, a, i, u); + var Be = s.dynCall_jiiii = (t, e, r, n, a) => (Be = s.dynCall_jiiii = S.xa)(t, e, r, n, a); + s.dynCall_iiiiij = (t, e, r, n, a, i, u) => (s.dynCall_iiiiij = S.ya)(t, e, r, n, a, i, u), s.dynCall_iiiiijj = (t, e, r, n, a, i, u, c, l) => (s.dynCall_iiiiijj = S.za)(t, e, r, n, a, i, u, c, l), s.dynCall_iiiiiijj = (t, e, r, n, a, i, u, c, l, f) => (s.dynCall_iiiiiijj = S.Aa)(t, e, r, n, a, i, u, c, l, f); + function ua(t, e) { + var r = O(); + try { + return A(t)(e); + } catch (n) { + if (D(r), n !== n + 0) + throw n; + P(1, 0); + } + } + function ca(t, e, r, n) { + var a = O(); + try { + A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function la(t, e, r) { + var n = O(); + try { + A(t)(e, r); + } catch (a) { + if (D(n), a !== a + 0) + throw a; + P(1, 0); + } + } + function da(t, e, r, n) { + var a = O(); + try { + return A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function fa(t, e, r, n, a) { + var i = O(); + try { + return A(t)(e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + function ha(t, e) { + var r = O(); + try { + A(t)(e); + } catch (n) { + if (D(r), n !== n + 0) + throw n; + P(1, 0); + } + } + function pa(t, e, r) { + var n = O(); + try { + return A(t)(e, r); + } catch (a) { + if (D(n), a !== a + 0) + throw a; + P(1, 0); + } + } + function ma(t) { + var e = O(); + try { + A(t)(); + } catch (r) { + if (D(e), r !== r + 0) + throw r; + P(1, 0); + } + } + function va(t, e, r, n, a) { + var i = O(); + try { + return A(t)(e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + function ya(t, e, r, n, a, i, u, c, l, f, p) { + var v = O(); + try { + A(t)(e, r, n, a, i, u, c, l, f, p); + } catch (y) { + if (D(v), y !== y + 0) + throw y; + P(1, 0); + } + } + function ga(t, e, r, n, a, i, u) { + var c = O(); + try { + return A(t)(e, r, n, a, i, u); + } catch (l) { + if (D(c), l !== l + 0) + throw l; + P(1, 0); + } + } + function wa(t, e, r, n, a) { + var i = O(); + try { + A(t)(e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + function $a(t, e, r, n, a, i) { + var u = O(); + try { + return A(t)(e, r, n, a, i); + } catch (c) { + if (D(u), c !== c + 0) + throw c; + P(1, 0); + } + } + function ba(t, e, r, n, a, i, u, c) { + var l = O(); + try { + return A(t)(e, r, n, a, i, u, c); + } catch (f) { + if (D(l), f !== f + 0) + throw f; + P(1, 0); + } + } + function Ca(t, e, r, n) { + var a = O(); + try { + return A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function _a(t, e, r, n) { + var a = O(); + try { + return A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function Ta(t) { + var e = O(); + try { + return A(t)(); + } catch (r) { + if (D(e), r !== r + 0) + throw r; + P(1, 0); + } + } + function Pa(t, e, r, n, a, i, u, c) { + var l = O(); + try { + A(t)(e, r, n, a, i, u, c); + } catch (f) { + if (D(l), f !== f + 0) + throw f; + P(1, 0); + } + } + function Ea(t, e, r, n, a, i, u, c, l, f, p, v) { + var y = O(); + try { + return A(t)(e, r, n, a, i, u, c, l, f, p, v); + } catch (w) { + if (D(y), w !== w + 0) + throw w; + P(1, 0); + } + } + function Aa(t, e, r, n, a, i, u, c, l, f, p, v, y, w, E, x) { + var _ = O(); + try { + A(t)(e, r, n, a, i, u, c, l, f, p, v, y, w, E, x); + } catch (R) { + if (D(_), R !== R + 0) + throw R; + P(1, 0); + } + } + function Oa(t, e, r, n, a) { + var i = O(); + try { + return Be(t, e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + var St; + ht = function t() { + St || Ue(), St || (ht = t); + }; + function Ue() { + if (et > 0 || (ur(), et > 0)) + return; + function t() { + St || (St = !0, s.calledRun = !0, !dt && (cr(), $(s), s.onRuntimeInitialized && s.onRuntimeInitialized(), lr())); + } + s.setStatus ? (s.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + s.setStatus(""); + }, 1), t(); + }, 1)) : t(); + } + if (s.preInit) + for (typeof s.preInit == "function" && (s.preInit = [s.preInit]); s.preInit.length > 0; ) + s.preInit.pop()(); + return Ue(), h.ready; + }; +})(); +function to(o) { + return ae( + Rt, + o + ); +} +function ao(o) { + return Za( + Rt, + o + ); +} +async function eo(o, h) { + return Ja( + Rt, + o, + h + ); +} +async function ro(o, h) { + return Ka( + Rt, + o, + h + ); +} +var ct; +class oo extends EventTarget { + constructor(s = {}) { + var $; + super(); + ze(this, ct, void 0); + try { + const g = ($ = s == null ? void 0 : s.formats) == null ? void 0 : $.filter( + (b) => b !== "unknown" + ); + if ((g == null ? void 0 : g.length) === 0) + throw new TypeError("Hint option provided, but is empty."); + g == null || g.forEach((b) => { + if (!It.has(b)) + throw new TypeError( + `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.` + ); + }), Ne(this, ct, g != null ? g : []), to().then((b) => { + this.dispatchEvent( + new CustomEvent("load", { + detail: b + }) + ); + }).catch((b) => { + this.dispatchEvent(new CustomEvent("error", { detail: b })); + }); + } catch (g) { + throw Ge( + g, + "Failed to construct 'BarcodeDetector'" + ); + } + } + static async getSupportedFormats() { + return Da.filter((s) => s !== "unknown"); + } + async detect(s) { + try { + const $ = await Ra(s); + if ($ === null) + return []; + let g; + try { + ar($) ? g = await eo($, { + tryHarder: !0, + formats: re(this, ct).map((b) => It.get(b)) + }) : g = await ro($, { + tryHarder: !0, + formats: re(this, ct).map((b) => It.get(b)) + }); + } catch (b) { + throw console.error(b), new DOMException( + "Barcode detection service unavailable.", + "NotSupportedError" + ); + } + return g.map((b) => { + const { + topLeft: { x: H, y: L }, + topRight: { x: B, y: M }, + bottomLeft: { x: Y, y: G }, + bottomRight: { x: U, y: Q } + } = b.position, tt = Math.min(H, B, Y, U), dt = Math.min(L, M, G, Q), V = Math.max(H, B, Y, U), W = Math.max(L, M, G, Q); + return { + boundingBox: new DOMRectReadOnly( + tt, + dt, + V - tt, + W - dt + ), + rawValue: b.text, + format: xa(b.format), + cornerPoints: [ + { + x: H, + y: L + }, + { + x: B, + y: M + }, + { + x: U, + y: Q + }, + { + x: Y, + y: G + } + ] + }; + }); + } catch ($) { + throw Ge( + $, + "Failed to execute 'detect' on 'BarcodeDetector'" + ); + } + } +} +ct = new WeakMap(); +export { + oo as BarcodeDetector, + ao as setZXingModuleOverrides +}; diff --git a/node_modules/barcode-detector/dist/es/side-effects.d.ts b/node_modules/barcode-detector/dist/es/side-effects.d.ts new file mode 100644 index 0000000..9b0973c --- /dev/null +++ b/node_modules/barcode-detector/dist/es/side-effects.d.ts @@ -0,0 +1,8 @@ +export { setZXingModuleOverrides } from "./BarcodeDetector.js"; +declare global { + var BarcodeDetector: typeof import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeDetector = import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeFormat = import("./BarcodeDetector.js").BarcodeFormat; + type BarcodeDetectorOptions = import("./BarcodeDetector.js").BarcodeDetectorOptions; + type DetectedBarcode = import("./BarcodeDetector.js").DetectedBarcode; +} diff --git a/node_modules/barcode-detector/dist/es/side-effects.js b/node_modules/barcode-detector/dist/es/side-effects.js new file mode 100644 index 0000000..4780bf2 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/side-effects.js @@ -0,0 +1,7 @@ +import { BarcodeDetector as o } from "./pure.js"; +import { setZXingModuleOverrides as d } from "./pure.js"; +var e; +(e = globalThis.BarcodeDetector) != null || (globalThis.BarcodeDetector = o); +export { + d as setZXingModuleOverrides +}; diff --git a/node_modules/barcode-detector/dist/es/utils.d.ts b/node_modules/barcode-detector/dist/es/utils.d.ts new file mode 100644 index 0000000..65583cb --- /dev/null +++ b/node_modules/barcode-detector/dist/es/utils.d.ts @@ -0,0 +1,15 @@ +/// +import { type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat } from "zxing-wasm/reader"; +export declare const BARCODE_FORMATS: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +export type BarcodeFormat = (typeof BARCODE_FORMATS)[number]; +export type ReadResultBarcodeFormat = Exclude; +export declare const formatMap: Map<"aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown", ReadInputBarcodeFormat>; +export declare function convertFormat(target: ReadOutputBarcodeFormat): ReadResultBarcodeFormat; +export declare function isBlob(image: ImageBitmapSourceWebCodecs): image is Blob; +export declare function getImageDataOrBlobFromImageBitmapSource(image: ImageBitmapSourceWebCodecs): Promise; +declare global { + interface SVGImageElement { + decode?(): Promise; + } +} +export declare function addPrefixToExceptionOrError(e: unknown, prefix: string): TypeError | DOMException; diff --git a/node_modules/barcode-detector/dist/iife/index.js b/node_modules/barcode-detector/dist/iife/index.js new file mode 100644 index 0000000..a9cab46 --- /dev/null +++ b/node_modules/barcode-detector/dist/iife/index.js @@ -0,0 +1,3 @@ +var BarcodeDetectionAPI=function(I){"use strict";var cr=(I,B,z)=>{if(!B.has(I))throw TypeError("Cannot "+z)};var se=(I,B,z)=>(cr(I,B,"read from private field"),z?z.call(I):B.get(I)),lr=(I,B,z)=>{if(B.has(I))throw TypeError("Cannot add the same private member more than once");B instanceof WeakSet?B.add(I):B.set(I,z)},dr=(I,B,z,nt)=>(cr(I,B,"write to private field"),nt?nt.call(I,z):B.set(I,z),z);var ct,Te;const B=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],z=[...B,["unknown"]].map(i=>i[0]),nt=new Map(B);function fr(i){for(const[p,c]of nt)if(i===c)return p;return"unknown"}function hr(i){if(ue(i))return{width:i.naturalWidth,height:i.naturalHeight};if(ce(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(le(i))return{width:i.videoWidth,height:i.videoHeight};if(fe(i))return{width:i.width,height:i.height};if(pe(i))return{width:i.displayWidth,height:i.displayHeight};if(de(i))return{width:i.width,height:i.height};if(he(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function ue(i){try{return i instanceof HTMLImageElement}catch{return!1}}function ce(i){try{return i instanceof SVGImageElement}catch{return!1}}function le(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function de(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function fe(i){try{return i instanceof ImageBitmap}catch{return!1}}function he(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function pe(i){try{return i instanceof VideoFrame}catch{return!1}}function me(i){try{return i instanceof Blob}catch{return!1}}function pr(i){try{return i instanceof ImageData}catch{return!1}}function mr(i,p){try{const c=new OffscreenCanvas(i,p);if(c.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return c;throw void 0}catch{const c=document.createElement("canvas");return c.width=i,c.height=p,c}}async function ve(i){if(ue(i)&&!await wr(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(ce(i)&&!await $r(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(pe(i)&&br(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(le(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(fe(i)&&Tr(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:p,height:c}=hr(i);if(p===0||c===0)return null;const g=mr(p,c).getContext("2d");g.drawImage(i,0,0);try{return g.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function vr(i){let p;try{if(globalThis.createImageBitmap)p=await createImageBitmap(i);else if(globalThis.Image){p=new Image;let $="";try{$=URL.createObjectURL(i),p.src=$,await p.decode()}finally{URL.revokeObjectURL($)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await ve(p)}function yr(i){const{width:p,height:c}=i;if(p===0||c===0)return null;const $=i.getContext("2d");try{return $.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function gr(i){if(me(i))return await vr(i);if(pr(i)){if(Cr(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return de(i)||he(i)?yr(i):await ve(i)}async function wr(i){try{return await i.decode(),!0}catch{return!1}}async function $r(i){var p;try{return await((p=i.decode)==null?void 0:p.call(i)),!0}catch{return!1}}function br(i){return i.format===null}function Cr(i){return i.data.buffer.byteLength===0}function Tr(i){return i.width===0&&i.height===0}function ye(i,p){return i instanceof DOMException?new DOMException(`${p}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${p}: ${i.message}`):new Error(`${p}: ${i}`)}const ge=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function _r(i){return i.join("|")}function Pr(i){const p=we(i);let c=0,$=ge.length-1;for(;c<=$;){const g=Math.floor((c+$)/2),b=ge[g],U=we(b);if(U===p)return b;U{const c=i.match(/_(.+?)\.wasm$/);return c?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${c[1]}/${i}`:p+i}};let Bt=new WeakMap;function Ut(i,p){var c;const $=Bt.get(i);if($!=null&&$.modulePromise&&(p===void 0||Object.is(p,$.moduleOverrides)))return $.modulePromise;const g=(c=p!=null?p:$==null?void 0:$.moduleOverrides)!=null?c:Sr,b=i({...g});return Bt.set(i,{moduleOverrides:g,modulePromise:b}),b}function Mr(i,p){Bt.set(i,{moduleOverrides:p})}async function jr(i,p,c=ut){const $={...ut,...c},g=await Ut(i),{size:b}=p,U=new Uint8Array(await p.arrayBuffer()),N=g._malloc(b);g.HEAPU8.set(U,N);const V=g.readBarcodesFromImage(N,b,$e(g,$));g._free(N);const S=[];for(let G=0;G{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var c=p,$,g;c.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},c),U="./this.program",N=typeof window=="object",V=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function G(t){return c.locateFile?c.locateFile(t,S):S+t}var Q;(N||V)&&(V?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",V&&(Q=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),c.print||console.log.bind(console);var L=c.printErr||console.error.bind(console);Object.assign(c,b),b=null,c.arguments&&c.arguments,c.thisProgram&&(U=c.thisProgram),c.quit&&c.quit;var K;c.wasmBinary&&(K=c.wasmBinary),typeof WebAssembly!="object"&&Et("no native wasm support detected");var at,mt=!1,Y,k,lt,vt,H,_,_e,Pe;function Ee(){var t=at.buffer;c.HEAP8=Y=new Int8Array(t),c.HEAP16=lt=new Int16Array(t),c.HEAPU8=k=new Uint8Array(t),c.HEAPU16=vt=new Uint16Array(t),c.HEAP32=H=new Int32Array(t),c.HEAPU32=_=new Uint32Array(t),c.HEAPF32=_e=new Float32Array(t),c.HEAPF64=Pe=new Float64Array(t)}var Ae=[],De=[],Oe=[];function Br(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Lr(c.preRun.shift());Vt(Ae)}function Ur(){Vt(De)}function Vr(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)zr(c.postRun.shift());Vt(Oe)}function Lr(t){Ae.unshift(t)}function Yr(t){De.unshift(t)}function zr(t){Oe.unshift(t)}var ot=0,yt=null;function Nr(t){var e;ot++,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot)}function Gr(t){var e;if(ot--,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot),ot==0&&yt){var r=yt;yt=null,r()}}function Et(t){var e;(e=c.onAbort)===null||e===void 0||e.call(c,t),t="Aborted("+t+")",L(t),mt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var Xr="data:application/octet-stream;base64,",Fe=t=>t.startsWith(Xr),dt;dt="zxing_reader.wasm",Fe(dt)||(dt=G(dt));function xe(t){if(t==dt&&K)return new Uint8Array(K);if(Q)return Q(t);throw"both async and sync fetching of the wasm failed"}function qr(t){return!K&&(N||V)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>xe(t)):Promise.resolve().then(()=>xe(t))}function Se(t,e,r){return qr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{L(`failed to asynchronously prepare wasm: ${n}`),Et(n)})}function Qr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!Fe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var o=WebAssembly.instantiateStreaming(a,r);return o.then(n,function(s){return L(`wasm streaming compile failed: ${s}`),L("falling back to ArrayBuffer instantiation"),Se(e,r,n)})}):Se(e,r,n)}function Zr(){var t={a:Ha};function e(n,a){return M=n.exports,at=M.ia,Ee(),Ve=M.ma,Yr(M.ja),Gr(),M}Nr();function r(n){e(n.instance)}if(c.instantiateWasm)try{return c.instantiateWasm(t,e)}catch(n){L(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return Qr(K,dt,t,r).catch(g),{}}var Vt=t=>{for(;t.length>0;)t.shift()(c)};c.noExitRuntime;var At=[],Dt=0,Jr=t=>{var e=new Lt(t);return e.get_caught()||(e.set_caught(!0),Dt--),e.set_rethrown(!1),At.push(e),rr(e.excPtr),e.get_exception_ptr()},tt=0,Kr=()=>{P(0,0);var t=At.pop();er(t.excPtr),tt=0};function Lt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,Y[this.ptr+12>>0]=e},this.get_caught=function(){return Y[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,Y[this.ptr+13>>0]=e},this.get_rethrown=function(){return Y[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=ar(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var tn=t=>{throw tt||(tt=t),tt},Yt=t=>{var e=tt;if(!e)return _t(0),0;var r=new Lt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return _t(0),e;for(var a in t){var o=t[a];if(o===0||o===n)break;var s=r.ptr+16;if(nr(o,n,s))return _t(o),e}return _t(n),e},en=()=>Yt([]),rn=t=>Yt([t]),nn=(t,e)=>Yt([t,e]),an=()=>{var t=At.pop();t||Et("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(At.push(t),t.set_rethrown(!0),t.set_caught(!1),Dt++),tt=e,tt},on=(t,e,r)=>{var n=new Lt(t);throw n.init(e,r),tt=t,Dt++,tt},sn=()=>Dt,Ot={},zt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Nt(t){return this.fromWireType(H[t>>2])}var ft={},it={},Ft={},Me,xt=t=>{throw new Me(t)},st=(t,e,r)=>{t.forEach(function(u){Ft[u]=e});function n(u){var l=r(u);l.length!==t.length&&xt("Mismatched type converter count");for(var f=0;f{it.hasOwnProperty(u)?a[l]=it[u]:(o.push(u),ft.hasOwnProperty(u)||(ft[u]=[]),ft[u].push(()=>{a[l]=it[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)},un=t=>{var e=Ot[t];delete Ot[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,o=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));st([t],o,s=>{var u={};return a.forEach((l,f)=>{var h=l.fieldName,v=s[f],y=l.getter,w=l.getterContext,E=s[f+a.length],F=l.setter,T=l.setterContext;u[h]={read:W=>v.fromWireType(y(w,W)),write:(W,d)=>{var m=[];F(T,W,E.toWireType(m,d)),zt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var h in u)f[h]=u[h].read(l);return n(l),f},toWireType:(l,f)=>{for(var h in u)if(!(h in f))throw new TypeError(`Missing field: "${h}"`);var v=r();for(h in u)u[h].write(v,f[h]);return l!==null&&l.push(n,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:n}]})},cn=(t,e,r,n,a)=>{},ln=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);je=t},je,R=t=>{for(var e="",r=t;k[r];)e+=je[k[r++]];return e},ht,C=t=>{throw new ht(t)};function dn(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),it.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(it[t]=e,delete Ft[t],ft.hasOwnProperty(t)){var a=ft[t];delete ft[t],a.forEach(o=>o())}}function Z(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return dn(t,e,r)}var J=8,fn=(t,e,r,n)=>{e=R(e),Z(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?r:n},argPackAdvance:J,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},hn=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Gt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Xt=!1,Ie=t=>{},pn=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},Re=t=>{t.count.value-=1;var e=t.count.value===0;e&&pn(t)},We=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=We(t,e,r.baseClass);return n===null?null:r.downcast(n)},ke={},mn=()=>Object.keys($t).length,vn=()=>{var t=[];for(var e in $t)$t.hasOwnProperty(e)&&t.push($t[e]);return t},gt=[],qt=()=>{for(;gt.length;){var t=gt.pop();t.$$.deleteScheduled=!1,t.delete()}},wt,yn=t=>{wt=t,gt.length&&wt&&wt(qt)},gn=()=>{c.getInheritedInstanceCount=mn,c.getLiveInheritedInstances=vn,c.flushPendingDeletes=qt,c.setDelayFunction=yn},$t={},wn=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},$n=(t,e)=>(e=wn(t,e),$t[e]),St=(t,e)=>{(!e.ptrType||!e.ptr)&&xt("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&xt("Both smartPtrType and smartPtr must be specified"),e.count={value:1},bt(Object.create(t,{$$:{value:e,writable:!0}}))};function bn(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=$n(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o=this.registeredClass.getActualType(e),s=ke[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=We(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:t}):St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var bt=t=>typeof FinalizationRegistry>"u"?(bt=e=>e,t):(Xt=new FinalizationRegistry(e=>{Re(e.$$)}),bt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Xt.register(e,a,e)}return e},Ie=e=>Xt.unregister(e),bt(t)),Cn=()=>{Object.assign(Mt.prototype,{isAliasOf(t){if(!(this instanceof Mt)||!(t instanceof Mt))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Gt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=bt(Object.create(Object.getPrototypeOf(this),{$$:{value:hn(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),Ie(this),Re(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),gt.push(this),gt.length===1&&wt&&wt(qt),this.$$.deleteScheduled=!0,this}})};function Mt(){}var Ct=(t,e)=>Object.defineProperty(e,"name",{value:t}),He=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},Qt=(t,e,r)=>{c.hasOwnProperty(t)?((r===void 0||c[t].overloadTable!==void 0&&c[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),He(c,t,t),c.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),c[t].overloadTable[r]=e):(c[t]=e,r!==void 0&&(c[t].numArguments=r))},Tn=48,_n=57,Pn=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Tn&&e<=_n?`_${t}`:t};function En(t,e,r,n,a,o,s,u){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Zt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function An(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function Dn(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Zt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,et.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function On(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function Be(t){return this.fromWireType(_[t>>2])}var Fn=()=>{Object.assign(jt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:J,readValueFromPointer:Be,deleteObject(t){t!==null&&t.delete()},fromWireType:bn})};function jt(t,e,r,n,a,o,s,u,l,f,h){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=h,!a&&e.baseClass===void 0?n?(this.toWireType=An,this.destructorFunction=null):(this.toWireType=On,this.destructorFunction=null):this.toWireType=Dn}var Ue=(t,e,r)=>{c.hasOwnProperty(t)||xt("Replacing nonexistant public symbol"),c[t].overloadTable!==void 0&&r!==void 0?c[t].overloadTable[r]=e:(c[t]=e,c[t].argCount=r)},xn=(t,e,r)=>{var n=c["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},It=[],Ve,A=t=>{var e=It[t];return e||(t>=It.length&&(It.length=t+1),It[t]=e=Ve.get(t)),e},Sn=(t,e,r)=>{if(t.includes("j"))return xn(t,e,r);var n=A(e).apply(null,r);return n},Mn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Sn(t,e,r)}},q=(t,e)=>{t=R(t);function r(){return t.includes("j")?Mn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},jn=(t,e)=>{var r=Ct(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Le,Ye=t=>{var e=tr(t),r=R(e);return rt(e),r},Rt=(t,e)=>{var r=[],n={};function a(o){if(!n[o]&&!it[o]){if(Ft[o]){Ft[o].forEach(a);return}r.push(o),n[o]=!0}}throw e.forEach(a),new Le(`${t}: `+r.map(Ye).join([", "]))},In=(t,e,r,n,a,o,s,u,l,f,h,v,y)=>{h=R(h),o=q(a,o),u&&(u=q(s,u)),f&&(f=q(l,f)),y=q(v,y);var w=Pn(h);Qt(w,function(){Rt(`Cannot construct ${h} due to unbound types`,[n])}),st([t,e,r],n?[n]:[],function(E){E=E[0];var F,T;n?(F=E.registeredClass,T=F.instancePrototype):T=Mt.prototype;var W=Ct(h,function(){if(Object.getPrototypeOf(this)!==d)throw new ht("Use 'new' to construct "+h);if(m.constructor_body===void 0)throw new ht(h+" has no accessible constructor");var ur=m.constructor_body[arguments.length];if(ur===void 0)throw new ht(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return ur.apply(this,arguments)}),d=Object.create(T,{constructor:{value:W}});W.prototype=d;var m=new En(h,W,d,y,F,o,u,f);if(m.baseClass){var x,j;(j=(x=m.baseClass).__derivedClasses)!==null&&j!==void 0||(x.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var pt=new jt(h,m,!0,!1,!1),Ht=new jt(h+"*",m,!1,!1,!1),sr=new jt(h+" const*",m,!1,!0,!1);return ke[t]={pointerType:Ht,constPointerType:sr},Ue(w,W),[pt,Ht,sr]})},Jt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function Rn(t){for(var e=1;e{var s=Jt(e,r);a=q(n,a),st([],[t],function(u){u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new ht(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{Rt(`Cannot construct ${u.name} due to unbound types`,s)},st([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[e-1]=Kt(l,f,null,a,o),[])),[]})},ze=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},kn=(t,e,r,n,a,o,s,u,l)=>{var f=Jt(r,n);e=R(e),e=ze(e),o=q(a,o),st([],[t],function(h){h=h[0];var v=`${h.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&h.registeredClass.pureVirtualFunctions.push(e);function y(){Rt(`Cannot call ${v} due to unbound types`,f)}var w=h.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==h.name&&E.argCount===r-2?(y.argCount=r-2,y.className=h.name,w[e]=y):(He(w,e,v),w[e].overloadTable[r-2]=y),st([],f,function(F){var T=Kt(v,F,h,o,s);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function Hn(){Object.assign(Ne.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function Ne(){this.allocated=[void 0],this.freelist=[]}var X=new Ne,te=t=>{t>=X.reserved&&--X.get(t).refcount===0&&X.free(t)},Bn=()=>{for(var t=0,e=X.reserved;e{X.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),X.reserved=X.allocated.length,c.count_emval_handles=Bn},et={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),X.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return X.allocate({refcount:1,value:t})}}},Vn=(t,e)=>{e=R(e),Z(t,{name:e,fromWireType:r=>{var n=et.toValue(r);return te(r),n},toWireType:(r,n)=>et.toHandle(n),argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:null})},Ln=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(Y[n>>0])}:function(n){return this.fromWireType(k[n>>0])};case 2:return r?function(n){return this.fromWireType(lt[n>>1])}:function(n){return this.fromWireType(vt[n>>1])};case 4:return r?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Yn=(t,e,r,n)=>{e=R(e);function a(){}a.values={},Z(t,{name:e,constructor:a,fromWireType:function(o){return this.constructor.values[o]},toWireType:(o,s)=>s.value,argPackAdvance:J,readValueFromPointer:Ln(e,r,n),destructorFunction:null}),Qt(e,a)},ee=(t,e)=>{var r=it[t];return r===void 0&&C(e+" has unknown type "+Ye(t)),r},zn=(t,e,r)=>{var n=ee(t,"enum");e=R(e);var a=n.constructor,o=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:Ct(`${n.name}_${e}`,function(){})}});a.values[r]=o,a[e]=o},re=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},Nn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(_e[r>>2])};case 8:return function(r){return this.fromWireType(Pe[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},Gn=(t,e,r)=>{e=R(e),Z(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:J,readValueFromPointer:Nn(e,r),destructorFunction:null})},Xn=(t,e,r,n,a,o,s)=>{var u=Jt(e,r);t=R(t),t=ze(t),a=q(n,a),Qt(t,function(){Rt(`Cannot call ${t} due to unbound types`,u)},e-1),st([],u,function(l){var f=[l[0],null].concat(l.slice(1));return Ue(t,Kt(t,f,null,a,o),e-1),[]})},qn=(t,e,r)=>{switch(e){case 1:return r?n=>Y[n>>0]:n=>k[n>>0];case 2:return r?n=>lt[n>>1]:n=>vt[n>>1];case 4:return r?n=>H[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Qn=(t,e,r,n,a)=>{e=R(e);var o=h=>h;if(n===0){var s=32-8*r;o=h=>h<>>s}var u=e.includes("unsigned"),l=(h,v)=>{},f;u?f=function(h,v){return l(v,this.name),v>>>0}:f=function(h,v){return l(v,this.name),v},Z(t,{name:e,fromWireType:o,toWireType:f,argPackAdvance:J,readValueFromPointer:qn(e,r,n!==0),destructorFunction:null})},Zn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function o(s){var u=_[s>>2],l=_[s+4>>2];return new a(Y.buffer,l,u)}r=R(r),Z(t,{name:r,fromWireType:o,argPackAdvance:J,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},Ge=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,o=r+n-1,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(r>=o)break;e[r++]=u}else if(u<=2047){if(r+1>=o)break;e[r++]=192|u>>6,e[r++]=128|u&63}else if(u<=65535){if(r+2>=o)break;e[r++]=224|u>>12,e[r++]=128|u>>6&63,e[r++]=128|u&63}else{if(r+3>=o)break;e[r++]=240|u>>18,e[r++]=128|u>>12&63,e[r++]=128|u>>6&63,e[r++]=128|u&63}}return e[r]=0,r-a},Jn=(t,e,r)=>Ge(t,k,e,r),Xe=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},qe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Kn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&qe)return qe.decode(t.subarray(e,a));for(var o="";e>10,56320|f&1023)}}return o},ne=(t,e)=>t?Kn(k,t,e):"",ta=(t,e)=>{e=R(e);var r=e==="std::string";Z(t,{name:e,fromWireType(n){var a=_[n>>2],o=n+4,s;if(r)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||k[f]==0){var h=f-u,v=ne(u,h);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var y=new Array(a),l=0;l>2]=o,r&&s)Jn(a,l,o+1);else if(s)for(var f=0;f255&&(rt(l),C("String has UTF-16 code units that do not fit in 8 bits")),k[l+f]=h}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&vt[n];)++n;if(r=n<<1,r-t>32&&Qe)return Qe.decode(k.subarray(t,r));for(var o="",s=0;!(s>=e/2);++s){var u=lt[t+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},ra=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,o=r>1]=u,e+=2}return lt[e>>1]=0,e-a},na=t=>t.length*2,aa=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=H[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},oa=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,o=a+r-4,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(H[e>>2]=u,e+=4,e+4>o)break}return H[e>>2]=0,e-a},ia=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},sa=(t,e,r)=>{r=R(r);var n,a,o,s,u;e===2?(n=ea,a=ra,s=na,o=()=>vt,u=1):e===4&&(n=aa,a=oa,s=ia,o=()=>_,u=2),Z(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],h=o(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||h[E>>u]==0){var F=E-y,T=n(y,F);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return rt(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var h=s(f),v=ie(4+h+e);return _[v>>2]=h>>u,a(f,v+4,h+e),l!==null&&l.push(rt,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction(l){rt(l)}})},ua=(t,e,r,n,a,o)=>{Ot[t]={name:R(e),rawConstructor:q(r,n),rawDestructor:q(a,o),fields:[]}},ca=(t,e,r,n,a,o,s,u,l,f)=>{Ot[t].fields.push({fieldName:R(e),getterReturnType:r,getter:q(n,a),getterContext:o,setterArgumentType:s,setter:q(u,l),setterContext:f})},la=(t,e)=>{e=R(e),Z(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},ae=[],da=(t,e,r,n)=>(t=ae[t],e=et.toValue(e),t(null,e,r,n)),fa={},ha=t=>{var e=fa[t];return e===void 0?R(t):e},Ze=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},pa=t=>t===0?et.toHandle(Ze()):(t=ha(t),et.toHandle(Ze()[t])),ma=t=>{var e=ae.length;return ae.push(t),e},va=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},ya=Reflect.construct,ga=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=et.toHandle(n)),a},wa=(t,e,r)=>{var n=va(t,e),a=n.shift();t--;var o=new Array(t),s=(l,f,h,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return ma(Ct(u,s))},$a=t=>{t>4&&(X.get(t).refcount+=1)},ba=t=>{var e=et.toValue(t);zt(e),te(t)},Ca=(t,e)=>{t=ee(t,"_emval_take_value");var r=t.readValueFromPointer(e);return et.toHandle(r)},Ta=()=>{Et("")},_a=(t,e,r)=>k.copyWithin(t,e,e+r),Pa=()=>2147483648,Ea=t=>{var e=at.buffer,r=(t-e.byteLength+65535)/65536;try{return at.grow(r),Ee(),1}catch{}},Aa=t=>{var e=k.length;t>>>=0;var r=Pa();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,t+100663296);var s=Math.min(r,n(Math.max(t,o),65536)),u=Ea(s);if(u)return!0}return!1},oe={},Da=()=>U||"./this.program",Tt=()=>{if(!Tt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Da()};for(var r in oe)oe[r]===void 0?delete e[r]:e[r]=oe[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);Tt.strings=n}return Tt.strings},Oa=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);Y[e>>0]=0},Fa=(t,e)=>{var r=0;return Tt().forEach((n,a)=>{var o=e+r;_[t+a*4>>2]=o,Oa(n,o),r+=n.length+1}),0},xa=(t,e)=>{var r=Tt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},Sa=t=>t,Wt=t=>t%4===0&&(t%100!==0||t%400===0),Ma=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Je=[31,29,31,30,31,30,31,31,30,31,30,31],Ke=[31,28,31,30,31,30,31,31,30,31,30,31],ja=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=Wt(r.getFullYear()),a=r.getMonth(),o=(n?Je:Ke)[a];if(e>o-r.getDate())e-=o-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function Ia(t,e,r){var n=r>0?r:Xe(t)+1,a=new Array(n),o=Ge(t,a,0,a.length);return e&&(a.length=o),a}var Ra=(t,e)=>{Y.set(t,e)},Wa=(t,e,r,n)=>{var a=_[n+40>>2],o={tm_sec:H[n>>2],tm_min:H[n+4>>2],tm_hour:H[n+8>>2],tm_mday:H[n+12>>2],tm_mon:H[n+16>>2],tm_year:H[n+20>>2],tm_wday:H[n+24>>2],tm_yday:H[n+28>>2],tm_isdst:H[n+32>>2],tm_gmtoff:H[n+36>>2],tm_zone:a?ne(a):""},s=ne(r),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in u)s=s.replace(new RegExp(l,"g"),u[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,x){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=x(d.getFullYear()-m.getFullYear()))===0&&(j=x(d.getMonth()-m.getMonth()))===0&&(j=x(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function F(d){var m=ja(new Date(d.tm_year+1900,0,1),d.tm_yday),x=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),pt=E(x),Ht=E(j);return w(pt,m)<=0?w(Ht,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>h[d.tm_mon].substring(0,3),"%B":d=>h[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>F(d).toString().substring(2),"%G":d=>F(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+Ma(Wt(d.tm_year+1900)?Je:Ke,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var x=(d.tm_wday+371-d.tm_yday)%7;x!=4&&(x!=3||!Wt(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&Wt(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,x=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(x?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var l in T)s.includes(l)&&(s=s.replace(new RegExp(l,"g"),T[l](o)));s=s.replace(/\0\0/g,"%");var W=Ia(s,!1);return W.length>e?0:(Ra(W,t),W.length-1)},ka=(t,e,r,n,a)=>Wa(t,e,r,n);Me=c.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},ln(),ht=c.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},Cn(),gn(),Fn(),Le=c.UnboundTypeError=jn(Error,"UnboundTypeError"),Hn(),Un();var Ha={s:Jr,u:Kr,b:en,g:rn,q:nn,J:an,f:on,V:sn,d:tn,da:un,Q:cn,_:fn,ca:In,ba:Wn,w:kn,Y:Vn,x:Yn,h:zn,L:Gn,M:Xn,t:Qn,o:Zn,K:ta,C:sa,A:ua,ea:ca,$:la,R:da,ha:te,fa:pa,Z:wa,N:$a,O:ba,aa:Ca,B:Ta,X:_a,W:Aa,T:Fa,U:xa,E:eo,D:Ya,F:to,n:ro,a:Ba,e:Na,m:La,k:Xa,H:Ja,v:Qa,G:Ka,z:ao,P:io,l:Ga,j:za,c:Va,p:Ua,I:Za,r:no,i:qa,y:oo,ga:Sa,S:ka},M=Zr(),rt=c._free=t=>(rt=c._free=M.ka)(t),ie=c._malloc=t=>(ie=c._malloc=M.la)(t),tr=t=>(tr=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),_t=t=>(_t=M.pa)(t),D=()=>(D=M.qa)(),O=t=>(O=M.ra)(t),er=t=>(er=M.sa)(t),rr=t=>(rr=M.ta)(t),nr=(t,e,r)=>(nr=M.ua)(t,e,r),ar=t=>(ar=M.va)(t);c.dynCall_viijii=(t,e,r,n,a,o,s)=>(c.dynCall_viijii=M.wa)(t,e,r,n,a,o,s);var or=c.dynCall_jiiii=(t,e,r,n,a)=>(or=c.dynCall_jiiii=M.xa)(t,e,r,n,a);c.dynCall_iiiiij=(t,e,r,n,a,o,s)=>(c.dynCall_iiiiij=M.ya)(t,e,r,n,a,o,s),c.dynCall_iiiiijj=(t,e,r,n,a,o,s,u,l)=>(c.dynCall_iiiiijj=M.za)(t,e,r,n,a,o,s,u,l),c.dynCall_iiiiiijj=(t,e,r,n,a,o,s,u,l,f)=>(c.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,o,s,u,l,f);function Ba(t,e){var r=D();try{return A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Ua(t,e,r,n){var a=D();try{A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Va(t,e,r){var n=D();try{A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function La(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Ya(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function za(t,e){var r=D();try{A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Na(t,e,r){var n=D();try{return A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Ga(t){var e=D();try{A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function Xa(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function qa(t,e,r,n,a,o,s,u,l,f,h){var v=D();try{A(t)(e,r,n,a,o,s,u,l,f,h)}catch(y){if(O(v),y!==y+0)throw y;P(1,0)}}function Qa(t,e,r,n,a,o,s){var u=D();try{return A(t)(e,r,n,a,o,s)}catch(l){if(O(u),l!==l+0)throw l;P(1,0)}}function Za(t,e,r,n,a){var o=D();try{A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Ja(t,e,r,n,a,o){var s=D();try{return A(t)(e,r,n,a,o)}catch(u){if(O(s),u!==u+0)throw u;P(1,0)}}function Ka(t,e,r,n,a,o,s,u){var l=D();try{return A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function to(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function eo(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function ro(t){var e=D();try{return A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function no(t,e,r,n,a,o,s,u){var l=D();try{A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function ao(t,e,r,n,a,o,s,u,l,f,h,v){var y=D();try{return A(t)(e,r,n,a,o,s,u,l,f,h,v)}catch(w){if(O(y),w!==w+0)throw w;P(1,0)}}function oo(t,e,r,n,a,o,s,u,l,f,h,v,y,w,E,F){var T=D();try{A(t)(e,r,n,a,o,s,u,l,f,h,v,y,w,E,F)}catch(W){if(O(T),W!==W+0)throw W;P(1,0)}}function io(t,e,r,n,a){var o=D();try{return or(t,e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}var kt;yt=function t(){kt||ir(),kt||(yt=t)};function ir(){if(ot>0||(Br(),ot>0))return;function t(){kt||(kt=!0,c.calledRun=!0,!mt&&(Ur(),$(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Vr()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),t()},1)):t()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return ir(),p.ready}})();function Rr(i){return Ut(Pt,i)}function Wr(i){return Mr(Pt,i)}async function kr(i,p){return jr(Pt,i,p)}async function Hr(i,p){return Ir(Pt,i,p)}class Ce extends EventTarget{constructor(c={}){var $;super();lr(this,ct,void 0);try{const g=($=c==null?void 0:c.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!nt.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),dr(this,ct,g!=null?g:[]),Rr().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw ye(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return z.filter(c=>c!=="unknown")}async detect(c){try{const $=await gr(c);if($===null)return[];let g;try{me($)?g=await kr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))}):g=await Hr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:U,y:N},topRight:{x:V,y:S},bottomLeft:{x:G,y:Q},bottomRight:{x:L,y:K}}=b.position,at=Math.min(U,V,G,L),mt=Math.min(N,S,Q,K),Y=Math.max(U,V,G,L),k=Math.max(N,S,Q,K);return{boundingBox:new DOMRectReadOnly(at,mt,Y-at,k-mt),rawValue:b.text,format:fr(b.format),cornerPoints:[{x:U,y:N},{x:V,y:S},{x:L,y:K},{x:G,y:Q}]}})}catch($){throw ye($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}return ct=new WeakMap,(Te=globalThis.BarcodeDetector)!=null||(globalThis.BarcodeDetector=Ce),I.BarcodeDetector=Ce,I.setZXingModuleOverrides=Wr,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),I}({}); diff --git a/node_modules/barcode-detector/dist/iife/pure.js b/node_modules/barcode-detector/dist/iife/pure.js new file mode 100644 index 0000000..111df27 --- /dev/null +++ b/node_modules/barcode-detector/dist/iife/pure.js @@ -0,0 +1,3 @@ +var BarcodeDetectionAPI=function(I){"use strict";var sr=(I,B,z)=>{if(!B.has(I))throw TypeError("Cannot "+z)};var se=(I,B,z)=>(sr(I,B,"read from private field"),z?z.call(I):B.get(I)),ur=(I,B,z)=>{if(B.has(I))throw TypeError("Cannot add the same private member more than once");B instanceof WeakSet?B.add(I):B.set(I,z)},cr=(I,B,z,nt)=>(sr(I,B,"write to private field"),nt?nt.call(I,z):B.set(I,z),z);var ct;const B=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],z=[...B,["unknown"]].map(i=>i[0]),nt=new Map(B);function lr(i){for(const[p,c]of nt)if(i===c)return p;return"unknown"}function dr(i){if(ue(i))return{width:i.naturalWidth,height:i.naturalHeight};if(ce(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(le(i))return{width:i.videoWidth,height:i.videoHeight};if(fe(i))return{width:i.width,height:i.height};if(pe(i))return{width:i.displayWidth,height:i.displayHeight};if(de(i))return{width:i.width,height:i.height};if(he(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function ue(i){try{return i instanceof HTMLImageElement}catch{return!1}}function ce(i){try{return i instanceof SVGImageElement}catch{return!1}}function le(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function de(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function fe(i){try{return i instanceof ImageBitmap}catch{return!1}}function he(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function pe(i){try{return i instanceof VideoFrame}catch{return!1}}function me(i){try{return i instanceof Blob}catch{return!1}}function fr(i){try{return i instanceof ImageData}catch{return!1}}function hr(i,p){try{const c=new OffscreenCanvas(i,p);if(c.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return c;throw void 0}catch{const c=document.createElement("canvas");return c.width=i,c.height=p,c}}async function ve(i){if(ue(i)&&!await yr(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(ce(i)&&!await gr(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(pe(i)&&wr(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(le(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(fe(i)&&br(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:p,height:c}=dr(i);if(p===0||c===0)return null;const g=hr(p,c).getContext("2d");g.drawImage(i,0,0);try{return g.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function pr(i){let p;try{if(globalThis.createImageBitmap)p=await createImageBitmap(i);else if(globalThis.Image){p=new Image;let $="";try{$=URL.createObjectURL(i),p.src=$,await p.decode()}finally{URL.revokeObjectURL($)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await ve(p)}function mr(i){const{width:p,height:c}=i;if(p===0||c===0)return null;const $=i.getContext("2d");try{return $.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function vr(i){if(me(i))return await pr(i);if(fr(i)){if($r(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return de(i)||he(i)?mr(i):await ve(i)}async function yr(i){try{return await i.decode(),!0}catch{return!1}}async function gr(i){var p;try{return await((p=i.decode)==null?void 0:p.call(i)),!0}catch{return!1}}function wr(i){return i.format===null}function $r(i){return i.data.buffer.byteLength===0}function br(i){return i.width===0&&i.height===0}function ye(i,p){return i instanceof DOMException?new DOMException(`${p}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${p}: ${i.message}`):new Error(`${p}: ${i}`)}const ge=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Cr(i){return i.join("|")}function Tr(i){const p=we(i);let c=0,$=ge.length-1;for(;c<=$;){const g=Math.floor((c+$)/2),b=ge[g],U=we(b);if(U===p)return b;U{const c=i.match(/_(.+?)\.wasm$/);return c?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${c[1]}/${i}`:p+i}};let Bt=new WeakMap;function Ut(i,p){var c;const $=Bt.get(i);if($!=null&&$.modulePromise&&(p===void 0||Object.is(p,$.moduleOverrides)))return $.modulePromise;const g=(c=p!=null?p:$==null?void 0:$.moduleOverrides)!=null?c:Fr,b=i({...g});return Bt.set(i,{moduleOverrides:g,modulePromise:b}),b}function xr(i,p){Bt.set(i,{moduleOverrides:p})}async function Sr(i,p,c=ut){const $={...ut,...c},g=await Ut(i),{size:b}=p,U=new Uint8Array(await p.arrayBuffer()),N=g._malloc(b);g.HEAPU8.set(U,N);const V=g.readBarcodesFromImage(N,b,$e(g,$));g._free(N);const S=[];for(let G=0;G{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var c=p,$,g;c.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},c),U="./this.program",N=typeof window=="object",V=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function G(t){return c.locateFile?c.locateFile(t,S):S+t}var Q;(N||V)&&(V?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",V&&(Q=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),c.print||console.log.bind(console);var L=c.printErr||console.error.bind(console);Object.assign(c,b),b=null,c.arguments&&c.arguments,c.thisProgram&&(U=c.thisProgram),c.quit&&c.quit;var K;c.wasmBinary&&(K=c.wasmBinary),typeof WebAssembly!="object"&&Et("no native wasm support detected");var at,mt=!1,Y,k,lt,vt,H,_,Ce,Te;function _e(){var t=at.buffer;c.HEAP8=Y=new Int8Array(t),c.HEAP16=lt=new Int16Array(t),c.HEAPU8=k=new Uint8Array(t),c.HEAPU16=vt=new Uint16Array(t),c.HEAP32=H=new Int32Array(t),c.HEAPU32=_=new Uint32Array(t),c.HEAPF32=Ce=new Float32Array(t),c.HEAPF64=Te=new Float64Array(t)}var Pe=[],Ee=[],Ae=[];function Hr(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Vr(c.preRun.shift());Vt(Pe)}function Br(){Vt(Ee)}function Ur(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Yr(c.postRun.shift());Vt(Ae)}function Vr(t){Pe.unshift(t)}function Lr(t){Ee.unshift(t)}function Yr(t){Ae.unshift(t)}var ot=0,yt=null;function zr(t){var e;ot++,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot)}function Nr(t){var e;if(ot--,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot),ot==0&&yt){var r=yt;yt=null,r()}}function Et(t){var e;(e=c.onAbort)===null||e===void 0||e.call(c,t),t="Aborted("+t+")",L(t),mt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var Gr="data:application/octet-stream;base64,",De=t=>t.startsWith(Gr),dt;dt="zxing_reader.wasm",De(dt)||(dt=G(dt));function Oe(t){if(t==dt&&K)return new Uint8Array(K);if(Q)return Q(t);throw"both async and sync fetching of the wasm failed"}function Xr(t){return!K&&(N||V)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>Oe(t)):Promise.resolve().then(()=>Oe(t))}function Fe(t,e,r){return Xr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{L(`failed to asynchronously prepare wasm: ${n}`),Et(n)})}function qr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!De(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var o=WebAssembly.instantiateStreaming(a,r);return o.then(n,function(s){return L(`wasm streaming compile failed: ${s}`),L("falling back to ArrayBuffer instantiation"),Fe(e,r,n)})}):Fe(e,r,n)}function Qr(){var t={a:ka};function e(n,a){return M=n.exports,at=M.ia,_e(),Be=M.ma,Lr(M.ja),Nr(),M}zr();function r(n){e(n.instance)}if(c.instantiateWasm)try{return c.instantiateWasm(t,e)}catch(n){L(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return qr(K,dt,t,r).catch(g),{}}var Vt=t=>{for(;t.length>0;)t.shift()(c)};c.noExitRuntime;var At=[],Dt=0,Zr=t=>{var e=new Lt(t);return e.get_caught()||(e.set_caught(!0),Dt--),e.set_rethrown(!1),At.push(e),tr(e.excPtr),e.get_exception_ptr()},tt=0,Jr=()=>{P(0,0);var t=At.pop();Ke(t.excPtr),tt=0};function Lt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,Y[this.ptr+12>>0]=e},this.get_caught=function(){return Y[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,Y[this.ptr+13>>0]=e},this.get_rethrown=function(){return Y[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=rr(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var Kr=t=>{throw tt||(tt=t),tt},Yt=t=>{var e=tt;if(!e)return _t(0),0;var r=new Lt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return _t(0),e;for(var a in t){var o=t[a];if(o===0||o===n)break;var s=r.ptr+16;if(er(o,n,s))return _t(o),e}return _t(n),e},tn=()=>Yt([]),en=t=>Yt([t]),rn=(t,e)=>Yt([t,e]),nn=()=>{var t=At.pop();t||Et("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(At.push(t),t.set_rethrown(!0),t.set_caught(!1),Dt++),tt=e,tt},an=(t,e,r)=>{var n=new Lt(t);throw n.init(e,r),tt=t,Dt++,tt},on=()=>Dt,Ot={},zt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Nt(t){return this.fromWireType(H[t>>2])}var ft={},it={},Ft={},xe,xt=t=>{throw new xe(t)},st=(t,e,r)=>{t.forEach(function(u){Ft[u]=e});function n(u){var l=r(u);l.length!==t.length&&xt("Mismatched type converter count");for(var f=0;f{it.hasOwnProperty(u)?a[l]=it[u]:(o.push(u),ft.hasOwnProperty(u)||(ft[u]=[]),ft[u].push(()=>{a[l]=it[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)},sn=t=>{var e=Ot[t];delete Ot[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,o=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));st([t],o,s=>{var u={};return a.forEach((l,f)=>{var h=l.fieldName,v=s[f],y=l.getter,w=l.getterContext,E=s[f+a.length],F=l.setter,T=l.setterContext;u[h]={read:W=>v.fromWireType(y(w,W)),write:(W,d)=>{var m=[];F(T,W,E.toWireType(m,d)),zt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var h in u)f[h]=u[h].read(l);return n(l),f},toWireType:(l,f)=>{for(var h in u)if(!(h in f))throw new TypeError(`Missing field: "${h}"`);var v=r();for(h in u)u[h].write(v,f[h]);return l!==null&&l.push(n,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:n}]})},un=(t,e,r,n,a)=>{},cn=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);Se=t},Se,R=t=>{for(var e="",r=t;k[r];)e+=Se[k[r++]];return e},ht,C=t=>{throw new ht(t)};function ln(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),it.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(it[t]=e,delete Ft[t],ft.hasOwnProperty(t)){var a=ft[t];delete ft[t],a.forEach(o=>o())}}function Z(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return ln(t,e,r)}var J=8,dn=(t,e,r,n)=>{e=R(e),Z(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?r:n},argPackAdvance:J,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},fn=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Gt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Xt=!1,Me=t=>{},hn=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},je=t=>{t.count.value-=1;var e=t.count.value===0;e&&hn(t)},Ie=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=Ie(t,e,r.baseClass);return n===null?null:r.downcast(n)},Re={},pn=()=>Object.keys($t).length,mn=()=>{var t=[];for(var e in $t)$t.hasOwnProperty(e)&&t.push($t[e]);return t},gt=[],qt=()=>{for(;gt.length;){var t=gt.pop();t.$$.deleteScheduled=!1,t.delete()}},wt,vn=t=>{wt=t,gt.length&&wt&&wt(qt)},yn=()=>{c.getInheritedInstanceCount=pn,c.getLiveInheritedInstances=mn,c.flushPendingDeletes=qt,c.setDelayFunction=vn},$t={},gn=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},wn=(t,e)=>(e=gn(t,e),$t[e]),St=(t,e)=>{(!e.ptrType||!e.ptr)&&xt("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&xt("Both smartPtrType and smartPtr must be specified"),e.count={value:1},bt(Object.create(t,{$$:{value:e,writable:!0}}))};function $n(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=wn(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o=this.registeredClass.getActualType(e),s=Re[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=Ie(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:t}):St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var bt=t=>typeof FinalizationRegistry>"u"?(bt=e=>e,t):(Xt=new FinalizationRegistry(e=>{je(e.$$)}),bt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Xt.register(e,a,e)}return e},Me=e=>Xt.unregister(e),bt(t)),bn=()=>{Object.assign(Mt.prototype,{isAliasOf(t){if(!(this instanceof Mt)||!(t instanceof Mt))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Gt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=bt(Object.create(Object.getPrototypeOf(this),{$$:{value:fn(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),Me(this),je(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),gt.push(this),gt.length===1&&wt&&wt(qt),this.$$.deleteScheduled=!0,this}})};function Mt(){}var Ct=(t,e)=>Object.defineProperty(e,"name",{value:t}),We=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},Qt=(t,e,r)=>{c.hasOwnProperty(t)?((r===void 0||c[t].overloadTable!==void 0&&c[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),We(c,t,t),c.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),c[t].overloadTable[r]=e):(c[t]=e,r!==void 0&&(c[t].numArguments=r))},Cn=48,Tn=57,_n=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Cn&&e<=Tn?`_${t}`:t};function Pn(t,e,r,n,a,o,s,u){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Zt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function En(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function An(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Zt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,et.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function Dn(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function ke(t){return this.fromWireType(_[t>>2])}var On=()=>{Object.assign(jt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:J,readValueFromPointer:ke,deleteObject(t){t!==null&&t.delete()},fromWireType:$n})};function jt(t,e,r,n,a,o,s,u,l,f,h){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=h,!a&&e.baseClass===void 0?n?(this.toWireType=En,this.destructorFunction=null):(this.toWireType=Dn,this.destructorFunction=null):this.toWireType=An}var He=(t,e,r)=>{c.hasOwnProperty(t)||xt("Replacing nonexistant public symbol"),c[t].overloadTable!==void 0&&r!==void 0?c[t].overloadTable[r]=e:(c[t]=e,c[t].argCount=r)},Fn=(t,e,r)=>{var n=c["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},It=[],Be,A=t=>{var e=It[t];return e||(t>=It.length&&(It.length=t+1),It[t]=e=Be.get(t)),e},xn=(t,e,r)=>{if(t.includes("j"))return Fn(t,e,r);var n=A(e).apply(null,r);return n},Sn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),xn(t,e,r)}},q=(t,e)=>{t=R(t);function r(){return t.includes("j")?Sn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},Mn=(t,e)=>{var r=Ct(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Ue,Ve=t=>{var e=Je(t),r=R(e);return rt(e),r},Rt=(t,e)=>{var r=[],n={};function a(o){if(!n[o]&&!it[o]){if(Ft[o]){Ft[o].forEach(a);return}r.push(o),n[o]=!0}}throw e.forEach(a),new Ue(`${t}: `+r.map(Ve).join([", "]))},jn=(t,e,r,n,a,o,s,u,l,f,h,v,y)=>{h=R(h),o=q(a,o),u&&(u=q(s,u)),f&&(f=q(l,f)),y=q(v,y);var w=_n(h);Qt(w,function(){Rt(`Cannot construct ${h} due to unbound types`,[n])}),st([t,e,r],n?[n]:[],function(E){E=E[0];var F,T;n?(F=E.registeredClass,T=F.instancePrototype):T=Mt.prototype;var W=Ct(h,function(){if(Object.getPrototypeOf(this)!==d)throw new ht("Use 'new' to construct "+h);if(m.constructor_body===void 0)throw new ht(h+" has no accessible constructor");var ir=m.constructor_body[arguments.length];if(ir===void 0)throw new ht(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return ir.apply(this,arguments)}),d=Object.create(T,{constructor:{value:W}});W.prototype=d;var m=new Pn(h,W,d,y,F,o,u,f);if(m.baseClass){var x,j;(j=(x=m.baseClass).__derivedClasses)!==null&&j!==void 0||(x.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var pt=new jt(h,m,!0,!1,!1),Ht=new jt(h+"*",m,!1,!1,!1),or=new jt(h+" const*",m,!1,!0,!1);return Re[t]={pointerType:Ht,constPointerType:or},He(w,W),[pt,Ht,or]})},Jt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function In(t){for(var e=1;e{var s=Jt(e,r);a=q(n,a),st([],[t],function(u){u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new ht(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{Rt(`Cannot construct ${u.name} due to unbound types`,s)},st([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[e-1]=Kt(l,f,null,a,o),[])),[]})},Le=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},Wn=(t,e,r,n,a,o,s,u,l)=>{var f=Jt(r,n);e=R(e),e=Le(e),o=q(a,o),st([],[t],function(h){h=h[0];var v=`${h.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&h.registeredClass.pureVirtualFunctions.push(e);function y(){Rt(`Cannot call ${v} due to unbound types`,f)}var w=h.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==h.name&&E.argCount===r-2?(y.argCount=r-2,y.className=h.name,w[e]=y):(We(w,e,v),w[e].overloadTable[r-2]=y),st([],f,function(F){var T=Kt(v,F,h,o,s);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function kn(){Object.assign(Ye.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function Ye(){this.allocated=[void 0],this.freelist=[]}var X=new Ye,te=t=>{t>=X.reserved&&--X.get(t).refcount===0&&X.free(t)},Hn=()=>{for(var t=0,e=X.reserved;e{X.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),X.reserved=X.allocated.length,c.count_emval_handles=Hn},et={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),X.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return X.allocate({refcount:1,value:t})}}},Un=(t,e)=>{e=R(e),Z(t,{name:e,fromWireType:r=>{var n=et.toValue(r);return te(r),n},toWireType:(r,n)=>et.toHandle(n),argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:null})},Vn=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(Y[n>>0])}:function(n){return this.fromWireType(k[n>>0])};case 2:return r?function(n){return this.fromWireType(lt[n>>1])}:function(n){return this.fromWireType(vt[n>>1])};case 4:return r?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Ln=(t,e,r,n)=>{e=R(e);function a(){}a.values={},Z(t,{name:e,constructor:a,fromWireType:function(o){return this.constructor.values[o]},toWireType:(o,s)=>s.value,argPackAdvance:J,readValueFromPointer:Vn(e,r,n),destructorFunction:null}),Qt(e,a)},ee=(t,e)=>{var r=it[t];return r===void 0&&C(e+" has unknown type "+Ve(t)),r},Yn=(t,e,r)=>{var n=ee(t,"enum");e=R(e);var a=n.constructor,o=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:Ct(`${n.name}_${e}`,function(){})}});a.values[r]=o,a[e]=o},re=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},zn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(Ce[r>>2])};case 8:return function(r){return this.fromWireType(Te[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},Nn=(t,e,r)=>{e=R(e),Z(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:J,readValueFromPointer:zn(e,r),destructorFunction:null})},Gn=(t,e,r,n,a,o,s)=>{var u=Jt(e,r);t=R(t),t=Le(t),a=q(n,a),Qt(t,function(){Rt(`Cannot call ${t} due to unbound types`,u)},e-1),st([],u,function(l){var f=[l[0],null].concat(l.slice(1));return He(t,Kt(t,f,null,a,o),e-1),[]})},Xn=(t,e,r)=>{switch(e){case 1:return r?n=>Y[n>>0]:n=>k[n>>0];case 2:return r?n=>lt[n>>1]:n=>vt[n>>1];case 4:return r?n=>H[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},qn=(t,e,r,n,a)=>{e=R(e);var o=h=>h;if(n===0){var s=32-8*r;o=h=>h<>>s}var u=e.includes("unsigned"),l=(h,v)=>{},f;u?f=function(h,v){return l(v,this.name),v>>>0}:f=function(h,v){return l(v,this.name),v},Z(t,{name:e,fromWireType:o,toWireType:f,argPackAdvance:J,readValueFromPointer:Xn(e,r,n!==0),destructorFunction:null})},Qn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function o(s){var u=_[s>>2],l=_[s+4>>2];return new a(Y.buffer,l,u)}r=R(r),Z(t,{name:r,fromWireType:o,argPackAdvance:J,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},ze=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,o=r+n-1,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(r>=o)break;e[r++]=u}else if(u<=2047){if(r+1>=o)break;e[r++]=192|u>>6,e[r++]=128|u&63}else if(u<=65535){if(r+2>=o)break;e[r++]=224|u>>12,e[r++]=128|u>>6&63,e[r++]=128|u&63}else{if(r+3>=o)break;e[r++]=240|u>>18,e[r++]=128|u>>12&63,e[r++]=128|u>>6&63,e[r++]=128|u&63}}return e[r]=0,r-a},Zn=(t,e,r)=>ze(t,k,e,r),Ne=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},Ge=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Jn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&Ge)return Ge.decode(t.subarray(e,a));for(var o="";e>10,56320|f&1023)}}return o},ne=(t,e)=>t?Jn(k,t,e):"",Kn=(t,e)=>{e=R(e);var r=e==="std::string";Z(t,{name:e,fromWireType(n){var a=_[n>>2],o=n+4,s;if(r)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||k[f]==0){var h=f-u,v=ne(u,h);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var y=new Array(a),l=0;l>2]=o,r&&s)Zn(a,l,o+1);else if(s)for(var f=0;f255&&(rt(l),C("String has UTF-16 code units that do not fit in 8 bits")),k[l+f]=h}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&vt[n];)++n;if(r=n<<1,r-t>32&&Xe)return Xe.decode(k.subarray(t,r));for(var o="",s=0;!(s>=e/2);++s){var u=lt[t+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},ea=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,o=r>1]=u,e+=2}return lt[e>>1]=0,e-a},ra=t=>t.length*2,na=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=H[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},aa=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,o=a+r-4,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(H[e>>2]=u,e+=4,e+4>o)break}return H[e>>2]=0,e-a},oa=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},ia=(t,e,r)=>{r=R(r);var n,a,o,s,u;e===2?(n=ta,a=ea,s=ra,o=()=>vt,u=1):e===4&&(n=na,a=aa,s=oa,o=()=>_,u=2),Z(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],h=o(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||h[E>>u]==0){var F=E-y,T=n(y,F);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return rt(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var h=s(f),v=ie(4+h+e);return _[v>>2]=h>>u,a(f,v+4,h+e),l!==null&&l.push(rt,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction(l){rt(l)}})},sa=(t,e,r,n,a,o)=>{Ot[t]={name:R(e),rawConstructor:q(r,n),rawDestructor:q(a,o),fields:[]}},ua=(t,e,r,n,a,o,s,u,l,f)=>{Ot[t].fields.push({fieldName:R(e),getterReturnType:r,getter:q(n,a),getterContext:o,setterArgumentType:s,setter:q(u,l),setterContext:f})},ca=(t,e)=>{e=R(e),Z(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},ae=[],la=(t,e,r,n)=>(t=ae[t],e=et.toValue(e),t(null,e,r,n)),da={},fa=t=>{var e=da[t];return e===void 0?R(t):e},qe=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},ha=t=>t===0?et.toHandle(qe()):(t=fa(t),et.toHandle(qe()[t])),pa=t=>{var e=ae.length;return ae.push(t),e},ma=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},va=Reflect.construct,ya=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=et.toHandle(n)),a},ga=(t,e,r)=>{var n=ma(t,e),a=n.shift();t--;var o=new Array(t),s=(l,f,h,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return pa(Ct(u,s))},wa=t=>{t>4&&(X.get(t).refcount+=1)},$a=t=>{var e=et.toValue(t);zt(e),te(t)},ba=(t,e)=>{t=ee(t,"_emval_take_value");var r=t.readValueFromPointer(e);return et.toHandle(r)},Ca=()=>{Et("")},Ta=(t,e,r)=>k.copyWithin(t,e,e+r),_a=()=>2147483648,Pa=t=>{var e=at.buffer,r=(t-e.byteLength+65535)/65536;try{return at.grow(r),_e(),1}catch{}},Ea=t=>{var e=k.length;t>>>=0;var r=_a();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,t+100663296);var s=Math.min(r,n(Math.max(t,o),65536)),u=Pa(s);if(u)return!0}return!1},oe={},Aa=()=>U||"./this.program",Tt=()=>{if(!Tt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Aa()};for(var r in oe)oe[r]===void 0?delete e[r]:e[r]=oe[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);Tt.strings=n}return Tt.strings},Da=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);Y[e>>0]=0},Oa=(t,e)=>{var r=0;return Tt().forEach((n,a)=>{var o=e+r;_[t+a*4>>2]=o,Da(n,o),r+=n.length+1}),0},Fa=(t,e)=>{var r=Tt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},xa=t=>t,Wt=t=>t%4===0&&(t%100!==0||t%400===0),Sa=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Qe=[31,29,31,30,31,30,31,31,30,31,30,31],Ze=[31,28,31,30,31,30,31,31,30,31,30,31],Ma=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=Wt(r.getFullYear()),a=r.getMonth(),o=(n?Qe:Ze)[a];if(e>o-r.getDate())e-=o-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function ja(t,e,r){var n=r>0?r:Ne(t)+1,a=new Array(n),o=ze(t,a,0,a.length);return e&&(a.length=o),a}var Ia=(t,e)=>{Y.set(t,e)},Ra=(t,e,r,n)=>{var a=_[n+40>>2],o={tm_sec:H[n>>2],tm_min:H[n+4>>2],tm_hour:H[n+8>>2],tm_mday:H[n+12>>2],tm_mon:H[n+16>>2],tm_year:H[n+20>>2],tm_wday:H[n+24>>2],tm_yday:H[n+28>>2],tm_isdst:H[n+32>>2],tm_gmtoff:H[n+36>>2],tm_zone:a?ne(a):""},s=ne(r),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in u)s=s.replace(new RegExp(l,"g"),u[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,x){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=x(d.getFullYear()-m.getFullYear()))===0&&(j=x(d.getMonth()-m.getMonth()))===0&&(j=x(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function F(d){var m=Ma(new Date(d.tm_year+1900,0,1),d.tm_yday),x=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),pt=E(x),Ht=E(j);return w(pt,m)<=0?w(Ht,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>h[d.tm_mon].substring(0,3),"%B":d=>h[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>F(d).toString().substring(2),"%G":d=>F(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+Sa(Wt(d.tm_year+1900)?Qe:Ze,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var x=(d.tm_wday+371-d.tm_yday)%7;x!=4&&(x!=3||!Wt(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&Wt(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,x=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(x?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var l in T)s.includes(l)&&(s=s.replace(new RegExp(l,"g"),T[l](o)));s=s.replace(/\0\0/g,"%");var W=ja(s,!1);return W.length>e?0:(Ia(W,t),W.length-1)},Wa=(t,e,r,n,a)=>Ra(t,e,r,n);xe=c.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},cn(),ht=c.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},bn(),yn(),On(),Ue=c.UnboundTypeError=Mn(Error,"UnboundTypeError"),kn(),Bn();var ka={s:Zr,u:Jr,b:tn,g:en,q:rn,J:nn,f:an,V:on,d:Kr,da:sn,Q:un,_:dn,ca:jn,ba:Rn,w:Wn,Y:Un,x:Ln,h:Yn,L:Nn,M:Gn,t:qn,o:Qn,K:Kn,C:ia,A:sa,ea:ua,$:ca,R:la,ha:te,fa:ha,Z:ga,N:wa,O:$a,aa:ba,B:Ca,X:Ta,W:Ea,T:Oa,U:Fa,E:to,D:La,F:Ka,n:eo,a:Ha,e:za,m:Va,k:Ga,H:Za,v:qa,G:Ja,z:no,P:oo,l:Na,j:Ya,c:Ua,p:Ba,I:Qa,r:ro,i:Xa,y:ao,ga:xa,S:Wa},M=Qr(),rt=c._free=t=>(rt=c._free=M.ka)(t),ie=c._malloc=t=>(ie=c._malloc=M.la)(t),Je=t=>(Je=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),_t=t=>(_t=M.pa)(t),D=()=>(D=M.qa)(),O=t=>(O=M.ra)(t),Ke=t=>(Ke=M.sa)(t),tr=t=>(tr=M.ta)(t),er=(t,e,r)=>(er=M.ua)(t,e,r),rr=t=>(rr=M.va)(t);c.dynCall_viijii=(t,e,r,n,a,o,s)=>(c.dynCall_viijii=M.wa)(t,e,r,n,a,o,s);var nr=c.dynCall_jiiii=(t,e,r,n,a)=>(nr=c.dynCall_jiiii=M.xa)(t,e,r,n,a);c.dynCall_iiiiij=(t,e,r,n,a,o,s)=>(c.dynCall_iiiiij=M.ya)(t,e,r,n,a,o,s),c.dynCall_iiiiijj=(t,e,r,n,a,o,s,u,l)=>(c.dynCall_iiiiijj=M.za)(t,e,r,n,a,o,s,u,l),c.dynCall_iiiiiijj=(t,e,r,n,a,o,s,u,l,f)=>(c.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,o,s,u,l,f);function Ha(t,e){var r=D();try{return A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Ba(t,e,r,n){var a=D();try{A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Ua(t,e,r){var n=D();try{A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Va(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function La(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Ya(t,e){var r=D();try{A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function za(t,e,r){var n=D();try{return A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Na(t){var e=D();try{A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function Ga(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Xa(t,e,r,n,a,o,s,u,l,f,h){var v=D();try{A(t)(e,r,n,a,o,s,u,l,f,h)}catch(y){if(O(v),y!==y+0)throw y;P(1,0)}}function qa(t,e,r,n,a,o,s){var u=D();try{return A(t)(e,r,n,a,o,s)}catch(l){if(O(u),l!==l+0)throw l;P(1,0)}}function Qa(t,e,r,n,a){var o=D();try{A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Za(t,e,r,n,a,o){var s=D();try{return A(t)(e,r,n,a,o)}catch(u){if(O(s),u!==u+0)throw u;P(1,0)}}function Ja(t,e,r,n,a,o,s,u){var l=D();try{return A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function Ka(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function to(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function eo(t){var e=D();try{return A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function ro(t,e,r,n,a,o,s,u){var l=D();try{A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function no(t,e,r,n,a,o,s,u,l,f,h,v){var y=D();try{return A(t)(e,r,n,a,o,s,u,l,f,h,v)}catch(w){if(O(y),w!==w+0)throw w;P(1,0)}}function ao(t,e,r,n,a,o,s,u,l,f,h,v,y,w,E,F){var T=D();try{A(t)(e,r,n,a,o,s,u,l,f,h,v,y,w,E,F)}catch(W){if(O(T),W!==W+0)throw W;P(1,0)}}function oo(t,e,r,n,a){var o=D();try{return nr(t,e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}var kt;yt=function t(){kt||ar(),kt||(yt=t)};function ar(){if(ot>0||(Hr(),ot>0))return;function t(){kt||(kt=!0,c.calledRun=!0,!mt&&(Br(),$(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Ur()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),t()},1)):t()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return ar(),p.ready}})();function jr(i){return Ut(Pt,i)}function Ir(i){return xr(Pt,i)}async function Rr(i,p){return Sr(Pt,i,p)}async function Wr(i,p){return Mr(Pt,i,p)}class kr extends EventTarget{constructor(c={}){var $;super();ur(this,ct,void 0);try{const g=($=c==null?void 0:c.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!nt.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),cr(this,ct,g!=null?g:[]),jr().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw ye(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return z.filter(c=>c!=="unknown")}async detect(c){try{const $=await vr(c);if($===null)return[];let g;try{me($)?g=await Rr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))}):g=await Wr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:U,y:N},topRight:{x:V,y:S},bottomLeft:{x:G,y:Q},bottomRight:{x:L,y:K}}=b.position,at=Math.min(U,V,G,L),mt=Math.min(N,S,Q,K),Y=Math.max(U,V,G,L),k=Math.max(N,S,Q,K);return{boundingBox:new DOMRectReadOnly(at,mt,Y-at,k-mt),rawValue:b.text,format:lr(b.format),cornerPoints:[{x:U,y:N},{x:V,y:S},{x:L,y:K},{x:G,y:Q}]}})}catch($){throw ye($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}return ct=new WeakMap,I.BarcodeDetector=kr,I.setZXingModuleOverrides=Ir,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),I}({}); diff --git a/node_modules/barcode-detector/dist/iife/side-effects.js b/node_modules/barcode-detector/dist/iife/side-effects.js new file mode 100644 index 0000000..7950a67 --- /dev/null +++ b/node_modules/barcode-detector/dist/iife/side-effects.js @@ -0,0 +1,3 @@ +var BarcodeDetectionAPI=function(W){"use strict";var ur=(W,B,z)=>{if(!B.has(W))throw TypeError("Cannot "+z)};var se=(W,B,z)=>(ur(W,B,"read from private field"),z?z.call(W):B.get(W)),cr=(W,B,z)=>{if(B.has(W))throw TypeError("Cannot add the same private member more than once");B instanceof WeakSet?B.add(W):B.set(W,z)},lr=(W,B,z,nt)=>(ur(W,B,"write to private field"),nt?nt.call(W,z):B.set(W,z),z);var ct,Ce;const B=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],z=[...B,["unknown"]].map(i=>i[0]),nt=new Map(B);function dr(i){for(const[p,c]of nt)if(i===c)return p;return"unknown"}function fr(i){if(ue(i))return{width:i.naturalWidth,height:i.naturalHeight};if(ce(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(le(i))return{width:i.videoWidth,height:i.videoHeight};if(fe(i))return{width:i.width,height:i.height};if(pe(i))return{width:i.displayWidth,height:i.displayHeight};if(de(i))return{width:i.width,height:i.height};if(he(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function ue(i){try{return i instanceof HTMLImageElement}catch{return!1}}function ce(i){try{return i instanceof SVGImageElement}catch{return!1}}function le(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function de(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function fe(i){try{return i instanceof ImageBitmap}catch{return!1}}function he(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function pe(i){try{return i instanceof VideoFrame}catch{return!1}}function me(i){try{return i instanceof Blob}catch{return!1}}function hr(i){try{return i instanceof ImageData}catch{return!1}}function pr(i,p){try{const c=new OffscreenCanvas(i,p);if(c.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return c;throw void 0}catch{const c=document.createElement("canvas");return c.width=i,c.height=p,c}}async function ve(i){if(ue(i)&&!await gr(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(ce(i)&&!await wr(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(pe(i)&&$r(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(le(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(fe(i)&&Cr(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:p,height:c}=fr(i);if(p===0||c===0)return null;const g=pr(p,c).getContext("2d");g.drawImage(i,0,0);try{return g.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function mr(i){let p;try{if(globalThis.createImageBitmap)p=await createImageBitmap(i);else if(globalThis.Image){p=new Image;let $="";try{$=URL.createObjectURL(i),p.src=$,await p.decode()}finally{URL.revokeObjectURL($)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await ve(p)}function vr(i){const{width:p,height:c}=i;if(p===0||c===0)return null;const $=i.getContext("2d");try{return $.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function yr(i){if(me(i))return await mr(i);if(hr(i)){if(br(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return de(i)||he(i)?vr(i):await ve(i)}async function gr(i){try{return await i.decode(),!0}catch{return!1}}async function wr(i){var p;try{return await((p=i.decode)==null?void 0:p.call(i)),!0}catch{return!1}}function $r(i){return i.format===null}function br(i){return i.data.buffer.byteLength===0}function Cr(i){return i.width===0&&i.height===0}function ye(i,p){return i instanceof DOMException?new DOMException(`${p}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${p}: ${i.message}`):new Error(`${p}: ${i}`)}const ge=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Tr(i){return i.join("|")}function _r(i){const p=we(i);let c=0,$=ge.length-1;for(;c<=$;){const g=Math.floor((c+$)/2),b=ge[g],U=we(b);if(U===p)return b;U{const c=i.match(/_(.+?)\.wasm$/);return c?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${c[1]}/${i}`:p+i}};let Bt=new WeakMap;function Ut(i,p){var c;const $=Bt.get(i);if($!=null&&$.modulePromise&&(p===void 0||Object.is(p,$.moduleOverrides)))return $.modulePromise;const g=(c=p!=null?p:$==null?void 0:$.moduleOverrides)!=null?c:xr,b=i({...g});return Bt.set(i,{moduleOverrides:g,modulePromise:b}),b}function Sr(i,p){Bt.set(i,{moduleOverrides:p})}async function Mr(i,p,c=ut){const $={...ut,...c},g=await Ut(i),{size:b}=p,U=new Uint8Array(await p.arrayBuffer()),N=g._malloc(b);g.HEAPU8.set(U,N);const V=g.readBarcodesFromImage(N,b,$e(g,$));g._free(N);const S=[];for(let G=0;G{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var c=p,$,g;c.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},c),U="./this.program",N=typeof window=="object",V=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function G(t){return c.locateFile?c.locateFile(t,S):S+t}var Q;(N||V)&&(V?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",V&&(Q=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),c.print||console.log.bind(console);var L=c.printErr||console.error.bind(console);Object.assign(c,b),b=null,c.arguments&&c.arguments,c.thisProgram&&(U=c.thisProgram),c.quit&&c.quit;var K;c.wasmBinary&&(K=c.wasmBinary),typeof WebAssembly!="object"&&Et("no native wasm support detected");var at,mt=!1,Y,k,lt,vt,H,_,Te,_e;function Pe(){var t=at.buffer;c.HEAP8=Y=new Int8Array(t),c.HEAP16=lt=new Int16Array(t),c.HEAPU8=k=new Uint8Array(t),c.HEAPU16=vt=new Uint16Array(t),c.HEAP32=H=new Int32Array(t),c.HEAPU32=_=new Uint32Array(t),c.HEAPF32=Te=new Float32Array(t),c.HEAPF64=_e=new Float64Array(t)}var Ee=[],Ae=[],De=[];function Br(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Lr(c.preRun.shift());Vt(Ee)}function Ur(){Vt(Ae)}function Vr(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)zr(c.postRun.shift());Vt(De)}function Lr(t){Ee.unshift(t)}function Yr(t){Ae.unshift(t)}function zr(t){De.unshift(t)}var ot=0,yt=null;function Nr(t){var e;ot++,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot)}function Gr(t){var e;if(ot--,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot),ot==0&&yt){var r=yt;yt=null,r()}}function Et(t){var e;(e=c.onAbort)===null||e===void 0||e.call(c,t),t="Aborted("+t+")",L(t),mt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var Xr="data:application/octet-stream;base64,",Oe=t=>t.startsWith(Xr),dt;dt="zxing_reader.wasm",Oe(dt)||(dt=G(dt));function Fe(t){if(t==dt&&K)return new Uint8Array(K);if(Q)return Q(t);throw"both async and sync fetching of the wasm failed"}function qr(t){return!K&&(N||V)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>Fe(t)):Promise.resolve().then(()=>Fe(t))}function xe(t,e,r){return qr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{L(`failed to asynchronously prepare wasm: ${n}`),Et(n)})}function Qr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!Oe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var o=WebAssembly.instantiateStreaming(a,r);return o.then(n,function(s){return L(`wasm streaming compile failed: ${s}`),L("falling back to ArrayBuffer instantiation"),xe(e,r,n)})}):xe(e,r,n)}function Zr(){var t={a:Ha};function e(n,a){return M=n.exports,at=M.ia,Pe(),Ue=M.ma,Yr(M.ja),Gr(),M}Nr();function r(n){e(n.instance)}if(c.instantiateWasm)try{return c.instantiateWasm(t,e)}catch(n){L(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return Qr(K,dt,t,r).catch(g),{}}var Vt=t=>{for(;t.length>0;)t.shift()(c)};c.noExitRuntime;var At=[],Dt=0,Jr=t=>{var e=new Lt(t);return e.get_caught()||(e.set_caught(!0),Dt--),e.set_rethrown(!1),At.push(e),er(e.excPtr),e.get_exception_ptr()},tt=0,Kr=()=>{P(0,0);var t=At.pop();tr(t.excPtr),tt=0};function Lt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,Y[this.ptr+12>>0]=e},this.get_caught=function(){return Y[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,Y[this.ptr+13>>0]=e},this.get_rethrown=function(){return Y[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=nr(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var tn=t=>{throw tt||(tt=t),tt},Yt=t=>{var e=tt;if(!e)return _t(0),0;var r=new Lt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return _t(0),e;for(var a in t){var o=t[a];if(o===0||o===n)break;var s=r.ptr+16;if(rr(o,n,s))return _t(o),e}return _t(n),e},en=()=>Yt([]),rn=t=>Yt([t]),nn=(t,e)=>Yt([t,e]),an=()=>{var t=At.pop();t||Et("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(At.push(t),t.set_rethrown(!0),t.set_caught(!1),Dt++),tt=e,tt},on=(t,e,r)=>{var n=new Lt(t);throw n.init(e,r),tt=t,Dt++,tt},sn=()=>Dt,Ot={},zt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Nt(t){return this.fromWireType(H[t>>2])}var ft={},it={},Ft={},Se,xt=t=>{throw new Se(t)},st=(t,e,r)=>{t.forEach(function(u){Ft[u]=e});function n(u){var l=r(u);l.length!==t.length&&xt("Mismatched type converter count");for(var f=0;f{it.hasOwnProperty(u)?a[l]=it[u]:(o.push(u),ft.hasOwnProperty(u)||(ft[u]=[]),ft[u].push(()=>{a[l]=it[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)},un=t=>{var e=Ot[t];delete Ot[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,o=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));st([t],o,s=>{var u={};return a.forEach((l,f)=>{var h=l.fieldName,v=s[f],y=l.getter,w=l.getterContext,E=s[f+a.length],F=l.setter,T=l.setterContext;u[h]={read:R=>v.fromWireType(y(w,R)),write:(R,d)=>{var m=[];F(T,R,E.toWireType(m,d)),zt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var h in u)f[h]=u[h].read(l);return n(l),f},toWireType:(l,f)=>{for(var h in u)if(!(h in f))throw new TypeError(`Missing field: "${h}"`);var v=r();for(h in u)u[h].write(v,f[h]);return l!==null&&l.push(n,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:n}]})},cn=(t,e,r,n,a)=>{},ln=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);Me=t},Me,I=t=>{for(var e="",r=t;k[r];)e+=Me[k[r++]];return e},ht,C=t=>{throw new ht(t)};function dn(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),it.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(it[t]=e,delete Ft[t],ft.hasOwnProperty(t)){var a=ft[t];delete ft[t],a.forEach(o=>o())}}function Z(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return dn(t,e,r)}var J=8,fn=(t,e,r,n)=>{e=I(e),Z(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?r:n},argPackAdvance:J,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},hn=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Gt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Xt=!1,je=t=>{},pn=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},Ie=t=>{t.count.value-=1;var e=t.count.value===0;e&&pn(t)},Re=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=Re(t,e,r.baseClass);return n===null?null:r.downcast(n)},We={},mn=()=>Object.keys($t).length,vn=()=>{var t=[];for(var e in $t)$t.hasOwnProperty(e)&&t.push($t[e]);return t},gt=[],qt=()=>{for(;gt.length;){var t=gt.pop();t.$$.deleteScheduled=!1,t.delete()}},wt,yn=t=>{wt=t,gt.length&&wt&&wt(qt)},gn=()=>{c.getInheritedInstanceCount=mn,c.getLiveInheritedInstances=vn,c.flushPendingDeletes=qt,c.setDelayFunction=yn},$t={},wn=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},$n=(t,e)=>(e=wn(t,e),$t[e]),St=(t,e)=>{(!e.ptrType||!e.ptr)&&xt("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&xt("Both smartPtrType and smartPtr must be specified"),e.count={value:1},bt(Object.create(t,{$$:{value:e,writable:!0}}))};function bn(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=$n(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o=this.registeredClass.getActualType(e),s=We[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=Re(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:t}):St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var bt=t=>typeof FinalizationRegistry>"u"?(bt=e=>e,t):(Xt=new FinalizationRegistry(e=>{Ie(e.$$)}),bt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Xt.register(e,a,e)}return e},je=e=>Xt.unregister(e),bt(t)),Cn=()=>{Object.assign(Mt.prototype,{isAliasOf(t){if(!(this instanceof Mt)||!(t instanceof Mt))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Gt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=bt(Object.create(Object.getPrototypeOf(this),{$$:{value:hn(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),je(this),Ie(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),gt.push(this),gt.length===1&&wt&&wt(qt),this.$$.deleteScheduled=!0,this}})};function Mt(){}var Ct=(t,e)=>Object.defineProperty(e,"name",{value:t}),ke=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},Qt=(t,e,r)=>{c.hasOwnProperty(t)?((r===void 0||c[t].overloadTable!==void 0&&c[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),ke(c,t,t),c.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),c[t].overloadTable[r]=e):(c[t]=e,r!==void 0&&(c[t].numArguments=r))},Tn=48,_n=57,Pn=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Tn&&e<=_n?`_${t}`:t};function En(t,e,r,n,a,o,s,u){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Zt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function An(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function Dn(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Zt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,et.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function On(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function He(t){return this.fromWireType(_[t>>2])}var Fn=()=>{Object.assign(jt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:J,readValueFromPointer:He,deleteObject(t){t!==null&&t.delete()},fromWireType:bn})};function jt(t,e,r,n,a,o,s,u,l,f,h){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=h,!a&&e.baseClass===void 0?n?(this.toWireType=An,this.destructorFunction=null):(this.toWireType=On,this.destructorFunction=null):this.toWireType=Dn}var Be=(t,e,r)=>{c.hasOwnProperty(t)||xt("Replacing nonexistant public symbol"),c[t].overloadTable!==void 0&&r!==void 0?c[t].overloadTable[r]=e:(c[t]=e,c[t].argCount=r)},xn=(t,e,r)=>{var n=c["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},It=[],Ue,A=t=>{var e=It[t];return e||(t>=It.length&&(It.length=t+1),It[t]=e=Ue.get(t)),e},Sn=(t,e,r)=>{if(t.includes("j"))return xn(t,e,r);var n=A(e).apply(null,r);return n},Mn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Sn(t,e,r)}},q=(t,e)=>{t=I(t);function r(){return t.includes("j")?Mn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},jn=(t,e)=>{var r=Ct(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Ve,Le=t=>{var e=Ke(t),r=I(e);return rt(e),r},Rt=(t,e)=>{var r=[],n={};function a(o){if(!n[o]&&!it[o]){if(Ft[o]){Ft[o].forEach(a);return}r.push(o),n[o]=!0}}throw e.forEach(a),new Ve(`${t}: `+r.map(Le).join([", "]))},In=(t,e,r,n,a,o,s,u,l,f,h,v,y)=>{h=I(h),o=q(a,o),u&&(u=q(s,u)),f&&(f=q(l,f)),y=q(v,y);var w=Pn(h);Qt(w,function(){Rt(`Cannot construct ${h} due to unbound types`,[n])}),st([t,e,r],n?[n]:[],function(E){E=E[0];var F,T;n?(F=E.registeredClass,T=F.instancePrototype):T=Mt.prototype;var R=Ct(h,function(){if(Object.getPrototypeOf(this)!==d)throw new ht("Use 'new' to construct "+h);if(m.constructor_body===void 0)throw new ht(h+" has no accessible constructor");var sr=m.constructor_body[arguments.length];if(sr===void 0)throw new ht(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return sr.apply(this,arguments)}),d=Object.create(T,{constructor:{value:R}});R.prototype=d;var m=new En(h,R,d,y,F,o,u,f);if(m.baseClass){var x,j;(j=(x=m.baseClass).__derivedClasses)!==null&&j!==void 0||(x.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var pt=new jt(h,m,!0,!1,!1),Ht=new jt(h+"*",m,!1,!1,!1),ir=new jt(h+" const*",m,!1,!0,!1);return We[t]={pointerType:Ht,constPointerType:ir},Be(w,R),[pt,Ht,ir]})},Jt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function Rn(t){for(var e=1;e{var s=Jt(e,r);a=q(n,a),st([],[t],function(u){u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new ht(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{Rt(`Cannot construct ${u.name} due to unbound types`,s)},st([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[e-1]=Kt(l,f,null,a,o),[])),[]})},Ye=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},kn=(t,e,r,n,a,o,s,u,l)=>{var f=Jt(r,n);e=I(e),e=Ye(e),o=q(a,o),st([],[t],function(h){h=h[0];var v=`${h.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&h.registeredClass.pureVirtualFunctions.push(e);function y(){Rt(`Cannot call ${v} due to unbound types`,f)}var w=h.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==h.name&&E.argCount===r-2?(y.argCount=r-2,y.className=h.name,w[e]=y):(ke(w,e,v),w[e].overloadTable[r-2]=y),st([],f,function(F){var T=Kt(v,F,h,o,s);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function Hn(){Object.assign(ze.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function ze(){this.allocated=[void 0],this.freelist=[]}var X=new ze,te=t=>{t>=X.reserved&&--X.get(t).refcount===0&&X.free(t)},Bn=()=>{for(var t=0,e=X.reserved;e{X.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),X.reserved=X.allocated.length,c.count_emval_handles=Bn},et={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),X.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return X.allocate({refcount:1,value:t})}}},Vn=(t,e)=>{e=I(e),Z(t,{name:e,fromWireType:r=>{var n=et.toValue(r);return te(r),n},toWireType:(r,n)=>et.toHandle(n),argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:null})},Ln=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(Y[n>>0])}:function(n){return this.fromWireType(k[n>>0])};case 2:return r?function(n){return this.fromWireType(lt[n>>1])}:function(n){return this.fromWireType(vt[n>>1])};case 4:return r?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Yn=(t,e,r,n)=>{e=I(e);function a(){}a.values={},Z(t,{name:e,constructor:a,fromWireType:function(o){return this.constructor.values[o]},toWireType:(o,s)=>s.value,argPackAdvance:J,readValueFromPointer:Ln(e,r,n),destructorFunction:null}),Qt(e,a)},ee=(t,e)=>{var r=it[t];return r===void 0&&C(e+" has unknown type "+Le(t)),r},zn=(t,e,r)=>{var n=ee(t,"enum");e=I(e);var a=n.constructor,o=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:Ct(`${n.name}_${e}`,function(){})}});a.values[r]=o,a[e]=o},re=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},Nn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(Te[r>>2])};case 8:return function(r){return this.fromWireType(_e[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},Gn=(t,e,r)=>{e=I(e),Z(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:J,readValueFromPointer:Nn(e,r),destructorFunction:null})},Xn=(t,e,r,n,a,o,s)=>{var u=Jt(e,r);t=I(t),t=Ye(t),a=q(n,a),Qt(t,function(){Rt(`Cannot call ${t} due to unbound types`,u)},e-1),st([],u,function(l){var f=[l[0],null].concat(l.slice(1));return Be(t,Kt(t,f,null,a,o),e-1),[]})},qn=(t,e,r)=>{switch(e){case 1:return r?n=>Y[n>>0]:n=>k[n>>0];case 2:return r?n=>lt[n>>1]:n=>vt[n>>1];case 4:return r?n=>H[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Qn=(t,e,r,n,a)=>{e=I(e);var o=h=>h;if(n===0){var s=32-8*r;o=h=>h<>>s}var u=e.includes("unsigned"),l=(h,v)=>{},f;u?f=function(h,v){return l(v,this.name),v>>>0}:f=function(h,v){return l(v,this.name),v},Z(t,{name:e,fromWireType:o,toWireType:f,argPackAdvance:J,readValueFromPointer:qn(e,r,n!==0),destructorFunction:null})},Zn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function o(s){var u=_[s>>2],l=_[s+4>>2];return new a(Y.buffer,l,u)}r=I(r),Z(t,{name:r,fromWireType:o,argPackAdvance:J,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},Ne=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,o=r+n-1,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(r>=o)break;e[r++]=u}else if(u<=2047){if(r+1>=o)break;e[r++]=192|u>>6,e[r++]=128|u&63}else if(u<=65535){if(r+2>=o)break;e[r++]=224|u>>12,e[r++]=128|u>>6&63,e[r++]=128|u&63}else{if(r+3>=o)break;e[r++]=240|u>>18,e[r++]=128|u>>12&63,e[r++]=128|u>>6&63,e[r++]=128|u&63}}return e[r]=0,r-a},Jn=(t,e,r)=>Ne(t,k,e,r),Ge=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},Xe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Kn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&Xe)return Xe.decode(t.subarray(e,a));for(var o="";e>10,56320|f&1023)}}return o},ne=(t,e)=>t?Kn(k,t,e):"",ta=(t,e)=>{e=I(e);var r=e==="std::string";Z(t,{name:e,fromWireType(n){var a=_[n>>2],o=n+4,s;if(r)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||k[f]==0){var h=f-u,v=ne(u,h);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var y=new Array(a),l=0;l>2]=o,r&&s)Jn(a,l,o+1);else if(s)for(var f=0;f255&&(rt(l),C("String has UTF-16 code units that do not fit in 8 bits")),k[l+f]=h}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&vt[n];)++n;if(r=n<<1,r-t>32&&qe)return qe.decode(k.subarray(t,r));for(var o="",s=0;!(s>=e/2);++s){var u=lt[t+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},ra=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,o=r>1]=u,e+=2}return lt[e>>1]=0,e-a},na=t=>t.length*2,aa=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=H[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},oa=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,o=a+r-4,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(H[e>>2]=u,e+=4,e+4>o)break}return H[e>>2]=0,e-a},ia=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},sa=(t,e,r)=>{r=I(r);var n,a,o,s,u;e===2?(n=ea,a=ra,s=na,o=()=>vt,u=1):e===4&&(n=aa,a=oa,s=ia,o=()=>_,u=2),Z(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],h=o(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||h[E>>u]==0){var F=E-y,T=n(y,F);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return rt(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var h=s(f),v=ie(4+h+e);return _[v>>2]=h>>u,a(f,v+4,h+e),l!==null&&l.push(rt,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction(l){rt(l)}})},ua=(t,e,r,n,a,o)=>{Ot[t]={name:I(e),rawConstructor:q(r,n),rawDestructor:q(a,o),fields:[]}},ca=(t,e,r,n,a,o,s,u,l,f)=>{Ot[t].fields.push({fieldName:I(e),getterReturnType:r,getter:q(n,a),getterContext:o,setterArgumentType:s,setter:q(u,l),setterContext:f})},la=(t,e)=>{e=I(e),Z(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},ae=[],da=(t,e,r,n)=>(t=ae[t],e=et.toValue(e),t(null,e,r,n)),fa={},ha=t=>{var e=fa[t];return e===void 0?I(t):e},Qe=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},pa=t=>t===0?et.toHandle(Qe()):(t=ha(t),et.toHandle(Qe()[t])),ma=t=>{var e=ae.length;return ae.push(t),e},va=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},ya=Reflect.construct,ga=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=et.toHandle(n)),a},wa=(t,e,r)=>{var n=va(t,e),a=n.shift();t--;var o=new Array(t),s=(l,f,h,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return ma(Ct(u,s))},$a=t=>{t>4&&(X.get(t).refcount+=1)},ba=t=>{var e=et.toValue(t);zt(e),te(t)},Ca=(t,e)=>{t=ee(t,"_emval_take_value");var r=t.readValueFromPointer(e);return et.toHandle(r)},Ta=()=>{Et("")},_a=(t,e,r)=>k.copyWithin(t,e,e+r),Pa=()=>2147483648,Ea=t=>{var e=at.buffer,r=(t-e.byteLength+65535)/65536;try{return at.grow(r),Pe(),1}catch{}},Aa=t=>{var e=k.length;t>>>=0;var r=Pa();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,t+100663296);var s=Math.min(r,n(Math.max(t,o),65536)),u=Ea(s);if(u)return!0}return!1},oe={},Da=()=>U||"./this.program",Tt=()=>{if(!Tt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Da()};for(var r in oe)oe[r]===void 0?delete e[r]:e[r]=oe[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);Tt.strings=n}return Tt.strings},Oa=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);Y[e>>0]=0},Fa=(t,e)=>{var r=0;return Tt().forEach((n,a)=>{var o=e+r;_[t+a*4>>2]=o,Oa(n,o),r+=n.length+1}),0},xa=(t,e)=>{var r=Tt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},Sa=t=>t,Wt=t=>t%4===0&&(t%100!==0||t%400===0),Ma=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Ze=[31,29,31,30,31,30,31,31,30,31,30,31],Je=[31,28,31,30,31,30,31,31,30,31,30,31],ja=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=Wt(r.getFullYear()),a=r.getMonth(),o=(n?Ze:Je)[a];if(e>o-r.getDate())e-=o-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function Ia(t,e,r){var n=r>0?r:Ge(t)+1,a=new Array(n),o=Ne(t,a,0,a.length);return e&&(a.length=o),a}var Ra=(t,e)=>{Y.set(t,e)},Wa=(t,e,r,n)=>{var a=_[n+40>>2],o={tm_sec:H[n>>2],tm_min:H[n+4>>2],tm_hour:H[n+8>>2],tm_mday:H[n+12>>2],tm_mon:H[n+16>>2],tm_year:H[n+20>>2],tm_wday:H[n+24>>2],tm_yday:H[n+28>>2],tm_isdst:H[n+32>>2],tm_gmtoff:H[n+36>>2],tm_zone:a?ne(a):""},s=ne(r),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in u)s=s.replace(new RegExp(l,"g"),u[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,x){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=x(d.getFullYear()-m.getFullYear()))===0&&(j=x(d.getMonth()-m.getMonth()))===0&&(j=x(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function F(d){var m=ja(new Date(d.tm_year+1900,0,1),d.tm_yday),x=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),pt=E(x),Ht=E(j);return w(pt,m)<=0?w(Ht,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>h[d.tm_mon].substring(0,3),"%B":d=>h[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>F(d).toString().substring(2),"%G":d=>F(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+Ma(Wt(d.tm_year+1900)?Ze:Je,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var x=(d.tm_wday+371-d.tm_yday)%7;x!=4&&(x!=3||!Wt(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&Wt(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,x=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(x?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var l in T)s.includes(l)&&(s=s.replace(new RegExp(l,"g"),T[l](o)));s=s.replace(/\0\0/g,"%");var R=Ia(s,!1);return R.length>e?0:(Ra(R,t),R.length-1)},ka=(t,e,r,n,a)=>Wa(t,e,r,n);Se=c.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},ln(),ht=c.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},Cn(),gn(),Fn(),Ve=c.UnboundTypeError=jn(Error,"UnboundTypeError"),Hn(),Un();var Ha={s:Jr,u:Kr,b:en,g:rn,q:nn,J:an,f:on,V:sn,d:tn,da:un,Q:cn,_:fn,ca:In,ba:Wn,w:kn,Y:Vn,x:Yn,h:zn,L:Gn,M:Xn,t:Qn,o:Zn,K:ta,C:sa,A:ua,ea:ca,$:la,R:da,ha:te,fa:pa,Z:wa,N:$a,O:ba,aa:Ca,B:Ta,X:_a,W:Aa,T:Fa,U:xa,E:eo,D:Ya,F:to,n:ro,a:Ba,e:Na,m:La,k:Xa,H:Ja,v:Qa,G:Ka,z:ao,P:io,l:Ga,j:za,c:Va,p:Ua,I:Za,r:no,i:qa,y:oo,ga:Sa,S:ka},M=Zr(),rt=c._free=t=>(rt=c._free=M.ka)(t),ie=c._malloc=t=>(ie=c._malloc=M.la)(t),Ke=t=>(Ke=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),_t=t=>(_t=M.pa)(t),D=()=>(D=M.qa)(),O=t=>(O=M.ra)(t),tr=t=>(tr=M.sa)(t),er=t=>(er=M.ta)(t),rr=(t,e,r)=>(rr=M.ua)(t,e,r),nr=t=>(nr=M.va)(t);c.dynCall_viijii=(t,e,r,n,a,o,s)=>(c.dynCall_viijii=M.wa)(t,e,r,n,a,o,s);var ar=c.dynCall_jiiii=(t,e,r,n,a)=>(ar=c.dynCall_jiiii=M.xa)(t,e,r,n,a);c.dynCall_iiiiij=(t,e,r,n,a,o,s)=>(c.dynCall_iiiiij=M.ya)(t,e,r,n,a,o,s),c.dynCall_iiiiijj=(t,e,r,n,a,o,s,u,l)=>(c.dynCall_iiiiijj=M.za)(t,e,r,n,a,o,s,u,l),c.dynCall_iiiiiijj=(t,e,r,n,a,o,s,u,l,f)=>(c.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,o,s,u,l,f);function Ba(t,e){var r=D();try{return A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Ua(t,e,r,n){var a=D();try{A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Va(t,e,r){var n=D();try{A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function La(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Ya(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function za(t,e){var r=D();try{A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Na(t,e,r){var n=D();try{return A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Ga(t){var e=D();try{A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function Xa(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function qa(t,e,r,n,a,o,s,u,l,f,h){var v=D();try{A(t)(e,r,n,a,o,s,u,l,f,h)}catch(y){if(O(v),y!==y+0)throw y;P(1,0)}}function Qa(t,e,r,n,a,o,s){var u=D();try{return A(t)(e,r,n,a,o,s)}catch(l){if(O(u),l!==l+0)throw l;P(1,0)}}function Za(t,e,r,n,a){var o=D();try{A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Ja(t,e,r,n,a,o){var s=D();try{return A(t)(e,r,n,a,o)}catch(u){if(O(s),u!==u+0)throw u;P(1,0)}}function Ka(t,e,r,n,a,o,s,u){var l=D();try{return A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function to(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function eo(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function ro(t){var e=D();try{return A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function no(t,e,r,n,a,o,s,u){var l=D();try{A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function ao(t,e,r,n,a,o,s,u,l,f,h,v){var y=D();try{return A(t)(e,r,n,a,o,s,u,l,f,h,v)}catch(w){if(O(y),w!==w+0)throw w;P(1,0)}}function oo(t,e,r,n,a,o,s,u,l,f,h,v,y,w,E,F){var T=D();try{A(t)(e,r,n,a,o,s,u,l,f,h,v,y,w,E,F)}catch(R){if(O(T),R!==R+0)throw R;P(1,0)}}function io(t,e,r,n,a){var o=D();try{return ar(t,e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}var kt;yt=function t(){kt||or(),kt||(yt=t)};function or(){if(ot>0||(Br(),ot>0))return;function t(){kt||(kt=!0,c.calledRun=!0,!mt&&(Ur(),$(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Vr()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),t()},1)):t()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return or(),p.ready}})();function Ir(i){return Ut(Pt,i)}function Rr(i){return Sr(Pt,i)}async function Wr(i,p){return Mr(Pt,i,p)}async function kr(i,p){return jr(Pt,i,p)}class Hr extends EventTarget{constructor(c={}){var $;super();cr(this,ct,void 0);try{const g=($=c==null?void 0:c.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!nt.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),lr(this,ct,g!=null?g:[]),Ir().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw ye(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return z.filter(c=>c!=="unknown")}async detect(c){try{const $=await yr(c);if($===null)return[];let g;try{me($)?g=await Wr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))}):g=await kr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:U,y:N},topRight:{x:V,y:S},bottomLeft:{x:G,y:Q},bottomRight:{x:L,y:K}}=b.position,at=Math.min(U,V,G,L),mt=Math.min(N,S,Q,K),Y=Math.max(U,V,G,L),k=Math.max(N,S,Q,K);return{boundingBox:new DOMRectReadOnly(at,mt,Y-at,k-mt),rawValue:b.text,format:dr(b.format),cornerPoints:[{x:U,y:N},{x:V,y:S},{x:L,y:K},{x:G,y:Q}]}})}catch($){throw ye($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}return ct=new WeakMap,(Ce=globalThis.BarcodeDetector)!=null||(globalThis.BarcodeDetector=Hr),W.setZXingModuleOverrides=Rr,Object.defineProperty(W,Symbol.toStringTag,{value:"Module"}),W}({}); diff --git a/node_modules/barcode-detector/package.json b/node_modules/barcode-detector/package.json new file mode 100644 index 0000000..27f13f1 --- /dev/null +++ b/node_modules/barcode-detector/package.json @@ -0,0 +1,102 @@ +{ + "name": "barcode-detector", + "description": "A Barcode Detection API polyfill that uses ZXing webassembly under the hood", + "private": false, + "version": "2.2.2", + "type": "module", + "files": [ + "./dist" + ], + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "exports": { + ".": { + "import": "./dist/es/index.js", + "require": "./dist/cjs/index.js", + "default": "./dist/es/index.js" + }, + "./pure": { + "import": "./dist/es/pure.js", + "require": "./dist/cjs/pure.js", + "default": "./dist/es/pure.js" + }, + "./side-effects": { + "import": "./dist/es/side-effects.js", + "require": "./dist/cjs/side-effects.js", + "default": "./dist/es/side-effects.js" + } + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Sec-ant/barcode-detector.git" + }, + "homepage": "https://github.com/Sec-ant/barcode-detector", + "bugs": { + "url": "https://github.com/Sec-ant/barcode-detector/issues", + "email": "zzwu@zju.edu.cn" + }, + "keywords": [ + "es6", + "qrcode", + "barcode", + "barcode-detector", + "wasm", + "polyfill", + "zxing", + "esmodule", + "webassembly" + ], + "author": { + "name": "Ze-Zheng Wu" + }, + "license": "MIT", + "config": { + "port": "18080" + }, + "scripts": { + "lint": "eslint . --ext .ts", + "type-check": "tsc --noEmit --emitDeclarationOnly false", + "format": "prettier . --write", + "prebuild": "npm run lint && npm run type-check && npm run format", + "build:es": "vite build", + "build:cjs": "tsx ./scripts/build-cjs.ts", + "build:iife": "tsx ./scripts/build-iife.ts", + "build": "conc \"npm:build:es\" \"npm:build:cjs\" \"npm:build:iife\"", + "postbuild:es": "tsc --declarationDir ./dist/es", + "postbuild:cjs": "tsc --declarationDir ./dist/cjs", + "start": "vite preview --outDir ./tests --port $npm_package_config_port -l silent", + "pretest": "tsx ./scripts/list-dir.ts", + "pretest:ui": "tsx ./scripts/list-dir.ts", + "precoverage": "tsx ./scripts/list-dir.ts", + "test": "start-server-and-test $npm_package_config_port 'vitest --coverage'", + "test:ui": "start-server-and-test $npm_package_config_port 'vitest --ui --coverage'", + "coverage": "start-server-and-test $npm_package_config_port 'vitest run --coverage'", + "prepublishOnly": "npm run build", + "ncu": "npx npm-check-updates --filterVersion \"/^[~^]/\" -u", + "postncu": "npm i", + "bump-zxing-wasm": "npm i zxing-wasm@latest --save-exact" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "@vitest/browser": "^1.1.0", + "@vitest/coverage-istanbul": "^1.1.0", + "@vitest/ui": "^1.1.0", + "concurrently": "^8.2.2", + "eslint": "^8.56.0", + "http-server": "^14.1.1", + "npm-check-updates": "^16.14.12", + "playwright": "^1.40.1", + "prettier": "^3.1.1", + "rimraf": "^5.0.5", + "start-server-and-test": "^2.0.3", + "tsx": "^4.7.0", + "typescript": "^5.3.3", + "vite": "^5.0.10", + "vitest": "^1.1.0" + }, + "dependencies": { + "@types/dom-webcodecs": "^0.1.11", + "zxing-wasm": "1.1.3" + } +} diff --git a/node_modules/sdp/.eslintrc b/node_modules/sdp/.eslintrc new file mode 100644 index 0000000..185b51f --- /dev/null +++ b/node_modules/sdp/.eslintrc @@ -0,0 +1,61 @@ +{ + "rules": { + "array-bracket-spacing": 2, + "block-spacing": [2, "never"], + "brace-style": [2, "1tbs", {"allowSingleLine": false}], + "camelcase": [2, {"properties": "always"}], + "curly": 2, + "default-case": 2, + "dot-notation": 2, + "eqeqeq": 2, + "indent": [ + 2, + 2, + {"SwitchCase": 1} + ], + "key-spacing": [2, {"beforeColon": false, "afterColon": true}], + "max-len": [2, 80, 2, {"ignoreUrls": true}], + "new-cap": [2, {"newIsCapExceptions": [ + "webkitRTCPeerConnection", + "mozRTCPeerConnection" + ]}], + "no-console": 0, + "no-else-return": 2, + "no-eval": 2, + "no-multi-spaces": 2, + "no-multiple-empty-lines": [2, {"max": 2}], + "no-shadow": 2, + "no-trailing-spaces": 2, + "no-unused-expressions": 2, + "no-unused-vars": [2, {"args": "none"}], + "object-curly-spacing": [2, "never"], + "padded-blocks": [2, "never"], + "quotes": [ + 2, + "single" + ], + "semi": [ + 2, + "always" + ], + "keyword-spacing": 2, + "space-before-blocks": 2, + "space-before-function-paren": [2, "never"], + "space-unary-ops": 2, + "space-infix-ops": 2, + "spaced-comment": 2, + "valid-typeof": 2 + }, + "env": { + "es6": true, + "browser": true, + "node": true + }, + "extends": ["eslint:recommended"], + "globals": { + "module": true, + "require": true, + "process": true, + "Promise": true, + } +} diff --git a/node_modules/sdp/.github/workflows/npm-test.yml b/node_modules/sdp/.github/workflows/npm-test.yml new file mode 100644 index 0000000..e92d6f9 --- /dev/null +++ b/node_modules/sdp/.github/workflows/npm-test.yml @@ -0,0 +1,16 @@ +name: npm-test + +on: [pull_request] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + - run: npm install + - run: npm test + - run: npm run coverage + - uses: codecov/codecov-action@v1 + with: + file: ./coverage.lcov diff --git a/node_modules/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json b/node_modules/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json new file mode 100644 index 0000000..e353f6d --- /dev/null +++ b/node_modules/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json @@ -0,0 +1 @@ +{"/media/fippo/houseparty/webrtc/sdp/sdp.js":{"path":"/media/fippo/houseparty/webrtc/sdp/sdp.js","statementMap":{"0":{"start":{"line":5,"column":17},"end":{"line":5,"column":19}},"1":{"start":{"line":9,"column":0},"end":{"line":11,"column":2}},"2":{"start":{"line":10,"column":2},"end":{"line":10,"column":53}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":52}},"4":{"start":{"line":17,"column":0},"end":{"line":19,"column":2}},"5":{"start":{"line":18,"column":2},"end":{"line":18,"column":58}},"6":{"start":{"line":18,"column":45},"end":{"line":18,"column":56}},"7":{"start":{"line":21,"column":0},"end":{"line":25,"column":2}},"8":{"start":{"line":22,"column":16},"end":{"line":22,"column":34}},"9":{"start":{"line":23,"column":2},"end":{"line":24,"column":41}},"10":{"start":{"line":23,"column":36},"end":{"line":24,"column":39}},"11":{"start":{"line":28,"column":0},"end":{"line":31,"column":2}},"12":{"start":{"line":29,"column":19},"end":{"line":29,"column":47}},"13":{"start":{"line":30,"column":2},"end":{"line":30,"column":33}},"14":{"start":{"line":34,"column":0},"end":{"line":38,"column":2}},"15":{"start":{"line":35,"column":19},"end":{"line":35,"column":47}},"16":{"start":{"line":36,"column":2},"end":{"line":36,"column":19}},"17":{"start":{"line":37,"column":2},"end":{"line":37,"column":18}},"18":{"start":{"line":41,"column":0},"end":{"line":43,"column":2}},"19":{"start":{"line":42,"column":2},"end":{"line":42,"column":78}},"20":{"start":{"line":42,"column":50},"end":{"line":42,"column":76}},"21":{"start":{"line":49,"column":0},"end":{"line":93,"column":2}},"22":{"start":{"line":52,"column":2},"end":{"line":56,"column":3}},"23":{"start":{"line":53,"column":4},"end":{"line":53,"column":42}},"24":{"start":{"line":55,"column":4},"end":{"line":55,"column":42}},"25":{"start":{"line":58,"column":20},"end":{"line":68,"column":3}},"26":{"start":{"line":70,"column":2},"end":{"line":91,"column":3}},"27":{"start":{"line":70,"column":15},"end":{"line":70,"column":16}},"28":{"start":{"line":71,"column":4},"end":{"line":90,"column":5}},"29":{"start":{"line":73,"column":8},"end":{"line":73,"column":48}},"30":{"start":{"line":74,"column":8},"end":{"line":74,"column":14}},"31":{"start":{"line":76,"column":8},"end":{"line":76,"column":59}},"32":{"start":{"line":77,"column":8},"end":{"line":77,"column":14}},"33":{"start":{"line":79,"column":8},"end":{"line":79,"column":41}},"34":{"start":{"line":80,"column":8},"end":{"line":80,"column":14}},"35":{"start":{"line":82,"column":8},"end":{"line":82,"column":39}},"36":{"start":{"line":83,"column":8},"end":{"line":83,"column":50}},"37":{"start":{"line":84,"column":8},"end":{"line":84,"column":14}},"38":{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},"39":{"start":{"line":87,"column":10},"end":{"line":87,"column":45}},"40":{"start":{"line":89,"column":8},"end":{"line":89,"column":14}},"41":{"start":{"line":92,"column":2},"end":{"line":92,"column":19}},"42":{"start":{"line":97,"column":0},"end":{"line":133,"column":2}},"43":{"start":{"line":98,"column":14},"end":{"line":98,"column":16}},"44":{"start":{"line":99,"column":2},"end":{"line":99,"column":33}},"45":{"start":{"line":101,"column":20},"end":{"line":101,"column":39}},"46":{"start":{"line":102,"column":2},"end":{"line":108,"column":3}},"47":{"start":{"line":103,"column":4},"end":{"line":103,"column":16}},"48":{"start":{"line":104,"column":9},"end":{"line":108,"column":3}},"49":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}},"50":{"start":{"line":107,"column":4},"end":{"line":107,"column":24}},"51":{"start":{"line":109,"column":2},"end":{"line":109,"column":45}},"52":{"start":{"line":110,"column":2},"end":{"line":110,"column":31}},"53":{"start":{"line":111,"column":2},"end":{"line":111,"column":46}},"54":{"start":{"line":112,"column":2},"end":{"line":112,"column":27}},"55":{"start":{"line":114,"column":15},"end":{"line":114,"column":29}},"56":{"start":{"line":115,"column":2},"end":{"line":115,"column":18}},"57":{"start":{"line":116,"column":2},"end":{"line":116,"column":17}},"58":{"start":{"line":117,"column":2},"end":{"line":123,"column":3}},"59":{"start":{"line":119,"column":4},"end":{"line":119,"column":22}},"60":{"start":{"line":120,"column":4},"end":{"line":120,"column":39}},"61":{"start":{"line":121,"column":4},"end":{"line":121,"column":22}},"62":{"start":{"line":122,"column":4},"end":{"line":122,"column":36}},"63":{"start":{"line":124,"column":2},"end":{"line":127,"column":3}},"64":{"start":{"line":125,"column":4},"end":{"line":125,"column":24}},"65":{"start":{"line":126,"column":4},"end":{"line":126,"column":32}},"66":{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},"67":{"start":{"line":129,"column":4},"end":{"line":129,"column":22}},"68":{"start":{"line":130,"column":4},"end":{"line":130,"column":60}},"69":{"start":{"line":132,"column":2},"end":{"line":132,"column":38}},"70":{"start":{"line":138,"column":0},"end":{"line":140,"column":2}},"71":{"start":{"line":139,"column":2},"end":{"line":139,"column":39}},"72":{"start":{"line":144,"column":0},"end":{"line":158,"column":2}},"73":{"start":{"line":145,"column":14},"end":{"line":145,"column":42}},"74":{"start":{"line":146,"column":17},"end":{"line":148,"column":3}},"75":{"start":{"line":150,"column":2},"end":{"line":150,"column":30}},"76":{"start":{"line":152,"column":2},"end":{"line":152,"column":25}},"77":{"start":{"line":153,"column":2},"end":{"line":153,"column":44}},"78":{"start":{"line":154,"column":2},"end":{"line":154,"column":68}},"79":{"start":{"line":156,"column":2},"end":{"line":156,"column":39}},"80":{"start":{"line":157,"column":2},"end":{"line":157,"column":16}},"81":{"start":{"line":162,"column":0},"end":{"line":170,"column":2}},"82":{"start":{"line":163,"column":11},"end":{"line":163,"column":28}},"83":{"start":{"line":164,"column":2},"end":{"line":166,"column":3}},"84":{"start":{"line":165,"column":4},"end":{"line":165,"column":36}},"85":{"start":{"line":167,"column":19},"end":{"line":167,"column":59}},"86":{"start":{"line":168,"column":2},"end":{"line":169,"column":54}},"87":{"start":{"line":175,"column":0},"end":{"line":183,"column":2}},"88":{"start":{"line":176,"column":16},"end":{"line":176,"column":44}},"89":{"start":{"line":177,"column":2},"end":{"line":182,"column":4}},"90":{"start":{"line":187,"column":0},"end":{"line":195,"column":2}},"91":{"start":{"line":188,"column":2},"end":{"line":194,"column":13}},"92":{"start":{"line":200,"column":0},"end":{"line":209,"column":2}},"93":{"start":{"line":201,"column":17},"end":{"line":201,"column":19}},"94":{"start":{"line":203,"column":16},"end":{"line":203,"column":64}},"95":{"start":{"line":204,"column":2},"end":{"line":207,"column":3}},"96":{"start":{"line":204,"column":15},"end":{"line":204,"column":16}},"97":{"start":{"line":205,"column":4},"end":{"line":205,"column":36}},"98":{"start":{"line":206,"column":4},"end":{"line":206,"column":33}},"99":{"start":{"line":208,"column":2},"end":{"line":208,"column":16}},"100":{"start":{"line":212,"column":0},"end":{"line":230,"column":2}},"101":{"start":{"line":213,"column":13},"end":{"line":213,"column":15}},"102":{"start":{"line":214,"column":11},"end":{"line":214,"column":28}},"103":{"start":{"line":215,"column":2},"end":{"line":217,"column":3}},"104":{"start":{"line":216,"column":4},"end":{"line":216,"column":36}},"105":{"start":{"line":218,"column":2},"end":{"line":228,"column":3}},"106":{"start":{"line":219,"column":19},"end":{"line":219,"column":21}},"107":{"start":{"line":220,"column":4},"end":{"line":226,"column":7}},"108":{"start":{"line":221,"column":6},"end":{"line":225,"column":7}},"109":{"start":{"line":222,"column":8},"end":{"line":222,"column":59}},"110":{"start":{"line":224,"column":8},"end":{"line":224,"column":27}},"111":{"start":{"line":227,"column":4},"end":{"line":227,"column":61}},"112":{"start":{"line":229,"column":2},"end":{"line":229,"column":14}},"113":{"start":{"line":234,"column":0},"end":{"line":240,"column":2}},"114":{"start":{"line":235,"column":16},"end":{"line":235,"column":64}},"115":{"start":{"line":236,"column":2},"end":{"line":239,"column":4}},"116":{"start":{"line":243,"column":0},"end":{"line":258,"column":2}},"117":{"start":{"line":244,"column":14},"end":{"line":244,"column":16}},"118":{"start":{"line":245,"column":11},"end":{"line":245,"column":28}},"119":{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},"120":{"start":{"line":247,"column":4},"end":{"line":247,"column":36}},"121":{"start":{"line":249,"column":2},"end":{"line":256,"column":3}},"122":{"start":{"line":251,"column":4},"end":{"line":255,"column":7}},"123":{"start":{"line":252,"column":6},"end":{"line":254,"column":17}},"124":{"start":{"line":257,"column":2},"end":{"line":257,"column":15}},"125":{"start":{"line":262,"column":0},"end":{"line":275,"column":2}},"126":{"start":{"line":263,"column":13},"end":{"line":263,"column":30}},"127":{"start":{"line":264,"column":16},"end":{"line":266,"column":3}},"128":{"start":{"line":267,"column":16},"end":{"line":267,"column":37}},"129":{"start":{"line":268,"column":2},"end":{"line":273,"column":3}},"130":{"start":{"line":269,"column":4},"end":{"line":269,"column":52}},"131":{"start":{"line":270,"column":4},"end":{"line":270,"column":44}},"132":{"start":{"line":272,"column":4},"end":{"line":272,"column":45}},"133":{"start":{"line":274,"column":2},"end":{"line":274,"column":15}},"134":{"start":{"line":279,"column":0},"end":{"line":285,"column":2}},"135":{"start":{"line":280,"column":16},"end":{"line":280,"column":45}},"136":{"start":{"line":281,"column":2},"end":{"line":284,"column":4}},"137":{"start":{"line":283,"column":29},"end":{"line":283,"column":47}},"138":{"start":{"line":289,"column":0},"end":{"line":294,"column":2}},"139":{"start":{"line":290,"column":14},"end":{"line":290,"column":61}},"140":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"141":{"start":{"line":292,"column":4},"end":{"line":292,"column":28}},"142":{"start":{"line":297,"column":0},"end":{"line":303,"column":2}},"143":{"start":{"line":298,"column":16},"end":{"line":298,"column":45}},"144":{"start":{"line":299,"column":2},"end":{"line":302,"column":4}},"145":{"start":{"line":308,"column":0},"end":{"line":316,"column":2}},"146":{"start":{"line":309,"column":16},"end":{"line":310,"column":21}},"147":{"start":{"line":312,"column":2},"end":{"line":315,"column":4}},"148":{"start":{"line":319,"column":0},"end":{"line":325,"column":2}},"149":{"start":{"line":320,"column":12},"end":{"line":320,"column":43}},"150":{"start":{"line":321,"column":2},"end":{"line":323,"column":5}},"151":{"start":{"line":322,"column":4},"end":{"line":322,"column":69}},"152":{"start":{"line":324,"column":2},"end":{"line":324,"column":13}},"153":{"start":{"line":329,"column":0},"end":{"line":337,"column":2}},"154":{"start":{"line":330,"column":16},"end":{"line":330,"column":44}},"155":{"start":{"line":331,"column":2},"end":{"line":336,"column":4}},"156":{"start":{"line":339,"column":0},"end":{"line":347,"column":2}},"157":{"start":{"line":340,"column":2},"end":{"line":346,"column":11}},"158":{"start":{"line":351,"column":0},"end":{"line":363,"column":2}},"159":{"start":{"line":352,"column":2},"end":{"line":354,"column":3}},"160":{"start":{"line":353,"column":4},"end":{"line":353,"column":16}},"161":{"start":{"line":355,"column":16},"end":{"line":355,"column":49}},"162":{"start":{"line":356,"column":2},"end":{"line":362,"column":4}},"163":{"start":{"line":365,"column":0},"end":{"line":372,"column":2}},"164":{"start":{"line":366,"column":2},"end":{"line":371,"column":12}},"165":{"start":{"line":375,"column":0},"end":{"line":379,"column":2}},"166":{"start":{"line":376,"column":16},"end":{"line":377,"column":16}},"167":{"start":{"line":378,"column":2},"end":{"line":378,"column":45}},"168":{"start":{"line":384,"column":0},"end":{"line":396,"column":2}},"169":{"start":{"line":385,"column":16},"end":{"line":386,"column":22}},"170":{"start":{"line":387,"column":14},"end":{"line":388,"column":20}},"171":{"start":{"line":389,"column":2},"end":{"line":391,"column":3}},"172":{"start":{"line":390,"column":4},"end":{"line":390,"column":16}},"173":{"start":{"line":392,"column":2},"end":{"line":395,"column":4}},"174":{"start":{"line":399,"column":0},"end":{"line":406,"column":2}},"175":{"start":{"line":400,"column":12},"end":{"line":401,"column":45}},"176":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"177":{"start":{"line":403,"column":4},"end":{"line":403,"column":28}},"178":{"start":{"line":405,"column":2},"end":{"line":405,"column":13}},"179":{"start":{"line":409,"column":0},"end":{"line":461,"column":2}},"180":{"start":{"line":410,"column":22},"end":{"line":415,"column":3}},"181":{"start":{"line":416,"column":16},"end":{"line":416,"column":49}},"182":{"start":{"line":417,"column":16},"end":{"line":417,"column":35}},"183":{"start":{"line":418,"column":2},"end":{"line":442,"column":3}},"184":{"start":{"line":418,"column":15},"end":{"line":418,"column":16}},"185":{"start":{"line":419,"column":15},"end":{"line":419,"column":23}},"186":{"start":{"line":420,"column":23},"end":{"line":421,"column":46}},"187":{"start":{"line":422,"column":4},"end":{"line":441,"column":5}},"188":{"start":{"line":423,"column":20},"end":{"line":423,"column":52}},"189":{"start":{"line":424,"column":20},"end":{"line":425,"column":43}},"190":{"start":{"line":427,"column":6},"end":{"line":427,"column":74}},"191":{"start":{"line":428,"column":6},"end":{"line":430,"column":35}},"192":{"start":{"line":431,"column":6},"end":{"line":431,"column":37}},"193":{"start":{"line":433,"column":6},"end":{"line":440,"column":7}},"194":{"start":{"line":436,"column":10},"end":{"line":436,"column":67}},"195":{"start":{"line":437,"column":10},"end":{"line":437,"column":16}},"196":{"start":{"line":439,"column":10},"end":{"line":439,"column":16}},"197":{"start":{"line":443,"column":2},"end":{"line":445,"column":5}},"198":{"start":{"line":444,"column":4},"end":{"line":444,"column":66}},"199":{"start":{"line":446,"column":25},"end":{"line":447,"column":30}},"200":{"start":{"line":448,"column":2},"end":{"line":458,"column":5}},"201":{"start":{"line":449,"column":4},"end":{"line":457,"column":7}},"202":{"start":{"line":450,"column":24},"end":{"line":453,"column":8}},"203":{"start":{"line":451,"column":8},"end":{"line":452,"column":54}},"204":{"start":{"line":454,"column":6},"end":{"line":456,"column":7}},"205":{"start":{"line":455,"column":8},"end":{"line":455,"column":36}},"206":{"start":{"line":460,"column":2},"end":{"line":460,"column":21}},"207":{"start":{"line":465,"column":0},"end":{"line":505,"column":2}},"208":{"start":{"line":466,"column":12},"end":{"line":466,"column":14}},"209":{"start":{"line":469,"column":2},"end":{"line":469,"column":27}},"210":{"start":{"line":470,"column":2},"end":{"line":470,"column":44}},"211":{"start":{"line":471,"column":2},"end":{"line":471,"column":31}},"212":{"start":{"line":472,"column":2},"end":{"line":477,"column":24}},"213":{"start":{"line":473,"column":4},"end":{"line":475,"column":5}},"214":{"start":{"line":474,"column":6},"end":{"line":474,"column":40}},"215":{"start":{"line":476,"column":4},"end":{"line":476,"column":29}},"216":{"start":{"line":479,"column":2},"end":{"line":479,"column":32}},"217":{"start":{"line":480,"column":2},"end":{"line":480,"column":39}},"218":{"start":{"line":483,"column":2},"end":{"line":487,"column":5}},"219":{"start":{"line":484,"column":4},"end":{"line":484,"column":39}},"220":{"start":{"line":485,"column":4},"end":{"line":485,"column":37}},"221":{"start":{"line":486,"column":4},"end":{"line":486,"column":39}},"222":{"start":{"line":488,"column":17},"end":{"line":488,"column":18}},"223":{"start":{"line":489,"column":2},"end":{"line":493,"column":5}},"224":{"start":{"line":490,"column":4},"end":{"line":492,"column":5}},"225":{"start":{"line":491,"column":6},"end":{"line":491,"column":32}},"226":{"start":{"line":494,"column":2},"end":{"line":496,"column":3}},"227":{"start":{"line":495,"column":4},"end":{"line":495,"column":45}},"228":{"start":{"line":498,"column":2},"end":{"line":502,"column":3}},"229":{"start":{"line":499,"column":4},"end":{"line":501,"column":7}},"230":{"start":{"line":500,"column":6},"end":{"line":500,"column":45}},"231":{"start":{"line":504,"column":2},"end":{"line":504,"column":13}},"232":{"start":{"line":509,"column":0},"end":{"line":574,"column":2}},"233":{"start":{"line":510,"column":29},"end":{"line":510,"column":31}},"234":{"start":{"line":511,"column":22},"end":{"line":511,"column":63}},"235":{"start":{"line":512,"column":17},"end":{"line":512,"column":64}},"236":{"start":{"line":513,"column":20},"end":{"line":513,"column":70}},"237":{"start":{"line":516,"column":16},"end":{"line":518,"column":49}},"238":{"start":{"line":517,"column":17},"end":{"line":517,"column":46}},"239":{"start":{"line":518,"column":21},"end":{"line":518,"column":48}},"240":{"start":{"line":519,"column":22},"end":{"line":519,"column":55}},"241":{"start":{"line":522,"column":16},"end":{"line":526,"column":6}},"242":{"start":{"line":524,"column":20},"end":{"line":524,"column":49}},"243":{"start":{"line":525,"column":6},"end":{"line":525,"column":51}},"244":{"start":{"line":525,"column":31},"end":{"line":525,"column":49}},"245":{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},"246":{"start":{"line":528,"column":4},"end":{"line":528,"column":32}},"247":{"start":{"line":531,"column":2},"end":{"line":550,"column":5}},"248":{"start":{"line":532,"column":4},"end":{"line":549,"column":5}},"249":{"start":{"line":533,"column":21},"end":{"line":536,"column":7}},"250":{"start":{"line":537,"column":6},"end":{"line":539,"column":7}},"251":{"start":{"line":538,"column":8},"end":{"line":538,"column":45}},"252":{"start":{"line":540,"column":6},"end":{"line":540,"column":40}},"253":{"start":{"line":541,"column":6},"end":{"line":548,"column":7}},"254":{"start":{"line":542,"column":8},"end":{"line":542,"column":56}},"255":{"start":{"line":543,"column":8},"end":{"line":546,"column":10}},"256":{"start":{"line":547,"column":8},"end":{"line":547,"column":42}},"257":{"start":{"line":551,"column":2},"end":{"line":555,"column":3}},"258":{"start":{"line":552,"column":4},"end":{"line":554,"column":7}},"259":{"start":{"line":558,"column":18},"end":{"line":558,"column":58}},"260":{"start":{"line":559,"column":2},"end":{"line":572,"column":3}},"261":{"start":{"line":560,"column":4},"end":{"line":568,"column":5}},"262":{"start":{"line":561,"column":6},"end":{"line":561,"column":58}},"263":{"start":{"line":562,"column":11},"end":{"line":568,"column":5}},"264":{"start":{"line":564,"column":6},"end":{"line":565,"column":26}},"265":{"start":{"line":567,"column":6},"end":{"line":567,"column":28}},"266":{"start":{"line":569,"column":4},"end":{"line":571,"column":7}},"267":{"start":{"line":570,"column":6},"end":{"line":570,"column":36}},"268":{"start":{"line":573,"column":2},"end":{"line":573,"column":28}},"269":{"start":{"line":577,"column":0},"end":{"line":602,"column":2}},"270":{"start":{"line":578,"column":25},"end":{"line":578,"column":27}},"271":{"start":{"line":582,"column":21},"end":{"line":584,"column":48}},"272":{"start":{"line":583,"column":17},"end":{"line":583,"column":46}},"273":{"start":{"line":584,"column":19},"end":{"line":584,"column":44}},"274":{"start":{"line":585,"column":2},"end":{"line":588,"column":3}},"275":{"start":{"line":586,"column":4},"end":{"line":586,"column":44}},"276":{"start":{"line":587,"column":4},"end":{"line":587,"column":42}},"277":{"start":{"line":592,"column":16},"end":{"line":592,"column":66}},"278":{"start":{"line":593,"column":2},"end":{"line":593,"column":48}},"279":{"start":{"line":594,"column":2},"end":{"line":594,"column":47}},"280":{"start":{"line":598,"column":14},"end":{"line":598,"column":62}},"281":{"start":{"line":599,"column":2},"end":{"line":599,"column":38}},"282":{"start":{"line":601,"column":2},"end":{"line":601,"column":24}},"283":{"start":{"line":604,"column":0},"end":{"line":617,"column":2}},"284":{"start":{"line":605,"column":12},"end":{"line":605,"column":14}},"285":{"start":{"line":606,"column":2},"end":{"line":608,"column":3}},"286":{"start":{"line":607,"column":4},"end":{"line":607,"column":30}},"287":{"start":{"line":609,"column":2},"end":{"line":611,"column":3}},"288":{"start":{"line":610,"column":4},"end":{"line":610,"column":28}},"289":{"start":{"line":612,"column":2},"end":{"line":615,"column":3}},"290":{"start":{"line":613,"column":4},"end":{"line":614,"column":48}},"291":{"start":{"line":616,"column":2},"end":{"line":616,"column":13}},"292":{"start":{"line":622,"column":0},"end":{"line":636,"column":2}},"293":{"start":{"line":624,"column":15},"end":{"line":624,"column":60}},"294":{"start":{"line":625,"column":2},"end":{"line":628,"column":3}},"295":{"start":{"line":626,"column":4},"end":{"line":626,"column":44}},"296":{"start":{"line":627,"column":4},"end":{"line":627,"column":47}},"297":{"start":{"line":629,"column":16},"end":{"line":631,"column":56}},"298":{"start":{"line":630,"column":17},"end":{"line":630,"column":46}},"299":{"start":{"line":631,"column":25},"end":{"line":631,"column":55}},"300":{"start":{"line":632,"column":2},"end":{"line":635,"column":3}},"301":{"start":{"line":633,"column":4},"end":{"line":633,"column":38}},"302":{"start":{"line":634,"column":4},"end":{"line":634,"column":47}},"303":{"start":{"line":641,"column":0},"end":{"line":670,"column":2}},"304":{"start":{"line":642,"column":16},"end":{"line":642,"column":49}},"305":{"start":{"line":643,"column":22},"end":{"line":643,"column":79}},"306":{"start":{"line":645,"column":2},"end":{"line":647,"column":3}},"307":{"start":{"line":646,"column":4},"end":{"line":646,"column":64}},"308":{"start":{"line":648,"column":2},"end":{"line":650,"column":3}},"309":{"start":{"line":649,"column":4},"end":{"line":649,"column":27}},"310":{"start":{"line":651,"column":19},"end":{"line":651,"column":69}},"311":{"start":{"line":652,"column":2},"end":{"line":658,"column":3}},"312":{"start":{"line":653,"column":4},"end":{"line":657,"column":6}},"313":{"start":{"line":659,"column":23},"end":{"line":659,"column":71}},"314":{"start":{"line":660,"column":2},"end":{"line":669,"column":3}},"315":{"start":{"line":661,"column":18},"end":{"line":663,"column":17}},"316":{"start":{"line":664,"column":4},"end":{"line":668,"column":6}},"317":{"start":{"line":677,"column":0},"end":{"line":696,"column":2}},"318":{"start":{"line":678,"column":15},"end":{"line":678,"column":17}},"319":{"start":{"line":679,"column":2},"end":{"line":691,"column":3}},"320":{"start":{"line":680,"column":4},"end":{"line":684,"column":6}},"321":{"start":{"line":686,"column":4},"end":{"line":690,"column":6}},"322":{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},"323":{"start":{"line":693,"column":4},"end":{"line":693,"column":70}},"324":{"start":{"line":695,"column":2},"end":{"line":695,"column":25}},"325":{"start":{"line":702,"column":0},"end":{"line":704,"column":2}},"326":{"start":{"line":703,"column":2},"end":{"line":703,"column":48}},"327":{"start":{"line":711,"column":0},"end":{"line":726,"column":2}},"328":{"start":{"line":713,"column":18},"end":{"line":713,"column":53}},"329":{"start":{"line":714,"column":2},"end":{"line":718,"column":3}},"330":{"start":{"line":715,"column":4},"end":{"line":715,"column":23}},"331":{"start":{"line":717,"column":4},"end":{"line":717,"column":45}},"332":{"start":{"line":719,"column":15},"end":{"line":719,"column":46}},"333":{"start":{"line":721,"column":2},"end":{"line":725,"column":18}},"334":{"start":{"line":729,"column":0},"end":{"line":747,"column":2}},"335":{"start":{"line":731,"column":16},"end":{"line":731,"column":49}},"336":{"start":{"line":732,"column":2},"end":{"line":742,"column":3}},"337":{"start":{"line":732,"column":15},"end":{"line":732,"column":16}},"338":{"start":{"line":733,"column":4},"end":{"line":741,"column":5}},"339":{"start":{"line":738,"column":8},"end":{"line":738,"column":37}},"340":{"start":{"line":743,"column":2},"end":{"line":745,"column":3}},"341":{"start":{"line":744,"column":4},"end":{"line":744,"column":46}},"342":{"start":{"line":746,"column":2},"end":{"line":746,"column":20}},"343":{"start":{"line":749,"column":0},"end":{"line":753,"column":2}},"344":{"start":{"line":750,"column":16},"end":{"line":750,"column":49}},"345":{"start":{"line":751,"column":16},"end":{"line":751,"column":35}},"346":{"start":{"line":752,"column":2},"end":{"line":752,"column":31}},"347":{"start":{"line":755,"column":0},"end":{"line":757,"column":2}},"348":{"start":{"line":756,"column":2},"end":{"line":756,"column":47}},"349":{"start":{"line":759,"column":0},"end":{"line":768,"column":2}},"350":{"start":{"line":760,"column":16},"end":{"line":760,"column":49}},"351":{"start":{"line":761,"column":16},"end":{"line":761,"column":48}},"352":{"start":{"line":762,"column":2},"end":{"line":767,"column":4}},"353":{"start":{"line":770,"column":0},"end":{"line":781,"column":2}},"354":{"start":{"line":771,"column":15},"end":{"line":771,"column":58}},"355":{"start":{"line":772,"column":16},"end":{"line":772,"column":44}},"356":{"start":{"line":773,"column":2},"end":{"line":780,"column":4}},"357":{"start":{"line":784,"column":0},"end":{"line":796,"column":2}},"358":{"start":{"line":785,"column":2},"end":{"line":787,"column":3}},"359":{"start":{"line":786,"column":4},"end":{"line":786,"column":17}},"360":{"start":{"line":788,"column":16},"end":{"line":788,"column":41}},"361":{"start":{"line":789,"column":2},"end":{"line":794,"column":3}},"362":{"start":{"line":789,"column":15},"end":{"line":789,"column":16}},"363":{"start":{"line":790,"column":4},"end":{"line":792,"column":5}},"364":{"start":{"line":791,"column":6},"end":{"line":791,"column":19}},"365":{"start":{"line":795,"column":2},"end":{"line":795,"column":14}},"366":{"start":{"line":799,"column":0},"end":{"line":801,"column":1}},"367":{"start":{"line":800,"column":2},"end":{"line":800,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":30},"end":{"line":9,"column":31}},"loc":{"start":{"line":9,"column":41},"end":{"line":11,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":22},"end":{"line":17,"column":23}},"loc":{"start":{"line":17,"column":37},"end":{"line":19,"column":1}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":37},"end":{"line":18,"column":38}},"loc":{"start":{"line":18,"column":45},"end":{"line":18,"column":56}},"line":18},"3":{"name":"(anonymous_3)","decl":{"start":{"line":21,"column":25},"end":{"line":21,"column":26}},"loc":{"start":{"line":21,"column":40},"end":{"line":25,"column":1}},"line":21},"4":{"name":"(anonymous_4)","decl":{"start":{"line":23,"column":19},"end":{"line":23,"column":20}},"loc":{"start":{"line":23,"column":36},"end":{"line":24,"column":39}},"line":23},"5":{"name":"(anonymous_5)","decl":{"start":{"line":28,"column":26},"end":{"line":28,"column":27}},"loc":{"start":{"line":28,"column":41},"end":{"line":31,"column":1}},"line":28},"6":{"name":"(anonymous_6)","decl":{"start":{"line":34,"column":28},"end":{"line":34,"column":29}},"loc":{"start":{"line":34,"column":43},"end":{"line":38,"column":1}},"line":34},"7":{"name":"(anonymous_7)","decl":{"start":{"line":41,"column":23},"end":{"line":41,"column":24}},"loc":{"start":{"line":41,"column":46},"end":{"line":43,"column":1}},"line":41},"8":{"name":"(anonymous_8)","decl":{"start":{"line":42,"column":42},"end":{"line":42,"column":43}},"loc":{"start":{"line":42,"column":50},"end":{"line":42,"column":76}},"line":42},"9":{"name":"(anonymous_9)","decl":{"start":{"line":49,"column":26},"end":{"line":49,"column":27}},"loc":{"start":{"line":49,"column":41},"end":{"line":93,"column":1}},"line":49},"10":{"name":"(anonymous_10)","decl":{"start":{"line":97,"column":26},"end":{"line":97,"column":27}},"loc":{"start":{"line":97,"column":46},"end":{"line":133,"column":1}},"line":97},"11":{"name":"(anonymous_11)","decl":{"start":{"line":138,"column":27},"end":{"line":138,"column":28}},"loc":{"start":{"line":138,"column":42},"end":{"line":140,"column":1}},"line":138},"12":{"name":"(anonymous_12)","decl":{"start":{"line":144,"column":23},"end":{"line":144,"column":24}},"loc":{"start":{"line":144,"column":38},"end":{"line":158,"column":1}},"line":144},"13":{"name":"(anonymous_13)","decl":{"start":{"line":162,"column":23},"end":{"line":162,"column":24}},"loc":{"start":{"line":162,"column":39},"end":{"line":170,"column":1}},"line":162},"14":{"name":"(anonymous_14)","decl":{"start":{"line":175,"column":23},"end":{"line":175,"column":24}},"loc":{"start":{"line":175,"column":38},"end":{"line":183,"column":1}},"line":175},"15":{"name":"(anonymous_15)","decl":{"start":{"line":187,"column":23},"end":{"line":187,"column":24}},"loc":{"start":{"line":187,"column":49},"end":{"line":195,"column":1}},"line":187},"16":{"name":"(anonymous_16)","decl":{"start":{"line":200,"column":21},"end":{"line":200,"column":22}},"loc":{"start":{"line":200,"column":36},"end":{"line":209,"column":1}},"line":200},"17":{"name":"(anonymous_17)","decl":{"start":{"line":212,"column":21},"end":{"line":212,"column":22}},"loc":{"start":{"line":212,"column":37},"end":{"line":230,"column":1}},"line":212},"18":{"name":"(anonymous_18)","decl":{"start":{"line":220,"column":42},"end":{"line":220,"column":43}},"loc":{"start":{"line":220,"column":51},"end":{"line":226,"column":5}},"line":220},"19":{"name":"(anonymous_19)","decl":{"start":{"line":234,"column":23},"end":{"line":234,"column":24}},"loc":{"start":{"line":234,"column":38},"end":{"line":240,"column":1}},"line":234},"20":{"name":"(anonymous_20)","decl":{"start":{"line":243,"column":23},"end":{"line":243,"column":24}},"loc":{"start":{"line":243,"column":39},"end":{"line":258,"column":1}},"line":243},"21":{"name":"(anonymous_21)","decl":{"start":{"line":251,"column":31},"end":{"line":251,"column":32}},"loc":{"start":{"line":251,"column":37},"end":{"line":255,"column":5}},"line":251},"22":{"name":"(anonymous_22)","decl":{"start":{"line":262,"column":26},"end":{"line":262,"column":27}},"loc":{"start":{"line":262,"column":41},"end":{"line":275,"column":1}},"line":262},"23":{"name":"(anonymous_23)","decl":{"start":{"line":279,"column":26},"end":{"line":279,"column":27}},"loc":{"start":{"line":279,"column":41},"end":{"line":285,"column":1}},"line":279},"24":{"name":"(anonymous_24)","decl":{"start":{"line":283,"column":21},"end":{"line":283,"column":22}},"loc":{"start":{"line":283,"column":29},"end":{"line":283,"column":47}},"line":283},"25":{"name":"(anonymous_25)","decl":{"start":{"line":289,"column":18},"end":{"line":289,"column":19}},"loc":{"start":{"line":289,"column":41},"end":{"line":294,"column":1}},"line":289},"26":{"name":"(anonymous_26)","decl":{"start":{"line":297,"column":28},"end":{"line":297,"column":29}},"loc":{"start":{"line":297,"column":43},"end":{"line":303,"column":1}},"line":297},"27":{"name":"(anonymous_27)","decl":{"start":{"line":308,"column":29},"end":{"line":308,"column":30}},"loc":{"start":{"line":308,"column":65},"end":{"line":316,"column":1}},"line":308},"28":{"name":"(anonymous_28)","decl":{"start":{"line":319,"column":31},"end":{"line":319,"column":32}},"loc":{"start":{"line":319,"column":59},"end":{"line":325,"column":1}},"line":319},"29":{"name":"(anonymous_29)","decl":{"start":{"line":321,"column":30},"end":{"line":321,"column":31}},"loc":{"start":{"line":321,"column":36},"end":{"line":323,"column":3}},"line":321},"30":{"name":"(anonymous_30)","decl":{"start":{"line":329,"column":27},"end":{"line":329,"column":28}},"loc":{"start":{"line":329,"column":42},"end":{"line":337,"column":1}},"line":329},"31":{"name":"(anonymous_31)","decl":{"start":{"line":339,"column":27},"end":{"line":339,"column":28}},"loc":{"start":{"line":339,"column":48},"end":{"line":347,"column":1}},"line":339},"32":{"name":"(anonymous_32)","decl":{"start":{"line":351,"column":32},"end":{"line":351,"column":33}},"loc":{"start":{"line":351,"column":52},"end":{"line":363,"column":1}},"line":351},"33":{"name":"(anonymous_33)","decl":{"start":{"line":365,"column":32},"end":{"line":365,"column":33}},"loc":{"start":{"line":365,"column":52},"end":{"line":372,"column":1}},"line":365},"34":{"name":"(anonymous_34)","decl":{"start":{"line":375,"column":31},"end":{"line":375,"column":32}},"loc":{"start":{"line":375,"column":67},"end":{"line":379,"column":1}},"line":375},"35":{"name":"(anonymous_35)","decl":{"start":{"line":384,"column":28},"end":{"line":384,"column":29}},"loc":{"start":{"line":384,"column":64},"end":{"line":396,"column":1}},"line":384},"36":{"name":"(anonymous_36)","decl":{"start":{"line":399,"column":30},"end":{"line":399,"column":31}},"loc":{"start":{"line":399,"column":47},"end":{"line":406,"column":1}},"line":399},"37":{"name":"(anonymous_37)","decl":{"start":{"line":409,"column":30},"end":{"line":409,"column":31}},"loc":{"start":{"line":409,"column":53},"end":{"line":461,"column":1}},"line":409},"38":{"name":"(anonymous_38)","decl":{"start":{"line":443,"column":58},"end":{"line":443,"column":59}},"loc":{"start":{"line":443,"column":66},"end":{"line":445,"column":3}},"line":443},"39":{"name":"(anonymous_39)","decl":{"start":{"line":448,"column":29},"end":{"line":448,"column":30}},"loc":{"start":{"line":448,"column":38},"end":{"line":458,"column":3}},"line":448},"40":{"name":"(anonymous_40)","decl":{"start":{"line":449,"column":27},"end":{"line":449,"column":28}},"loc":{"start":{"line":449,"column":32},"end":{"line":457,"column":5}},"line":449},"41":{"name":"(anonymous_41)","decl":{"start":{"line":450,"column":48},"end":{"line":450,"column":49}},"loc":{"start":{"line":450,"column":68},"end":{"line":453,"column":7}},"line":450},"42":{"name":"(anonymous_42)","decl":{"start":{"line":465,"column":31},"end":{"line":465,"column":32}},"loc":{"start":{"line":465,"column":52},"end":{"line":505,"column":1}},"line":465},"43":{"name":"(anonymous_43)","decl":{"start":{"line":472,"column":25},"end":{"line":472,"column":26}},"loc":{"start":{"line":472,"column":34},"end":{"line":477,"column":3}},"line":472},"44":{"name":"(anonymous_44)","decl":{"start":{"line":483,"column":22},"end":{"line":483,"column":23}},"loc":{"start":{"line":483,"column":31},"end":{"line":487,"column":3}},"line":483},"45":{"name":"(anonymous_45)","decl":{"start":{"line":489,"column":22},"end":{"line":489,"column":23}},"loc":{"start":{"line":489,"column":31},"end":{"line":493,"column":3}},"line":489},"46":{"name":"(anonymous_46)","decl":{"start":{"line":499,"column":34},"end":{"line":499,"column":35}},"loc":{"start":{"line":499,"column":47},"end":{"line":501,"column":5}},"line":499},"47":{"name":"(anonymous_47)","decl":{"start":{"line":509,"column":38},"end":{"line":509,"column":39}},"loc":{"start":{"line":509,"column":61},"end":{"line":574,"column":1}},"line":509},"48":{"name":"(anonymous_48)","decl":{"start":{"line":517,"column":9},"end":{"line":517,"column":10}},"loc":{"start":{"line":517,"column":17},"end":{"line":517,"column":46}},"line":517},"49":{"name":"(anonymous_49)","decl":{"start":{"line":518,"column":12},"end":{"line":518,"column":13}},"loc":{"start":{"line":518,"column":21},"end":{"line":518,"column":48}},"line":518},"50":{"name":"(anonymous_50)","decl":{"start":{"line":523,"column":9},"end":{"line":523,"column":10}},"loc":{"start":{"line":523,"column":17},"end":{"line":526,"column":5}},"line":523},"51":{"name":"(anonymous_51)","decl":{"start":{"line":525,"column":23},"end":{"line":525,"column":24}},"loc":{"start":{"line":525,"column":31},"end":{"line":525,"column":49}},"line":525},"52":{"name":"(anonymous_52)","decl":{"start":{"line":531,"column":29},"end":{"line":531,"column":30}},"loc":{"start":{"line":531,"column":38},"end":{"line":550,"column":3}},"line":531},"53":{"name":"(anonymous_53)","decl":{"start":{"line":569,"column":31},"end":{"line":569,"column":32}},"loc":{"start":{"line":569,"column":41},"end":{"line":571,"column":5}},"line":569},"54":{"name":"(anonymous_54)","decl":{"start":{"line":577,"column":31},"end":{"line":577,"column":32}},"loc":{"start":{"line":577,"column":54},"end":{"line":602,"column":1}},"line":577},"55":{"name":"(anonymous_55)","decl":{"start":{"line":583,"column":9},"end":{"line":583,"column":10}},"loc":{"start":{"line":583,"column":17},"end":{"line":583,"column":46}},"line":583},"56":{"name":"(anonymous_56)","decl":{"start":{"line":584,"column":12},"end":{"line":584,"column":13}},"loc":{"start":{"line":584,"column":19},"end":{"line":584,"column":44}},"line":584},"57":{"name":"(anonymous_57)","decl":{"start":{"line":604,"column":31},"end":{"line":604,"column":32}},"loc":{"start":{"line":604,"column":56},"end":{"line":617,"column":1}},"line":604},"58":{"name":"(anonymous_58)","decl":{"start":{"line":622,"column":21},"end":{"line":622,"column":22}},"loc":{"start":{"line":622,"column":44},"end":{"line":636,"column":1}},"line":622},"59":{"name":"(anonymous_59)","decl":{"start":{"line":630,"column":9},"end":{"line":630,"column":10}},"loc":{"start":{"line":630,"column":17},"end":{"line":630,"column":46}},"line":630},"60":{"name":"(anonymous_60)","decl":{"start":{"line":631,"column":12},"end":{"line":631,"column":13}},"loc":{"start":{"line":631,"column":25},"end":{"line":631,"column":55}},"line":631},"61":{"name":"(anonymous_61)","decl":{"start":{"line":641,"column":32},"end":{"line":641,"column":33}},"loc":{"start":{"line":641,"column":55},"end":{"line":670,"column":1}},"line":641},"62":{"name":"(anonymous_62)","decl":{"start":{"line":677,"column":32},"end":{"line":677,"column":33}},"loc":{"start":{"line":677,"column":54},"end":{"line":696,"column":1}},"line":677},"63":{"name":"(anonymous_63)","decl":{"start":{"line":702,"column":29},"end":{"line":702,"column":30}},"loc":{"start":{"line":702,"column":40},"end":{"line":704,"column":1}},"line":702},"64":{"name":"(anonymous_64)","decl":{"start":{"line":711,"column":35},"end":{"line":711,"column":36}},"loc":{"start":{"line":711,"column":71},"end":{"line":726,"column":1}},"line":711},"65":{"name":"(anonymous_65)","decl":{"start":{"line":729,"column":24},"end":{"line":729,"column":25}},"loc":{"start":{"line":729,"column":60},"end":{"line":747,"column":1}},"line":729},"66":{"name":"(anonymous_66)","decl":{"start":{"line":749,"column":19},"end":{"line":749,"column":20}},"loc":{"start":{"line":749,"column":42},"end":{"line":753,"column":1}},"line":749},"67":{"name":"(anonymous_67)","decl":{"start":{"line":755,"column":22},"end":{"line":755,"column":23}},"loc":{"start":{"line":755,"column":45},"end":{"line":757,"column":1}},"line":755},"68":{"name":"(anonymous_68)","decl":{"start":{"line":759,"column":22},"end":{"line":759,"column":23}},"loc":{"start":{"line":759,"column":45},"end":{"line":768,"column":1}},"line":759},"69":{"name":"(anonymous_69)","decl":{"start":{"line":770,"column":22},"end":{"line":770,"column":23}},"loc":{"start":{"line":770,"column":45},"end":{"line":781,"column":1}},"line":770},"70":{"name":"(anonymous_70)","decl":{"start":{"line":784,"column":22},"end":{"line":784,"column":23}},"loc":{"start":{"line":784,"column":37},"end":{"line":796,"column":1}},"line":784}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":37},"end":{"line":24,"column":22}},"type":"cond-expr","locations":[{"start":{"line":24,"column":4},"end":{"line":24,"column":15}},{"start":{"line":24,"column":18},"end":{"line":24,"column":22}}],"line":23},"1":{"loc":{"start":{"line":30,"column":9},"end":{"line":30,"column":32}},"type":"binary-expr","locations":[{"start":{"line":30,"column":9},"end":{"line":30,"column":17}},{"start":{"line":30,"column":21},"end":{"line":30,"column":32}}],"line":30},"2":{"loc":{"start":{"line":52,"column":2},"end":{"line":56,"column":3}},"type":"if","locations":[{"start":{"line":52,"column":2},"end":{"line":56,"column":3}},{"start":{"line":52,"column":2},"end":{"line":56,"column":3}}],"line":52},"3":{"loc":{"start":{"line":60,"column":15},"end":{"line":60,"column":58}},"type":"binary-expr","locations":[{"start":{"line":60,"column":15},"end":{"line":60,"column":46}},{"start":{"line":60,"column":50},"end":{"line":60,"column":58}}],"line":60},"4":{"loc":{"start":{"line":71,"column":4},"end":{"line":90,"column":5}},"type":"switch","locations":[{"start":{"line":72,"column":6},"end":{"line":74,"column":14}},{"start":{"line":75,"column":6},"end":{"line":77,"column":14}},{"start":{"line":78,"column":6},"end":{"line":80,"column":14}},{"start":{"line":81,"column":6},"end":{"line":84,"column":14}},{"start":{"line":85,"column":6},"end":{"line":89,"column":14}}],"line":71},"5":{"loc":{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},"type":"if","locations":[{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},{"start":{"line":86,"column":8},"end":{"line":88,"column":9}}],"line":86},"6":{"loc":{"start":{"line":102,"column":2},"end":{"line":108,"column":3}},"type":"if","locations":[{"start":{"line":102,"column":2},"end":{"line":108,"column":3}},{"start":{"line":102,"column":2},"end":{"line":108,"column":3}}],"line":102},"7":{"loc":{"start":{"line":104,"column":9},"end":{"line":108,"column":3}},"type":"if","locations":[{"start":{"line":104,"column":9},"end":{"line":108,"column":3}},{"start":{"line":104,"column":9},"end":{"line":108,"column":3}}],"line":104},"8":{"loc":{"start":{"line":111,"column":11},"end":{"line":111,"column":44}},"type":"binary-expr","locations":[{"start":{"line":111,"column":11},"end":{"line":111,"column":28}},{"start":{"line":111,"column":32},"end":{"line":111,"column":44}}],"line":111},"9":{"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":3}},"type":"if","locations":[{"start":{"line":117,"column":2},"end":{"line":123,"column":3}},{"start":{"line":117,"column":2},"end":{"line":123,"column":3}}],"line":117},"10":{"loc":{"start":{"line":117,"column":6},"end":{"line":118,"column":27}},"type":"binary-expr","locations":[{"start":{"line":117,"column":6},"end":{"line":117,"column":21}},{"start":{"line":117,"column":25},"end":{"line":117,"column":49}},{"start":{"line":118,"column":6},"end":{"line":118,"column":27}}],"line":117},"11":{"loc":{"start":{"line":124,"column":2},"end":{"line":127,"column":3}},"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":127,"column":3}},{"start":{"line":124,"column":2},"end":{"line":127,"column":3}}],"line":124},"12":{"loc":{"start":{"line":124,"column":6},"end":{"line":124,"column":69}},"type":"binary-expr","locations":[{"start":{"line":124,"column":6},"end":{"line":124,"column":23}},{"start":{"line":124,"column":27},"end":{"line":124,"column":69}}],"line":124},"13":{"loc":{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},{"start":{"line":128,"column":2},"end":{"line":131,"column":3}}],"line":128},"14":{"loc":{"start":{"line":128,"column":6},"end":{"line":128,"column":51}},"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":32}},{"start":{"line":128,"column":36},"end":{"line":128,"column":51}}],"line":128},"15":{"loc":{"start":{"line":130,"column":13},"end":{"line":130,"column":58}},"type":"binary-expr","locations":[{"start":{"line":130,"column":13},"end":{"line":130,"column":39}},{"start":{"line":130,"column":43},"end":{"line":130,"column":58}}],"line":130},"16":{"loc":{"start":{"line":154,"column":20},"end":{"line":154,"column":67}},"type":"cond-expr","locations":[{"start":{"line":154,"column":41},"end":{"line":154,"column":63}},{"start":{"line":154,"column":66},"end":{"line":154,"column":67}}],"line":154},"17":{"loc":{"start":{"line":164,"column":2},"end":{"line":166,"column":3}},"type":"if","locations":[{"start":{"line":164,"column":2},"end":{"line":166,"column":3}},{"start":{"line":164,"column":2},"end":{"line":166,"column":3}}],"line":164},"18":{"loc":{"start":{"line":167,"column":19},"end":{"line":167,"column":59}},"type":"binary-expr","locations":[{"start":{"line":167,"column":19},"end":{"line":167,"column":33}},{"start":{"line":167,"column":37},"end":{"line":167,"column":54}},{"start":{"line":167,"column":58},"end":{"line":167,"column":59}}],"line":167},"19":{"loc":{"start":{"line":169,"column":7},"end":{"line":169,"column":43}},"type":"cond-expr","locations":[{"start":{"line":169,"column":24},"end":{"line":169,"column":38}},{"start":{"line":169,"column":41},"end":{"line":169,"column":43}}],"line":169},"20":{"loc":{"start":{"line":179,"column":15},"end":{"line":179,"column":78}},"type":"cond-expr","locations":[{"start":{"line":179,"column":43},"end":{"line":179,"column":65}},{"start":{"line":179,"column":68},"end":{"line":179,"column":78}}],"line":179},"21":{"loc":{"start":{"line":188,"column":24},"end":{"line":188,"column":73}},"type":"binary-expr","locations":[{"start":{"line":188,"column":24},"end":{"line":188,"column":42}},{"start":{"line":188,"column":46},"end":{"line":188,"column":73}}],"line":188},"22":{"loc":{"start":{"line":189,"column":7},"end":{"line":191,"column":12}},"type":"cond-expr","locations":[{"start":{"line":190,"column":10},"end":{"line":190,"column":41}},{"start":{"line":191,"column":10},"end":{"line":191,"column":12}}],"line":189},"23":{"loc":{"start":{"line":189,"column":7},"end":{"line":189,"column":76}},"type":"binary-expr","locations":[{"start":{"line":189,"column":7},"end":{"line":189,"column":32}},{"start":{"line":189,"column":36},"end":{"line":189,"column":76}}],"line":189},"24":{"loc":{"start":{"line":193,"column":7},"end":{"line":193,"column":73}},"type":"cond-expr","locations":[{"start":{"line":193,"column":36},"end":{"line":193,"column":68}},{"start":{"line":193,"column":71},"end":{"line":193,"column":73}}],"line":193},"25":{"loc":{"start":{"line":215,"column":2},"end":{"line":217,"column":3}},"type":"if","locations":[{"start":{"line":215,"column":2},"end":{"line":217,"column":3}},{"start":{"line":215,"column":2},"end":{"line":217,"column":3}}],"line":215},"26":{"loc":{"start":{"line":218,"column":2},"end":{"line":228,"column":3}},"type":"if","locations":[{"start":{"line":218,"column":2},"end":{"line":228,"column":3}},{"start":{"line":218,"column":2},"end":{"line":228,"column":3}}],"line":218},"27":{"loc":{"start":{"line":218,"column":6},"end":{"line":218,"column":62}},"type":"binary-expr","locations":[{"start":{"line":218,"column":6},"end":{"line":218,"column":22}},{"start":{"line":218,"column":26},"end":{"line":218,"column":62}}],"line":218},"28":{"loc":{"start":{"line":221,"column":6},"end":{"line":225,"column":7}},"type":"if","locations":[{"start":{"line":221,"column":6},"end":{"line":225,"column":7}},{"start":{"line":221,"column":6},"end":{"line":225,"column":7}}],"line":221},"29":{"loc":{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},"type":"if","locations":[{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},{"start":{"line":246,"column":2},"end":{"line":248,"column":3}}],"line":246},"30":{"loc":{"start":{"line":249,"column":2},"end":{"line":256,"column":3}},"type":"if","locations":[{"start":{"line":249,"column":2},"end":{"line":256,"column":3}},{"start":{"line":249,"column":2},"end":{"line":256,"column":3}}],"line":249},"31":{"loc":{"start":{"line":249,"column":6},"end":{"line":249,"column":53}},"type":"binary-expr","locations":[{"start":{"line":249,"column":6},"end":{"line":249,"column":24}},{"start":{"line":249,"column":28},"end":{"line":249,"column":53}}],"line":249},"32":{"loc":{"start":{"line":253,"column":7},"end":{"line":253,"column":68}},"type":"cond-expr","locations":[{"start":{"line":253,"column":45},"end":{"line":253,"column":63}},{"start":{"line":253,"column":66},"end":{"line":253,"column":68}}],"line":253},"33":{"loc":{"start":{"line":253,"column":7},"end":{"line":253,"column":42}},"type":"binary-expr","locations":[{"start":{"line":253,"column":7},"end":{"line":253,"column":19}},{"start":{"line":253,"column":23},"end":{"line":253,"column":42}}],"line":253},"34":{"loc":{"start":{"line":268,"column":2},"end":{"line":273,"column":3}},"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":273,"column":3}},{"start":{"line":268,"column":2},"end":{"line":273,"column":3}}],"line":268},"35":{"loc":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},{"start":{"line":291,"column":2},"end":{"line":293,"column":3}}],"line":291},"36":{"loc":{"start":{"line":342,"column":5},"end":{"line":344,"column":28}},"type":"cond-expr","locations":[{"start":{"line":343,"column":8},"end":{"line":343,"column":59}},{"start":{"line":344,"column":8},"end":{"line":344,"column":28}}],"line":342},"37":{"loc":{"start":{"line":345,"column":5},"end":{"line":345,"column":77}},"type":"cond-expr","locations":[{"start":{"line":345,"column":32},"end":{"line":345,"column":72}},{"start":{"line":345,"column":75},"end":{"line":345,"column":77}}],"line":345},"38":{"loc":{"start":{"line":352,"column":2},"end":{"line":354,"column":3}},"type":"if","locations":[{"start":{"line":352,"column":2},"end":{"line":354,"column":3}},{"start":{"line":352,"column":2},"end":{"line":354,"column":3}}],"line":352},"39":{"loc":{"start":{"line":360,"column":14},"end":{"line":360,"column":59}},"type":"cond-expr","locations":[{"start":{"line":360,"column":25},"end":{"line":360,"column":47}},{"start":{"line":360,"column":50},"end":{"line":360,"column":59}}],"line":360},"40":{"loc":{"start":{"line":361,"column":15},"end":{"line":361,"column":60}},"type":"cond-expr","locations":[{"start":{"line":361,"column":26},"end":{"line":361,"column":48}},{"start":{"line":361,"column":51},"end":{"line":361,"column":60}}],"line":361},"41":{"loc":{"start":{"line":368,"column":5},"end":{"line":368,"column":55}},"type":"cond-expr","locations":[{"start":{"line":368,"column":26},"end":{"line":368,"column":50}},{"start":{"line":368,"column":53},"end":{"line":368,"column":55}}],"line":368},"42":{"loc":{"start":{"line":369,"column":5},"end":{"line":371,"column":10}},"type":"cond-expr","locations":[{"start":{"line":370,"column":8},"end":{"line":370,"column":60}},{"start":{"line":371,"column":8},"end":{"line":371,"column":10}}],"line":369},"43":{"loc":{"start":{"line":369,"column":5},"end":{"line":369,"column":46}},"type":"binary-expr","locations":[{"start":{"line":369,"column":5},"end":{"line":369,"column":23}},{"start":{"line":369,"column":27},"end":{"line":369,"column":46}}],"line":369},"44":{"loc":{"start":{"line":389,"column":2},"end":{"line":391,"column":3}},"type":"if","locations":[{"start":{"line":389,"column":2},"end":{"line":391,"column":3}},{"start":{"line":389,"column":2},"end":{"line":391,"column":3}}],"line":389},"45":{"loc":{"start":{"line":389,"column":8},"end":{"line":389,"column":20}},"type":"binary-expr","locations":[{"start":{"line":389,"column":8},"end":{"line":389,"column":13}},{"start":{"line":389,"column":17},"end":{"line":389,"column":20}}],"line":389},"46":{"loc":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"type":"if","locations":[{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},{"start":{"line":402,"column":2},"end":{"line":404,"column":3}}],"line":402},"47":{"loc":{"start":{"line":422,"column":4},"end":{"line":441,"column":5}},"type":"if","locations":[{"start":{"line":422,"column":4},"end":{"line":441,"column":5}},{"start":{"line":422,"column":4},"end":{"line":441,"column":5}}],"line":422},"48":{"loc":{"start":{"line":427,"column":25},"end":{"line":427,"column":73}},"type":"cond-expr","locations":[{"start":{"line":427,"column":40},"end":{"line":427,"column":68}},{"start":{"line":427,"column":71},"end":{"line":427,"column":73}}],"line":427},"49":{"loc":{"start":{"line":433,"column":6},"end":{"line":440,"column":7}},"type":"switch","locations":[{"start":{"line":434,"column":8},"end":{"line":434,"column":19}},{"start":{"line":435,"column":8},"end":{"line":437,"column":16}},{"start":{"line":438,"column":8},"end":{"line":439,"column":16}}],"line":433},"50":{"loc":{"start":{"line":451,"column":15},"end":{"line":452,"column":53}},"type":"binary-expr","locations":[{"start":{"line":451,"column":15},"end":{"line":451,"column":48}},{"start":{"line":452,"column":10},"end":{"line":452,"column":53}}],"line":451},"51":{"loc":{"start":{"line":454,"column":6},"end":{"line":456,"column":7}},"type":"if","locations":[{"start":{"line":454,"column":6},"end":{"line":456,"column":7}},{"start":{"line":454,"column":6},"end":{"line":456,"column":7}}],"line":454},"52":{"loc":{"start":{"line":470,"column":9},"end":{"line":470,"column":43}},"type":"cond-expr","locations":[{"start":{"line":470,"column":34},"end":{"line":470,"column":37}},{"start":{"line":470,"column":40},"end":{"line":470,"column":43}}],"line":470},"53":{"loc":{"start":{"line":473,"column":4},"end":{"line":475,"column":5}},"type":"if","locations":[{"start":{"line":473,"column":4},"end":{"line":475,"column":5}},{"start":{"line":473,"column":4},"end":{"line":475,"column":5}}],"line":473},"54":{"loc":{"start":{"line":490,"column":4},"end":{"line":492,"column":5}},"type":"if","locations":[{"start":{"line":490,"column":4},"end":{"line":492,"column":5}},{"start":{"line":490,"column":4},"end":{"line":492,"column":5}}],"line":490},"55":{"loc":{"start":{"line":494,"column":2},"end":{"line":496,"column":3}},"type":"if","locations":[{"start":{"line":494,"column":2},"end":{"line":496,"column":3}},{"start":{"line":494,"column":2},"end":{"line":496,"column":3}}],"line":494},"56":{"loc":{"start":{"line":498,"column":2},"end":{"line":502,"column":3}},"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":502,"column":3}},{"start":{"line":498,"column":2},"end":{"line":502,"column":3}}],"line":498},"57":{"loc":{"start":{"line":519,"column":22},"end":{"line":519,"column":55}},"type":"binary-expr","locations":[{"start":{"line":519,"column":22},"end":{"line":519,"column":38}},{"start":{"line":519,"column":42},"end":{"line":519,"column":55}}],"line":519},"58":{"loc":{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},"type":"if","locations":[{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},{"start":{"line":527,"column":2},"end":{"line":529,"column":3}}],"line":527},"59":{"loc":{"start":{"line":527,"column":6},"end":{"line":527,"column":76}},"type":"binary-expr","locations":[{"start":{"line":527,"column":6},"end":{"line":527,"column":22}},{"start":{"line":527,"column":26},"end":{"line":527,"column":45}},{"start":{"line":527,"column":49},"end":{"line":527,"column":76}}],"line":527},"60":{"loc":{"start":{"line":532,"column":4},"end":{"line":549,"column":5}},"type":"if","locations":[{"start":{"line":532,"column":4},"end":{"line":549,"column":5}},{"start":{"line":532,"column":4},"end":{"line":549,"column":5}}],"line":532},"61":{"loc":{"start":{"line":532,"column":8},"end":{"line":532,"column":66}},"type":"binary-expr","locations":[{"start":{"line":532,"column":8},"end":{"line":532,"column":42}},{"start":{"line":532,"column":46},"end":{"line":532,"column":66}}],"line":532},"62":{"loc":{"start":{"line":537,"column":6},"end":{"line":539,"column":7}},"type":"if","locations":[{"start":{"line":537,"column":6},"end":{"line":539,"column":7}},{"start":{"line":537,"column":6},"end":{"line":539,"column":7}}],"line":537},"63":{"loc":{"start":{"line":537,"column":10},"end":{"line":537,"column":38}},"type":"binary-expr","locations":[{"start":{"line":537,"column":10},"end":{"line":537,"column":21}},{"start":{"line":537,"column":25},"end":{"line":537,"column":38}}],"line":537},"64":{"loc":{"start":{"line":541,"column":6},"end":{"line":548,"column":7}},"type":"if","locations":[{"start":{"line":541,"column":6},"end":{"line":548,"column":7}},{"start":{"line":541,"column":6},"end":{"line":548,"column":7}}],"line":541},"65":{"loc":{"start":{"line":545,"column":21},"end":{"line":545,"column":53}},"type":"cond-expr","locations":[{"start":{"line":545,"column":33},"end":{"line":545,"column":45}},{"start":{"line":545,"column":48},"end":{"line":545,"column":53}}],"line":545},"66":{"loc":{"start":{"line":551,"column":2},"end":{"line":555,"column":3}},"type":"if","locations":[{"start":{"line":551,"column":2},"end":{"line":555,"column":3}},{"start":{"line":551,"column":2},"end":{"line":555,"column":3}}],"line":551},"67":{"loc":{"start":{"line":551,"column":6},"end":{"line":551,"column":52}},"type":"binary-expr","locations":[{"start":{"line":551,"column":6},"end":{"line":551,"column":37}},{"start":{"line":551,"column":41},"end":{"line":551,"column":52}}],"line":551},"68":{"loc":{"start":{"line":559,"column":2},"end":{"line":572,"column":3}},"type":"if","locations":[{"start":{"line":559,"column":2},"end":{"line":572,"column":3}},{"start":{"line":559,"column":2},"end":{"line":572,"column":3}}],"line":559},"69":{"loc":{"start":{"line":560,"column":4},"end":{"line":568,"column":5}},"type":"if","locations":[{"start":{"line":560,"column":4},"end":{"line":568,"column":5}},{"start":{"line":560,"column":4},"end":{"line":568,"column":5}}],"line":560},"70":{"loc":{"start":{"line":562,"column":11},"end":{"line":568,"column":5}},"type":"if","locations":[{"start":{"line":562,"column":11},"end":{"line":568,"column":5}},{"start":{"line":562,"column":11},"end":{"line":568,"column":5}}],"line":562},"71":{"loc":{"start":{"line":585,"column":2},"end":{"line":588,"column":3}},"type":"if","locations":[{"start":{"line":585,"column":2},"end":{"line":588,"column":3}},{"start":{"line":585,"column":2},"end":{"line":588,"column":3}}],"line":585},"72":{"loc":{"start":{"line":606,"column":2},"end":{"line":608,"column":3}},"type":"if","locations":[{"start":{"line":606,"column":2},"end":{"line":608,"column":3}},{"start":{"line":606,"column":2},"end":{"line":608,"column":3}}],"line":606},"73":{"loc":{"start":{"line":609,"column":2},"end":{"line":611,"column":3}},"type":"if","locations":[{"start":{"line":609,"column":2},"end":{"line":611,"column":3}},{"start":{"line":609,"column":2},"end":{"line":611,"column":3}}],"line":609},"74":{"loc":{"start":{"line":612,"column":2},"end":{"line":615,"column":3}},"type":"if","locations":[{"start":{"line":612,"column":2},"end":{"line":615,"column":3}},{"start":{"line":612,"column":2},"end":{"line":615,"column":3}}],"line":612},"75":{"loc":{"start":{"line":612,"column":6},"end":{"line":612,"column":63}},"type":"binary-expr","locations":[{"start":{"line":612,"column":6},"end":{"line":612,"column":39}},{"start":{"line":612,"column":43},"end":{"line":612,"column":63}}],"line":612},"76":{"loc":{"start":{"line":625,"column":2},"end":{"line":628,"column":3}},"type":"if","locations":[{"start":{"line":625,"column":2},"end":{"line":628,"column":3}},{"start":{"line":625,"column":2},"end":{"line":628,"column":3}}],"line":625},"77":{"loc":{"start":{"line":632,"column":2},"end":{"line":635,"column":3}},"type":"if","locations":[{"start":{"line":632,"column":2},"end":{"line":635,"column":3}},{"start":{"line":632,"column":2},"end":{"line":635,"column":3}}],"line":632},"78":{"loc":{"start":{"line":645,"column":2},"end":{"line":647,"column":3}},"type":"if","locations":[{"start":{"line":645,"column":2},"end":{"line":647,"column":3}},{"start":{"line":645,"column":2},"end":{"line":647,"column":3}}],"line":645},"79":{"loc":{"start":{"line":648,"column":2},"end":{"line":650,"column":3}},"type":"if","locations":[{"start":{"line":648,"column":2},"end":{"line":650,"column":3}},{"start":{"line":648,"column":2},"end":{"line":650,"column":3}}],"line":648},"80":{"loc":{"start":{"line":652,"column":2},"end":{"line":658,"column":3}},"type":"if","locations":[{"start":{"line":652,"column":2},"end":{"line":658,"column":3}},{"start":{"line":652,"column":2},"end":{"line":658,"column":3}}],"line":652},"81":{"loc":{"start":{"line":660,"column":2},"end":{"line":669,"column":3}},"type":"if","locations":[{"start":{"line":660,"column":2},"end":{"line":669,"column":3}},{"start":{"line":660,"column":2},"end":{"line":669,"column":3}}],"line":660},"82":{"loc":{"start":{"line":679,"column":2},"end":{"line":691,"column":3}},"type":"if","locations":[{"start":{"line":679,"column":2},"end":{"line":691,"column":3}},{"start":{"line":679,"column":2},"end":{"line":691,"column":3}}],"line":679},"83":{"loc":{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},"type":"if","locations":[{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},{"start":{"line":692,"column":2},"end":{"line":694,"column":3}}],"line":692},"84":{"loc":{"start":{"line":713,"column":18},"end":{"line":713,"column":53}},"type":"cond-expr","locations":[{"start":{"line":713,"column":42},"end":{"line":713,"column":49}},{"start":{"line":713,"column":52},"end":{"line":713,"column":53}}],"line":713},"85":{"loc":{"start":{"line":714,"column":2},"end":{"line":718,"column":3}},"type":"if","locations":[{"start":{"line":714,"column":2},"end":{"line":718,"column":3}},{"start":{"line":714,"column":2},"end":{"line":718,"column":3}}],"line":714},"86":{"loc":{"start":{"line":719,"column":15},"end":{"line":719,"column":46}},"type":"binary-expr","locations":[{"start":{"line":719,"column":15},"end":{"line":719,"column":23}},{"start":{"line":719,"column":27},"end":{"line":719,"column":46}}],"line":719},"87":{"loc":{"start":{"line":733,"column":4},"end":{"line":741,"column":5}},"type":"switch","locations":[{"start":{"line":734,"column":6},"end":{"line":734,"column":24}},{"start":{"line":735,"column":6},"end":{"line":735,"column":24}},{"start":{"line":736,"column":6},"end":{"line":736,"column":24}},{"start":{"line":737,"column":6},"end":{"line":738,"column":37}},{"start":{"line":739,"column":6},"end":{"line":739,"column":14}}],"line":733},"88":{"loc":{"start":{"line":743,"column":2},"end":{"line":745,"column":3}},"type":"if","locations":[{"start":{"line":743,"column":2},"end":{"line":745,"column":3}},{"start":{"line":743,"column":2},"end":{"line":745,"column":3}}],"line":743},"89":{"loc":{"start":{"line":785,"column":2},"end":{"line":787,"column":3}},"type":"if","locations":[{"start":{"line":785,"column":2},"end":{"line":787,"column":3}},{"start":{"line":785,"column":2},"end":{"line":787,"column":3}}],"line":785},"90":{"loc":{"start":{"line":785,"column":6},"end":{"line":785,"column":51}},"type":"binary-expr","locations":[{"start":{"line":785,"column":6},"end":{"line":785,"column":30}},{"start":{"line":785,"column":34},"end":{"line":785,"column":51}}],"line":785},"91":{"loc":{"start":{"line":790,"column":4},"end":{"line":792,"column":5}},"type":"if","locations":[{"start":{"line":790,"column":4},"end":{"line":792,"column":5}},{"start":{"line":790,"column":4},"end":{"line":792,"column":5}}],"line":790},"92":{"loc":{"start":{"line":790,"column":8},"end":{"line":790,"column":57}},"type":"binary-expr","locations":[{"start":{"line":790,"column":8},"end":{"line":790,"column":27}},{"start":{"line":790,"column":31},"end":{"line":790,"column":57}}],"line":790},"93":{"loc":{"start":{"line":799,"column":0},"end":{"line":801,"column":1}},"type":"if","locations":[{"start":{"line":799,"column":0},"end":{"line":801,"column":1}},{"start":{"line":799,"column":0},"end":{"line":801,"column":1}}],"line":799}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":368,"6":16459,"7":1,"8":19,"9":19,"10":38,"11":1,"12":2,"13":2,"14":1,"15":2,"16":2,"17":2,"18":1,"19":342,"20":15792,"21":1,"22":4,"23":1,"24":3,"25":4,"26":4,"27":4,"28":21,"29":4,"30":4,"31":4,"32":4,"33":4,"34":4,"35":4,"36":4,"37":4,"38":5,"39":4,"40":5,"41":4,"42":1,"43":7,"44":7,"45":7,"46":7,"47":1,"48":6,"49":1,"50":5,"51":7,"52":7,"53":7,"54":7,"55":7,"56":7,"57":7,"58":7,"59":1,"60":1,"61":1,"62":1,"63":7,"64":1,"65":1,"66":7,"67":2,"68":2,"69":7,"70":1,"71":1,"72":1,"73":95,"74":95,"75":95,"76":95,"77":95,"78":95,"79":95,"80":95,"81":1,"82":13,"83":13,"84":2,"85":13,"86":13,"87":1,"88":33,"89":33,"90":1,"91":13,"92":1,"93":44,"94":44,"95":44,"96":44,"97":49,"98":49,"99":44,"100":1,"101":14,"102":14,"103":14,"104":3,"105":14,"106":12,"107":12,"108":13,"109":12,"110":1,"111":12,"112":14,"113":1,"114":146,"115":146,"116":1,"117":12,"118":12,"119":12,"120":2,"121":12,"122":3,"123":4,"124":12,"125":1,"126":42,"127":42,"128":42,"129":42,"130":42,"131":42,"132":0,"133":42,"134":1,"135":1,"136":1,"137":2,"138":1,"139":2,"140":2,"141":1,"142":1,"143":3,"144":3,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":2,"152":1,"153":1,"154":4,"155":4,"156":1,"157":3,"158":1,"159":2,"160":1,"161":1,"162":1,"163":1,"164":5,"165":1,"166":1,"167":1,"168":1,"169":4,"170":4,"171":4,"172":3,"173":1,"174":1,"175":2,"176":2,"177":1,"178":2,"179":1,"180":11,"181":11,"182":11,"183":11,"184":11,"185":93,"186":93,"187":93,"188":93,"189":93,"190":93,"191":93,"192":93,"193":93,"194":20,"195":20,"196":73,"197":11,"198":30,"199":11,"200":11,"201":93,"202":9,"203":1,"204":9,"205":8,"206":11,"207":1,"208":10,"209":10,"210":10,"211":10,"212":10,"213":9,"214":1,"215":8,"216":10,"217":10,"218":10,"219":9,"220":9,"221":9,"222":10,"223":10,"224":9,"225":0,"226":10,"227":0,"228":10,"229":9,"230":8,"231":10,"232":1,"233":5,"234":5,"235":5,"236":5,"237":5,"238":33,"239":33,"240":5,"241":5,"242":4,"243":4,"244":8,"245":5,"246":4,"247":5,"248":39,"249":16,"250":16,"251":16,"252":16,"253":16,"254":16,"255":16,"256":16,"257":5,"258":1,"259":5,"260":5,"261":3,"262":1,"263":2,"264":1,"265":1,"266":3,"267":24,"268":5,"269":1,"270":1,"271":1,"272":8,"273":8,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":3,"285":3,"286":1,"287":3,"288":1,"289":3,"290":1,"291":3,"292":1,"293":3,"294":3,"295":1,"296":1,"297":2,"298":1,"299":1,"300":2,"301":1,"302":1,"303":1,"304":2,"305":2,"306":2,"307":1,"308":2,"309":1,"310":2,"311":2,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":6,"319":6,"320":3,"321":3,"322":6,"323":6,"324":6,"325":1,"326":7,"327":1,"328":9,"329":9,"330":2,"331":7,"332":9,"333":9,"334":1,"335":7,"336":7,"337":7,"338":15,"339":5,"340":2,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":2,"349":1,"350":3,"351":3,"352":3,"353":1,"354":1,"355":1,"356":1,"357":1,"358":5,"359":2,"360":3,"361":3,"362":3,"363":60,"364":2,"365":1,"366":1,"367":1},"f":{"0":1,"1":368,"2":16459,"3":19,"4":38,"5":2,"6":2,"7":342,"8":15792,"9":4,"10":7,"11":1,"12":95,"13":13,"14":33,"15":13,"16":44,"17":14,"18":13,"19":146,"20":12,"21":4,"22":42,"23":1,"24":2,"25":2,"26":3,"27":1,"28":1,"29":2,"30":4,"31":3,"32":2,"33":5,"34":1,"35":4,"36":2,"37":11,"38":30,"39":93,"40":9,"41":1,"42":10,"43":9,"44":9,"45":9,"46":8,"47":5,"48":33,"49":33,"50":4,"51":8,"52":39,"53":24,"54":1,"55":8,"56":8,"57":3,"58":3,"59":1,"60":1,"61":2,"62":6,"63":7,"64":9,"65":7,"66":1,"67":2,"68":3,"69":1,"70":5},"b":{"0":[19,19],"1":[2,2],"2":[1,3],"3":[4,1],"4":[4,4,4,4,5],"5":[4,1],"6":[1,6],"7":[1,5],"8":[7,7],"9":[1,6],"10":[7,1,1],"11":[1,6],"12":[7,2],"13":[2,5],"14":[7,6],"15":[2,1],"16":[1,94],"17":[2,11],"18":[13,12,1],"19":[11,2],"20":[1,32],"21":[13,1],"22":[1,12],"23":[13,2],"24":[1,12],"25":[3,11],"26":[12,2],"27":[14,13],"28":[12,1],"29":[2,10],"30":[3,9],"31":[12,4],"32":[1,3],"33":[4,1],"34":[42,0],"35":[1,1],"36":[1,2],"37":[1,2],"38":[1,1],"39":[1,0],"40":[1,0],"41":[2,3],"42":[2,3],"43":[5,2],"44":[3,1],"45":[4,2],"46":[1,1],"47":[93,0],"48":[43,50],"49":[10,20,73],"50":[1,1],"51":[8,1],"52":[9,1],"53":[1,8],"54":[0,9],"55":[0,10],"56":[9,1],"57":[5,5],"58":[4,1],"59":[5,4,4],"60":[16,23],"61":[39,16],"62":[16,0],"63":[16,16],"64":[16,0],"65":[16,0],"66":[1,4],"67":[5,1],"68":[3,2],"69":[1,2],"70":[1,1],"71":[1,0],"72":[1,2],"73":[1,2],"74":[1,2],"75":[3,1],"76":[1,2],"77":[1,1],"78":[1,1],"79":[1,1],"80":[1,1],"81":[1,0],"82":[3,3],"83":[6,0],"84":[2,7],"85":[2,7],"86":[9,9],"87":[1,3,4,5,10],"88":[1,1],"89":[2,3],"90":[5,4],"91":[2,58],"92":[60,59],"93":[1,0]},"_coverageSchema":"43e27e138ebf9cfc5966b082cf9a028302ed4184","hash":"c65cae4c3f070071d62280e5ed07badcdf5e7f40","contentHash":"675fe6275fc51d84b78fba694121e489e4bde83a442ae5c521ba52f75f902544"}} \ No newline at end of file diff --git a/node_modules/sdp/.nyc_output/processinfo/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json b/node_modules/sdp/.nyc_output/processinfo/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json new file mode 100644 index 0000000..5862e86 --- /dev/null +++ b/node_modules/sdp/.nyc_output/processinfo/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json @@ -0,0 +1 @@ +{"uuid":"a9b935d8-5f14-4c64-b895-6b0ece2e9d7c","parent":null,"pid":5750,"argv":["/usr/bin/node","/media/fippo/houseparty/webrtc/sdp/node_modules/.bin/mocha","test/sdp.js"],"execArgv":[],"cwd":"/media/fippo/houseparty/webrtc/sdp","time":1673267457493,"ppid":5743,"root":"9110d26c-7a83-40c7-a41d-9670d698bc02","coverageFilename":"/media/fippo/houseparty/webrtc/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json","files":["/media/fippo/houseparty/webrtc/sdp/sdp.js"]} \ No newline at end of file diff --git a/node_modules/sdp/.nyc_output/processinfo/index.json b/node_modules/sdp/.nyc_output/processinfo/index.json new file mode 100644 index 0000000..726907f --- /dev/null +++ b/node_modules/sdp/.nyc_output/processinfo/index.json @@ -0,0 +1 @@ +{"processes":{"a9b935d8-5f14-4c64-b895-6b0ece2e9d7c":{"parent":null,"children":[]}},"files":{"/media/fippo/houseparty/webrtc/sdp/sdp.js":["a9b935d8-5f14-4c64-b895-6b0ece2e9d7c"]},"externalIds":{}} \ No newline at end of file diff --git a/node_modules/sdp/LICENSE b/node_modules/sdp/LICENSE new file mode 100644 index 0000000..09502ec --- /dev/null +++ b/node_modules/sdp/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017 Philipp Hancke + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/sdp/README.md b/node_modules/sdp/README.md new file mode 100644 index 0000000..85befd5 --- /dev/null +++ b/node_modules/sdp/README.md @@ -0,0 +1,4 @@ +# SDP parsing and utlities +originally for generating SDP from ORTC and vice versa -- see https://github.com/fippo/adapter/tree/shim-ortc + +But it turned out to be useful for manipulating SDP outside the context of Microsofts Edge browser. diff --git a/node_modules/sdp/coverage.lcov b/node_modules/sdp/coverage.lcov new file mode 100644 index 0000000..2bf4b8a --- /dev/null +++ b/node_modules/sdp/coverage.lcov @@ -0,0 +1,1083 @@ +TN: +SF:sdp.js +FN:9,SDPUtils.generateIdentifier +FN:17,SDPUtils.splitLines +FN:21,SDPUtils.splitSections +FN:28,SDPUtils.getDescription +FN:34,SDPUtils.getMediaSections +FN:41,SDPUtils.matchPrefix +FN:49,SDPUtils.parseCandidate +FN:97,SDPUtils.writeCandidate +FN:138,SDPUtils.parseIceOptions +FN:144,SDPUtils.parseRtpMap +FN:162,SDPUtils.writeRtpMap +FN:175,SDPUtils.parseExtmap +FN:187,SDPUtils.writeExtmap +FN:200,SDPUtils.parseFmtp +FN:212,SDPUtils.writeFmtp +FN:234,SDPUtils.parseRtcpFb +FN:243,SDPUtils.writeRtcpFb +FN:262,SDPUtils.parseSsrcMedia +FN:279,SDPUtils.parseSsrcGroup +FN:289,SDPUtils.getMid +FN:297,SDPUtils.parseFingerprint +FN:308,SDPUtils.getDtlsParameters +FN:319,SDPUtils.writeDtlsParameters +FN:329,SDPUtils.parseCryptoLine +FN:339,SDPUtils.writeCryptoLine +FN:351,SDPUtils.parseCryptoKeyParams +FN:365,SDPUtils.writeCryptoKeyParams +FN:375,SDPUtils.getCryptoParameters +FN:384,SDPUtils.getIceParameters +FN:399,SDPUtils.writeIceParameters +FN:409,SDPUtils.parseRtpParameters +FN:452,SDPUtils.writeRtpDescription +FN:496,SDPUtils.parseRtpEncodingParameters +FN:564,SDPUtils.parseRtcpParameters +FN:591,SDPUtils.writeRtcpParameters +FN:609,SDPUtils.parseMsid +FN:628,SDPUtils.parseSctpDescription +FN:664,SDPUtils.writeSctpDescription +FN:689,SDPUtils.generateSessionId +FN:698,SDPUtils.writeSessionBoilerplate +FN:716,SDPUtils.getDirection +FN:736,SDPUtils.getKind +FN:742,SDPUtils.isRejected +FN:746,SDPUtils.parseMLine +FN:757,SDPUtils.parseOLine +FN:771,SDPUtils.isValidSDP +FNF:46 +FNH:46 +FNDA:1,SDPUtils.generateIdentifier +FNDA:211,SDPUtils.splitLines +FNDA:14,SDPUtils.splitSections +FNDA:2,SDPUtils.getDescription +FNDA:2,SDPUtils.getMediaSections +FNDA:191,SDPUtils.matchPrefix +FNDA:4,SDPUtils.parseCandidate +FNDA:7,SDPUtils.writeCandidate +FNDA:1,SDPUtils.parseIceOptions +FNDA:50,SDPUtils.parseRtpMap +FNDA:13,SDPUtils.writeRtpMap +FNDA:18,SDPUtils.parseExtmap +FNDA:13,SDPUtils.writeExtmap +FNDA:24,SDPUtils.parseFmtp +FNDA:14,SDPUtils.writeFmtp +FNDA:84,SDPUtils.parseRtcpFb +FNDA:12,SDPUtils.writeRtcpFb +FNDA:42,SDPUtils.parseSsrcMedia +FNDA:1,SDPUtils.parseSsrcGroup +FNDA:2,SDPUtils.getMid +FNDA:3,SDPUtils.parseFingerprint +FNDA:1,SDPUtils.getDtlsParameters +FNDA:1,SDPUtils.writeDtlsParameters +FNDA:4,SDPUtils.parseCryptoLine +FNDA:3,SDPUtils.writeCryptoLine +FNDA:2,SDPUtils.parseCryptoKeyParams +FNDA:5,SDPUtils.writeCryptoKeyParams +FNDA:1,SDPUtils.getCryptoParameters +FNDA:4,SDPUtils.getIceParameters +FNDA:2,SDPUtils.writeIceParameters +FNDA:6,SDPUtils.parseRtpParameters +FNDA:10,SDPUtils.writeRtpDescription +FNDA:5,SDPUtils.parseRtpEncodingParameters +FNDA:1,SDPUtils.parseRtcpParameters +FNDA:3,SDPUtils.writeRtcpParameters +FNDA:3,SDPUtils.parseMsid +FNDA:2,SDPUtils.parseSctpDescription +FNDA:6,SDPUtils.writeSctpDescription +FNDA:7,SDPUtils.generateSessionId +FNDA:9,SDPUtils.writeSessionBoilerplate +FNDA:7,SDPUtils.getDirection +FNDA:1,SDPUtils.getKind +FNDA:2,SDPUtils.isRejected +FNDA:3,SDPUtils.parseMLine +FNDA:1,SDPUtils.parseOLine +FNDA:5,SDPUtils.isValidSDP +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,211 +DA:19,1 +DA:20,1 +DA:21,1 +DA:22,14 +DA:23,14 +DA:24,14 +DA:25,1 +DA:26,1 +DA:27,1 +DA:28,1 +DA:29,2 +DA:30,2 +DA:31,1 +DA:32,1 +DA:33,1 +DA:34,1 +DA:35,2 +DA:36,2 +DA:37,2 +DA:38,1 +DA:39,1 +DA:40,1 +DA:41,1 +DA:42,191 +DA:43,1 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,4 +DA:51,4 +DA:52,4 +DA:53,1 +DA:54,4 +DA:55,3 +DA:56,3 +DA:57,4 +DA:58,4 +DA:59,4 +DA:60,4 +DA:61,4 +DA:62,4 +DA:63,4 +DA:64,4 +DA:65,4 +DA:66,4 +DA:67,4 +DA:68,4 +DA:69,4 +DA:70,4 +DA:71,21 +DA:72,21 +DA:73,4 +DA:74,4 +DA:75,21 +DA:76,4 +DA:77,4 +DA:78,21 +DA:79,4 +DA:80,4 +DA:81,21 +DA:82,4 +DA:83,4 +DA:84,4 +DA:85,21 +DA:86,5 +DA:87,4 +DA:88,4 +DA:89,5 +DA:90,21 +DA:91,21 +DA:92,4 +DA:93,1 +DA:94,1 +DA:95,1 +DA:96,1 +DA:97,1 +DA:98,7 +DA:99,7 +DA:100,7 +DA:101,7 +DA:102,7 +DA:103,1 +DA:104,7 +DA:105,1 +DA:106,6 +DA:107,5 +DA:108,5 +DA:109,7 +DA:110,7 +DA:111,7 +DA:112,7 +DA:113,7 +DA:114,7 +DA:115,7 +DA:116,7 +DA:117,7 +DA:118,7 +DA:119,1 +DA:120,1 +DA:121,1 +DA:122,1 +DA:123,1 +DA:124,7 +DA:125,1 +DA:126,1 +DA:127,1 +DA:128,7 +DA:129,2 +DA:130,2 +DA:131,2 +DA:132,7 +DA:133,1 +DA:134,1 +DA:135,1 +DA:136,1 +DA:137,1 +DA:138,1 +DA:139,1 +DA:140,1 +DA:141,1 +DA:142,1 +DA:143,1 +DA:144,1 +DA:145,50 +DA:146,50 +DA:147,50 +DA:148,50 +DA:149,50 +DA:150,50 +DA:151,50 +DA:152,50 +DA:153,50 +DA:154,50 +DA:155,50 +DA:156,50 +DA:157,50 +DA:158,1 +DA:159,1 +DA:160,1 +DA:161,1 +DA:162,1 +DA:163,13 +DA:164,13 +DA:165,2 +DA:166,2 +DA:167,13 +DA:168,13 +DA:169,13 +DA:170,1 +DA:171,1 +DA:172,1 +DA:173,1 +DA:174,1 +DA:175,1 +DA:176,18 +DA:177,18 +DA:178,18 +DA:179,18 +DA:180,18 +DA:181,18 +DA:182,18 +DA:183,1 +DA:184,1 +DA:185,1 +DA:186,1 +DA:187,1 +DA:188,13 +DA:189,13 +DA:190,13 +DA:191,13 +DA:192,13 +DA:193,13 +DA:194,13 +DA:195,1 +DA:196,1 +DA:197,1 +DA:198,1 +DA:199,1 +DA:200,1 +DA:201,24 +DA:202,24 +DA:203,24 +DA:204,24 +DA:205,29 +DA:206,29 +DA:207,29 +DA:208,24 +DA:209,1 +DA:210,1 +DA:211,1 +DA:212,1 +DA:213,14 +DA:214,14 +DA:215,14 +DA:216,3 +DA:217,3 +DA:218,14 +DA:219,12 +DA:220,12 +DA:221,13 +DA:222,12 +DA:223,13 +DA:224,1 +DA:225,1 +DA:226,12 +DA:227,12 +DA:228,12 +DA:229,14 +DA:230,1 +DA:231,1 +DA:232,1 +DA:233,1 +DA:234,1 +DA:235,84 +DA:236,84 +DA:237,84 +DA:238,84 +DA:239,84 +DA:240,1 +DA:241,1 +DA:242,1 +DA:243,1 +DA:244,12 +DA:245,12 +DA:246,12 +DA:247,2 +DA:248,2 +DA:249,12 +DA:250,3 +DA:251,3 +DA:252,4 +DA:253,4 +DA:254,4 +DA:255,3 +DA:256,3 +DA:257,12 +DA:258,1 +DA:259,1 +DA:260,1 +DA:261,1 +DA:262,1 +DA:263,42 +DA:264,42 +DA:265,42 +DA:266,42 +DA:267,42 +DA:268,42 +DA:269,42 +DA:270,42 +DA:271,42 +DA:272,0 +DA:273,0 +DA:274,42 +DA:275,1 +DA:276,1 +DA:277,1 +DA:278,1 +DA:279,1 +DA:280,1 +DA:281,1 +DA:282,1 +DA:283,1 +DA:284,1 +DA:285,1 +DA:286,1 +DA:287,1 +DA:288,1 +DA:289,1 +DA:290,2 +DA:291,2 +DA:292,1 +DA:293,1 +DA:294,1 +DA:295,1 +DA:296,1 +DA:297,1 +DA:298,3 +DA:299,3 +DA:300,3 +DA:301,3 +DA:302,3 +DA:303,1 +DA:304,1 +DA:305,1 +DA:306,1 +DA:307,1 +DA:308,1 +DA:309,1 +DA:310,1 +DA:311,1 +DA:312,1 +DA:313,1 +DA:314,1 +DA:315,1 +DA:316,1 +DA:317,1 +DA:318,1 +DA:319,1 +DA:320,1 +DA:321,1 +DA:322,2 +DA:323,1 +DA:324,1 +DA:325,1 +DA:326,1 +DA:327,1 +DA:328,1 +DA:329,1 +DA:330,4 +DA:331,4 +DA:332,4 +DA:333,4 +DA:334,4 +DA:335,4 +DA:336,4 +DA:337,1 +DA:338,1 +DA:339,1 +DA:340,3 +DA:341,3 +DA:342,3 +DA:343,3 +DA:344,3 +DA:345,3 +DA:346,3 +DA:347,1 +DA:348,1 +DA:349,1 +DA:350,1 +DA:351,1 +DA:352,2 +DA:353,1 +DA:354,1 +DA:355,1 +DA:356,1 +DA:357,1 +DA:358,1 +DA:359,1 +DA:360,2 +DA:361,2 +DA:362,2 +DA:363,1 +DA:364,1 +DA:365,1 +DA:366,5 +DA:367,5 +DA:368,5 +DA:369,5 +DA:370,5 +DA:371,5 +DA:372,1 +DA:373,1 +DA:374,1 +DA:375,1 +DA:376,1 +DA:377,1 +DA:378,1 +DA:379,1 +DA:380,1 +DA:381,1 +DA:382,1 +DA:383,1 +DA:384,1 +DA:385,4 +DA:386,4 +DA:387,4 +DA:388,4 +DA:389,4 +DA:390,3 +DA:391,3 +DA:392,1 +DA:393,1 +DA:394,1 +DA:395,1 +DA:396,1 +DA:397,1 +DA:398,1 +DA:399,1 +DA:400,2 +DA:401,2 +DA:402,2 +DA:403,1 +DA:404,1 +DA:405,2 +DA:406,1 +DA:407,1 +DA:408,1 +DA:409,1 +DA:410,6 +DA:411,6 +DA:412,6 +DA:413,6 +DA:414,6 +DA:415,6 +DA:416,6 +DA:417,6 +DA:418,6 +DA:419,48 +DA:420,48 +DA:421,48 +DA:422,48 +DA:423,48 +DA:424,48 +DA:425,48 +DA:426,48 +DA:427,48 +DA:428,48 +DA:429,48 +DA:430,48 +DA:431,48 +DA:432,48 +DA:433,48 +DA:434,48 +DA:435,48 +DA:436,10 +DA:437,10 +DA:438,48 +DA:439,38 +DA:440,48 +DA:441,48 +DA:442,48 +DA:443,6 +DA:444,15 +DA:445,6 +DA:446,6 +DA:447,6 +DA:448,1 +DA:449,1 +DA:450,1 +DA:451,1 +DA:452,1 +DA:453,10 +DA:454,10 +DA:455,10 +DA:456,10 +DA:457,10 +DA:458,10 +DA:459,10 +DA:460,9 +DA:461,1 +DA:462,1 +DA:463,8 +DA:464,10 +DA:465,10 +DA:466,10 +DA:467,10 +DA:468,10 +DA:469,10 +DA:470,10 +DA:471,9 +DA:472,9 +DA:473,9 +DA:474,10 +DA:475,10 +DA:476,10 +DA:477,9 +DA:478,0 +DA:479,0 +DA:480,10 +DA:481,10 +DA:482,0 +DA:483,0 +DA:484,10 +DA:485,10 +DA:486,9 +DA:487,8 +DA:488,9 +DA:489,9 +DA:490,10 +DA:491,10 +DA:492,1 +DA:493,1 +DA:494,1 +DA:495,1 +DA:496,1 +DA:497,5 +DA:498,5 +DA:499,5 +DA:500,5 +DA:501,5 +DA:502,5 +DA:503,5 +DA:504,5 +DA:505,5 +DA:506,5 +DA:507,5 +DA:508,5 +DA:509,5 +DA:510,5 +DA:511,4 +DA:512,4 +DA:513,5 +DA:514,5 +DA:515,4 +DA:516,4 +DA:517,5 +DA:518,5 +DA:519,39 +DA:520,16 +DA:521,16 +DA:522,16 +DA:523,16 +DA:524,16 +DA:525,16 +DA:526,16 +DA:527,16 +DA:528,16 +DA:529,16 +DA:530,16 +DA:531,16 +DA:532,16 +DA:533,16 +DA:534,16 +DA:535,16 +DA:536,16 +DA:537,5 +DA:538,5 +DA:539,1 +DA:540,1 +DA:541,1 +DA:542,1 +DA:543,5 +DA:544,5 +DA:545,5 +DA:546,5 +DA:547,3 +DA:548,1 +DA:549,3 +DA:550,1 +DA:551,1 +DA:552,1 +DA:553,1 +DA:554,1 +DA:555,1 +DA:556,3 +DA:557,24 +DA:558,3 +DA:559,3 +DA:560,5 +DA:561,1 +DA:562,1 +DA:563,1 +DA:564,1 +DA:565,1 +DA:566,1 +DA:567,1 +DA:568,1 +DA:569,1 +DA:570,1 +DA:571,1 +DA:572,1 +DA:573,1 +DA:574,1 +DA:575,1 +DA:576,1 +DA:577,1 +DA:578,1 +DA:579,1 +DA:580,1 +DA:581,1 +DA:582,1 +DA:583,1 +DA:584,1 +DA:585,1 +DA:586,1 +DA:587,1 +DA:588,1 +DA:589,1 +DA:590,1 +DA:591,1 +DA:592,3 +DA:593,3 +DA:594,1 +DA:595,1 +DA:596,3 +DA:597,1 +DA:598,1 +DA:599,3 +DA:600,1 +DA:601,1 +DA:602,1 +DA:603,3 +DA:604,1 +DA:605,1 +DA:606,1 +DA:607,1 +DA:608,1 +DA:609,1 +DA:610,3 +DA:611,3 +DA:612,3 +DA:613,1 +DA:614,1 +DA:615,1 +DA:616,2 +DA:617,2 +DA:618,2 +DA:619,3 +DA:620,1 +DA:621,1 +DA:622,1 +DA:623,1 +DA:624,1 +DA:625,1 +DA:626,1 +DA:627,1 +DA:628,1 +DA:629,2 +DA:630,2 +DA:631,2 +DA:632,2 +DA:633,1 +DA:634,1 +DA:635,2 +DA:636,1 +DA:637,1 +DA:638,2 +DA:639,2 +DA:640,1 +DA:641,1 +DA:642,1 +DA:643,1 +DA:644,1 +DA:645,1 +DA:646,1 +DA:647,1 +DA:648,1 +DA:649,1 +DA:650,1 +DA:651,1 +DA:652,1 +DA:653,1 +DA:654,1 +DA:655,1 +DA:656,1 +DA:657,1 +DA:658,1 +DA:659,1 +DA:660,1 +DA:661,1 +DA:662,1 +DA:663,1 +DA:664,1 +DA:665,6 +DA:666,6 +DA:667,3 +DA:668,3 +DA:669,3 +DA:670,3 +DA:671,3 +DA:672,3 +DA:673,3 +DA:674,3 +DA:675,3 +DA:676,3 +DA:677,3 +DA:678,3 +DA:679,6 +DA:680,6 +DA:681,6 +DA:682,6 +DA:683,1 +DA:684,1 +DA:685,1 +DA:686,1 +DA:687,1 +DA:688,1 +DA:689,1 +DA:690,7 +DA:691,1 +DA:692,1 +DA:693,1 +DA:694,1 +DA:695,1 +DA:696,1 +DA:697,1 +DA:698,1 +DA:699,9 +DA:700,9 +DA:701,9 +DA:702,2 +DA:703,9 +DA:704,7 +DA:705,7 +DA:706,9 +DA:707,9 +DA:708,9 +DA:709,9 +DA:710,9 +DA:711,9 +DA:712,9 +DA:713,1 +DA:714,1 +DA:715,1 +DA:716,1 +DA:717,7 +DA:718,7 +DA:719,7 +DA:720,15 +DA:721,15 +DA:722,15 +DA:723,15 +DA:724,15 +DA:725,5 +DA:726,15 +DA:727,15 +DA:728,15 +DA:729,15 +DA:730,7 +DA:731,1 +DA:732,1 +DA:733,1 +DA:734,1 +DA:735,1 +DA:736,1 +DA:737,1 +DA:738,1 +DA:739,1 +DA:740,1 +DA:741,1 +DA:742,1 +DA:743,2 +DA:744,1 +DA:745,1 +DA:746,1 +DA:747,3 +DA:748,3 +DA:749,3 +DA:750,3 +DA:751,3 +DA:752,3 +DA:753,3 +DA:754,3 +DA:755,1 +DA:756,1 +DA:757,1 +DA:758,1 +DA:759,1 +DA:760,1 +DA:761,1 +DA:762,1 +DA:763,1 +DA:764,1 +DA:765,1 +DA:766,1 +DA:767,1 +DA:768,1 +DA:769,1 +DA:770,1 +DA:771,1 +DA:772,5 +DA:773,2 +DA:774,2 +DA:775,3 +DA:776,5 +DA:777,60 +DA:778,2 +DA:779,2 +DA:780,60 +DA:781,60 +DA:782,1 +DA:783,1 +DA:784,1 +DA:785,1 +DA:786,1 +DA:787,1 +DA:788,1 +LF:788 +LH:782 +BRDA:1,0,0,1 +BRDA:9,1,0,1 +BRDA:17,2,0,211 +BRDA:18,3,0,8859 +BRDA:21,4,0,14 +BRDA:23,5,0,28 +BRDA:23,6,0,14 +BRDA:24,7,0,14 +BRDA:28,8,0,2 +BRDA:34,9,0,2 +BRDA:41,10,0,191 +BRDA:42,11,0,8491 +BRDA:49,12,0,4 +BRDA:52,13,0,1 +BRDA:54,14,0,3 +BRDA:60,15,0,1 +BRDA:70,16,0,21 +BRDA:72,17,0,4 +BRDA:75,18,0,4 +BRDA:78,19,0,4 +BRDA:81,20,0,4 +BRDA:85,21,0,5 +BRDA:86,22,0,4 +BRDA:97,23,0,7 +BRDA:102,24,0,1 +BRDA:104,25,0,6 +BRDA:104,26,0,1 +BRDA:106,27,0,5 +BRDA:117,28,0,1 +BRDA:117,29,0,1 +BRDA:118,30,0,1 +BRDA:124,31,0,2 +BRDA:124,32,0,1 +BRDA:128,33,0,6 +BRDA:128,34,0,2 +BRDA:130,35,0,1 +BRDA:138,36,0,1 +BRDA:144,37,0,50 +BRDA:154,38,0,1 +BRDA:154,39,0,49 +BRDA:162,40,0,13 +BRDA:164,41,0,2 +BRDA:167,42,0,12 +BRDA:167,43,0,1 +BRDA:169,44,0,11 +BRDA:169,45,0,2 +BRDA:175,46,0,18 +BRDA:179,47,0,1 +BRDA:179,48,0,17 +BRDA:187,49,0,13 +BRDA:188,50,0,1 +BRDA:189,51,0,2 +BRDA:190,52,0,1 +BRDA:191,53,0,12 +BRDA:193,54,0,1 +BRDA:193,55,0,12 +BRDA:200,56,0,24 +BRDA:204,57,0,29 +BRDA:212,58,0,14 +BRDA:215,59,0,3 +BRDA:218,60,0,13 +BRDA:218,61,0,12 +BRDA:220,62,0,13 +BRDA:221,63,0,12 +BRDA:223,64,0,1 +BRDA:234,65,0,84 +BRDA:243,66,0,12 +BRDA:246,67,0,2 +BRDA:249,68,0,4 +BRDA:249,69,0,3 +BRDA:251,70,0,4 +BRDA:253,71,0,1 +BRDA:253,72,0,1 +BRDA:253,73,0,3 +BRDA:262,74,0,42 +BRDA:271,75,0,0 +BRDA:279,76,0,1 +BRDA:283,77,0,2 +BRDA:289,78,0,2 +BRDA:291,79,0,1 +BRDA:297,80,0,3 +BRDA:308,81,0,1 +BRDA:319,82,0,1 +BRDA:321,83,0,2 +BRDA:329,84,0,4 +BRDA:339,85,0,3 +BRDA:343,86,0,1 +BRDA:344,87,0,2 +BRDA:345,88,0,1 +BRDA:345,89,0,2 +BRDA:351,90,0,2 +BRDA:352,91,0,1 +BRDA:360,92,0,0 +BRDA:361,93,0,1 +BRDA:361,94,0,0 +BRDA:365,95,0,5 +BRDA:368,96,0,2 +BRDA:368,97,0,3 +BRDA:369,98,0,2 +BRDA:370,99,0,2 +BRDA:371,100,0,3 +BRDA:375,101,0,1 +BRDA:384,102,0,4 +BRDA:389,103,0,2 +BRDA:389,104,0,3 +BRDA:392,105,0,1 +BRDA:399,106,0,2 +BRDA:402,107,0,1 +BRDA:409,108,0,6 +BRDA:418,109,0,48 +BRDA:427,110,0,23 +BRDA:427,111,0,25 +BRDA:434,112,0,5 +BRDA:435,113,0,10 +BRDA:438,114,0,38 +BRDA:443,115,0,15 +BRDA:452,116,0,10 +BRDA:457,117,0,9 +BRDA:457,118,0,1 +BRDA:481,119,0,0 +BRDA:485,120,0,9 +BRDA:459,121,0,9 +BRDA:460,122,0,1 +BRDA:463,123,0,8 +BRDA:470,124,0,9 +BRDA:476,125,0,9 +BRDA:477,126,0,0 +BRDA:486,127,0,8 +BRDA:496,128,0,5 +BRDA:514,129,0,4 +BRDA:514,130,0,4 +BRDA:514,131,0,4 +BRDA:538,132,0,1 +BRDA:538,133,0,1 +BRDA:546,134,0,3 +BRDA:547,135,0,1 +BRDA:549,136,0,2 +BRDA:549,137,0,1 +BRDA:504,138,0,33 +BRDA:505,139,0,33 +BRDA:510,140,0,4 +BRDA:512,141,0,8 +BRDA:518,142,0,39 +BRDA:519,143,0,16 +BRDA:519,144,0,16 +BRDA:532,145,0,0 +BRDA:556,146,0,24 +BRDA:564,147,0,1 +BRDA:570,148,0,8 +BRDA:571,149,0,8 +BRDA:591,150,0,3 +BRDA:593,151,0,1 +BRDA:596,152,0,1 +BRDA:599,153,0,1 +BRDA:599,154,0,1 +BRDA:609,155,0,3 +BRDA:612,156,0,1 +BRDA:616,157,0,2 +BRDA:619,158,0,1 +BRDA:617,159,0,1 +BRDA:618,160,0,1 +BRDA:628,161,0,2 +BRDA:632,162,0,1 +BRDA:635,163,0,1 +BRDA:639,164,0,1 +BRDA:664,165,0,6 +BRDA:666,166,0,3 +BRDA:689,167,0,7 +BRDA:698,168,0,9 +BRDA:700,169,0,2 +BRDA:700,170,0,7 +BRDA:701,171,0,2 +BRDA:703,172,0,7 +BRDA:716,173,0,7 +BRDA:719,174,0,15 +BRDA:721,175,0,1 +BRDA:722,176,0,3 +BRDA:723,177,0,4 +BRDA:724,178,0,5 +BRDA:726,179,0,10 +BRDA:730,180,0,2 +BRDA:730,181,0,1 +BRDA:736,182,0,1 +BRDA:742,183,0,2 +BRDA:746,184,0,3 +BRDA:757,185,0,1 +BRDA:771,186,0,5 +BRDA:772,187,0,4 +BRDA:772,188,0,2 +BRDA:775,189,0,3 +BRDA:776,190,0,60 +BRDA:777,191,0,59 +BRDA:777,192,0,2 +BRDA:782,193,0,1 +BRF:194 +BRH:188 +end_of_record diff --git a/node_modules/sdp/dist/sdp.js b/node_modules/sdp/dist/sdp.js new file mode 100644 index 0000000..0d3994f --- /dev/null +++ b/node_modules/sdp/dist/sdp.js @@ -0,0 +1,773 @@ +/* eslint-env node */ +'use strict'; + +// SDP helpers. + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function () { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function (blob) { + return blob.trim().split('\n').map(function (line) { + return line.trim(); + }); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function (blob) { + var parts = blob.split('\nm='); + return parts.map(function (part, index) { + return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; + }); +}; + +// Returns the session description. +SDPUtils.getDescription = function (blob) { + var sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function (blob) { + var sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function (blob, prefix) { + return SDPUtils.splitLines(blob).filter(function (line) { + return line.indexOf(prefix) === 0; + }); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function (line) { + var parts = void 0; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + var candidate = { + foundation: parts[0], + component: { 1: 'rtp', 2: 'rtcp' }[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7] + }; + + for (var i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: + // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function (candidate) { + var sdp = []; + sdp.push(candidate.foundation); + + var component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + var type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function (line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function (line) { + var parts = line.substring(9).split(' '); + var parsed = { + payloadType: parseInt(parts.shift(), 10) // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function (codec) { + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + var channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function (line) { + var parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' ') + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function (headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + (headerExtension.direction && headerExtension.direction !== 'sendrecv' ? '/' + headerExtension.direction : '') + ' ' + headerExtension.uri + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function (line) { + var parsed = {}; + var kv = void 0; + var parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (var j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function (codec) { + var line = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + var params = []; + Object.keys(codec.parameters).forEach(function (param) { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function (line) { + var parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' ') + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function (codec) { + var lines = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(function (fb) { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function (line) { + var sp = line.indexOf(' '); + var parts = { + ssrc: parseInt(line.substring(7, sp), 10) + }; + var colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function (line) { + var parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(function (ssrc) { + return parseInt(ssrc, 10); + }) + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function (mediaSection) { + var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function (line) { + var parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase() // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint) + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function (params, setupType) { + var sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(function (fp) { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function (line) { + var parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3) + }; +}; + +SDPUtils.writeCryptoLine = function (parameters) { + return 'a=crypto:' + parameters.tag + ' ' + parameters.cryptoSuite + ' ' + (_typeof(parameters.keyParams) === 'object' ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) : parameters.keyParams) + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function (keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + var parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined + }; +}; + +SDPUtils.writeCryptoKeyParams = function (keyParams) { + return keyParams.keyMethod + ':' + keyParams.keySalt + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + (keyParams.mkiValue && keyParams.mkiLength ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function (mediaSection, sessionpart) { + var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-ufrag:')[0]; + var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10) + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function (params) { + var sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function (mediaSection) { + var description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [] + }; + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + description.profile = mline[2]; + for (var i = 3; i < mline.length; i++) { + // find all codecs from mline[3..] + var pt = mline[i]; + var rtpmapline = SDPUtils.matchPrefix(mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + var codec = SDPUtils.parseRtpMap(rtpmapline); + var fmtps = SDPUtils.matchPrefix(mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:' + pt + ' ').map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: + // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function (line) { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + var wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ').map(SDPUtils.parseRtcpFb); + description.codecs.forEach(function (codec) { + wildcardRtcpFb.forEach(function (fb) { + var duplicate = codec.rtcpFeedback.find(function (existingFeedback) { + return existingFeedback.type === fb.type && existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function (kind, caps) { + var sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(function (codec) { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(function (codec) { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + var maxptime = 0; + caps.codecs.forEach(function (codec) { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(function (extension) { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function (mediaSection) { + var encodingParameters = []; + var description = SDPUtils.parseRtpParameters(mediaSection); + var hasRed = description.fecMechanisms.indexOf('RED') !== -1; + var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (parts) { + return parts.attribute === 'cname'; + }); + var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + var secondarySsrc = void 0; + + var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID').map(function (line) { + var parts = line.substring(17).split(' '); + return parts.map(function (part) { + return parseInt(part, 10); + }); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(function (codec) { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + var encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10) + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = { ssrc: secondarySsrc }; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red' + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 - 50 * 40 * 8; + } else { + bandwidth = undefined; + } + encodingParameters.forEach(function (params) { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function (mediaSection) { + var rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (obj) { + return obj.attribute === 'cname'; + })[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function (rtcpParameters) { + var sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function (mediaSection) { + var parts = void 0; + var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return { stream: parts[0], track: parts[1] }; + } + var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (msidParts) { + return msidParts.attribute === 'msid'; + }); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return { stream: parts[0], track: parts[1] }; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function (mediaSection) { + var mline = SDPUtils.parseMLine(mediaSection); + var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + var maxMessageSize = void 0; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize: maxMessageSize + }; + } + var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + var parts = sctpMapLines[0].substring(10).split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize: maxMessageSize + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function (media, sctp) { + var output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctp-port:' + sctp.port + '\r\n']; + } else { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n']; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function () { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function (sessId, sessVer, sessUser) { + var sessionId = void 0; + var version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + var user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + 'o=' + user + ' ' + sessionId + ' ' + version + ' IN IP4 127.0.0.1\r\n' + 's=-\r\n' + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function (mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + var lines = SDPUtils.splitLines(mediaSection); + for (var i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function (mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' ') + }; +}; + +SDPUtils.parseOLine = function (mediaSection) { + var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + var parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5] + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function (blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + var lines = SDPUtils.splitLines(blob); + for (var i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object') { + module.exports = SDPUtils; +} \ No newline at end of file diff --git a/node_modules/sdp/package.json b/node_modules/sdp/package.json new file mode 100644 index 0000000..8a26b37 --- /dev/null +++ b/node_modules/sdp/package.json @@ -0,0 +1,36 @@ +{ + "name": "sdp", + "version": "3.2.0", + "description": "SDP parsing and serialization utilities", + "main": "dist/sdp.js", + "module": "sdp.js", + "typings": "sdp.d.ts", + "repository": { + "type": "git", + "url": "git+https://github.com/fippo/sdp.git" + }, + "scripts": { + "build": "babel sdp.js --presets babel-preset-env --out-dir dist", + "coverage": "c8 report --reporter=text-lcov > coverage.lcov", + "prepare": "npm run build", + "test": "eslint sdp.js test/sdp.js && c8 --reporter html mocha test/sdp.js" + }, + "keywords": [ + "sdp", + "webrtc" + ], + "author": "Philipp Hancke", + "license": "MIT", + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-preset-env": "^1.7.0", + "c8": "^7.12.0", + "chai": "^4.3.7", + "codecov": "^3.6.5", + "eslint": "^8.31.0", + "mocha": "^10.2.0", + "sinon": "^15.0.1", + "sinon-chai": "^3.7.0" + } +} diff --git a/node_modules/sdp/sdp.d.ts b/node_modules/sdp/sdp.d.ts new file mode 100644 index 0000000..7f3d0c5 --- /dev/null +++ b/node_modules/sdp/sdp.d.ts @@ -0,0 +1,220 @@ +export type SDPBlob = string; +export type SDPLine = string; +export type SDPSection = string; + +export type SDPDirection = 'sendonly' | 'recvonly' | 'sendrecv' | 'inactive'; + +export interface SDPIceCandidate { + foundation: string; + component: 'rtp' | 'rtcp' | number; + protocol: 'tcp' | 'udp'; + priority: number; + ip: string; + address: string; + port: number; + type: 'host' | 'prflx' | 'srflx' | 'relay'; + relatedAddress?: string; + relatedPort?: number; + tcpType?: string; + ufrag?: string; + usernameFragment?: string; +} + +export interface SDPIceParameters { + iceLite?: boolean; + usernameFragment: string; + password: string; +} + +export interface SDPCodecParameters { + payloadType: number; + preferredPayloadType?: number; + name: string; + clockRate: number; + channels: number; + numChannels?: number; + maxptime?: number; +} + +export interface SDPCodecAdditionalParameters { + [key: string]: string; +} + +export interface SDPHeaderExtension { + id: number; + direction?: SDPDirection; + uri: string; + atrributes: string | undefined; +} + +export interface SDPFeedbackParameter { + type: string; + parameter: string; +} + +export interface SDPFingerprint { + algorithm: string; + value: string; +} + +export interface SDPDtlsParameters { + role: string; + fingerprints: SDPFingerprint[]; +} + +export interface SDPMediaSource { + ssrc: number; + attribute?: string; + value?: string; +} + +export interface SDPMediaSourceGroup { + semantics: string; + ssrcs: number[]; +} + +export interface SDPMediaStreamId { + stream: string; + track: string; +} + +export interface SDPCodec extends SDPCodecParameters { + payloadType: number; + preferredPayloadType?: number; + parameters?: SDPCodecAdditionalParameters; + rtcpFeedback?: SDPFeedbackParameter[]; +} + +export interface SDPGroup { + semantics: string; + mids: string[]; +} + +export interface SDPMLine { + kind: string; + port?: number; + protocol: string; + fmt?: string; +} + +export interface SDPOLine { + username: string; + sessionId: string; + sessionVersion: number; + netType: string; + addressType: string; + address: string; +} + +export interface SDPRtcpParameters { + cname?: string; + ssrc?: number; + reducedSize?: boolean; + compound?: boolean; + mux?: boolean; +} + +export interface SDPEncodingParameters { + ssrc: number; + codecPayloadType?: number; + rtx?: { + ssrc: number; + }; + fec?: { + ssrc: number; + mechanism: string; + }; +} + +export interface SDPRtpCapabilities { + codecs: SDPCodec[]; + headerExtensions: SDPHeaderExtension[]; + fecMechanisms: string[]; + rtcp?: SDPRtcpParameters[]; +} + +export interface SDPSctpDescription { + port: number; + protocol: string; + maxMessageSize?: number; +} + +export const localCname: string; + +export function generateIdentifier(): string; + +export function splitLines(blob: SDPBlob): SDPLine[]; +export function splitSections(blob: SDPBlob): SDPSection[]; + +export function getDescription(blob: SDPBlob): SDPSection; +export function getMediaSections(blob: SDPBlob): SDPSection[]; + +export function matchPrefix(blob: SDPBlob, prefix: string): SDPLine[]; + +export function parseCandidate(line: SDPLine): SDPIceCandidate; +export function writeCandidate(candidate: SDPIceCandidate): SDPLine; + +export function parseIceOptions(line: SDPLine): string[]; + +export function parseRtpMap(line: SDPLine): SDPCodecParameters; +export function writeRtpMap(codec: SDPCodecParameters): SDPLine; + +export function parseExtmap(line: SDPLine): SDPHeaderExtension; +export function writeExtmap(headerExtension: SDPHeaderExtension): SDPLine; + +export function parseFmtp(line: SDPLine): SDPCodecAdditionalParameters; +export function writeFmtp(codec: SDPCodec): SDPLine; + +export function parseRtcpFb(line: SDPLine): SDPFeedbackParameter; +export function writeRtcpFb(codec: SDPCodec): SDPLine[]; + +export function parseSsrcMedia(line: SDPLine): SDPMediaSource; +export function parseSsrcGroup(line: SDPLine): SDPMediaSourceGroup; + +export function getMid(mediaSection: SDPSection): string; + +export function parseFingerprint(line: SDPLine): SDPFingerprint; + +export function getDtlsParameters( + mediaSection: SDPSection, + session: SDPSection +): SDPDtlsParameters; +export function writeDtlsParameters(params: SDPDtlsParameters, setupType: string): SDPLine; + +export function getIceParameters( + mediaSection: SDPSection, + session: SDPSection +): SDPIceParameters; +export function writeIceParameters(params: SDPIceParameters): SDPLine; + +export function parseRtpParameters(mediaSection: SDPSection): SDPRtpCapabilities; +export function writeRtpDescription(kind: string, caps: SDPRtpCapabilities): SDPSection; + +export function parseRtpEncodingParameters(mediaSection: SDPSection): SDPEncodingParameters[]; + +export function parseRtcpParameters(mediaSection: SDPSection): SDPRtcpParameters; +export function writeRtcpParameters(params: SDPRtcpParameters): SDPLine; + +export function parseMsid(mediaSection: SDPSection): SDPMediaStreamId; + +export function parseSctpDescription(mediaSection: SDPSection): SDPSctpDescription; +export function writeSctpDescription( + mediaSection: SDPMLine, + desc: SDPSctpDescription +): SDPSection; + +export function generateSessionId(): string; +export function writeSessionBoilerplate( + sessId?: string, + sessVer?: number, + sessUser?: string +): SDPBlob; + +export function getDirection(mediaSection: SDPSection, sessionpart: SDPSection): SDPDirection; +export function getKind(mediaSection: SDPSection): string; +export function isRejected(mediaSection: SDPSection): boolean; + +export function parseMLine(mediaSection: SDPSection): SDPMLine; +export function parseOLine(mediaSection: SDPSection): SDPOLine; + +export function isValidSDP(blob: SDPBlob): boolean; diff --git a/node_modules/sdp/sdp.js b/node_modules/sdp/sdp.js new file mode 100644 index 0000000..d0e6488 --- /dev/null +++ b/node_modules/sdp/sdp.js @@ -0,0 +1,802 @@ +/* eslint-env node */ +'use strict'; + +// SDP helpers. +const SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function() { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function(blob) { + return blob.trim().split('\n').map(line => line.trim()); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function(blob) { + const parts = blob.split('\nm='); + return parts.map((part, index) => (index > 0 ? + 'm=' + part : part).trim() + '\r\n'); +}; + +// Returns the session description. +SDPUtils.getDescription = function(blob) { + const sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function(blob) { + const sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function(blob, prefix) { + return SDPUtils.splitLines(blob).filter(line => line.indexOf(prefix) === 0); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function(line) { + let parts; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + const candidate = { + foundation: parts[0], + component: {1: 'rtp', 2: 'rtcp'}[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7], + }; + + for (let i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function(candidate) { + const sdp = []; + sdp.push(candidate.foundation); + + const component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + const type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && + candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function(line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function(line) { + let parts = line.substring(9).split(' '); + const parsed = { + payloadType: parseInt(parts.shift(), 10), // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function(codec) { + let pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + const channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function(line) { + const parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' '), + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function(headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + + (headerExtension.direction && headerExtension.direction !== 'sendrecv' + ? '/' + headerExtension.direction + : '') + + ' ' + headerExtension.uri + + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function(line) { + const parsed = {}; + let kv; + const parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (let j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function(codec) { + let line = ''; + let pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + const params = []; + Object.keys(codec.parameters).forEach(param => { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function(line) { + const parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' '), + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function(codec) { + let lines = ''; + let pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(fb => { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function(line) { + const sp = line.indexOf(' '); + const parts = { + ssrc: parseInt(line.substring(7, sp), 10), + }; + const colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function(line) { + const parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(ssrc => parseInt(ssrc, 10)), + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function(mediaSection) { + const mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function(line) { + const parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase(), // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function(mediaSection, sessionpart) { + const lines = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint), + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function(params, setupType) { + let sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(fp => { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function(line) { + const parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3), + }; +}; + +SDPUtils.writeCryptoLine = function(parameters) { + return 'a=crypto:' + parameters.tag + ' ' + + parameters.cryptoSuite + ' ' + + (typeof parameters.keyParams === 'object' + ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) + : parameters.keyParams) + + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function(keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + const parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined, + }; +}; + +SDPUtils.writeCryptoKeyParams = function(keyParams) { + return keyParams.keyMethod + ':' + + keyParams.keySalt + + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + + (keyParams.mkiValue && keyParams.mkiLength + ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength + : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function(mediaSection, sessionpart) { + const lines = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function(mediaSection, sessionpart) { + const ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=ice-ufrag:')[0]; + const pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10), + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function(params) { + let sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function(mediaSection) { + const description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [], + }; + const lines = SDPUtils.splitLines(mediaSection); + const mline = lines[0].split(' '); + description.profile = mline[2]; + for (let i = 3; i < mline.length; i++) { // find all codecs from mline[3..] + const pt = mline[i]; + const rtpmapline = SDPUtils.matchPrefix( + mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + const codec = SDPUtils.parseRtpMap(rtpmapline); + const fmtps = SDPUtils.matchPrefix( + mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix( + mediaSection, 'a=rtcp-fb:' + pt + ' ') + .map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(line => { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + const wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ') + .map(SDPUtils.parseRtcpFb); + description.codecs.forEach(codec => { + wildcardRtcpFb.forEach(fb=> { + const duplicate = codec.rtcpFeedback.find(existingFeedback => { + return existingFeedback.type === fb.type && + existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function(kind, caps) { + let sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(codec => { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(codec => { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + let maxptime = 0; + caps.codecs.forEach(codec => { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(extension => { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function(mediaSection) { + const encodingParameters = []; + const description = SDPUtils.parseRtpParameters(mediaSection); + const hasRed = description.fecMechanisms.indexOf('RED') !== -1; + const hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + const ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(line => SDPUtils.parseSsrcMedia(line)) + .filter(parts => parts.attribute === 'cname'); + const primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + let secondarySsrc; + + const flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID') + .map(line => { + const parts = line.substring(17).split(' '); + return parts.map(part => parseInt(part, 10)); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(codec => { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + let encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10), + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = {ssrc: secondarySsrc}; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red', + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc, + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + let bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 + - (50 * 40 * 8); + } else { + bandwidth = undefined; + } + encodingParameters.forEach(params => { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function(mediaSection) { + const rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + const remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(line => SDPUtils.parseSsrcMedia(line)) + .filter(obj => obj.attribute === 'cname')[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + const rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + const mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function(rtcpParameters) { + let sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function(mediaSection) { + let parts; + const spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return {stream: parts[0], track: parts[1]}; + } + const planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(line => SDPUtils.parseSsrcMedia(line)) + .filter(msidParts => msidParts.attribute === 'msid'); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return {stream: parts[0], track: parts[1]}; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function(mediaSection) { + const mline = SDPUtils.parseMLine(mediaSection); + const maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + let maxMessageSize; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + const sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize, + }; + } + const sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + const parts = sctpMapLines[0] + .substring(10) + .split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize, + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function(media, sctp) { + let output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = [ + 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', + 'c=IN IP4 0.0.0.0\r\n', + 'a=sctp-port:' + sctp.port + '\r\n', + ]; + } else { + output = [ + 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', + 'c=IN IP4 0.0.0.0\r\n', + 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n', + ]; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function() { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) { + let sessionId; + const version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + const user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + + 'o=' + user + ' ' + sessionId + ' ' + version + + ' IN IP4 127.0.0.1\r\n' + + 's=-\r\n' + + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function(mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + const lines = SDPUtils.splitLines(mediaSection); + for (let i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function(mediaSection) { + const lines = SDPUtils.splitLines(mediaSection); + const mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function(mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function(mediaSection) { + const lines = SDPUtils.splitLines(mediaSection); + const parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' '), + }; +}; + +SDPUtils.parseOLine = function(mediaSection) { + const line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + const parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5], + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function(blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + const lines = SDPUtils.splitLines(blob); + for (let i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if (typeof module === 'object') { + module.exports = SDPUtils; +} diff --git a/node_modules/vue-qrcode-reader/LICENSE b/node_modules/vue-qrcode-reader/LICENSE new file mode 100644 index 0000000..df30acf --- /dev/null +++ b/node_modules/vue-qrcode-reader/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Niklas Gruhn + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/vue-qrcode-reader/README.md b/node_modules/vue-qrcode-reader/README.md new file mode 100644 index 0000000..33f3fef --- /dev/null +++ b/node_modules/vue-qrcode-reader/README.md @@ -0,0 +1,205 @@ +

+ Logo + +
+
+ + + for Vue 3 + + + + npm monthly downloads + + +
+ + is maintained? yes + + + licence: MIT + + + + badges = awesome + + +
+ + + uses semantic release + + + + code style: prettier + + +
+ + + size minified + gzipped + + + + npm current version + + +
+ + + Mentioned in Awesome Vue + + +
+
+ live demos | + api reference +

+ +A set of Vue.js components for detecting QR codes and [various other barcode formats](https://github.com/Sec-ant/barcode-detector?tab=readme-ov-file#barcode-detector) right in the browser: + +- :movie_camera: `QrcodeStream` continuously scans frames from a camera stream. +- :put_litter_in_its_place: `QrcodeDropZone` is an empty region where you can drag-and-drop images to be decoded. +- :open_file_folder: `QrcodeCapture` is a classic file upload field, instantly scanning all files you select. + +All components are responsive. +Beyond that, close to zero styling. +Make them fit your layout. +Usage is simple and straight forward: + +```html + +``` + +```js +methods: { + onDetect (detectedCodes) { + // ... + } +} +``` + +### Preview + +

+ preview screencast 1 + preview screencast 2 +

+ +### Related Projects + +* [Barcode Detector Polyfill](https://github.com/Sec-ant/barcode-detector) +* [Svelte Port](https://github.com/ollema/svelte-qrcode-reader) + +# Installation :package: + +## With NPM + +Run + +```bash +npm install vue-qrcode-reader +``` + +You can import the components independantly + +```javascript +import { QrcodeStream, QrcodeDropZone, QrcodeCapture } from 'vue-qrcode-reader' + +const MyComponent = { + // + components: { + QrcodeStream, + QrcodeDropZone, + QrcodeCapture + } + + // ... +} +``` + +or register all of them globally right away + +```javascript +import Vue from 'vue' +import VueQrcodeReader from 'vue-qrcode-reader' + +Vue.use(VueQrcodeReader) +``` + +## Without NPM + +Include the following JS file: + +https://unpkg.com/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js + +Make sure to include it after Vue: + +```html + + +``` + +All components are automatically registered globally. +Use kebab-case to reference them in your templates: + +```html + + + +``` + +# Troubleshooting :zap: + +#### I don't see the camera when using `QrcodeStream`. + +- Check if it works on the demo page. Especially the [Handle Errors](https://gruhn.github.io/vue-qrcode-reader/demos/HandleErrors.html) demo, + since it renders error messages. + - The demo works but it doesn't work in my project: Listen for the `error` event to investigate errors. + - The demo doesn't work: Carefully review the Browser Support section above. + Maybe your device is just not supported. + +#### I'm running a dev server on localhost. How to test on my mobile device without HTTPS? + +- If your setup is Desktop Chrome + Android Chrome, use [Remote Debugging](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/) which allows your Android device to [access your local server as localhost](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server). +- Otherwise use a reverse proxy like [ngrok](https://ngrok.com/) or [serveo](https://serveo.net/) to temporarily make your local server publicly available with HTTPS. +- There are also loads of serverless/static hosting services that have HTTPS enabled by default and where you can deploy your web app for free (e.g. _GitHub Pages_, _GitLab Pages_, _Google Firebase_, _Netlify_, _Heroku_, _ZEIT Now_, ...) + +#### Some of my QR codes are not being detected. + +- Make sure, there is some white border around the QR code. +- Test your QR codes in the upstream packages: [`barcode-detector`](https://github.com/Sec-ant/barcode-detector) -> [`zxing-wasm`](https://github.com/Sec-ant/zxing-wasm) -> [`zxing-cpp`](https://github.com/zxing-cpp/zxing-cpp), and file detection issues in the highest-level repository where the problem first occurs. + +#### 1D barcodes are not being detected. + +The default value for the `formats` prop is `"['qr_code']"`, which reflects the setting before the `formats` prop was available. +You'll need to add [other barcode formats](https://github.com/Sec-ant/barcode-detector?tab=readme-ov-file#barcode-detector) to this prop to detect those types of barcodes. +Check out [this demo](https://gruhn.github.io/vue-qrcode-reader/demos/FullDemo.html). + +#### How to make it work with Vue 2? + +Support is dropped but you can downgrade to vue-qrcode-reader v3.\* or lower. + +#### I get a "Failed to fetch" error at runtime for some Wasm file. + +That Wasm file implements the QR code detector. +Unfortunately, it's not very convenient to bundle this file with the package. +So by default we fetch it at runtime from a CDN. +That's an issue for offline applications or applications that run in a network with strict CSP policy. +For a workaround see: https://github.com/gruhn/vue-qrcode-reader/issues/354 + +#### `torch` is not supported on my device, although it has a flashlight. + +Support for `torch` is inconsistent across devices, cameras and browsers and operating systems. +On some devices the rear camera supports `torch` but the front camera doesn't, +even if the front camera actually has a flashlight. + +Furthermore, `torch` is not supported on iOS at all (last checked iOS 17.1). + +Visit [this page](https://gruhn.github.io/vue-qrcode-reader/select-camera-demo.html) with your device. +The list of links represents all cameras installed on the device. +If you click, the camera should be loaded. +Below the camera view the JSON object of "capabilities" is printed. +If it doesn't contain the key/value pair `"torch": true` then flashlight is not supported for that camera. + +This JSON object provided as payload of the [`camera-on` event](https://gruhn.github.io/vue-qrcode-reader/api/QrcodeStream.html#camera-on). diff --git a/node_modules/vue-qrcode-reader/dist/components/QrcodeCapture.vue.d.ts b/node_modules/vue-qrcode-reader/dist/components/QrcodeCapture.vue.d.ts new file mode 100644 index 0000000..ff4c4c4 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/components/QrcodeCapture.vue.d.ts @@ -0,0 +1,20 @@ +import { type PropType } from 'vue'; +import { type BarcodeFormat, type DetectedBarcode } from 'barcode-detector/pure'; +declare const _default: import("vue").DefineComponent<{ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; +}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { + detect: (detectedCodes: DetectedBarcode[]) => void; +}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default: () => BarcodeFormat[]; + }; +}>> & { + onDetect?: (detectedCodes: DetectedBarcode[]) => any; +}, { + formats: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +}, {}>; +export default _default; diff --git a/node_modules/vue-qrcode-reader/dist/components/QrcodeDropZone.vue.d.ts b/node_modules/vue-qrcode-reader/dist/components/QrcodeDropZone.vue.d.ts new file mode 100644 index 0000000..a336ee9 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/components/QrcodeDropZone.vue.d.ts @@ -0,0 +1,33 @@ +import { type PropType } from 'vue'; +import { type BarcodeFormat, type DetectedBarcode } from 'barcode-detector/pure'; +declare function __VLS_template(): { + default?(_: {}): any; +}; +declare const __VLS_component: import("vue").DefineComponent<{ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; +}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { + detect: (detectedCodes: DetectedBarcode[]) => void; + dragover: (isDraggingOver: boolean) => void; + error: (error: EmmitedError) => void; +}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default: () => BarcodeFormat[]; + }; +}>> & { + onError?: (error: EmmitedError) => any; + onDetect?: (detectedCodes: DetectedBarcode[]) => any; + onDragover?: (isDraggingOver: boolean) => any; +}, { + formats: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +}, {}>; +declare const _default: __VLS_WithTemplateSlots>; +export default _default; +type __VLS_WithTemplateSlots = T & { + new (): { + $slots: S; + }; +}; diff --git a/node_modules/vue-qrcode-reader/dist/components/QrcodeStream.vue.d.ts b/node_modules/vue-qrcode-reader/dist/components/QrcodeStream.vue.d.ts new file mode 100644 index 0000000..bdeb75d --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/components/QrcodeStream.vue.d.ts @@ -0,0 +1,98 @@ +import type { DetectedBarcode, BarcodeFormat } from 'barcode-detector/pure'; +import { type PropType } from 'vue'; +declare function __VLS_template(): { + default?(_: {}): any; +}; +declare const __VLS_component: import("vue").DefineComponent<{ + /** + * Passes an object with various camera configuration options. + */ + constraints: { + type: PropType; + default(): MediaTrackConstraints; + }; + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: PropType<(detectedCodes: DetectedBarcode[], ctx: CanvasRenderingContext2D | null) => void>; + }; +}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { + detect: (detectedCodes: DetectedBarcode[]) => void; + "camera-on": (capabilities: Partial) => void; + "camera-off": () => void; + error: (error: EmmitedError) => void; +}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default(): MediaTrackConstraints; + }; + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: PropType<(detectedCodes: DetectedBarcode[], ctx: CanvasRenderingContext2D | null) => void>; + }; +}>> & { + onError?: (error: EmmitedError) => any; + onDetect?: (detectedCodes: DetectedBarcode[]) => any; + "onCamera-on"?: (capabilities: Partial) => any; + "onCamera-off"?: () => any; +}, { + formats: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; + torch: boolean; + constraints: MediaTrackConstraints; + paused: boolean; +}, {}>; +declare const _default: __VLS_WithTemplateSlots>; +export default _default; +type __VLS_WithTemplateSlots = T & { + new (): { + $slots: S; + }; +}; diff --git a/node_modules/vue-qrcode-reader/dist/index.d.ts b/node_modules/vue-qrcode-reader/dist/index.d.ts new file mode 100644 index 0000000..c76151e --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/index.d.ts @@ -0,0 +1,9 @@ +import type { App, Plugin } from 'vue'; +import QrcodeStream from './components/QrcodeStream.vue'; +import QrcodeCapture from './components/QrcodeCapture.vue'; +import QrcodeDropZone from './components/QrcodeDropZone.vue'; +export declare function install(app: App): void; +export { QrcodeStream, QrcodeCapture, QrcodeDropZone }; +export { setZXingModuleOverrides, type BarcodeFormat } from 'barcode-detector/pure'; +declare const plugin: Plugin; +export { plugin as VueQrcodeReader }; diff --git a/node_modules/vue-qrcode-reader/dist/misc/callforth.d.ts b/node_modules/vue-qrcode-reader/dist/misc/callforth.d.ts new file mode 100644 index 0000000..13ef465 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/callforth.d.ts @@ -0,0 +1,6 @@ +export declare const eventOn: (eventTarget: EventTarget, successEvent: string, errorEvent?: string) => Promise; +export declare const timeout: (milliseconds: number) => Promise; +export declare const polling: (predicate: any, options: { + maxTries: number; + interval: number; +}) => Promise; diff --git a/node_modules/vue-qrcode-reader/dist/misc/camera.d.ts b/node_modules/vue-qrcode-reader/dist/misc/camera.d.ts new file mode 100644 index 0000000..da631ab --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/camera.d.ts @@ -0,0 +1,6 @@ +export declare function start(videoEl: HTMLVideoElement, { constraints, torch, restart }: { + constraints: MediaTrackConstraints; + torch: boolean; + restart?: boolean; +}): Promise>; +export declare function stop(): Promise; diff --git a/node_modules/vue-qrcode-reader/dist/misc/errors.d.ts b/node_modules/vue-qrcode-reader/dist/misc/errors.d.ts new file mode 100644 index 0000000..2897308 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/errors.d.ts @@ -0,0 +1,13 @@ +export declare class DropImageFetchError extends Error { + constructor(); +} +export declare class StreamApiNotSupportedError extends Error { + constructor(); +} +export declare class InsecureContextError extends Error { + constructor(); +} +export declare class StreamLoadTimeoutError extends Error { + constructor(); +} +export type EmmitedError = DropImageFetchError | StreamApiNotSupportedError | InsecureContextError | StreamLoadTimeoutError | Error; diff --git a/node_modules/vue-qrcode-reader/dist/misc/scanner.d.ts b/node_modules/vue-qrcode-reader/dist/misc/scanner.d.ts new file mode 100644 index 0000000..9e97a42 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/scanner.d.ts @@ -0,0 +1,26 @@ +import { type DetectedBarcode, type BarcodeFormat, BarcodeDetector } from 'barcode-detector/pure'; +declare global { + interface Window { + BarcodeDetector?: typeof BarcodeDetector; + } +} +/** + * Update the set of targeted barcode formats. In particular, this function + * can be called during scanning and the camera stream doesn't have to be + * interrupted. + */ +export declare function setScanningFormats(formats: BarcodeFormat[]): Promise; +type ScanHandler = (_: DetectedBarcode[]) => void; +/** + * Continuously extracts frames from camera stream and tries to read + * potentially pictured QR codes. + */ +export declare const keepScanning: (videoElement: HTMLVideoElement, { detectHandler, locateHandler, minDelay, formats }: { + detectHandler: ScanHandler; + locateHandler: ScanHandler; + minDelay: number; + formats: BarcodeFormat[]; +}) => Promise; +export declare const processFile: (file: File, formats?: BarcodeFormat[]) => Promise; +export declare const processUrl: (url: string, formats?: BarcodeFormat[]) => Promise; +export {}; diff --git a/node_modules/vue-qrcode-reader/dist/misc/shimGetUserMedia.d.ts b/node_modules/vue-qrcode-reader/dist/misc/shimGetUserMedia.d.ts new file mode 100644 index 0000000..40ff875 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/shimGetUserMedia.d.ts @@ -0,0 +1,2 @@ +declare const _default: (...args: any[]) => void; +export default _default; diff --git a/node_modules/vue-qrcode-reader/dist/misc/util.d.ts b/node_modules/vue-qrcode-reader/dist/misc/util.d.ts new file mode 100644 index 0000000..6b5bc5c --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/util.d.ts @@ -0,0 +1,29 @@ +/** + * Takes a function `action` and returns a new function, that behaves + * like action but when called a second time does nothing. + */ +export declare const idempotent: (action: (x: any) => T) => (...args: any[]) => T; +/** + * Throws an error if the `condition` in the first argument is `false`. + * This function is useful to make assumptions explicit. For example, + * let's say we have a variable + * + * const value : string | undefined = ... + * + * but from the context we know that it can actually never be `undefined`. + * We can access attributes of `value` with + * + * value?.length + * + * but if the assumption is actually broken, we can a silent error. + * In contrast, with + * + * assert(value !== undefined, 'reason why we assume value always defined') + * value.length // no type error + * + * We make the assumption explicit and force a laud error. Also the type + * check can narrow the type of `value` to `string` after the `assert` and we + * can access properties without type error. + */ +export declare function assert(condition: boolean, failureMessage?: string): asserts condition; +export declare function assertNever(_witness: never): never; diff --git a/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js new file mode 100644 index 0000000..8dade65 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js @@ -0,0 +1,3306 @@ +import { defineComponent as jt, ref as we, watch as We, onMounted as vo, onUnmounted as yo, computed as Ut, openBlock as Lt, createElementBlock as Ht, createElementVNode as nt, normalizeStyle as go, withDirectives as wo, vShow as bo, renderSlot as Dr, withModifiers as at } from "vue"; +var Mr = (r, o, i) => { + if (!o.has(r)) + throw TypeError("Cannot " + i); +}, br = (r, o, i) => (Mr(r, o, "read from private field"), i ? i.call(r) : o.get(r)), Co = (r, o, i) => { + if (o.has(r)) + throw TypeError("Cannot add the same private member more than once"); + o instanceof WeakSet ? o.add(r) : o.set(r, i); +}, $o = (r, o, i, c) => (Mr(r, o, "write to private field"), o.set(r, i), i); +const Ar = [ + ["aztec", "Aztec"], + ["code_128", "Code128"], + ["code_39", "Code39"], + ["code_93", "Code93"], + ["codabar", "Codabar"], + ["databar", "DataBar"], + ["databar_expanded", "DataBarExpanded"], + ["data_matrix", "DataMatrix"], + ["dx_film_edge", "DXFilmEdge"], + ["ean_13", "EAN-13"], + ["ean_8", "EAN-8"], + ["itf", "ITF"], + ["maxi_code", "MaxiCode"], + ["micro_qr_code", "MicroQRCode"], + ["pdf417", "PDF417"], + ["qr_code", "QRCode"], + ["rm_qr_code", "rMQRCode"], + ["upc_a", "UPC-A"], + ["upc_e", "UPC-E"], + ["linear_codes", "Linear-Codes"], + ["matrix_codes", "Matrix-Codes"] +], _o = [...Ar, ["unknown"]].map((r) => r[0]), it = new Map( + Ar +); +function So(r) { + for (const [o, i] of it) + if (r === i) + return o; + return "unknown"; +} +function Po(r) { + if (xr(r)) + return { + width: r.naturalWidth, + height: r.naturalHeight + }; + if (Rr(r)) + return { + width: r.width.baseVal.value, + height: r.height.baseVal.value + }; + if (kr(r)) + return { + width: r.videoWidth, + height: r.videoHeight + }; + if (Fr(r)) + return { + width: r.width, + height: r.height + }; + if (Wr(r)) + return { + width: r.displayWidth, + height: r.displayHeight + }; + if (Ir(r)) + return { + width: r.width, + height: r.height + }; + if (Ur(r)) + return { + width: r.width, + height: r.height + }; + throw new TypeError( + "The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'." + ); +} +function xr(r) { + try { + return r instanceof HTMLImageElement; + } catch (o) { + return !1; + } +} +function Rr(r) { + try { + return r instanceof SVGImageElement; + } catch (o) { + return !1; + } +} +function kr(r) { + try { + return r instanceof HTMLVideoElement; + } catch (o) { + return !1; + } +} +function Ir(r) { + try { + return r instanceof HTMLCanvasElement; + } catch (o) { + return !1; + } +} +function Fr(r) { + try { + return r instanceof ImageBitmap; + } catch (o) { + return !1; + } +} +function Ur(r) { + try { + return r instanceof OffscreenCanvas; + } catch (o) { + return !1; + } +} +function Wr(r) { + try { + return r instanceof VideoFrame; + } catch (o) { + return !1; + } +} +function jr(r) { + try { + return r instanceof Blob; + } catch (o) { + return !1; + } +} +function To(r) { + try { + return r instanceof ImageData; + } catch (o) { + return !1; + } +} +function Eo(r, o) { + try { + const i = new OffscreenCanvas(r, o); + if (i.getContext("2d") instanceof OffscreenCanvasRenderingContext2D) + return i; + throw void 0; + } catch (i) { + const c = document.createElement("canvas"); + return c.width = r, c.height = o, c; + } +} +async function Lr(r) { + if (xr(r) && !await Ao(r)) + throw new DOMException( + "Failed to load or decode HTMLImageElement.", + "InvalidStateError" + ); + if (Rr(r) && !await xo(r)) + throw new DOMException( + "Failed to load or decode SVGImageElement.", + "InvalidStateError" + ); + if (Wr(r) && Ro(r)) + throw new DOMException("VideoFrame is closed.", "InvalidStateError"); + if (kr(r) && (r.readyState === 0 || r.readyState === 1)) + throw new DOMException("Invalid element or state.", "InvalidStateError"); + if (Fr(r) && Io(r)) + throw new DOMException( + "The image source is detached.", + "InvalidStateError" + ); + const { width: o, height: i } = Po(r); + if (o === 0 || i === 0) + return null; + const c = Eo(o, i).getContext("2d"); + c.drawImage(r, 0, 0); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Oo(r) { + let o; + try { + if (globalThis.createImageBitmap) + o = await createImageBitmap(r); + else if (globalThis.Image) { + o = new Image(); + let i = ""; + try { + i = URL.createObjectURL(r), o.src = i, await o.decode(); + } finally { + URL.revokeObjectURL(i); + } + } else + return r; + } catch (i) { + throw new DOMException( + "Failed to load or decode Blob.", + "InvalidStateError" + ); + } + return await Lr(o); +} +function Do(r) { + const { width: o, height: i } = r; + if (o === 0 || i === 0) + return null; + const c = r.getContext("2d"); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Mo(r) { + if (jr(r)) + return await Oo(r); + if (To(r)) { + if (ko(r)) + throw new DOMException( + "The image data has been detached.", + "InvalidStateError" + ); + return r; + } + return Ir(r) || Ur(r) ? Do(r) : await Lr(r); +} +async function Ao(r) { + try { + return await r.decode(), !0; + } catch (o) { + return !1; + } +} +async function xo(r) { + var o; + try { + return await ((o = r.decode) == null ? void 0 : o.call(r)), !0; + } catch (i) { + return !1; + } +} +function Ro(r) { + return r.format === null; +} +function ko(r) { + return r.data.buffer.byteLength === 0; +} +function Io(r) { + return r.width === 0 && r.height === 0; +} +function Cr(r, o) { + return r instanceof DOMException ? new DOMException(`${o}: ${r.message}`, r.name) : r instanceof Error ? new r.constructor(`${o}: ${r.message}`) : new Error(`${o}: ${r}`); +} +const $r = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function Fo(r) { + return r.join("|"); +} +function Uo(r) { + const o = _r(r); + let i = 0, c = $r.length - 1; + for (; i <= c; ) { + const l = Math.floor((i + c) / 2), h = $r[l], v = _r(h); + if (v === o) + return h; + v < o ? i = l + 1 : c = l - 1; + } + return "None"; +} +function _r(r) { + return r.toLowerCase().replace(/_-\[\]/g, ""); +} +function Wo(r, o) { + return r.Binarizer[o]; +} +function jo(r, o) { + return r.CharacterSet[o]; +} +const Lo = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function Ho(r) { + return Lo[r.value]; +} +function Bo(r, o) { + return r.EanAddOnSymbol[o]; +} +function Vo(r, o) { + return r.TextMode[o]; +} +const Ee = { + formats: [], + tryHarder: !0, + tryRotate: !0, + tryInvert: !0, + tryDownscale: !0, + binarizer: "LocalAverage", + isPure: !1, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: !1, + validateCode39CheckSum: !1, + validateITFCheckSum: !1, + returnCodabarStartEnd: !1, + returnErrors: !1, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function Hr(r, o) { + return { + ...o, + formats: Fo(o.formats), + binarizer: Wo(r, o.binarizer), + eanAddOnSymbol: Bo( + r, + o.eanAddOnSymbol + ), + textMode: Vo(r, o.textMode), + characterSet: jo( + r, + o.characterSet + ) + }; +} +function Br(r) { + return { + ...r, + format: Uo(r.format), + eccLevel: r.eccLevel, + contentType: Ho(r.contentType) + }; +} +const qo = { + locateFile: (r, o) => { + const i = r.match(/_(.+?)\.wasm$/); + return i ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}` : o + r; + } +}; +let Wt = /* @__PURE__ */ new WeakMap(); +function Bt(r, o) { + var i; + const c = Wt.get(r); + if (c != null && c.modulePromise && o === void 0) + return c.modulePromise; + const l = (i = c == null ? void 0 : c.moduleOverrides) != null ? i : qo, h = r({ + ...l + }); + return Wt.set(r, { + moduleOverrides: l, + modulePromise: h + }), h; +} +function No(r, o) { + Wt.set(r, { + moduleOverrides: o + }); +} +async function zo(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { size: h } = o, v = new Uint8Array(await o.arrayBuffer()), g = l._malloc(h); + l.HEAPU8.set(v, g); + const b = l.readBarcodesFromImage( + g, + h, + Hr(l, c) + ); + l._free(g); + const p = []; + for (let C = 0; C < b.size(); ++C) + p.push( + Br(b.get(C)) + ); + return p; +} +async function Go(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { + data: h, + width: v, + height: g, + data: { byteLength: b } + } = o, p = l._malloc(b); + l.HEAPU8.set(h, p); + const C = l.readBarcodesFromPixmap( + p, + v, + g, + Hr(l, c) + ); + l._free(p); + const S = []; + for (let $ = 0; $ < C.size(); ++$) + S.push( + Br(C.get($)) + ); + return S; +} +({ + ...Ee, + formats: [...Ee.formats] +}); +var lt = (() => { + var r = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(o = {}) { + var i = o, c, l; + i.ready = new Promise((e, t) => { + c = e, l = t; + }); + var h = Object.assign({}, i), v = "./this.program", g = typeof window == "object", b = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var p = ""; + function C(e) { + return i.locateFile ? i.locateFile(e, p) : p + e; + } + var S; + (g || b) && (b ? p = self.location.href : typeof document < "u" && document.currentScript && (p = document.currentScript.src), r && (p = r), p.indexOf("blob:") !== 0 ? p = p.substr(0, p.replace(/[?#].*/, "").lastIndexOf("/") + 1) : p = "", b && (S = (e) => { + var t = new XMLHttpRequest(); + return t.open("GET", e, !1), t.responseType = "arraybuffer", t.send(null), new Uint8Array(t.response); + })), i.print || console.log.bind(console); + var $ = i.printErr || console.error.bind(console); + Object.assign(i, h), h = null, i.arguments && i.arguments, i.thisProgram && (v = i.thisProgram), i.quit && i.quit; + var F; + i.wasmBinary && (F = i.wasmBinary), typeof WebAssembly != "object" && Z("no native wasm support detected"); + var U, W = !1, R, A, X, k, D, M, le, oe; + function be() { + var e = U.buffer; + i.HEAP8 = R = new Int8Array(e), i.HEAP16 = X = new Int16Array(e), i.HEAPU8 = A = new Uint8Array(e), i.HEAPU16 = k = new Uint16Array(e), i.HEAP32 = D = new Int32Array(e), i.HEAPU32 = M = new Uint32Array(e), i.HEAPF32 = le = new Float32Array(e), i.HEAPF64 = oe = new Float64Array(e); + } + var Ce = [], Oe = [], De = []; + function Le() { + if (i.preRun) + for (typeof i.preRun == "function" && (i.preRun = [i.preRun]); i.preRun.length; ) + ht(i.preRun.shift()); + gt(Ce); + } + function dt() { + gt(Oe); + } + function ft() { + if (i.postRun) + for (typeof i.postRun == "function" && (i.postRun = [i.postRun]); i.postRun.length; ) + Me(i.postRun.shift()); + gt(De); + } + function ht(e) { + Ce.unshift(e); + } + function pt(e) { + Oe.unshift(e); + } + function Me(e) { + De.unshift(e); + } + var te = 0, ve = null; + function mt(e) { + var t; + te++, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te); + } + function de(e) { + var t; + if (te--, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te), te == 0 && ve) { + var n = ve; + ve = null, n(); + } + } + function Z(e) { + var t; + (t = i.onAbort) === null || t === void 0 || t.call(i, e), e = "Aborted(" + e + ")", $(e), W = !0, e += ". Build with -sASSERTIONS for more info."; + var n = new WebAssembly.RuntimeError(e); + throw l(n), n; + } + var vt = "data:application/octet-stream;base64,", He = (e) => e.startsWith(vt), fe; + fe = "zxing_reader.wasm", He(fe) || (fe = C(fe)); + function Be(e) { + if (e == fe && F) + return new Uint8Array(F); + if (S) + return S(e); + throw "both async and sync fetching of the wasm failed"; + } + function yt(e) { + return !F && (g || b) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((t) => { + if (!t.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return t.arrayBuffer(); + }).catch(() => Be(e)) : Promise.resolve().then(() => Be(e)); + } + function Ve(e, t, n) { + return yt(e).then((a) => WebAssembly.instantiate(a, t)).then((a) => a).then(n, (a) => { + $(`failed to asynchronously prepare wasm: ${a}`), Z(a); + }); + } + function an(e, t, n, a) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !He(t) && typeof fetch == "function" ? fetch(t, { + credentials: "same-origin" + }).then((s) => { + var u = WebAssembly.instantiateStreaming(s, n); + return u.then(a, function(d) { + return $(`wasm streaming compile failed: ${d}`), $("falling back to ArrayBuffer instantiation"), Ve(t, n, a); + }); + }) : Ve(t, n, a); + } + function on() { + var e = { + a: Ga + }; + function t(a, s) { + return z = a.exports, U = z.ia, be(), Kt = z.ma, pt(z.ja), de(), z; + } + mt(); + function n(a) { + t(a.instance); + } + if (i.instantiateWasm) + try { + return i.instantiateWasm(e, t); + } catch (a) { + $(`Module.instantiateWasm callback failed with error: ${a}`), l(a); + } + return an(F, fe, e, n).catch(l), {}; + } + var gt = (e) => { + for (; e.length > 0; ) + e.shift()(i); + }; + i.noExitRuntime; + var qe = [], Ne = 0, sn = (e) => { + var t = new wt(e); + return t.get_caught() || (t.set_caught(!0), Ne--), t.set_rethrown(!1), qe.push(t), hr(t.excPtr), t.get_exception_ptr(); + }, ie = 0, cn = () => { + j(0, 0); + var e = qe.pop(); + fr(e.excPtr), ie = 0; + }; + function wt(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(t) { + M[this.ptr + 4 >> 2] = t; + }, this.get_type = function() { + return M[this.ptr + 4 >> 2]; + }, this.set_destructor = function(t) { + M[this.ptr + 8 >> 2] = t; + }, this.get_destructor = function() { + return M[this.ptr + 8 >> 2]; + }, this.set_caught = function(t) { + t = t ? 1 : 0, R[this.ptr + 12 >> 0] = t; + }, this.get_caught = function() { + return R[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(t) { + t = t ? 1 : 0, R[this.ptr + 13 >> 0] = t; + }, this.get_rethrown = function() { + return R[this.ptr + 13 >> 0] != 0; + }, this.init = function(t, n) { + this.set_adjusted_ptr(0), this.set_type(t), this.set_destructor(n); + }, this.set_adjusted_ptr = function(t) { + M[this.ptr + 16 >> 2] = t; + }, this.get_adjusted_ptr = function() { + return M[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var t = mr(this.get_type()); + if (t) + return M[this.excPtr >> 2]; + var n = this.get_adjusted_ptr(); + return n !== 0 ? n : this.excPtr; + }; + } + var un = (e) => { + throw ie || (ie = e), ie; + }, bt = (e) => { + var t = ie; + if (!t) + return Ue(0), 0; + var n = new wt(t); + n.set_adjusted_ptr(t); + var a = n.get_type(); + if (!a) + return Ue(0), t; + for (var s in e) { + var u = e[s]; + if (u === 0 || u === a) + break; + var d = n.ptr + 16; + if (pr(u, a, d)) + return Ue(u), t; + } + return Ue(a), t; + }, ln = () => bt([]), dn = (e) => bt([e]), fn = (e, t) => bt([e, t]), hn = () => { + var e = qe.pop(); + e || Z("no exception to throw"); + var t = e.excPtr; + throw e.get_rethrown() || (qe.push(e), e.set_rethrown(!0), e.set_caught(!1), Ne++), ie = t, ie; + }, pn = (e, t, n) => { + var a = new wt(e); + throw a.init(t, n), ie = e, Ne++, ie; + }, mn = () => Ne, ze = {}, Ct = (e) => { + for (; e.length; ) { + var t = e.pop(), n = e.pop(); + n(t); + } + }; + function $t(e) { + return this.fromWireType(D[e >> 2]); + } + var $e = {}, ye = {}, Ge = {}, qt, Ye = (e) => { + throw new qt(e); + }, ge = (e, t, n) => { + e.forEach(function(f) { + Ge[f] = t; + }); + function a(f) { + var m = n(f); + m.length !== e.length && Ye("Mismatched type converter count"); + for (var w = 0; w < e.length; ++w) + re(e[w], m[w]); + } + var s = new Array(t.length), u = [], d = 0; + t.forEach((f, m) => { + ye.hasOwnProperty(f) ? s[m] = ye[f] : (u.push(f), $e.hasOwnProperty(f) || ($e[f] = []), $e[f].push(() => { + s[m] = ye[f], ++d, d === u.length && a(s); + })); + }), u.length === 0 && a(s); + }, vn = (e) => { + var t = ze[e]; + delete ze[e]; + var n = t.rawConstructor, a = t.rawDestructor, s = t.fields, u = s.map((d) => d.getterReturnType).concat(s.map((d) => d.setterArgumentType)); + ge([e], u, (d) => { + var f = {}; + return s.forEach((m, w) => { + var _ = m.fieldName, T = d[w], E = m.getter, O = m.getterContext, L = d[w + s.length], q = m.setter, I = m.setterContext; + f[_] = { + read: (J) => T.fromWireType(E(O, J)), + write: (J, y) => { + var P = []; + q(I, J, L.toWireType(P, y)), Ct(P); + } + }; + }), [{ + name: t.name, + fromWireType: (m) => { + var w = {}; + for (var _ in f) + w[_] = f[_].read(m); + return a(m), w; + }, + toWireType: (m, w) => { + for (var _ in f) + if (!(_ in w)) + throw new TypeError(`Missing field: "${_}"`); + var T = n(); + for (_ in f) + f[_].write(T, w[_]); + return m !== null && m.push(a, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: a + }]; + }); + }, yn = (e, t, n, a, s) => { + }, gn = () => { + for (var e = new Array(256), t = 0; t < 256; ++t) + e[t] = String.fromCharCode(t); + Nt = e; + }, Nt, Y = (e) => { + for (var t = "", n = e; A[n]; ) + t += Nt[A[n++]]; + return t; + }, _e, x = (e) => { + throw new _e(e); + }; + function wn(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var a = t.name; + if (e || x(`type "${a}" must have a positive integer typeid pointer`), ye.hasOwnProperty(e)) { + if (n.ignoreDuplicateRegistrations) + return; + x(`Cannot register type '${a}' twice`); + } + if (ye[e] = t, delete Ge[e], $e.hasOwnProperty(e)) { + var s = $e[e]; + delete $e[e], s.forEach((u) => u()); + } + } + function re(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in t)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return wn(e, t, n); + } + var ne = 8, bn = (e, t, n, a) => { + t = Y(t), re(e, { + name: t, + fromWireType: function(s) { + return !!s; + }, + toWireType: function(s, u) { + return u ? n : a; + }, + argPackAdvance: ne, + readValueFromPointer: function(s) { + return this.fromWireType(A[s]); + }, + destructorFunction: null + }); + }, Cn = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), _t = (e) => { + function t(n) { + return n.$$.ptrType.registeredClass.name; + } + x(t(e) + " instance already deleted"); + }, St = !1, zt = (e) => { + }, $n = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, Gt = (e) => { + e.count.value -= 1; + var t = e.count.value === 0; + t && $n(e); + }, Yt = (e, t, n) => { + if (t === n) + return e; + if (n.baseClass === void 0) + return null; + var a = Yt(e, t, n.baseClass); + return a === null ? null : n.downcast(a); + }, Jt = {}, _n = () => Object.keys(Re).length, Sn = () => { + var e = []; + for (var t in Re) + Re.hasOwnProperty(t) && e.push(Re[t]); + return e; + }, Ae = [], Pt = () => { + for (; Ae.length; ) { + var e = Ae.pop(); + e.$$.deleteScheduled = !1, e.delete(); + } + }, xe, Pn = (e) => { + xe = e, Ae.length && xe && xe(Pt); + }, Tn = () => { + i.getInheritedInstanceCount = _n, i.getLiveInheritedInstances = Sn, i.flushPendingDeletes = Pt, i.setDelayFunction = Pn; + }, Re = {}, En = (e, t) => { + for (t === void 0 && x("ptr should not be undefined"); e.baseClass; ) + t = e.upcast(t), e = e.baseClass; + return t; + }, On = (e, t) => (t = En(e, t), Re[t]), Je = (e, t) => { + (!t.ptrType || !t.ptr) && Ye("makeClassHandle requires ptr and ptrType"); + var n = !!t.smartPtrType, a = !!t.smartPtr; + return n !== a && Ye("Both smartPtrType and smartPtr must be specified"), t.count = { + value: 1 + }, ke(Object.create(e, { + $$: { + value: t, + writable: !0 + } + })); + }; + function Dn(e) { + var t = this.getPointee(e); + if (!t) + return this.destructor(e), null; + var n = On(this.registeredClass, t); + if (n !== void 0) { + if (n.$$.count.value === 0) + return n.$$.ptr = t, n.$$.smartPtr = e, n.clone(); + var a = n.clone(); + return this.destructor(e), a; + } + function s() { + return this.isSmartPointer ? Je(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: t, + smartPtrType: this, + smartPtr: e + }) : Je(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var u = this.registeredClass.getActualType(t), d = Jt[u]; + if (!d) + return s.call(this); + var f; + this.isConst ? f = d.constPointerType : f = d.pointerType; + var m = Yt(t, this.registeredClass, f.registeredClass); + return m === null ? s.call(this) : this.isSmartPointer ? Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m, + smartPtrType: this, + smartPtr: e + }) : Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m + }); + } + var ke = (e) => typeof FinalizationRegistry > "u" ? (ke = (t) => t, e) : (St = new FinalizationRegistry((t) => { + Gt(t.$$); + }), ke = (t) => { + var n = t.$$, a = !!n.smartPtr; + if (a) { + var s = { + $$: n + }; + St.register(t, s, t); + } + return t; + }, zt = (t) => St.unregister(t), ke(e)), Mn = () => { + Object.assign(Qe.prototype, { + isAliasOf(e) { + if (!(this instanceof Qe) || !(e instanceof Qe)) + return !1; + var t = this.$$.ptrType.registeredClass, n = this.$$.ptr; + e.$$ = e.$$; + for (var a = e.$$.ptrType.registeredClass, s = e.$$.ptr; t.baseClass; ) + n = t.upcast(n), t = t.baseClass; + for (; a.baseClass; ) + s = a.upcast(s), a = a.baseClass; + return t === a && n === s; + }, + clone() { + if (this.$$.ptr || _t(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ke(Object.create(Object.getPrototypeOf(this), { + $$: { + value: Cn(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e; + }, + delete() { + this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), zt(this), Gt(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), Ae.push(this), Ae.length === 1 && xe && xe(Pt), this.$$.deleteScheduled = !0, this; + } + }); + }; + function Qe() { + } + var Ie = (e, t) => Object.defineProperty(t, "name", { + value: e + }), Qt = (e, t, n) => { + if (e[t].overloadTable === void 0) { + var a = e[t]; + e[t] = function() { + return e[t].overloadTable.hasOwnProperty(arguments.length) || x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`), e[t].overloadTable[arguments.length].apply(this, arguments); + }, e[t].overloadTable = [], e[t].overloadTable[a.argCount] = a; + } + }, Tt = (e, t, n) => { + i.hasOwnProperty(e) ? ((n === void 0 || i[e].overloadTable !== void 0 && i[e].overloadTable[n] !== void 0) && x(`Cannot register public name '${e}' twice`), Qt(i, e, e), i.hasOwnProperty(n) && x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`), i[e].overloadTable[n] = t) : (i[e] = t, n !== void 0 && (i[e].numArguments = n)); + }, An = 48, xn = 57, Rn = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var t = e.charCodeAt(0); + return t >= An && t <= xn ? `_${e}` : e; + }; + function kn(e, t, n, a, s, u, d, f) { + this.name = e, this.constructor = t, this.instancePrototype = n, this.rawDestructor = a, this.baseClass = s, this.getActualType = u, this.upcast = d, this.downcast = f, this.pureVirtualFunctions = []; + } + var Et = (e, t, n) => { + for (; t !== n; ) + t.upcast || x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`), e = t.upcast(e), t = t.baseClass; + return e; + }; + function In(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Fn(e, t) { + var n; + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), this.isSmartPointer ? (n = this.rawConstructor(), e !== null && e.push(this.rawDestructor, n), n) : 0; + (!t || !t.$$) && x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + var a = t.$$.ptrType.registeredClass; + if (n = Et(t.$$.ptr, a, this.registeredClass), this.isSmartPointer) + switch (t.$$.smartPtr === void 0 && x("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + t.$$.smartPtrType === this ? n = t.$$.smartPtr : x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + n = t.$$.smartPtr; + break; + case 2: + if (t.$$.smartPtrType === this) + n = t.$$.smartPtr; + else { + var s = t.clone(); + n = this.rawShare(n, se.toHandle(() => s.delete())), e !== null && e.push(this.rawDestructor, n); + } + break; + default: + x("Unsupporting sharing policy"); + } + return n; + } + function Un(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Xt(e) { + return this.fromWireType(M[e >> 2]); + } + var Wn = () => { + Object.assign(Xe.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var t; + (t = this.rawDestructor) === null || t === void 0 || t.call(this, e); + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: Dn + }); + }; + function Xe(e, t, n, a, s, u, d, f, m, w, _) { + this.name = e, this.registeredClass = t, this.isReference = n, this.isConst = a, this.isSmartPointer = s, this.pointeeType = u, this.sharingPolicy = d, this.rawGetPointee = f, this.rawConstructor = m, this.rawShare = w, this.rawDestructor = _, !s && t.baseClass === void 0 ? a ? (this.toWireType = In, this.destructorFunction = null) : (this.toWireType = Un, this.destructorFunction = null) : this.toWireType = Fn; + } + var Zt = (e, t, n) => { + i.hasOwnProperty(e) || Ye("Replacing nonexistant public symbol"), i[e].overloadTable !== void 0 && n !== void 0 ? i[e].overloadTable[n] = t : (i[e] = t, i[e].argCount = n); + }, jn = (e, t, n) => { + var a = i["dynCall_" + e]; + return n && n.length ? a.apply(null, [t].concat(n)) : a.call(null, t); + }, Ze = [], Kt, H = (e) => { + var t = Ze[e]; + return t || (e >= Ze.length && (Ze.length = e + 1), Ze[e] = t = Kt.get(e)), t; + }, Ln = (e, t, n) => { + if (e.includes("j")) + return jn(e, t, n); + var a = H(t).apply(null, n); + return a; + }, Hn = (e, t) => { + var n = []; + return function() { + return n.length = 0, Object.assign(n, arguments), Ln(e, t, n); + }; + }, ee = (e, t) => { + e = Y(e); + function n() { + return e.includes("j") ? Hn(e, t) : H(t); + } + var a = n(); + return typeof a != "function" && x(`unknown function pointer with signature ${e}: ${t}`), a; + }, Bn = (e, t) => { + var n = Ie(t, function(a) { + this.name = t, this.message = a; + var s = new Error(a).stack; + s !== void 0 && (this.stack = this.toString() + ` +` + s.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return n.prototype = Object.create(e.prototype), n.prototype.constructor = n, n.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, n; + }, er, tr = (e) => { + var t = dr(e), n = Y(t); + return ce(t), n; + }, Ke = (e, t) => { + var n = [], a = {}; + function s(u) { + if (!a[u] && !ye[u]) { + if (Ge[u]) { + Ge[u].forEach(s); + return; + } + n.push(u), a[u] = !0; + } + } + throw t.forEach(s), new er(`${e}: ` + n.map(tr).join([", "])); + }, Vn = (e, t, n, a, s, u, d, f, m, w, _, T, E) => { + _ = Y(_), u = ee(s, u), f && (f = ee(d, f)), w && (w = ee(m, w)), E = ee(T, E); + var O = Rn(_); + Tt(O, function() { + Ke(`Cannot construct ${_} due to unbound types`, [a]); + }), ge([e, t, n], a ? [a] : [], function(L) { + L = L[0]; + var q, I; + a ? (q = L.registeredClass, I = q.instancePrototype) : I = Qe.prototype; + var J = Ie(_, function() { + if (Object.getPrototypeOf(this) !== y) + throw new _e("Use 'new' to construct " + _); + if (P.constructor_body === void 0) + throw new _e(_ + " has no accessible constructor"); + var wr = P.constructor_body[arguments.length]; + if (wr === void 0) + throw new _e(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`); + return wr.apply(this, arguments); + }), y = Object.create(I, { + constructor: { + value: J + } + }); + J.prototype = y; + var P = new kn(_, J, y, E, q, u, f, w); + if (P.baseClass) { + var N, G; + (G = (N = P.baseClass).__derivedClasses) !== null && G !== void 0 || (N.__derivedClasses = []), P.baseClass.__derivedClasses.push(P); + } + var Se = new Xe(_, P, !0, !1, !1), rt = new Xe(_ + "*", P, !1, !1, !1), gr = new Xe(_ + " const*", P, !1, !0, !1); + return Jt[e] = { + pointerType: rt, + constPointerType: gr + }, Zt(O, J), [Se, rt, gr]; + }); + }, Ot = (e, t) => { + for (var n = [], a = 0; a < e; a++) + n.push(M[t + a * 4 >> 2]); + return n; + }; + function qn(e) { + for (var t = 1; t < e.length; ++t) + if (e[t] !== null && e[t].destructorFunction === void 0) + return !0; + return !1; + } + function Dt(e, t, n, a, s, u) { + var d = t.length; + d < 2 && x("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var f = t[1] !== null && n !== null, m = qn(t), w = t[0].name !== "void", _ = d - 2, T = new Array(_), E = [], O = [], L = function() { + arguments.length !== _ && x(`function ${e} called with ${arguments.length} arguments, expected ${_}`), O.length = 0; + var q; + E.length = f ? 2 : 1, E[0] = s, f && (q = t[1].toWireType(O, this), E[1] = q); + for (var I = 0; I < _; ++I) + T[I] = t[I + 2].toWireType(O, arguments[I]), E.push(T[I]); + var J = a.apply(null, E); + function y(P) { + if (m) + Ct(O); + else + for (var N = f ? 1 : 2; N < t.length; N++) { + var G = N === 1 ? q : T[N - 2]; + t[N].destructorFunction !== null && t[N].destructorFunction(G); + } + if (w) + return t[0].fromWireType(P); + } + return y(J); + }; + return Ie(e, L); + } + var Nn = (e, t, n, a, s, u) => { + var d = Ot(t, n); + s = ee(a, s), ge([], [e], function(f) { + f = f[0]; + var m = `constructor ${f.name}`; + if (f.registeredClass.constructor_body === void 0 && (f.registeredClass.constructor_body = []), f.registeredClass.constructor_body[t - 1] !== void 0) + throw new _e(`Cannot register multiple constructors with identical number of parameters (${t - 1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return f.registeredClass.constructor_body[t - 1] = () => { + Ke(`Cannot construct ${f.name} due to unbound types`, d); + }, ge([], d, (w) => (w.splice(1, 0, null), f.registeredClass.constructor_body[t - 1] = Dt(m, w, null, s, u), [])), []; + }); + }, rr = (e) => { + e = e.trim(); + const t = e.indexOf("("); + return t !== -1 ? e.substr(0, t) : e; + }, zn = (e, t, n, a, s, u, d, f, m) => { + var w = Ot(n, a); + t = Y(t), t = rr(t), u = ee(s, u), ge([], [e], function(_) { + _ = _[0]; + var T = `${_.name}.${t}`; + t.startsWith("@@") && (t = Symbol[t.substring(2)]), f && _.registeredClass.pureVirtualFunctions.push(t); + function E() { + Ke(`Cannot call ${T} due to unbound types`, w); + } + var O = _.registeredClass.instancePrototype, L = O[t]; + return L === void 0 || L.overloadTable === void 0 && L.className !== _.name && L.argCount === n - 2 ? (E.argCount = n - 2, E.className = _.name, O[t] = E) : (Qt(O, t, T), O[t].overloadTable[n - 2] = E), ge([], w, function(q) { + var I = Dt(T, q, _, u, d); + return O[t].overloadTable === void 0 ? (I.argCount = n - 2, O[t] = I) : O[t].overloadTable[n - 2] = I, []; + }), []; + }); + }; + function Gn() { + Object.assign(nr.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var t = this.freelist.pop() || this.allocated.length; + return this.allocated[t] = e, t; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function nr() { + this.allocated = [void 0], this.freelist = []; + } + var K = new nr(), Mt = (e) => { + e >= K.reserved && --K.get(e).refcount === 0 && K.free(e); + }, Yn = () => { + for (var e = 0, t = K.reserved; t < K.allocated.length; ++t) + K.allocated[t] !== void 0 && ++e; + return e; + }, Jn = () => { + K.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), K.reserved = K.allocated.length, i.count_emval_handles = Yn; + }, se = { + toValue: (e) => (e || x("Cannot use deleted val. handle = " + e), K.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return K.allocate({ + refcount: 1, + value: e + }); + } + } + }, Qn = (e, t) => { + t = Y(t), re(e, { + name: t, + fromWireType: (n) => { + var a = se.toValue(n); + return Mt(n), a; + }, + toWireType: (n, a) => se.toHandle(a), + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: null + }); + }, Xn = (e, t, n) => { + switch (t) { + case 1: + return n ? function(a) { + return this.fromWireType(R[a >> 0]); + } : function(a) { + return this.fromWireType(A[a >> 0]); + }; + case 2: + return n ? function(a) { + return this.fromWireType(X[a >> 1]); + } : function(a) { + return this.fromWireType(k[a >> 1]); + }; + case 4: + return n ? function(a) { + return this.fromWireType(D[a >> 2]); + } : function(a) { + return this.fromWireType(M[a >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, Zn = (e, t, n, a) => { + t = Y(t); + function s() { + } + s.values = {}, re(e, { + name: t, + constructor: s, + fromWireType: function(u) { + return this.constructor.values[u]; + }, + toWireType: (u, d) => d.value, + argPackAdvance: ne, + readValueFromPointer: Xn(t, n, a), + destructorFunction: null + }), Tt(t, s); + }, At = (e, t) => { + var n = ye[e]; + return n === void 0 && x(t + " has unknown type " + tr(e)), n; + }, Kn = (e, t, n) => { + var a = At(e, "enum"); + t = Y(t); + var s = a.constructor, u = Object.create(a.constructor.prototype, { + value: { + value: n + }, + constructor: { + value: Ie(`${a.name}_${t}`, function() { + }) + } + }); + s.values[n] = u, s[t] = u; + }, xt = (e) => { + if (e === null) + return "null"; + var t = typeof e; + return t === "object" || t === "array" || t === "function" ? e.toString() : "" + e; + }, ea = (e, t) => { + switch (t) { + case 4: + return function(n) { + return this.fromWireType(le[n >> 2]); + }; + case 8: + return function(n) { + return this.fromWireType(oe[n >> 3]); + }; + default: + throw new TypeError(`invalid float width (${t}): ${e}`); + } + }, ta = (e, t, n) => { + t = Y(t), re(e, { + name: t, + fromWireType: (a) => a, + toWireType: (a, s) => s, + argPackAdvance: ne, + readValueFromPointer: ea(t, n), + destructorFunction: null + }); + }, ra = (e, t, n, a, s, u, d) => { + var f = Ot(t, n); + e = Y(e), e = rr(e), s = ee(a, s), Tt(e, function() { + Ke(`Cannot call ${e} due to unbound types`, f); + }, t - 1), ge([], f, function(m) { + var w = [m[0], null].concat(m.slice(1)); + return Zt(e, Dt(e, w, null, s, u), t - 1), []; + }); + }, na = (e, t, n) => { + switch (t) { + case 1: + return n ? (a) => R[a >> 0] : (a) => A[a >> 0]; + case 2: + return n ? (a) => X[a >> 1] : (a) => k[a >> 1]; + case 4: + return n ? (a) => D[a >> 2] : (a) => M[a >> 2]; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, aa = (e, t, n, a, s) => { + t = Y(t); + var u = (_) => _; + if (a === 0) { + var d = 32 - 8 * n; + u = (_) => _ << d >>> d; + } + var f = t.includes("unsigned"), m = (_, T) => { + }, w; + f ? w = function(_, T) { + return m(T, this.name), T >>> 0; + } : w = function(_, T) { + return m(T, this.name), T; + }, re(e, { + name: t, + fromWireType: u, + toWireType: w, + argPackAdvance: ne, + readValueFromPointer: na(t, n, a !== 0), + destructorFunction: null + }); + }, oa = (e, t, n) => { + var a = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], s = a[t]; + function u(d) { + var f = M[d >> 2], m = M[d + 4 >> 2]; + return new s(R.buffer, m, f); + } + n = Y(n), re(e, { + name: n, + fromWireType: u, + argPackAdvance: ne, + readValueFromPointer: u + }, { + ignoreDuplicateRegistrations: !0 + }); + }, ar = (e, t, n, a) => { + if (!(a > 0)) + return 0; + for (var s = n, u = n + a - 1, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (f <= 127) { + if (n >= u) + break; + t[n++] = f; + } else if (f <= 2047) { + if (n + 1 >= u) + break; + t[n++] = 192 | f >> 6, t[n++] = 128 | f & 63; + } else if (f <= 65535) { + if (n + 2 >= u) + break; + t[n++] = 224 | f >> 12, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } else { + if (n + 3 >= u) + break; + t[n++] = 240 | f >> 18, t[n++] = 128 | f >> 12 & 63, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } + } + return t[n] = 0, n - s; + }, ia = (e, t, n) => ar(e, A, t, n), or = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a <= 127 ? t++ : a <= 2047 ? t += 2 : a >= 55296 && a <= 57343 ? (t += 4, ++n) : t += 3; + } + return t; + }, ir = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, sa = (e, t, n) => { + for (var a = t + n, s = t; e[s] && !(s >= a); ) + ++s; + if (s - t > 16 && e.buffer && ir) + return ir.decode(e.subarray(t, s)); + for (var u = ""; t < s; ) { + var d = e[t++]; + if (!(d & 128)) { + u += String.fromCharCode(d); + continue; + } + var f = e[t++] & 63; + if ((d & 224) == 192) { + u += String.fromCharCode((d & 31) << 6 | f); + continue; + } + var m = e[t++] & 63; + if ((d & 240) == 224 ? d = (d & 15) << 12 | f << 6 | m : d = (d & 7) << 18 | f << 12 | m << 6 | e[t++] & 63, d < 65536) + u += String.fromCharCode(d); + else { + var w = d - 65536; + u += String.fromCharCode(55296 | w >> 10, 56320 | w & 1023); + } + } + return u; + }, Rt = (e, t) => e ? sa(A, e, t) : "", ca = (e, t) => { + t = Y(t); + var n = t === "std::string"; + re(e, { + name: t, + fromWireType(a) { + var s = M[a >> 2], u = a + 4, d; + if (n) + for (var f = u, m = 0; m <= s; ++m) { + var w = u + m; + if (m == s || A[w] == 0) { + var _ = w - f, T = Rt(f, _); + d === void 0 ? d = T : (d += "\0", d += T), f = w + 1; + } + } + else { + for (var E = new Array(s), m = 0; m < s; ++m) + E[m] = String.fromCharCode(A[u + m]); + d = E.join(""); + } + return ce(a), d; + }, + toWireType(a, s) { + s instanceof ArrayBuffer && (s = new Uint8Array(s)); + var u, d = typeof s == "string"; + d || s instanceof Uint8Array || s instanceof Uint8ClampedArray || s instanceof Int8Array || x("Cannot pass non-string to std::string"), n && d ? u = or(s) : u = s.length; + var f = Ft(4 + u + 1), m = f + 4; + if (M[f >> 2] = u, n && d) + ia(s, m, u + 1); + else if (d) + for (var w = 0; w < u; ++w) { + var _ = s.charCodeAt(w); + _ > 255 && (ce(m), x("String has UTF-16 code units that do not fit in 8 bits")), A[m + w] = _; + } + else + for (var w = 0; w < u; ++w) + A[m + w] = s[w]; + return a !== null && a.push(ce, f), f; + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + destructorFunction(a) { + ce(a); + } + }); + }, sr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, ua = (e, t) => { + for (var n = e, a = n >> 1, s = a + t / 2; !(a >= s) && k[a]; ) + ++a; + if (n = a << 1, n - e > 32 && sr) + return sr.decode(A.subarray(e, n)); + for (var u = "", d = 0; !(d >= t / 2); ++d) { + var f = X[e + d * 2 >> 1]; + if (f == 0) + break; + u += String.fromCharCode(f); + } + return u; + }, la = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 2) + return 0; + n -= 2; + for (var s = t, u = n < e.length * 2 ? n / 2 : e.length, d = 0; d < u; ++d) { + var f = e.charCodeAt(d); + X[t >> 1] = f, t += 2; + } + return X[t >> 1] = 0, t - s; + }, da = (e) => e.length * 2, fa = (e, t) => { + for (var n = 0, a = ""; !(n >= t / 4); ) { + var s = D[e + n * 4 >> 2]; + if (s == 0) + break; + if (++n, s >= 65536) { + var u = s - 65536; + a += String.fromCharCode(55296 | u >> 10, 56320 | u & 1023); + } else + a += String.fromCharCode(s); + } + return a; + }, ha = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 4) + return 0; + for (var s = t, u = s + n - 4, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (D[t >> 2] = f, t += 4, t + 4 > u) + break; + } + return D[t >> 2] = 0, t - s; + }, pa = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a >= 55296 && a <= 57343 && ++n, t += 4; + } + return t; + }, ma = (e, t, n) => { + n = Y(n); + var a, s, u, d, f; + t === 2 ? (a = ua, s = la, d = da, u = () => k, f = 1) : t === 4 && (a = fa, s = ha, d = pa, u = () => M, f = 2), re(e, { + name: n, + fromWireType: (m) => { + for (var w = M[m >> 2], _ = u(), T, E = m + 4, O = 0; O <= w; ++O) { + var L = m + 4 + O * t; + if (O == w || _[L >> f] == 0) { + var q = L - E, I = a(E, q); + T === void 0 ? T = I : (T += "\0", T += I), E = L + t; + } + } + return ce(m), T; + }, + toWireType: (m, w) => { + typeof w != "string" && x(`Cannot pass non-string to C++ string type ${n}`); + var _ = d(w), T = Ft(4 + _ + t); + return M[T >> 2] = _ >> f, s(w, T + 4, _ + t), m !== null && m.push(ce, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction(m) { + ce(m); + } + }); + }, va = (e, t, n, a, s, u) => { + ze[e] = { + name: Y(t), + rawConstructor: ee(n, a), + rawDestructor: ee(s, u), + fields: [] + }; + }, ya = (e, t, n, a, s, u, d, f, m, w) => { + ze[e].fields.push({ + fieldName: Y(t), + getterReturnType: n, + getter: ee(a, s), + getterContext: u, + setterArgumentType: d, + setter: ee(f, m), + setterContext: w + }); + }, ga = (e, t) => { + t = Y(t), re(e, { + isVoid: !0, + name: t, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (n, a) => { + } + }); + }, kt = [], wa = (e, t, n, a) => (e = kt[e], t = se.toValue(t), e(null, t, n, a)), ba = {}, Ca = (e) => { + var t = ba[e]; + return t === void 0 ? Y(e) : t; + }, cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(t) { + t.$$$embind_global$$$ = t; + var n = typeof $$$embind_global$$$ == "object" && t.$$$embind_global$$$ == t; + return n || delete t.$$$embind_global$$$, n; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, $a = (e) => e === 0 ? se.toHandle(cr()) : (e = Ca(e), se.toHandle(cr()[e])), _a = (e) => { + var t = kt.length; + return kt.push(e), t; + }, Sa = (e, t) => { + for (var n = new Array(e), a = 0; a < e; ++a) + n[a] = At(M[t + a * 4 >> 2], "parameter " + a); + return n; + }, Pa = Reflect.construct, Ta = (e, t, n) => { + var a = [], s = e.toWireType(a, n); + return a.length && (M[t >> 2] = se.toHandle(a)), s; + }, Ea = (e, t, n) => { + var a = Sa(e, t), s = a.shift(); + e--; + var u = new Array(e), d = (m, w, _, T) => { + for (var E = 0, O = 0; O < e; ++O) + u[O] = a[O].readValueFromPointer(T + E), E += a[O].argPackAdvance; + for (var L = n === 1 ? Pa(w, u) : w.apply(m, u), O = 0; O < e; ++O) { + var q, I; + (q = (I = a[O]).deleteObject) === null || q === void 0 || q.call(I, u[O]); + } + return Ta(s, _, L); + }, f = `methodCaller<(${a.map((m) => m.name).join(", ")}) => ${s.name}>`; + return _a(Ie(f, d)); + }, Oa = (e) => { + e > 4 && (K.get(e).refcount += 1); + }, Da = (e) => { + var t = se.toValue(e); + Ct(t), Mt(e); + }, Ma = (e, t) => { + e = At(e, "_emval_take_value"); + var n = e.readValueFromPointer(t); + return se.toHandle(n); + }, Aa = () => { + Z(""); + }, xa = (e, t, n) => A.copyWithin(e, t, t + n), Ra = () => 2147483648, ka = (e) => { + var t = U.buffer, n = (e - t.byteLength + 65535) / 65536; + try { + return U.grow(n), be(), 1; + } catch (a) { + } + }, Ia = (e) => { + var t = A.length; + e >>>= 0; + var n = Ra(); + if (e > n) + return !1; + for (var a = (m, w) => m + (w - m % w) % w, s = 1; s <= 4; s *= 2) { + var u = t * (1 + 0.2 / s); + u = Math.min(u, e + 100663296); + var d = Math.min(n, a(Math.max(e, u), 65536)), f = ka(d); + if (f) + return !0; + } + return !1; + }, It = {}, Fa = () => v || "./this.program", Fe = () => { + if (!Fe.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", t = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: Fa() + }; + for (var n in It) + It[n] === void 0 ? delete t[n] : t[n] = It[n]; + var a = []; + for (var n in t) + a.push(`${n}=${t[n]}`); + Fe.strings = a; + } + return Fe.strings; + }, Ua = (e, t) => { + for (var n = 0; n < e.length; ++n) + R[t++ >> 0] = e.charCodeAt(n); + R[t >> 0] = 0; + }, Wa = (e, t) => { + var n = 0; + return Fe().forEach((a, s) => { + var u = t + n; + M[e + s * 4 >> 2] = u, Ua(a, u), n += a.length + 1; + }), 0; + }, ja = (e, t) => { + var n = Fe(); + M[e >> 2] = n.length; + var a = 0; + return n.forEach((s) => a += s.length + 1), M[t >> 2] = a, 0; + }, La = (e) => e, et = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Ha = (e, t) => { + for (var n = 0, a = 0; a <= t; n += e[a++]) + ; + return n; + }, ur = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], lr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Ba = (e, t) => { + for (var n = new Date(e.getTime()); t > 0; ) { + var a = et(n.getFullYear()), s = n.getMonth(), u = (a ? ur : lr)[s]; + if (t > u - n.getDate()) + t -= u - n.getDate() + 1, n.setDate(1), s < 11 ? n.setMonth(s + 1) : (n.setMonth(0), n.setFullYear(n.getFullYear() + 1)); + else + return n.setDate(n.getDate() + t), n; + } + return n; + }; + function Va(e, t, n) { + var a = or(e) + 1, s = new Array(a); + return ar(e, s, 0, s.length), s; + } + var qa = (e, t) => { + R.set(e, t); + }, Na = (e, t, n, a) => { + var s = M[a + 40 >> 2], u = { + tm_sec: D[a >> 2], + tm_min: D[a + 4 >> 2], + tm_hour: D[a + 8 >> 2], + tm_mday: D[a + 12 >> 2], + tm_mon: D[a + 16 >> 2], + tm_year: D[a + 20 >> 2], + tm_wday: D[a + 24 >> 2], + tm_yday: D[a + 28 >> 2], + tm_isdst: D[a + 32 >> 2], + tm_gmtoff: D[a + 36 >> 2], + tm_zone: s ? Rt(s) : "" + }, d = Rt(n), f = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var m in f) + d = d.replace(new RegExp(m, "g"), f[m]); + var w = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], _ = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function T(y, P, N) { + for (var G = typeof y == "number" ? y.toString() : y || ""; G.length < P; ) + G = N[0] + G; + return G; + } + function E(y, P) { + return T(y, P, "0"); + } + function O(y, P) { + function N(Se) { + return Se < 0 ? -1 : Se > 0 ? 1 : 0; + } + var G; + return (G = N(y.getFullYear() - P.getFullYear())) === 0 && (G = N(y.getMonth() - P.getMonth())) === 0 && (G = N(y.getDate() - P.getDate())), G; + } + function L(y) { + switch (y.getDay()) { + case 0: + return new Date(y.getFullYear() - 1, 11, 29); + case 1: + return y; + case 2: + return new Date(y.getFullYear(), 0, 3); + case 3: + return new Date(y.getFullYear(), 0, 2); + case 4: + return new Date(y.getFullYear(), 0, 1); + case 5: + return new Date(y.getFullYear() - 1, 11, 31); + case 6: + return new Date(y.getFullYear() - 1, 11, 30); + } + } + function q(y) { + var P = Ba(new Date(y.tm_year + 1900, 0, 1), y.tm_yday), N = new Date(P.getFullYear(), 0, 4), G = new Date(P.getFullYear() + 1, 0, 4), Se = L(N), rt = L(G); + return O(Se, P) <= 0 ? O(rt, P) <= 0 ? P.getFullYear() + 1 : P.getFullYear() : P.getFullYear() - 1; + } + var I = { + "%a": (y) => w[y.tm_wday].substring(0, 3), + "%A": (y) => w[y.tm_wday], + "%b": (y) => _[y.tm_mon].substring(0, 3), + "%B": (y) => _[y.tm_mon], + "%C": (y) => { + var P = y.tm_year + 1900; + return E(P / 100 | 0, 2); + }, + "%d": (y) => E(y.tm_mday, 2), + "%e": (y) => T(y.tm_mday, 2, " "), + "%g": (y) => q(y).toString().substring(2), + "%G": (y) => q(y), + "%H": (y) => E(y.tm_hour, 2), + "%I": (y) => { + var P = y.tm_hour; + return P == 0 ? P = 12 : P > 12 && (P -= 12), E(P, 2); + }, + "%j": (y) => E(y.tm_mday + Ha(et(y.tm_year + 1900) ? ur : lr, y.tm_mon - 1), 3), + "%m": (y) => E(y.tm_mon + 1, 2), + "%M": (y) => E(y.tm_min, 2), + "%n": () => ` +`, + "%p": (y) => y.tm_hour >= 0 && y.tm_hour < 12 ? "AM" : "PM", + "%S": (y) => E(y.tm_sec, 2), + "%t": () => " ", + "%u": (y) => y.tm_wday || 7, + "%U": (y) => { + var P = y.tm_yday + 7 - y.tm_wday; + return E(Math.floor(P / 7), 2); + }, + "%V": (y) => { + var P = Math.floor((y.tm_yday + 7 - (y.tm_wday + 6) % 7) / 7); + if ((y.tm_wday + 371 - y.tm_yday - 2) % 7 <= 2 && P++, P) { + if (P == 53) { + var N = (y.tm_wday + 371 - y.tm_yday) % 7; + N != 4 && (N != 3 || !et(y.tm_year)) && (P = 1); + } + } else { + P = 52; + var G = (y.tm_wday + 7 - y.tm_yday - 1) % 7; + (G == 4 || G == 5 && et(y.tm_year % 400 - 1)) && P++; + } + return E(P, 2); + }, + "%w": (y) => y.tm_wday, + "%W": (y) => { + var P = y.tm_yday + 7 - (y.tm_wday + 6) % 7; + return E(Math.floor(P / 7), 2); + }, + "%y": (y) => (y.tm_year + 1900).toString().substring(2), + "%Y": (y) => y.tm_year + 1900, + "%z": (y) => { + var P = y.tm_gmtoff, N = P >= 0; + return P = Math.abs(P) / 60, P = P / 60 * 100 + P % 60, (N ? "+" : "-") + ("0000" + P).slice(-4); + }, + "%Z": (y) => y.tm_zone, + "%%": () => "%" + }; + d = d.replace(/%%/g, "\0\0"); + for (var m in I) + d.includes(m) && (d = d.replace(new RegExp(m, "g"), I[m](u))); + d = d.replace(/\0\0/g, "%"); + var J = Va(d); + return J.length > t ? 0 : (qa(J, e), J.length - 1); + }, za = (e, t, n, a, s) => Na(e, t, n, a); + qt = i.InternalError = class extends Error { + constructor(e) { + super(e), this.name = "InternalError"; + } + }, gn(), _e = i.BindingError = class extends Error { + constructor(e) { + super(e), this.name = "BindingError"; + } + }, Mn(), Tn(), Wn(), er = i.UnboundTypeError = Bn(Error, "UnboundTypeError"), Gn(), Jn(); + var Ga = { + s: sn, + u: cn, + b: ln, + g: dn, + q: fn, + J: hn, + f: pn, + V: mn, + d: un, + da: vn, + Q: yn, + _: bn, + ca: Vn, + ba: Nn, + w: zn, + Y: Qn, + x: Zn, + h: Kn, + L: ta, + M: ra, + t: aa, + o: oa, + K: ca, + C: ma, + A: va, + ea: ya, + $: ga, + R: wa, + ha: Mt, + fa: $a, + Z: Ea, + N: Oa, + O: Da, + aa: Ma, + B: Aa, + X: xa, + W: Ia, + T: Wa, + U: ja, + E: uo, + D: Za, + F: co, + n: lo, + a: Ya, + e: eo, + m: Xa, + k: ro, + H: io, + v: ao, + G: so, + z: ho, + P: mo, + l: to, + j: Ka, + c: Qa, + p: Ja, + I: oo, + r: fo, + i: no, + y: po, + ga: La, + S: za + }, z = on(), ce = i._free = (e) => (ce = i._free = z.ka)(e), Ft = i._malloc = (e) => (Ft = i._malloc = z.la)(e), dr = (e) => (dr = z.na)(e), j = (e, t) => (j = z.oa)(e, t), Ue = (e) => (Ue = z.pa)(e), B = () => (B = z.qa)(), V = (e) => (V = z.ra)(e), fr = (e) => (fr = z.sa)(e), hr = (e) => (hr = z.ta)(e), pr = (e, t, n) => (pr = z.ua)(e, t, n), mr = (e) => (mr = z.va)(e); + i.dynCall_viijii = (e, t, n, a, s, u, d) => (i.dynCall_viijii = z.wa)(e, t, n, a, s, u, d); + var vr = i.dynCall_jiiii = (e, t, n, a, s) => (vr = i.dynCall_jiiii = z.xa)(e, t, n, a, s); + i.dynCall_iiiiij = (e, t, n, a, s, u, d) => (i.dynCall_iiiiij = z.ya)(e, t, n, a, s, u, d), i.dynCall_iiiiijj = (e, t, n, a, s, u, d, f, m) => (i.dynCall_iiiiijj = z.za)(e, t, n, a, s, u, d, f, m), i.dynCall_iiiiiijj = (e, t, n, a, s, u, d, f, m, w) => (i.dynCall_iiiiiijj = z.Aa)(e, t, n, a, s, u, d, f, m, w); + function Ya(e, t) { + var n = B(); + try { + return H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function Ja(e, t, n, a) { + var s = B(); + try { + H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Qa(e, t, n) { + var a = B(); + try { + H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function Xa(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Za(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function Ka(e, t) { + var n = B(); + try { + H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function eo(e, t, n) { + var a = B(); + try { + return H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function to(e) { + var t = B(); + try { + H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function ro(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function no(e, t, n, a, s, u, d, f, m, w, _) { + var T = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _); + } catch (E) { + if (V(T), E !== E + 0) + throw E; + j(1, 0); + } + } + function ao(e, t, n, a, s, u, d) { + var f = B(); + try { + return H(e)(t, n, a, s, u, d); + } catch (m) { + if (V(f), m !== m + 0) + throw m; + j(1, 0); + } + } + function oo(e, t, n, a, s) { + var u = B(); + try { + H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function io(e, t, n, a, s, u) { + var d = B(); + try { + return H(e)(t, n, a, s, u); + } catch (f) { + if (V(d), f !== f + 0) + throw f; + j(1, 0); + } + } + function so(e, t, n, a, s, u, d, f) { + var m = B(); + try { + return H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function co(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function uo(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function lo(e) { + var t = B(); + try { + return H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function fo(e, t, n, a, s, u, d, f) { + var m = B(); + try { + H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function ho(e, t, n, a, s, u, d, f, m, w, _, T) { + var E = B(); + try { + return H(e)(t, n, a, s, u, d, f, m, w, _, T); + } catch (O) { + if (V(E), O !== O + 0) + throw O; + j(1, 0); + } + } + function po(e, t, n, a, s, u, d, f, m, w, _, T, E, O, L, q) { + var I = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _, T, E, O, L, q); + } catch (J) { + if (V(I), J !== J + 0) + throw J; + j(1, 0); + } + } + function mo(e, t, n, a, s) { + var u = B(); + try { + return vr(e, t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + var tt; + ve = function e() { + tt || yr(), tt || (ve = e); + }; + function yr() { + if (te > 0 || (Le(), te > 0)) + return; + function e() { + tt || (tt = !0, i.calledRun = !0, !W && (dt(), c(i), i.onRuntimeInitialized && i.onRuntimeInitialized(), ft())); + } + i.setStatus ? (i.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + i.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (i.preInit) + for (typeof i.preInit == "function" && (i.preInit = [i.preInit]); i.preInit.length > 0; ) + i.preInit.pop()(); + return yr(), o.ready; + }; +})(); +function Yo(r) { + return Bt( + lt, + r + ); +} +function Hi(r) { + return No( + lt, + r + ); +} +async function Jo(r, o) { + return zo( + lt, + r, + o + ); +} +async function Qo(r, o) { + return Go( + lt, + r, + o + ); +} +var je; +class ct extends EventTarget { + constructor(o = {}) { + var i; + super(), Co(this, je, void 0); + try { + const c = (i = o == null ? void 0 : o.formats) == null ? void 0 : i.filter( + (l) => l !== "unknown" + ); + if ((c == null ? void 0 : c.length) === 0) + throw new TypeError("Hint option provided, but is empty."); + c == null || c.forEach((l) => { + if (!it.has(l)) + throw new TypeError( + `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.` + ); + }), $o(this, je, c != null ? c : []), Yo().then((l) => { + this.dispatchEvent( + new CustomEvent("load", { + detail: l + }) + ); + }).catch((l) => { + this.dispatchEvent(new CustomEvent("error", { detail: l })); + }); + } catch (c) { + throw Cr( + c, + "Failed to construct 'BarcodeDetector'" + ); + } + } + static async getSupportedFormats() { + return _o.filter((o) => o !== "unknown"); + } + async detect(o) { + try { + const i = await Mo(o); + if (i === null) + return []; + let c; + try { + jr(i) ? c = await Jo(i, { + tryHarder: !0, + formats: br(this, je).map((l) => it.get(l)) + }) : c = await Qo(i, { + tryHarder: !0, + formats: br(this, je).map((l) => it.get(l)) + }); + } catch (l) { + throw console.error(l), new DOMException( + "Barcode detection service unavailable.", + "NotSupportedError" + ); + } + return c.map((l) => { + const { + topLeft: { x: h, y: v }, + topRight: { x: g, y: b }, + bottomLeft: { x: p, y: C }, + bottomRight: { x: S, y: $ } + } = l.position, F = Math.min(h, g, p, S), U = Math.min(v, b, C, $), W = Math.max(h, g, p, S), R = Math.max(v, b, C, $); + return { + boundingBox: new DOMRectReadOnly( + F, + U, + W - F, + R - U + ), + rawValue: l.text, + format: So(l.format), + cornerPoints: [ + { + x: h, + y: v + }, + { + x: g, + y: b + }, + { + x: S, + y: $ + }, + { + x: p, + y: C + } + ] + }; + }); + } catch (i) { + throw Cr( + i, + "Failed to execute 'detect' on 'BarcodeDetector'" + ); + } + } +} +je = /* @__PURE__ */ new WeakMap(); +const Vt = (r, o, i = "error") => { + let c, l; + const h = new Promise( + (v, g) => { + c = v, l = g, r.addEventListener(o, c), r.addEventListener(i, l); + } + ); + return h.finally(() => { + r.removeEventListener(o, c), r.removeEventListener(i, l); + }), h; +}, Sr = (r) => new Promise((o) => setTimeout(o, r)); +class Xo extends Error { + constructor() { + super("can't process cross-origin image"), this.name = "DropImageFetchError"; + } +} +class Vr extends Error { + constructor() { + super("this browser has no Stream API support"), this.name = "StreamApiNotSupportedError"; + } +} +class Zo extends Error { + constructor() { + super( + "camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP." + ), this.name = "InsecureContextError"; + } +} +class Ko extends Error { + constructor() { + super( + "Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)" + ), this.name = "StreamLoadTimeoutError"; + } +} +let qr; +async function ei(r) { + if (window.BarcodeDetector === void 0) + return console.debug("[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill."), new ct({ formats: r }); + const o = await window.BarcodeDetector.getSupportedFormats(), i = r.filter((c) => !o.includes(c)); + return i.length > 0 ? (console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`), new ct({ formats: r })) : (console.debug("[vue-qrcode-reader] Will use native BarcodeDetector."), new window.BarcodeDetector({ formats: r })); +} +async function Nr(r) { + qr = await ei(r); +} +const ti = async (r, { + detectHandler: o, + locateHandler: i, + minDelay: c, + formats: l +}) => { + console.debug("[vue-qrcode-reader] start scanning"), await Nr(l); + const h = (v) => async (g) => { + if (r.readyState === 0) + console.debug("[vue-qrcode-reader] stop scanning: video element readyState is 0"); + else { + const { lastScanned: b, contentBefore: p, lastScanHadContent: C } = v; + if (g - b < c) + window.requestAnimationFrame(h(v)); + else { + const S = await qr.detect(r), $ = S.some((W) => !p.includes(W.rawValue)); + $ && o(S); + const F = S.length > 0; + F && i(S), !F && C && i(S); + const U = { + lastScanned: g, + lastScanHadContent: F, + // It can happen that a QR code is constantly in view of the camera but + // maybe a scanned frame is a bit blurry and we detect nothing but in the + // next frame we detect the code again. We also want to avoid emitting + // a `detect` event in such a case. So we don't reset `contentBefore`, + // if we detect nothing, only if we detect something new. + contentBefore: $ ? S.map((W) => W.rawValue) : p + }; + window.requestAnimationFrame(h(U)); + } + } + }; + h({ + lastScanned: performance.now(), + contentBefore: [], + lastScanHadContent: !1 + })(performance.now()); +}, ri = async (r) => { + if (r.startsWith("http") && r.includes(location.host) === !1) + throw new Xo(); + const o = document.createElement("img"); + return o.src = r, await Vt(o, "load"), o; +}, zr = async (r, o = ["qr_code"]) => await new ct({ formats: o }).detect(r), ni = async (r, o = ["qr_code"]) => { + const i = new ct({ formats: o }), c = await ri(r); + return await i.detect(c); +}; +var Gr = {}, Q = {}; +Object.defineProperty(Q, "__esModule", { + value: !0 +}); +Q.compactObject = Qr; +Q.deprecated = fi; +var ai = Q.detectBrowser = hi; +Q.disableLog = ui; +Q.disableWarnings = li; +Q.extractVersion = st; +Q.filterStats = pi; +Q.log = di; +Q.walkStats = ut; +Q.wrapPeerConnectionEvent = ci; +function oi(r, o, i) { + return o = ii(o), o in r ? Object.defineProperty(r, o, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : r[o] = i, r; +} +function ii(r) { + var o = si(r, "string"); + return pe(o) === "symbol" ? o : String(o); +} +function si(r, o) { + if (pe(r) !== "object" || r === null) + return r; + var i = r[Symbol.toPrimitive]; + if (i !== void 0) { + var c = i.call(r, o || "default"); + if (pe(c) !== "object") + return c; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (o === "string" ? String : Number)(r); +} +function pe(r) { + "@babel/helpers - typeof"; + return pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, pe(r); +} +var Yr = !0, Jr = !0; +function st(r, o, i) { + var c = r.match(o); + return c && c.length >= i && parseInt(c[i], 10); +} +function ci(r, o, i) { + if (r.RTCPeerConnection) { + var c = r.RTCPeerConnection.prototype, l = c.addEventListener; + c.addEventListener = function(v, g) { + if (v !== o) + return l.apply(this, arguments); + var b = function(C) { + var S = i(C); + S && (g.handleEvent ? g.handleEvent(S) : g(S)); + }; + return this._eventMap = this._eventMap || {}, this._eventMap[o] || (this._eventMap[o] = /* @__PURE__ */ new Map()), this._eventMap[o].set(g, b), l.apply(this, [v, b]); + }; + var h = c.removeEventListener; + c.removeEventListener = function(v, g) { + if (v !== o || !this._eventMap || !this._eventMap[o]) + return h.apply(this, arguments); + if (!this._eventMap[o].has(g)) + return h.apply(this, arguments); + var b = this._eventMap[o].get(g); + return this._eventMap[o].delete(g), this._eventMap[o].size === 0 && delete this._eventMap[o], Object.keys(this._eventMap).length === 0 && delete this._eventMap, h.apply(this, [v, b]); + }, Object.defineProperty(c, "on" + o, { + get: function() { + return this["_on" + o]; + }, + set: function(g) { + this["_on" + o] && (this.removeEventListener(o, this["_on" + o]), delete this["_on" + o]), g && this.addEventListener(o, this["_on" + o] = g); + }, + enumerable: !0, + configurable: !0 + }); + } +} +function ui(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Yr = r, r ? "adapter.js logging disabled" : "adapter.js logging enabled"); +} +function li(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Jr = !r, "adapter.js deprecation warnings " + (r ? "disabled" : "enabled")); +} +function di() { + if ((typeof window > "u" ? "undefined" : pe(window)) === "object") { + if (Yr) + return; + typeof console < "u" && typeof console.log == "function" && console.log.apply(console, arguments); + } +} +function fi(r, o) { + Jr && console.warn(r + " is deprecated, please use " + o + " instead."); +} +function hi(r) { + var o = { + browser: null, + version: null + }; + if (typeof r > "u" || !r.navigator || !r.navigator.userAgent) + return o.browser = "Not a browser.", o; + var i = r.navigator; + if (i.mozGetUserMedia) + o.browser = "firefox", o.version = st(i.userAgent, /Firefox\/(\d+)\./, 1); + else if (i.webkitGetUserMedia || r.isSecureContext === !1 && r.webkitRTCPeerConnection) + o.browser = "chrome", o.version = st(i.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + else if (r.RTCPeerConnection && i.userAgent.match(/AppleWebKit\/(\d+)\./)) + o.browser = "safari", o.version = st(i.userAgent, /AppleWebKit\/(\d+)\./, 1), o.supportsUnifiedPlan = r.RTCRtpTransceiver && "currentDirection" in r.RTCRtpTransceiver.prototype; + else + return o.browser = "Not a supported browser.", o; + return o; +} +function Pr(r) { + return Object.prototype.toString.call(r) === "[object Object]"; +} +function Qr(r) { + return Pr(r) ? Object.keys(r).reduce(function(o, i) { + var c = Pr(r[i]), l = c ? Qr(r[i]) : r[i], h = c && !Object.keys(l).length; + return l === void 0 || h ? o : Object.assign(o, oi({}, i, l)); + }, {}) : r; +} +function ut(r, o, i) { + !o || i.has(o.id) || (i.set(o.id, o), Object.keys(o).forEach(function(c) { + c.endsWith("Id") ? ut(r, r.get(o[c]), i) : c.endsWith("Ids") && o[c].forEach(function(l) { + ut(r, r.get(l), i); + }); + })); +} +function pi(r, o, i) { + var c = i ? "outbound-rtp" : "inbound-rtp", l = /* @__PURE__ */ new Map(); + if (o === null) + return l; + var h = []; + return r.forEach(function(v) { + v.type === "track" && v.trackIdentifier === o.id && h.push(v); + }), h.forEach(function(v) { + r.forEach(function(g) { + g.type === c && g.trackId === v.id && ut(r, g, l); + }); + }), l; +} +Object.defineProperty(Gr, "__esModule", { + value: !0 +}); +var mi = Gr.shimGetUserMedia = gi, vi = yi(Q); +function Xr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Xr = function(l) { + return l ? i : o; + })(r); +} +function yi(r, o) { + if (r && r.__esModule) + return r; + if (r === null || he(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Xr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function he(r) { + "@babel/helpers - typeof"; + return he = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, he(r); +} +var Tr = vi.log; +function gi(r, o) { + var i = r && r.navigator; + if (i.mediaDevices) { + var c = function(p) { + if (he(p) !== "object" || p.mandatory || p.optional) + return p; + var C = {}; + return Object.keys(p).forEach(function(S) { + if (!(S === "require" || S === "advanced" || S === "mediaSource")) { + var $ = he(p[S]) === "object" ? p[S] : { + ideal: p[S] + }; + $.exact !== void 0 && typeof $.exact == "number" && ($.min = $.max = $.exact); + var F = function(R, A) { + return R ? R + A.charAt(0).toUpperCase() + A.slice(1) : A === "deviceId" ? "sourceId" : A; + }; + if ($.ideal !== void 0) { + C.optional = C.optional || []; + var U = {}; + typeof $.ideal == "number" ? (U[F("min", S)] = $.ideal, C.optional.push(U), U = {}, U[F("max", S)] = $.ideal, C.optional.push(U)) : (U[F("", S)] = $.ideal, C.optional.push(U)); + } + $.exact !== void 0 && typeof $.exact != "number" ? (C.mandatory = C.mandatory || {}, C.mandatory[F("", S)] = $.exact) : ["min", "max"].forEach(function(W) { + $[W] !== void 0 && (C.mandatory = C.mandatory || {}, C.mandatory[F(W, S)] = $[W]); + }); + } + }), p.advanced && (C.optional = (C.optional || []).concat(p.advanced)), C; + }, l = function(p, C) { + if (o.version >= 61) + return C(p); + if (p = JSON.parse(JSON.stringify(p)), p && he(p.audio) === "object") { + var S = function(R, A, X) { + A in R && !(X in R) && (R[X] = R[A], delete R[A]); + }; + p = JSON.parse(JSON.stringify(p)), S(p.audio, "autoGainControl", "googAutoGainControl"), S(p.audio, "noiseSuppression", "googNoiseSuppression"), p.audio = c(p.audio); + } + if (p && he(p.video) === "object") { + var $ = p.video.facingMode; + $ = $ && (he($) === "object" ? $ : { + ideal: $ + }); + var F = o.version < 66; + if ($ && ($.exact === "user" || $.exact === "environment" || $.ideal === "user" || $.ideal === "environment") && !(i.mediaDevices.getSupportedConstraints && i.mediaDevices.getSupportedConstraints().facingMode && !F)) { + delete p.video.facingMode; + var U; + if ($.exact === "environment" || $.ideal === "environment" ? U = ["back", "rear"] : ($.exact === "user" || $.ideal === "user") && (U = ["front"]), U) + return i.mediaDevices.enumerateDevices().then(function(W) { + W = W.filter(function(A) { + return A.kind === "videoinput"; + }); + var R = W.find(function(A) { + return U.some(function(X) { + return A.label.toLowerCase().includes(X); + }); + }); + return !R && W.length && U.includes("back") && (R = W[W.length - 1]), R && (p.video.deviceId = $.exact ? { + exact: R.deviceId + } : { + ideal: R.deviceId + }), p.video = c(p.video), Tr("chrome: " + JSON.stringify(p)), C(p); + }); + } + p.video = c(p.video); + } + return Tr("chrome: " + JSON.stringify(p)), C(p); + }, h = function(p) { + return o.version >= 64 ? p : { + name: { + PermissionDeniedError: "NotAllowedError", + PermissionDismissedError: "NotAllowedError", + InvalidStateError: "NotAllowedError", + DevicesNotFoundError: "NotFoundError", + ConstraintNotSatisfiedError: "OverconstrainedError", + TrackStartError: "NotReadableError", + MediaDeviceFailedDueToShutdown: "NotAllowedError", + MediaDeviceKillSwitchOn: "NotAllowedError", + TabCaptureError: "AbortError", + ScreenCaptureError: "AbortError", + DeviceCaptureError: "AbortError" + }[p.name] || p.name, + message: p.message, + constraint: p.constraint || p.constraintName, + toString: function() { + return this.name + (this.message && ": ") + this.message; + } + }; + }, v = function(p, C, S) { + l(p, function($) { + i.webkitGetUserMedia($, C, function(F) { + S && S(h(F)); + }); + }); + }; + if (i.getUserMedia = v.bind(i), i.mediaDevices.getUserMedia) { + var g = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + i.mediaDevices.getUserMedia = function(b) { + return l(b, function(p) { + return g(p).then(function(C) { + if (p.audio && !C.getAudioTracks().length || p.video && !C.getVideoTracks().length) + throw C.getTracks().forEach(function(S) { + S.stop(); + }), new DOMException("", "NotFoundError"); + return C; + }, function(C) { + return Promise.reject(h(C)); + }); + }); + }; + } + } +} +var Zr = {}; +Object.defineProperty(Zr, "__esModule", { + value: !0 +}); +var wi = Zr.shimGetUserMedia = $i, bi = Ci(Q); +function Kr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Kr = function(l) { + return l ? i : o; + })(r); +} +function Ci(r, o) { + if (r && r.__esModule) + return r; + if (r === null || Pe(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Kr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function Pe(r) { + "@babel/helpers - typeof"; + return Pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, Pe(r); +} +function $i(r, o) { + var i = r && r.navigator, c = r && r.MediaStreamTrack; + if (i.getUserMedia = function(b, p, C) { + bi.deprecated("navigator.getUserMedia", "navigator.mediaDevices.getUserMedia"), i.mediaDevices.getUserMedia(b).then(p, C); + }, !(o.version > 55 && "autoGainControl" in i.mediaDevices.getSupportedConstraints())) { + var l = function(p, C, S) { + C in p && !(S in p) && (p[S] = p[C], delete p[C]); + }, h = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + if (i.mediaDevices.getUserMedia = function(b) { + return Pe(b) === "object" && Pe(b.audio) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b.audio, "autoGainControl", "mozAutoGainControl"), l(b.audio, "noiseSuppression", "mozNoiseSuppression")), h(b); + }, c && c.prototype.getSettings) { + var v = c.prototype.getSettings; + c.prototype.getSettings = function() { + var b = v.apply(this, arguments); + return l(b, "mozAutoGainControl", "autoGainControl"), l(b, "mozNoiseSuppression", "noiseSuppression"), b; + }; + } + if (c && c.prototype.applyConstraints) { + var g = c.prototype.applyConstraints; + c.prototype.applyConstraints = function(b) { + return this.kind === "audio" && Pe(b) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b, "autoGainControl", "mozAutoGainControl"), l(b, "noiseSuppression", "mozNoiseSuppression")), g.apply(this, [b]); + }; + } + } +} +var ae = {}; +Object.defineProperty(ae, "__esModule", { + value: !0 +}); +ae.shimAudioContext = xi; +ae.shimCallbacksAPI = Ei; +ae.shimConstraints = rn; +ae.shimCreateOfferLegacy = Ai; +var _i = ae.shimGetUserMedia = Oi; +ae.shimLocalStreamsAPI = Pi; +ae.shimRTCIceServerUrls = Di; +ae.shimRemoteStreamsAPI = Ti; +ae.shimTrackEventTransceiver = Mi; +var en = Si(Q); +function tn(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (tn = function(l) { + return l ? i : o; + })(r); +} +function Si(r, o) { + if (r && r.__esModule) + return r; + if (r === null || me(r) !== "object" && typeof r != "function") + return { default: r }; + var i = tn(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function me(r) { + "@babel/helpers - typeof"; + return me = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, me(r); +} +function Pi(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + if ("getLocalStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getLocalStreams = function() { + return this._localStreams || (this._localStreams = []), this._localStreams; + }), !("addStream" in r.RTCPeerConnection.prototype)) { + var o = r.RTCPeerConnection.prototype.addTrack; + r.RTCPeerConnection.prototype.addStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []), this._localStreams.includes(c) || this._localStreams.push(c), c.getAudioTracks().forEach(function(h) { + return o.call(l, h, c); + }), c.getVideoTracks().forEach(function(h) { + return o.call(l, h, c); + }); + }, r.RTCPeerConnection.prototype.addTrack = function(c) { + for (var l = this, h = arguments.length, v = new Array(h > 1 ? h - 1 : 0), g = 1; g < h; g++) + v[g - 1] = arguments[g]; + return v && v.forEach(function(b) { + l._localStreams ? l._localStreams.includes(b) || l._localStreams.push(b) : l._localStreams = [b]; + }), o.apply(this, arguments); + }; + } + "removeStream" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.removeStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []); + var h = this._localStreams.indexOf(c); + if (h !== -1) { + this._localStreams.splice(h, 1); + var v = c.getTracks(); + this.getSenders().forEach(function(g) { + v.includes(g.track) && l.removeTrack(g); + }); + } + }); + } +} +function Ti(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection) && ("getRemoteStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getRemoteStreams = function() { + return this._remoteStreams ? this._remoteStreams : []; + }), !("onaddstream" in r.RTCPeerConnection.prototype))) { + Object.defineProperty(r.RTCPeerConnection.prototype, "onaddstream", { + get: function() { + return this._onaddstream; + }, + set: function(c) { + var l = this; + this._onaddstream && (this.removeEventListener("addstream", this._onaddstream), this.removeEventListener("track", this._onaddstreampoly)), this.addEventListener("addstream", this._onaddstream = c), this.addEventListener("track", this._onaddstreampoly = function(h) { + h.streams.forEach(function(v) { + if (l._remoteStreams || (l._remoteStreams = []), !l._remoteStreams.includes(v)) { + l._remoteStreams.push(v); + var g = new Event("addstream"); + g.stream = v, l.dispatchEvent(g); + } + }); + }); + } + }); + var o = r.RTCPeerConnection.prototype.setRemoteDescription; + r.RTCPeerConnection.prototype.setRemoteDescription = function() { + var c = this; + return this._onaddstreampoly || this.addEventListener("track", this._onaddstreampoly = function(l) { + l.streams.forEach(function(h) { + if (c._remoteStreams || (c._remoteStreams = []), !(c._remoteStreams.indexOf(h) >= 0)) { + c._remoteStreams.push(h); + var v = new Event("addstream"); + v.stream = h, c.dispatchEvent(v); + } + }); + }), o.apply(c, arguments); + }; + } +} +function Ei(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + var o = r.RTCPeerConnection.prototype, i = o.createOffer, c = o.createAnswer, l = o.setLocalDescription, h = o.setRemoteDescription, v = o.addIceCandidate; + o.createOffer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = i.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }, o.createAnswer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = c.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }; + var g = function(p, C, S) { + var $ = l.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }; + o.setLocalDescription = g, g = function(p, C, S) { + var $ = h.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.setRemoteDescription = g, g = function(p, C, S) { + var $ = v.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.addIceCandidate = g; + } +} +function Oi(r) { + var o = r && r.navigator; + if (o.mediaDevices && o.mediaDevices.getUserMedia) { + var i = o.mediaDevices, c = i.getUserMedia.bind(i); + o.mediaDevices.getUserMedia = function(l) { + return c(rn(l)); + }; + } + !o.getUserMedia && o.mediaDevices && o.mediaDevices.getUserMedia && (o.getUserMedia = (function(h, v, g) { + o.mediaDevices.getUserMedia(h).then(v, g); + }).bind(o)); +} +function rn(r) { + return r && r.video !== void 0 ? Object.assign({}, r, { + video: en.compactObject(r.video) + }) : r; +} +function Di(r) { + if (r.RTCPeerConnection) { + var o = r.RTCPeerConnection; + r.RTCPeerConnection = function(c, l) { + if (c && c.iceServers) { + for (var h = [], v = 0; v < c.iceServers.length; v++) { + var g = c.iceServers[v]; + g.urls === void 0 && g.url ? (en.deprecated("RTCIceServer.url", "RTCIceServer.urls"), g = JSON.parse(JSON.stringify(g)), g.urls = g.url, delete g.url, h.push(g)) : h.push(c.iceServers[v]); + } + c.iceServers = h; + } + return new o(c, l); + }, r.RTCPeerConnection.prototype = o.prototype, "generateCertificate" in o && Object.defineProperty(r.RTCPeerConnection, "generateCertificate", { + get: function() { + return o.generateCertificate; + } + }); + } +} +function Mi(r) { + me(r) === "object" && r.RTCTrackEvent && "receiver" in r.RTCTrackEvent.prototype && !("transceiver" in r.RTCTrackEvent.prototype) && Object.defineProperty(r.RTCTrackEvent.prototype, "transceiver", { + get: function() { + return { + receiver: this.receiver + }; + } + }); +} +function Ai(r) { + var o = r.RTCPeerConnection.prototype.createOffer; + r.RTCPeerConnection.prototype.createOffer = function(c) { + if (c) { + typeof c.offerToReceiveAudio < "u" && (c.offerToReceiveAudio = !!c.offerToReceiveAudio); + var l = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "audio"; + }); + c.offerToReceiveAudio === !1 && l ? l.direction === "sendrecv" ? l.setDirection ? l.setDirection("sendonly") : l.direction = "sendonly" : l.direction === "recvonly" && (l.setDirection ? l.setDirection("inactive") : l.direction = "inactive") : c.offerToReceiveAudio === !0 && !l && this.addTransceiver("audio", { + direction: "recvonly" + }), typeof c.offerToReceiveVideo < "u" && (c.offerToReceiveVideo = !!c.offerToReceiveVideo); + var h = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "video"; + }); + c.offerToReceiveVideo === !1 && h ? h.direction === "sendrecv" ? h.setDirection ? h.setDirection("sendonly") : h.direction = "sendonly" : h.direction === "recvonly" && (h.setDirection ? h.setDirection("inactive") : h.direction = "inactive") : c.offerToReceiveVideo === !0 && !h && this.addTransceiver("video", { + direction: "recvonly" + }); + } + return o.apply(this, arguments); + }; +} +function xi(r) { + me(r) !== "object" || r.AudioContext || (r.AudioContext = r.webkitAudioContext); +} +const Ri = (r) => { + let o = !1, i; + return (...c) => (o || (i = r(c), o = !0), i); +}; +function ue(r, o) { + if (r === !1) + throw new Error(o != null ? o : "assertion failure"); +} +function Er(r) { + throw new Error("this code should be unreachable"); +} +const ki = Ri(() => { + const r = ai(window); + switch (r.browser) { + case "chrome": + mi(window, r); + break; + case "firefox": + wi(window, r); + break; + case "safari": + _i(window, r); + break; + default: + throw new Vr(); + } +}); +let Te = Promise.resolve({ type: "stop", data: {} }); +async function Or(r, o, i) { + var g, b, p; + if (console.debug( + "[vue-qrcode-reader] starting camera with constraints: ", + JSON.stringify(o) + ), window.isSecureContext !== !0) + throw new Zo(); + if (((g = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : g.getUserMedia) === void 0) + throw new Vr(); + ki(), console.debug("[vue-qrcode-reader] calling getUserMedia"); + const c = await navigator.mediaDevices.getUserMedia({ + audio: !1, + video: o + }); + r.srcObject !== void 0 ? r.srcObject = c : r.mozSrcObject !== void 0 ? r.mozSrcObject = c : window.URL.createObjectURL ? r.src = window.URL.createObjectURL(c) : window.webkitURL ? r.src = window.webkitURL.createObjectURL(c) : r.src = c.id, r.play(), console.debug("[vue-qrcode-reader] waiting for video element to load"), await Promise.race([ + Vt(r, "loadeddata"), + // On iOS devices in PWA mode, QrcodeStream works initially, but after + // killing and restarting the PWA, all video elements fail to load camera + // streams and never emit the `loadeddata` event. Looks like this is + // related to a WebKit issue (see #298). No workarounds at the moment. + // To at least detect this situation, we throw an error if the event + // has not been emitted after a 6 second timeout. + Sr(6e3).then(() => { + throw new Ko(); + }) + ]), console.debug("[vue-qrcode-reader] video element loaded"), await Sr(500); + const [l] = c.getVideoTracks(), h = (p = (b = l == null ? void 0 : l.getCapabilities) == null ? void 0 : b.call(l)) != null ? p : {}; + let v = !1; + return i && h.torch && (await l.applyConstraints({ advanced: [{ torch: !0 }] }), v = !0), console.debug("[vue-qrcode-reader] camera ready"), { + type: "start", + data: { + videoEl: r, + stream: c, + capabilities: h, + constraints: o, + isTorchOn: v + } + }; +} +async function Ii(r, { + constraints: o, + torch: i, + restart: c = !1 +}) { + Te = Te.then((h) => { + if (h.type === "start") { + const { + data: { + videoEl: v, + stream: g, + constraints: b, + isTorchOn: p + } + } = h; + return !c && r === v && o === b && i === p ? h : nn(v, g, p).then( + () => Or(r, o, i) + ); + } else if (h.type === "stop" || h.type === "failed") + return Or(r, o, i); + Er(); + }).catch((h) => (console.debug(`[vue-qrcode-reader] starting camera failed with "${h}"`), { type: "failed", error: h })); + const l = await Te; + if (l.type === "stop") + throw new Error("Something went wrong with the camera task queue (start task)."); + if (l.type === "failed") + throw l.error; + if (l.type === "start") + return l.data.capabilities; + Er(); +} +async function nn(r, o, i) { + console.debug("[vue-qrcode-reader] stopping camera"), r.src = "", r.srcObject = null, r.load(), await Vt(r, "error"); + for (const c of o.getTracks()) + i != null || await c.applyConstraints({ advanced: [{ torch: !1 }] }), o.removeTrack(c), c.stop(); + return { + type: "stop", + data: {} + }; +} +async function ot() { + if (Te = Te.then((o) => { + if (o.type === "stop" || o.type === "failed") + return o; + const { + data: { videoEl: i, stream: c, isTorchOn: l } + } = o; + return nn(i, c, l); + }), (await Te).type === "start") + throw new Error("Something went wrong with the camera task queue (stop task)."); +} +const Fi = /* @__PURE__ */ jt({ + __name: "QrcodeStream", + props: { + // in this file: don't use `props.constraints` directly. Use `constraintsCached`. + /** + * Passes an object with various camera configuration options. + */ + constraints: { + type: Object, + default() { + return { facingMode: "environment" }; + } + }, + // in this file: don't use `props.formats` directly. Use `formatsCached`. + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: Array, + default: () => ["qr_code"] + }, + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: Boolean, + default: !1 + }, + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: Boolean, + default: !1 + }, + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: Function + } + }, + emits: ["detect", "camera-on", "camera-off", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = we(i.constraints), h = we(i.formats); + We( + () => i.constraints, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (l.value = k); + }, + { deep: !0 } + ), We( + () => i.formats, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (h.value = k); + }, + { deep: !0 } + ); + const v = we(), g = we(), b = we(), p = we(!1), C = we(!1); + vo(() => { + C.value = !0; + }), yo(() => { + ot(); + }); + const S = Ut(() => ({ + torch: i.torch, + constraints: l.value, + shouldStream: C.value && !i.paused + })); + We( + S, + async (k) => { + const D = b.value; + ue( + D !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined." + ); + const M = v.value; + ue( + M !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined." + ); + const le = M.getContext("2d"); + if (ue(le !== null, "if cavnas is defined, canvas 2d context should also be non-null"), k.shouldStream) { + ot(), p.value = !1; + try { + const oe = await Ii(D, k); + C.value ? (p.value = !0, c("camera-on", oe)) : await ot(); + } catch (oe) { + c("error", oe); + } + } else + M.width = D.videoWidth, M.height = D.videoHeight, le.drawImage(D, 0, 0, D.videoWidth, D.videoHeight), ot(), p.value = !1, c("camera-off"); + }, + { deep: !0 } + ), We(h, async (k) => { + C.value && await Nr(k); + }); + const $ = Ut(() => S.value.shouldStream && p.value); + We($, (k) => { + if (k) { + ue( + v.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined" + ), F(v.value), ue( + g.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined" + ), F(g.value); + const D = () => i.track === void 0 ? 500 : 40; + ue( + b.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus video element is defined" + ), ti(b.value, { + detectHandler: (M) => c("detect", M), + formats: h.value, + locateHandler: U, + minDelay: D() + }); + } + }); + const F = (k) => { + const D = k.getContext("2d"); + ue(D !== null, "canvas 2d context should always be non-null"), D.clearRect(0, 0, k.width, k.height); + }, U = (k) => { + const D = g.value; + ue( + D !== void 0, + "onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined." + ); + const M = b.value; + if (ue( + M !== void 0, + "onLocate handler should only be called when component is mounted. Thus video element is always defined." + ), k.length === 0 || i.track === void 0) + F(D); + else { + const le = M.offsetWidth, oe = M.offsetHeight, be = M.videoWidth, Ce = M.videoHeight, Oe = Math.max(le / be, oe / Ce), De = be * Oe, Le = Ce * Oe, dt = De / be, ft = Le / Ce, ht = (le - De) / 2, pt = (oe - Le) / 2, Me = ({ x: de, y: Z }) => ({ + x: Math.floor(de * dt), + y: Math.floor(Z * ft) + }), te = ({ x: de, y: Z }) => ({ + x: Math.floor(de + ht), + y: Math.floor(Z + pt) + }), ve = k.map((de) => { + const { boundingBox: Z, cornerPoints: vt } = de, { x: He, y: fe } = te( + Me({ + x: Z.x, + y: Z.y + }) + ), { x: Be, y: yt } = Me({ + x: Z.width, + y: Z.height + }); + return { + ...de, + cornerPoints: vt.map((Ve) => te(Me(Ve))), + boundingBox: DOMRectReadOnly.fromRect({ x: He, y: fe, width: Be, height: yt }) + }; + }); + D.width = M.offsetWidth, D.height = M.offsetHeight; + const mt = D.getContext("2d"); + i.track(ve, mt); + } + }, W = { + width: "100%", + height: "100%", + position: "relative", + // notice that we use z-index only once for the wrapper div. + // If z-index is not defined, elements are stacked in the order they appear in the DOM. + // The first element is at the very bottom and subsequent elements are added on top. + "z-index": "0" + }, R = { + width: "100%", + height: "100%", + position: "absolute", + top: "0", + left: "0" + }, A = { + width: "100%", + height: "100%", + "object-fit": "cover" + }, X = Ut(() => $.value ? A : { + ...A, + visibility: "hidden", + position: "absolute" + }); + return (k, D) => (Lt(), Ht("div", { style: W }, [ + nt("video", { + ref_key: "videoRef", + ref: b, + style: go(X.value), + autoplay: "", + muted: "", + playsinline: "" + }, null, 4), + wo(nt("canvas", { + id: "qrcode-stream-pause-frame", + ref_key: "pauseFrameRef", + ref: v, + style: A + }, null, 512), [ + [bo, !$.value] + ]), + nt("canvas", { + id: "qrcode-stream-tracking-layer", + ref_key: "trackingLayerRef", + ref: g, + style: R + }, null, 512), + nt("div", { style: R }, [ + Dr(k.$slots, "default") + ]) + ])); + } +}), Ui = /* @__PURE__ */ jt({ + __name: "QrcodeCapture", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect"], + setup(r, { emit: o }) { + const i = r, c = o, l = (h) => { + if (!(!(h.target instanceof HTMLInputElement) || !h.target.files)) + for (const v of Array.from(h.target.files)) + zr(v, i.formats).then((g) => { + c("detect", g); + }); + }; + return (h, v) => (Lt(), Ht("input", { + onChange: l, + type: "file", + name: "image", + accept: "image/*", + capture: "environment", + multiple: "" + }, null, 32)); + } +}), Wi = /* @__PURE__ */ jt({ + __name: "QrcodeDropZone", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect", "dragover", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = async (g) => { + try { + const b = await g; + c("detect", b); + } catch (b) { + c("error", b); + } + }, h = (g) => { + c("dragover", g); + }, v = ({ dataTransfer: g }) => { + if (!g) + return; + h(!1); + const b = [...Array.from(g.files)], p = g.getData("text/uri-list"); + b.forEach((C) => { + l(zr(C, i.formats)); + }), p !== "" && l(ni(p, i.formats)); + }; + return (g, b) => (Lt(), Ht("div", { + onDrop: at(v, ["prevent", "stop"]), + onDragenter: b[0] || (b[0] = at((p) => h(!0), ["prevent", "stop"])), + onDragleave: b[1] || (b[1] = at((p) => h(!1), ["prevent", "stop"])), + onDragover: b[2] || (b[2] = at(() => { + }, ["prevent", "stop"])) + }, [ + Dr(g.$slots, "default") + ], 32)); + } +}); +function ji(r) { + r.component("qrcode-stream", Fi), r.component("qrcode-capture", Ui), r.component("qrcode-drop-zone", Wi); +} +const Bi = { install: ji }; +export { + Ui as QrcodeCapture, + Wi as QrcodeDropZone, + Fi as QrcodeStream, + Bi as VueQrcodeReader, + ji as install, + Hi as setZXingModuleOverrides +}; diff --git a/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js new file mode 100644 index 0000000..17e8ed5 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js @@ -0,0 +1,3 @@ +(function(ee,O){typeof exports=="object"&&typeof module<"u"?O(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],O):(ee=typeof globalThis<"u"?globalThis:ee||self,O(ee.VueQrcodeReader={},ee.Vue))})(this,function(ee,O){"use strict";var Wt=(r,o,i)=>{if(!o.has(r))throw TypeError("Cannot "+i)},jt=(r,o,i)=>(Wt(r,o,"read from private field"),i?i.call(r):o.get(r)),tn=(r,o,i)=>{if(o.has(r))throw TypeError("Cannot add the same private member more than once");o instanceof WeakSet?o.add(r):o.set(r,i)},rn=(r,o,i,c)=>(Wt(r,o,"write to private field"),o.set(r,i),i);const Lt=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],nn=[...Lt,["unknown"]].map(r=>r[0]),Le=new Map(Lt);function an(r){for(const[o,i]of Le)if(r===i)return o;return"unknown"}function on(r){if(Ht(r))return{width:r.naturalWidth,height:r.naturalHeight};if(Bt(r))return{width:r.width.baseVal.value,height:r.height.baseVal.value};if(Vt(r))return{width:r.videoWidth,height:r.videoHeight};if(Nt(r))return{width:r.width,height:r.height};if(Gt(r))return{width:r.displayWidth,height:r.displayHeight};if(qt(r))return{width:r.width,height:r.height};if(zt(r))return{width:r.width,height:r.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ht(r){try{return r instanceof HTMLImageElement}catch(o){return!1}}function Bt(r){try{return r instanceof SVGImageElement}catch(o){return!1}}function Vt(r){try{return r instanceof HTMLVideoElement}catch(o){return!1}}function qt(r){try{return r instanceof HTMLCanvasElement}catch(o){return!1}}function Nt(r){try{return r instanceof ImageBitmap}catch(o){return!1}}function zt(r){try{return r instanceof OffscreenCanvas}catch(o){return!1}}function Gt(r){try{return r instanceof VideoFrame}catch(o){return!1}}function Yt(r){try{return r instanceof Blob}catch(o){return!1}}function sn(r){try{return r instanceof ImageData}catch(o){return!1}}function cn(r,o){try{const i=new OffscreenCanvas(r,o);if(i.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return i;throw void 0}catch(i){const c=document.createElement("canvas");return c.width=r,c.height=o,c}}async function Jt(r){if(Ht(r)&&!await fn(r))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Bt(r)&&!await hn(r))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Gt(r)&&pn(r))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(Vt(r)&&(r.readyState===0||r.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Nt(r)&&vn(r))throw new DOMException("The image source is detached.","InvalidStateError");const{width:o,height:i}=on(r);if(o===0||i===0)return null;const c=cn(o,i).getContext("2d");c.drawImage(r,0,0);try{return c.getImageData(0,0,o,i)}catch(l){throw new DOMException("Source would taint origin.","SecurityError")}}async function un(r){let o;try{if(globalThis.createImageBitmap)o=await createImageBitmap(r);else if(globalThis.Image){o=new Image;let i="";try{i=URL.createObjectURL(r),o.src=i,await o.decode()}finally{URL.revokeObjectURL(i)}}else return r}catch(i){throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await Jt(o)}function ln(r){const{width:o,height:i}=r;if(o===0||i===0)return null;const c=r.getContext("2d");try{return c.getImageData(0,0,o,i)}catch(l){throw new DOMException("Source would taint origin.","SecurityError")}}async function dn(r){if(Yt(r))return await un(r);if(sn(r)){if(mn(r))throw new DOMException("The image data has been detached.","InvalidStateError");return r}return qt(r)||zt(r)?ln(r):await Jt(r)}async function fn(r){try{return await r.decode(),!0}catch(o){return!1}}async function hn(r){var o;try{return await((o=r.decode)==null?void 0:o.call(r)),!0}catch(i){return!1}}function pn(r){return r.format===null}function mn(r){return r.data.buffer.byteLength===0}function vn(r){return r.width===0&&r.height===0}function Qt(r,o){return r instanceof DOMException?new DOMException(`${o}: ${r.message}`,r.name):r instanceof Error?new r.constructor(`${o}: ${r.message}`):new Error(`${o}: ${r}`)}const Xt=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function yn(r){return r.join("|")}function gn(r){const o=Zt(r);let i=0,c=Xt.length-1;for(;i<=c;){const l=Math.floor((i+c)/2),h=Xt[l],v=Zt(h);if(v===o)return h;v{const i=r.match(/_(.+?)\.wasm$/);return i?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}`:o+r}};let ut=new WeakMap;function lt(r,o){var i;const c=ut.get(r);if(c!=null&&c.modulePromise&&o===void 0)return c.modulePromise;const l=(i=c==null?void 0:c.moduleOverrides)!=null?i:Pn,h=r({...l});return ut.set(r,{moduleOverrides:l,modulePromise:h}),h}function Tn(r,o){ut.set(r,{moduleOverrides:o})}async function En(r,o,i=Ce){const c={...Ce,...i},l=await lt(r),{size:h}=o,v=new Uint8Array(await o.arrayBuffer()),g=l._malloc(h);l.HEAPU8.set(v,g);const b=l.readBarcodesFromImage(g,h,Kt(l,c));l._free(g);const p=[];for(let C=0;C{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(o={}){var i=o,c,l;i.ready=new Promise((e,t)=>{c=e,l=t});var h=Object.assign({},i),v="./this.program",g=typeof window=="object",b=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var p="";function C(e){return i.locateFile?i.locateFile(e,p):p+e}var S;(g||b)&&(b?p=self.location.href:typeof document<"u"&&document.currentScript&&(p=document.currentScript.src),r&&(p=r),p.indexOf("blob:")!==0?p=p.substr(0,p.replace(/[?#].*/,"").lastIndexOf("/")+1):p="",b&&(S=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)})),i.print||console.log.bind(console);var $=i.printErr||console.error.bind(console);Object.assign(i,h),h=null,i.arguments&&i.arguments,i.thisProgram&&(v=i.thisProgram),i.quit&&i.quit;var U;i.wasmBinary&&(U=i.wasmBinary),typeof WebAssembly!="object"&&K("no native wasm support detected");var W,j=!1,k,R,Z,I,D,A,me,ce;function Se(){var e=W.buffer;i.HEAP8=k=new Int8Array(e),i.HEAP16=Z=new Int16Array(e),i.HEAPU8=R=new Uint8Array(e),i.HEAPU16=I=new Uint16Array(e),i.HEAP32=D=new Int32Array(e),i.HEAPU32=A=new Uint32Array(e),i.HEAPF32=me=new Float32Array(e),i.HEAPF64=ce=new Float64Array(e)}var Pe=[],De=[],Ae=[];function ze(){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)pt(i.preRun.shift());wt(Pe)}function ft(){wt(De)}function ht(){if(i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;)Re(i.postRun.shift());wt(Ae)}function pt(e){Pe.unshift(e)}function mt(e){De.unshift(e)}function Re(e){Ae.unshift(e)}var ae=0,ge=null;function vt(e){var t;ae++,(t=i.monitorRunDependencies)===null||t===void 0||t.call(i,ae)}function ve(e){var t;if(ae--,(t=i.monitorRunDependencies)===null||t===void 0||t.call(i,ae),ae==0&&ge){var n=ge;ge=null,n()}}function K(e){var t;(t=i.onAbort)===null||t===void 0||t.call(i,e),e="Aborted("+e+")",$(e),j=!0,e+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(e);throw l(n),n}var yt="data:application/octet-stream;base64,",Ge=e=>e.startsWith(yt),ye;ye="zxing_reader.wasm",Ge(ye)||(ye=C(ye));function Ye(e){if(e==ye&&U)return new Uint8Array(U);if(S)return S(e);throw"both async and sync fetching of the wasm failed"}function gt(e){return!U&&(g||b)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()}).catch(()=>Ye(e)):Promise.resolve().then(()=>Ye(e))}function Je(e,t,n){return gt(e).then(a=>WebAssembly.instantiate(a,t)).then(a=>a).then(n,a=>{$(`failed to asynchronously prepare wasm: ${a}`),K(a)})}function wa(e,t,n,a){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Ge(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(s=>{var u=WebAssembly.instantiateStreaming(s,n);return u.then(a,function(d){return $(`wasm streaming compile failed: ${d}`),$("falling back to ArrayBuffer instantiation"),Je(t,n,a)})}):Je(t,n,a)}function ba(){var e={a:ci};function t(a,s){return G=a.exports,W=G.ia,Se(),kr=G.ma,mt(G.ja),ve(),G}vt();function n(a){t(a.instance)}if(i.instantiateWasm)try{return i.instantiateWasm(e,t)}catch(a){$(`Module.instantiateWasm callback failed with error: ${a}`),l(a)}return wa(U,ye,e,n).catch(l),{}}var wt=e=>{for(;e.length>0;)e.shift()(i)};i.noExitRuntime;var Qe=[],Xe=0,Ca=e=>{var t=new bt(e);return t.get_caught()||(t.set_caught(!0),Xe--),t.set_rethrown(!1),Qe.push(t),Yr(t.excPtr),t.get_exception_ptr()},ue=0,$a=()=>{L(0,0);var e=Qe.pop();Gr(e.excPtr),ue=0};function bt(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){A[this.ptr+4>>2]=t},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(t){A[this.ptr+8>>2]=t},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,k[this.ptr+12>>0]=t},this.get_caught=function(){return k[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,k[this.ptr+13>>0]=t},this.get_rethrown=function(){return k[this.ptr+13>>0]!=0},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n)},this.set_adjusted_ptr=function(t){A[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=Qr(this.get_type());if(t)return A[this.excPtr>>2];var n=this.get_adjusted_ptr();return n!==0?n:this.excPtr}}var _a=e=>{throw ue||(ue=e),ue},Ct=e=>{var t=ue;if(!t)return je(0),0;var n=new bt(t);n.set_adjusted_ptr(t);var a=n.get_type();if(!a)return je(0),t;for(var s in e){var u=e[s];if(u===0||u===a)break;var d=n.ptr+16;if(Jr(u,a,d))return je(u),t}return je(a),t},Sa=()=>Ct([]),Pa=e=>Ct([e]),Ta=(e,t)=>Ct([e,t]),Ea=()=>{var e=Qe.pop();e||K("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(Qe.push(e),e.set_rethrown(!0),e.set_caught(!1),Xe++),ue=t,ue},Oa=(e,t,n)=>{var a=new bt(e);throw a.init(t,n),ue=e,Xe++,ue},Ma=()=>Xe,Ze={},$t=e=>{for(;e.length;){var t=e.pop(),n=e.pop();n(t)}};function _t(e){return this.fromWireType(D[e>>2])}var Te={},we={},Ke={},Pr,et=e=>{throw new Pr(e)},be=(e,t,n)=>{e.forEach(function(f){Ke[f]=t});function a(f){var m=n(f);m.length!==e.length&&et("Mismatched type converter count");for(var w=0;w{we.hasOwnProperty(f)?s[m]=we[f]:(u.push(f),Te.hasOwnProperty(f)||(Te[f]=[]),Te[f].push(()=>{s[m]=we[f],++d,d===u.length&&a(s)}))}),u.length===0&&a(s)},Da=e=>{var t=Ze[e];delete Ze[e];var n=t.rawConstructor,a=t.rawDestructor,s=t.fields,u=s.map(d=>d.getterReturnType).concat(s.map(d=>d.setterArgumentType));be([e],u,d=>{var f={};return s.forEach((m,w)=>{var _=m.fieldName,T=d[w],E=m.getter,M=m.getterContext,H=d[w+s.length],N=m.setter,F=m.setterContext;f[_]={read:Q=>T.fromWireType(E(M,Q)),write:(Q,y)=>{var P=[];N(F,Q,H.toWireType(P,y)),$t(P)}}}),[{name:t.name,fromWireType:m=>{var w={};for(var _ in f)w[_]=f[_].read(m);return a(m),w},toWireType:(m,w)=>{for(var _ in f)if(!(_ in w))throw new TypeError(`Missing field: "${_}"`);var T=n();for(_ in f)f[_].write(T,w[_]);return m!==null&&m.push(a,T),T},argPackAdvance:ie,readValueFromPointer:_t,destructorFunction:a}]})},Aa=(e,t,n,a,s)=>{},Ra=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Tr=e},Tr,J=e=>{for(var t="",n=e;R[n];)t+=Tr[R[n++]];return t},Ee,x=e=>{throw new Ee(e)};function xa(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var a=t.name;if(e||x(`type "${a}" must have a positive integer typeid pointer`),we.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;x(`Cannot register type '${a}' twice`)}if(we[e]=t,delete Ke[e],Te.hasOwnProperty(e)){var s=Te[e];delete Te[e],s.forEach(u=>u())}}function oe(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return xa(e,t,n)}var ie=8,ka=(e,t,n,a)=>{t=J(t),oe(e,{name:t,fromWireType:function(s){return!!s},toWireType:function(s,u){return u?n:a},argPackAdvance:ie,readValueFromPointer:function(s){return this.fromWireType(R[s])},destructorFunction:null})},Ia=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),St=e=>{function t(n){return n.$$.ptrType.registeredClass.name}x(t(e)+" instance already deleted")},Pt=!1,Er=e=>{},Fa=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Or=e=>{e.count.value-=1;var t=e.count.value===0;t&&Fa(e)},Mr=(e,t,n)=>{if(t===n)return e;if(n.baseClass===void 0)return null;var a=Mr(e,t,n.baseClass);return a===null?null:n.downcast(a)},Dr={},Ua=()=>Object.keys(Ie).length,Wa=()=>{var e=[];for(var t in Ie)Ie.hasOwnProperty(t)&&e.push(Ie[t]);return e},xe=[],Tt=()=>{for(;xe.length;){var e=xe.pop();e.$$.deleteScheduled=!1,e.delete()}},ke,ja=e=>{ke=e,xe.length&&ke&&ke(Tt)},La=()=>{i.getInheritedInstanceCount=Ua,i.getLiveInheritedInstances=Wa,i.flushPendingDeletes=Tt,i.setDelayFunction=ja},Ie={},Ha=(e,t)=>{for(t===void 0&&x("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Ba=(e,t)=>(t=Ha(e,t),Ie[t]),tt=(e,t)=>{(!t.ptrType||!t.ptr)&&et("makeClassHandle requires ptr and ptrType");var n=!!t.smartPtrType,a=!!t.smartPtr;return n!==a&&et("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Fe(Object.create(e,{$$:{value:t,writable:!0}}))};function Va(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=Ba(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var a=n.clone();return this.destructor(e),a}function s(){return this.isSmartPointer?tt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):tt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var u=this.registeredClass.getActualType(t),d=Dr[u];if(!d)return s.call(this);var f;this.isConst?f=d.constPointerType:f=d.pointerType;var m=Mr(t,this.registeredClass,f.registeredClass);return m===null?s.call(this):this.isSmartPointer?tt(f.registeredClass.instancePrototype,{ptrType:f,ptr:m,smartPtrType:this,smartPtr:e}):tt(f.registeredClass.instancePrototype,{ptrType:f,ptr:m})}var Fe=e=>typeof FinalizationRegistry>"u"?(Fe=t=>t,e):(Pt=new FinalizationRegistry(t=>{Or(t.$$)}),Fe=t=>{var n=t.$$,a=!!n.smartPtr;if(a){var s={$$:n};Pt.register(t,s,t)}return t},Er=t=>Pt.unregister(t),Fe(e)),qa=()=>{Object.assign(rt.prototype,{isAliasOf(e){if(!(this instanceof rt)||!(e instanceof rt))return!1;var t=this.$$.ptrType.registeredClass,n=this.$$.ptr;e.$$=e.$$;for(var a=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;a.baseClass;)s=a.upcast(s),a=a.baseClass;return t===a&&n===s},clone(){if(this.$$.ptr||St(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Fe(Object.create(Object.getPrototypeOf(this),{$$:{value:Ia(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&x("Object already scheduled for deletion"),Er(this),Or(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&x("Object already scheduled for deletion"),xe.push(this),xe.length===1&&ke&&ke(Tt),this.$$.deleteScheduled=!0,this}})};function rt(){}var Ue=(e,t)=>Object.defineProperty(t,"name",{value:e}),Ar=(e,t,n)=>{if(e[t].overloadTable===void 0){var a=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[a.argCount]=a}},Et=(e,t,n)=>{i.hasOwnProperty(e)?((n===void 0||i[e].overloadTable!==void 0&&i[e].overloadTable[n]!==void 0)&&x(`Cannot register public name '${e}' twice`),Ar(i,e,e),i.hasOwnProperty(n)&&x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`),i[e].overloadTable[n]=t):(i[e]=t,n!==void 0&&(i[e].numArguments=n))},Na=48,za=57,Ga=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=Na&&t<=za?`_${e}`:e};function Ya(e,t,n,a,s,u,d,f){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=a,this.baseClass=s,this.getActualType=u,this.upcast=d,this.downcast=f,this.pureVirtualFunctions=[]}var Ot=(e,t,n)=>{for(;t!==n;)t.upcast||x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Ja(e,t){if(t===null)return this.isReference&&x(`null is not a valid ${this.name}`),0;t.$$||x(`Cannot pass "${xt(t)}" as a ${this.name}`),t.$$.ptr||x(`Cannot pass deleted object as a pointer of type ${this.name}`);var n=t.$$.ptrType.registeredClass,a=Ot(t.$$.ptr,n,this.registeredClass);return a}function Qa(e,t){var n;if(t===null)return this.isReference&&x(`null is not a valid ${this.name}`),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;(!t||!t.$$)&&x(`Cannot pass "${xt(t)}" as a ${this.name}`),t.$$.ptr||x(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&x(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var a=t.$$.ptrType.registeredClass;if(n=Ot(t.$$.ptr,a,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&x("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:x(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var s=t.clone();n=this.rawShare(n,le.toHandle(()=>s.delete())),e!==null&&e.push(this.rawDestructor,n)}break;default:x("Unsupporting sharing policy")}return n}function Xa(e,t){if(t===null)return this.isReference&&x(`null is not a valid ${this.name}`),0;t.$$||x(`Cannot pass "${xt(t)}" as a ${this.name}`),t.$$.ptr||x(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass,a=Ot(t.$$.ptr,n,this.registeredClass);return a}function Rr(e){return this.fromWireType(A[e>>2])}var Za=()=>{Object.assign(nt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var t;(t=this.rawDestructor)===null||t===void 0||t.call(this,e)},argPackAdvance:ie,readValueFromPointer:Rr,deleteObject(e){e!==null&&e.delete()},fromWireType:Va})};function nt(e,t,n,a,s,u,d,f,m,w,_){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=a,this.isSmartPointer=s,this.pointeeType=u,this.sharingPolicy=d,this.rawGetPointee=f,this.rawConstructor=m,this.rawShare=w,this.rawDestructor=_,!s&&t.baseClass===void 0?a?(this.toWireType=Ja,this.destructorFunction=null):(this.toWireType=Xa,this.destructorFunction=null):this.toWireType=Qa}var xr=(e,t,n)=>{i.hasOwnProperty(e)||et("Replacing nonexistant public symbol"),i[e].overloadTable!==void 0&&n!==void 0?i[e].overloadTable[n]=t:(i[e]=t,i[e].argCount=n)},Ka=(e,t,n)=>{var a=i["dynCall_"+e];return n&&n.length?a.apply(null,[t].concat(n)):a.call(null,t)},at=[],kr,B=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=kr.get(e)),t},eo=(e,t,n)=>{if(e.includes("j"))return Ka(e,t,n);var a=B(t).apply(null,n);return a},to=(e,t)=>{var n=[];return function(){return n.length=0,Object.assign(n,arguments),eo(e,t,n)}},re=(e,t)=>{e=J(e);function n(){return e.includes("j")?to(e,t):B(t)}var a=n();return typeof a!="function"&&x(`unknown function pointer with signature ${e}: ${t}`),a},ro=(e,t)=>{var n=Ue(t,function(a){this.name=t,this.message=a;var s=new Error(a).stack;s!==void 0&&(this.stack=this.toString()+` +`+s.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},n},Ir,Fr=e=>{var t=zr(e),n=J(t);return de(t),n},ot=(e,t)=>{var n=[],a={};function s(u){if(!a[u]&&!we[u]){if(Ke[u]){Ke[u].forEach(s);return}n.push(u),a[u]=!0}}throw t.forEach(s),new Ir(`${e}: `+n.map(Fr).join([", "]))},no=(e,t,n,a,s,u,d,f,m,w,_,T,E)=>{_=J(_),u=re(s,u),f&&(f=re(d,f)),w&&(w=re(m,w)),E=re(T,E);var M=Ga(_);Et(M,function(){ot(`Cannot construct ${_} due to unbound types`,[a])}),be([e,t,n],a?[a]:[],function(H){H=H[0];var N,F;a?(N=H.registeredClass,F=N.instancePrototype):F=rt.prototype;var Q=Ue(_,function(){if(Object.getPrototypeOf(this)!==y)throw new Ee("Use 'new' to construct "+_);if(P.constructor_body===void 0)throw new Ee(_+" has no accessible constructor");var en=P.constructor_body[arguments.length];if(en===void 0)throw new Ee(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`);return en.apply(this,arguments)}),y=Object.create(F,{constructor:{value:Q}});Q.prototype=y;var P=new Ya(_,Q,y,E,N,u,f,w);if(P.baseClass){var z,Y;(Y=(z=P.baseClass).__derivedClasses)!==null&&Y!==void 0||(z.__derivedClasses=[]),P.baseClass.__derivedClasses.push(P)}var Oe=new nt(_,P,!0,!1,!1),ct=new nt(_+"*",P,!1,!1,!1),Kr=new nt(_+" const*",P,!1,!0,!1);return Dr[e]={pointerType:ct,constPointerType:Kr},xr(M,Q),[Oe,ct,Kr]})},Mt=(e,t)=>{for(var n=[],a=0;a>2]);return n};function ao(e){for(var t=1;t{var d=Mt(t,n);s=re(a,s),be([],[e],function(f){f=f[0];var m=`constructor ${f.name}`;if(f.registeredClass.constructor_body===void 0&&(f.registeredClass.constructor_body=[]),f.registeredClass.constructor_body[t-1]!==void 0)throw new Ee(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return f.registeredClass.constructor_body[t-1]=()=>{ot(`Cannot construct ${f.name} due to unbound types`,d)},be([],d,w=>(w.splice(1,0,null),f.registeredClass.constructor_body[t-1]=Dt(m,w,null,s,u),[])),[]})},Ur=e=>{e=e.trim();const t=e.indexOf("(");return t!==-1?e.substr(0,t):e},io=(e,t,n,a,s,u,d,f,m)=>{var w=Mt(n,a);t=J(t),t=Ur(t),u=re(s,u),be([],[e],function(_){_=_[0];var T=`${_.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),f&&_.registeredClass.pureVirtualFunctions.push(t);function E(){ot(`Cannot call ${T} due to unbound types`,w)}var M=_.registeredClass.instancePrototype,H=M[t];return H===void 0||H.overloadTable===void 0&&H.className!==_.name&&H.argCount===n-2?(E.argCount=n-2,E.className=_.name,M[t]=E):(Ar(M,t,T),M[t].overloadTable[n-2]=E),be([],w,function(N){var F=Dt(T,N,_,u,d);return M[t].overloadTable===void 0?(F.argCount=n-2,M[t]=F):M[t].overloadTable[n-2]=F,[]}),[]})};function so(){Object.assign(Wr.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Wr(){this.allocated=[void 0],this.freelist=[]}var te=new Wr,At=e=>{e>=te.reserved&&--te.get(e).refcount===0&&te.free(e)},co=()=>{for(var e=0,t=te.reserved;t{te.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),te.reserved=te.allocated.length,i.count_emval_handles=co},le={toValue:e=>(e||x("Cannot use deleted val. handle = "+e),te.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return te.allocate({refcount:1,value:e})}}},lo=(e,t)=>{t=J(t),oe(e,{name:t,fromWireType:n=>{var a=le.toValue(n);return At(n),a},toWireType:(n,a)=>le.toHandle(a),argPackAdvance:ie,readValueFromPointer:_t,destructorFunction:null})},fo=(e,t,n)=>{switch(t){case 1:return n?function(a){return this.fromWireType(k[a>>0])}:function(a){return this.fromWireType(R[a>>0])};case 2:return n?function(a){return this.fromWireType(Z[a>>1])}:function(a){return this.fromWireType(I[a>>1])};case 4:return n?function(a){return this.fromWireType(D[a>>2])}:function(a){return this.fromWireType(A[a>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ho=(e,t,n,a)=>{t=J(t);function s(){}s.values={},oe(e,{name:t,constructor:s,fromWireType:function(u){return this.constructor.values[u]},toWireType:(u,d)=>d.value,argPackAdvance:ie,readValueFromPointer:fo(t,n,a),destructorFunction:null}),Et(t,s)},Rt=(e,t)=>{var n=we[e];return n===void 0&&x(t+" has unknown type "+Fr(e)),n},po=(e,t,n)=>{var a=Rt(e,"enum");t=J(t);var s=a.constructor,u=Object.create(a.constructor.prototype,{value:{value:n},constructor:{value:Ue(`${a.name}_${t}`,function(){})}});s.values[n]=u,s[t]=u},xt=e=>{if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},mo=(e,t)=>{switch(t){case 4:return function(n){return this.fromWireType(me[n>>2])};case 8:return function(n){return this.fromWireType(ce[n>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},vo=(e,t,n)=>{t=J(t),oe(e,{name:t,fromWireType:a=>a,toWireType:(a,s)=>s,argPackAdvance:ie,readValueFromPointer:mo(t,n),destructorFunction:null})},yo=(e,t,n,a,s,u,d)=>{var f=Mt(t,n);e=J(e),e=Ur(e),s=re(a,s),Et(e,function(){ot(`Cannot call ${e} due to unbound types`,f)},t-1),be([],f,function(m){var w=[m[0],null].concat(m.slice(1));return xr(e,Dt(e,w,null,s,u),t-1),[]})},go=(e,t,n)=>{switch(t){case 1:return n?a=>k[a>>0]:a=>R[a>>0];case 2:return n?a=>Z[a>>1]:a=>I[a>>1];case 4:return n?a=>D[a>>2]:a=>A[a>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},wo=(e,t,n,a,s)=>{t=J(t);var u=_=>_;if(a===0){var d=32-8*n;u=_=>_<>>d}var f=t.includes("unsigned"),m=(_,T)=>{},w;f?w=function(_,T){return m(T,this.name),T>>>0}:w=function(_,T){return m(T,this.name),T},oe(e,{name:t,fromWireType:u,toWireType:w,argPackAdvance:ie,readValueFromPointer:go(t,n,a!==0),destructorFunction:null})},bo=(e,t,n)=>{var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=a[t];function u(d){var f=A[d>>2],m=A[d+4>>2];return new s(k.buffer,m,f)}n=J(n),oe(e,{name:n,fromWireType:u,argPackAdvance:ie,readValueFromPointer:u},{ignoreDuplicateRegistrations:!0})},jr=(e,t,n,a)=>{if(!(a>0))return 0;for(var s=n,u=n+a-1,d=0;d=55296&&f<=57343){var m=e.charCodeAt(++d);f=65536+((f&1023)<<10)|m&1023}if(f<=127){if(n>=u)break;t[n++]=f}else if(f<=2047){if(n+1>=u)break;t[n++]=192|f>>6,t[n++]=128|f&63}else if(f<=65535){if(n+2>=u)break;t[n++]=224|f>>12,t[n++]=128|f>>6&63,t[n++]=128|f&63}else{if(n+3>=u)break;t[n++]=240|f>>18,t[n++]=128|f>>12&63,t[n++]=128|f>>6&63,t[n++]=128|f&63}}return t[n]=0,n-s},Co=(e,t,n)=>jr(e,R,t,n),Lr=e=>{for(var t=0,n=0;n=55296&&a<=57343?(t+=4,++n):t+=3}return t},Hr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,$o=(e,t,n)=>{for(var a=t+n,s=t;e[s]&&!(s>=a);)++s;if(s-t>16&&e.buffer&&Hr)return Hr.decode(e.subarray(t,s));for(var u="";t>10,56320|w&1023)}}return u},kt=(e,t)=>e?$o(R,e,t):"",_o=(e,t)=>{t=J(t);var n=t==="std::string";oe(e,{name:t,fromWireType(a){var s=A[a>>2],u=a+4,d;if(n)for(var f=u,m=0;m<=s;++m){var w=u+m;if(m==s||R[w]==0){var _=w-f,T=kt(f,_);d===void 0?d=T:(d+="\0",d+=T),f=w+1}}else{for(var E=new Array(s),m=0;m>2]=u,n&&d)Co(s,m,u+1);else if(d)for(var w=0;w255&&(de(m),x("String has UTF-16 code units that do not fit in 8 bits")),R[m+w]=_}else for(var w=0;w{for(var n=e,a=n>>1,s=a+t/2;!(a>=s)&&I[a];)++a;if(n=a<<1,n-e>32&&Br)return Br.decode(R.subarray(e,n));for(var u="",d=0;!(d>=t/2);++d){var f=Z[e+d*2>>1];if(f==0)break;u+=String.fromCharCode(f)}return u},Po=(e,t,n)=>{var a;if((a=n)!==null&&a!==void 0||(n=2147483647),n<2)return 0;n-=2;for(var s=t,u=n>1]=f,t+=2}return Z[t>>1]=0,t-s},To=e=>e.length*2,Eo=(e,t)=>{for(var n=0,a="";!(n>=t/4);){var s=D[e+n*4>>2];if(s==0)break;if(++n,s>=65536){var u=s-65536;a+=String.fromCharCode(55296|u>>10,56320|u&1023)}else a+=String.fromCharCode(s)}return a},Oo=(e,t,n)=>{var a;if((a=n)!==null&&a!==void 0||(n=2147483647),n<4)return 0;for(var s=t,u=s+n-4,d=0;d=55296&&f<=57343){var m=e.charCodeAt(++d);f=65536+((f&1023)<<10)|m&1023}if(D[t>>2]=f,t+=4,t+4>u)break}return D[t>>2]=0,t-s},Mo=e=>{for(var t=0,n=0;n=55296&&a<=57343&&++n,t+=4}return t},Do=(e,t,n)=>{n=J(n);var a,s,u,d,f;t===2?(a=So,s=Po,d=To,u=()=>I,f=1):t===4&&(a=Eo,s=Oo,d=Mo,u=()=>A,f=2),oe(e,{name:n,fromWireType:m=>{for(var w=A[m>>2],_=u(),T,E=m+4,M=0;M<=w;++M){var H=m+4+M*t;if(M==w||_[H>>f]==0){var N=H-E,F=a(E,N);T===void 0?T=F:(T+="\0",T+=F),E=H+t}}return de(m),T},toWireType:(m,w)=>{typeof w!="string"&&x(`Cannot pass non-string to C++ string type ${n}`);var _=d(w),T=Ut(4+_+t);return A[T>>2]=_>>f,s(w,T+4,_+t),m!==null&&m.push(de,T),T},argPackAdvance:ie,readValueFromPointer:_t,destructorFunction(m){de(m)}})},Ao=(e,t,n,a,s,u)=>{Ze[e]={name:J(t),rawConstructor:re(n,a),rawDestructor:re(s,u),fields:[]}},Ro=(e,t,n,a,s,u,d,f,m,w)=>{Ze[e].fields.push({fieldName:J(t),getterReturnType:n,getter:re(a,s),getterContext:u,setterArgumentType:d,setter:re(f,m),setterContext:w})},xo=(e,t)=>{t=J(t),oe(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:(n,a)=>{}})},It=[],ko=(e,t,n,a)=>(e=It[e],t=le.toValue(t),e(null,t,n,a)),Io={},Fo=e=>{var t=Io[e];return t===void 0?J(e):t},Vr=()=>{if(typeof globalThis=="object")return globalThis;function e(t){t.$$$embind_global$$$=t;var n=typeof $$$embind_global$$$=="object"&&t.$$$embind_global$$$==t;return n||delete t.$$$embind_global$$$,n}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Uo=e=>e===0?le.toHandle(Vr()):(e=Fo(e),le.toHandle(Vr()[e])),Wo=e=>{var t=It.length;return It.push(e),t},jo=(e,t)=>{for(var n=new Array(e),a=0;a>2],"parameter "+a);return n},Lo=Reflect.construct,Ho=(e,t,n)=>{var a=[],s=e.toWireType(a,n);return a.length&&(A[t>>2]=le.toHandle(a)),s},Bo=(e,t,n)=>{var a=jo(e,t),s=a.shift();e--;var u=new Array(e),d=(m,w,_,T)=>{for(var E=0,M=0;Mm.name).join(", ")}) => ${s.name}>`;return Wo(Ue(f,d))},Vo=e=>{e>4&&(te.get(e).refcount+=1)},qo=e=>{var t=le.toValue(e);$t(t),At(e)},No=(e,t)=>{e=Rt(e,"_emval_take_value");var n=e.readValueFromPointer(t);return le.toHandle(n)},zo=()=>{K("")},Go=(e,t,n)=>R.copyWithin(e,t,t+n),Yo=()=>2147483648,Jo=e=>{var t=W.buffer,n=(e-t.byteLength+65535)/65536;try{return W.grow(n),Se(),1}catch(a){}},Qo=e=>{var t=R.length;e>>>=0;var n=Yo();if(e>n)return!1;for(var a=(m,w)=>m+(w-m%w)%w,s=1;s<=4;s*=2){var u=t*(1+.2/s);u=Math.min(u,e+100663296);var d=Math.min(n,a(Math.max(e,u),65536)),f=Jo(d);if(f)return!0}return!1},Ft={},Xo=()=>v||"./this.program",We=()=>{if(!We.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:Xo()};for(var n in Ft)Ft[n]===void 0?delete t[n]:t[n]=Ft[n];var a=[];for(var n in t)a.push(`${n}=${t[n]}`);We.strings=a}return We.strings},Zo=(e,t)=>{for(var n=0;n>0]=e.charCodeAt(n);k[t>>0]=0},Ko=(e,t)=>{var n=0;return We().forEach((a,s)=>{var u=t+n;A[e+s*4>>2]=u,Zo(a,u),n+=a.length+1}),0},ei=(e,t)=>{var n=We();A[e>>2]=n.length;var a=0;return n.forEach(s=>a+=s.length+1),A[t>>2]=a,0},ti=e=>e,it=e=>e%4===0&&(e%100!==0||e%400===0),ri=(e,t)=>{for(var n=0,a=0;a<=t;n+=e[a++]);return n},qr=[31,29,31,30,31,30,31,31,30,31,30,31],Nr=[31,28,31,30,31,30,31,31,30,31,30,31],ni=(e,t)=>{for(var n=new Date(e.getTime());t>0;){var a=it(n.getFullYear()),s=n.getMonth(),u=(a?qr:Nr)[s];if(t>u-n.getDate())t-=u-n.getDate()+1,n.setDate(1),s<11?n.setMonth(s+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1));else return n.setDate(n.getDate()+t),n}return n};function ai(e,t,n){var a=Lr(e)+1,s=new Array(a);return jr(e,s,0,s.length),s}var oi=(e,t)=>{k.set(e,t)},ii=(e,t,n,a)=>{var s=A[a+40>>2],u={tm_sec:D[a>>2],tm_min:D[a+4>>2],tm_hour:D[a+8>>2],tm_mday:D[a+12>>2],tm_mon:D[a+16>>2],tm_year:D[a+20>>2],tm_wday:D[a+24>>2],tm_yday:D[a+28>>2],tm_isdst:D[a+32>>2],tm_gmtoff:D[a+36>>2],tm_zone:s?kt(s):""},d=kt(n),f={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var m in f)d=d.replace(new RegExp(m,"g"),f[m]);var w=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],_=["January","February","March","April","May","June","July","August","September","October","November","December"];function T(y,P,z){for(var Y=typeof y=="number"?y.toString():y||"";Y.length0?1:0}var Y;return(Y=z(y.getFullYear()-P.getFullYear()))===0&&(Y=z(y.getMonth()-P.getMonth()))===0&&(Y=z(y.getDate()-P.getDate())),Y}function H(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function N(y){var P=ni(new Date(y.tm_year+1900,0,1),y.tm_yday),z=new Date(P.getFullYear(),0,4),Y=new Date(P.getFullYear()+1,0,4),Oe=H(z),ct=H(Y);return M(Oe,P)<=0?M(ct,P)<=0?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}var F={"%a":y=>w[y.tm_wday].substring(0,3),"%A":y=>w[y.tm_wday],"%b":y=>_[y.tm_mon].substring(0,3),"%B":y=>_[y.tm_mon],"%C":y=>{var P=y.tm_year+1900;return E(P/100|0,2)},"%d":y=>E(y.tm_mday,2),"%e":y=>T(y.tm_mday,2," "),"%g":y=>N(y).toString().substring(2),"%G":y=>N(y),"%H":y=>E(y.tm_hour,2),"%I":y=>{var P=y.tm_hour;return P==0?P=12:P>12&&(P-=12),E(P,2)},"%j":y=>E(y.tm_mday+ri(it(y.tm_year+1900)?qr:Nr,y.tm_mon-1),3),"%m":y=>E(y.tm_mon+1,2),"%M":y=>E(y.tm_min,2),"%n":()=>` +`,"%p":y=>y.tm_hour>=0&&y.tm_hour<12?"AM":"PM","%S":y=>E(y.tm_sec,2),"%t":()=>" ","%u":y=>y.tm_wday||7,"%U":y=>{var P=y.tm_yday+7-y.tm_wday;return E(Math.floor(P/7),2)},"%V":y=>{var P=Math.floor((y.tm_yday+7-(y.tm_wday+6)%7)/7);if((y.tm_wday+371-y.tm_yday-2)%7<=2&&P++,P){if(P==53){var z=(y.tm_wday+371-y.tm_yday)%7;z!=4&&(z!=3||!it(y.tm_year))&&(P=1)}}else{P=52;var Y=(y.tm_wday+7-y.tm_yday-1)%7;(Y==4||Y==5&&it(y.tm_year%400-1))&&P++}return E(P,2)},"%w":y=>y.tm_wday,"%W":y=>{var P=y.tm_yday+7-(y.tm_wday+6)%7;return E(Math.floor(P/7),2)},"%y":y=>(y.tm_year+1900).toString().substring(2),"%Y":y=>y.tm_year+1900,"%z":y=>{var P=y.tm_gmtoff,z=P>=0;return P=Math.abs(P)/60,P=P/60*100+P%60,(z?"+":"-")+("0000"+P).slice(-4)},"%Z":y=>y.tm_zone,"%%":()=>"%"};d=d.replace(/%%/g,"\0\0");for(var m in F)d.includes(m)&&(d=d.replace(new RegExp(m,"g"),F[m](u)));d=d.replace(/\0\0/g,"%");var Q=ai(d);return Q.length>t?0:(oi(Q,e),Q.length-1)},si=(e,t,n,a,s)=>ii(e,t,n,a);Pr=i.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Ra(),Ee=i.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},qa(),La(),Za(),Ir=i.UnboundTypeError=ro(Error,"UnboundTypeError"),so(),uo();var ci={s:Ca,u:$a,b:Sa,g:Pa,q:Ta,J:Ea,f:Oa,V:Ma,d:_a,da:Da,Q:Aa,_:ka,ca:no,ba:oo,w:io,Y:lo,x:ho,h:po,L:vo,M:yo,t:wo,o:bo,K:_o,C:Do,A:Ao,ea:Ro,$:xo,R:ko,ha:At,fa:Uo,Z:Bo,N:Vo,O:qo,aa:No,B:zo,X:Go,W:Qo,T:Ko,U:ei,E:Si,D:hi,F:_i,n:Pi,a:ui,e:mi,m:fi,k:yi,H:Ci,v:wi,G:$i,z:Ei,P:Mi,l:vi,j:pi,c:di,p:li,I:bi,r:Ti,i:gi,y:Oi,ga:ti,S:si},G=ba(),de=i._free=e=>(de=i._free=G.ka)(e),Ut=i._malloc=e=>(Ut=i._malloc=G.la)(e),zr=e=>(zr=G.na)(e),L=(e,t)=>(L=G.oa)(e,t),je=e=>(je=G.pa)(e),V=()=>(V=G.qa)(),q=e=>(q=G.ra)(e),Gr=e=>(Gr=G.sa)(e),Yr=e=>(Yr=G.ta)(e),Jr=(e,t,n)=>(Jr=G.ua)(e,t,n),Qr=e=>(Qr=G.va)(e);i.dynCall_viijii=(e,t,n,a,s,u,d)=>(i.dynCall_viijii=G.wa)(e,t,n,a,s,u,d);var Xr=i.dynCall_jiiii=(e,t,n,a,s)=>(Xr=i.dynCall_jiiii=G.xa)(e,t,n,a,s);i.dynCall_iiiiij=(e,t,n,a,s,u,d)=>(i.dynCall_iiiiij=G.ya)(e,t,n,a,s,u,d),i.dynCall_iiiiijj=(e,t,n,a,s,u,d,f,m)=>(i.dynCall_iiiiijj=G.za)(e,t,n,a,s,u,d,f,m),i.dynCall_iiiiiijj=(e,t,n,a,s,u,d,f,m,w)=>(i.dynCall_iiiiiijj=G.Aa)(e,t,n,a,s,u,d,f,m,w);function ui(e,t){var n=V();try{return B(e)(t)}catch(a){if(q(n),a!==a+0)throw a;L(1,0)}}function li(e,t,n,a){var s=V();try{B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function di(e,t,n){var a=V();try{B(e)(t,n)}catch(s){if(q(a),s!==s+0)throw s;L(1,0)}}function fi(e,t,n,a){var s=V();try{return B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function hi(e,t,n,a,s){var u=V();try{return B(e)(t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}function pi(e,t){var n=V();try{B(e)(t)}catch(a){if(q(n),a!==a+0)throw a;L(1,0)}}function mi(e,t,n){var a=V();try{return B(e)(t,n)}catch(s){if(q(a),s!==s+0)throw s;L(1,0)}}function vi(e){var t=V();try{B(e)()}catch(n){if(q(t),n!==n+0)throw n;L(1,0)}}function yi(e,t,n,a,s){var u=V();try{return B(e)(t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}function gi(e,t,n,a,s,u,d,f,m,w,_){var T=V();try{B(e)(t,n,a,s,u,d,f,m,w,_)}catch(E){if(q(T),E!==E+0)throw E;L(1,0)}}function wi(e,t,n,a,s,u,d){var f=V();try{return B(e)(t,n,a,s,u,d)}catch(m){if(q(f),m!==m+0)throw m;L(1,0)}}function bi(e,t,n,a,s){var u=V();try{B(e)(t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}function Ci(e,t,n,a,s,u){var d=V();try{return B(e)(t,n,a,s,u)}catch(f){if(q(d),f!==f+0)throw f;L(1,0)}}function $i(e,t,n,a,s,u,d,f){var m=V();try{return B(e)(t,n,a,s,u,d,f)}catch(w){if(q(m),w!==w+0)throw w;L(1,0)}}function _i(e,t,n,a){var s=V();try{return B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function Si(e,t,n,a){var s=V();try{return B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function Pi(e){var t=V();try{return B(e)()}catch(n){if(q(t),n!==n+0)throw n;L(1,0)}}function Ti(e,t,n,a,s,u,d,f){var m=V();try{B(e)(t,n,a,s,u,d,f)}catch(w){if(q(m),w!==w+0)throw w;L(1,0)}}function Ei(e,t,n,a,s,u,d,f,m,w,_,T){var E=V();try{return B(e)(t,n,a,s,u,d,f,m,w,_,T)}catch(M){if(q(E),M!==M+0)throw M;L(1,0)}}function Oi(e,t,n,a,s,u,d,f,m,w,_,T,E,M,H,N){var F=V();try{B(e)(t,n,a,s,u,d,f,m,w,_,T,E,M,H,N)}catch(Q){if(q(F),Q!==Q+0)throw Q;L(1,0)}}function Mi(e,t,n,a,s){var u=V();try{return Xr(e,t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}var st;ge=function e(){st||Zr(),st||(ge=e)};function Zr(){if(ae>0||(ze(),ae>0))return;function e(){st||(st=!0,i.calledRun=!0,!j&&(ft(),c(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),ht()))}i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),e()},1)):e()}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return Zr(),o.ready}})();function Mn(r){return lt(He,r)}function Dn(r){return Tn(He,r)}async function An(r,o){return En(He,r,o)}async function Rn(r,o){return On(He,r,o)}var Me;class Be extends EventTarget{constructor(o={}){var i;super(),tn(this,Me,void 0);try{const c=(i=o==null?void 0:o.formats)==null?void 0:i.filter(l=>l!=="unknown");if((c==null?void 0:c.length)===0)throw new TypeError("Hint option provided, but is empty.");c==null||c.forEach(l=>{if(!Le.has(l))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.`)}),rn(this,Me,c!=null?c:[]),Mn().then(l=>{this.dispatchEvent(new CustomEvent("load",{detail:l}))}).catch(l=>{this.dispatchEvent(new CustomEvent("error",{detail:l}))})}catch(c){throw Qt(c,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return nn.filter(o=>o!=="unknown")}async detect(o){try{const i=await dn(o);if(i===null)return[];let c;try{Yt(i)?c=await An(i,{tryHarder:!0,formats:jt(this,Me).map(l=>Le.get(l))}):c=await Rn(i,{tryHarder:!0,formats:jt(this,Me).map(l=>Le.get(l))})}catch(l){throw console.error(l),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return c.map(l=>{const{topLeft:{x:h,y:v},topRight:{x:g,y:b},bottomLeft:{x:p,y:C},bottomRight:{x:S,y:$}}=l.position,U=Math.min(h,g,p,S),W=Math.min(v,b,C,$),j=Math.max(h,g,p,S),k=Math.max(v,b,C,$);return{boundingBox:new DOMRectReadOnly(U,W,j-U,k-W),rawValue:l.text,format:an(l.format),cornerPoints:[{x:h,y:v},{x:g,y:b},{x:S,y:$},{x:p,y:C}]}})}catch(i){throw Qt(i,"Failed to execute 'detect' on 'BarcodeDetector'")}}}Me=new WeakMap;const dt=(r,o,i="error")=>{let c,l;const h=new Promise((v,g)=>{c=v,l=g,r.addEventListener(o,c),r.addEventListener(i,l)});return h.finally(()=>{r.removeEventListener(o,c),r.removeEventListener(i,l)}),h},tr=r=>new Promise(o=>setTimeout(o,r));class xn extends Error{constructor(){super("can't process cross-origin image"),this.name="DropImageFetchError"}}class rr extends Error{constructor(){super("this browser has no Stream API support"),this.name="StreamApiNotSupportedError"}}class kn extends Error{constructor(){super("camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP."),this.name="InsecureContextError"}}class In extends Error{constructor(){super("Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)"),this.name="StreamLoadTimeoutError"}}let nr;async function Fn(r){if(window.BarcodeDetector===void 0)return console.debug("[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill."),new Be({formats:r});const o=await window.BarcodeDetector.getSupportedFormats(),i=r.filter(c=>!o.includes(c));return i.length>0?(console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`),new Be({formats:r})):(console.debug("[vue-qrcode-reader] Will use native BarcodeDetector."),new window.BarcodeDetector({formats:r}))}async function ar(r){nr=await Fn(r)}const Un=async(r,{detectHandler:o,locateHandler:i,minDelay:c,formats:l})=>{console.debug("[vue-qrcode-reader] start scanning"),await ar(l);const h=v=>async g=>{if(r.readyState===0)console.debug("[vue-qrcode-reader] stop scanning: video element readyState is 0");else{const{lastScanned:b,contentBefore:p,lastScanHadContent:C}=v;if(g-b!p.includes(j.rawValue));$&&o(S);const U=S.length>0;U&&i(S),!U&&C&&i(S);const W={lastScanned:g,lastScanHadContent:U,contentBefore:$?S.map(j=>j.rawValue):p};window.requestAnimationFrame(h(W))}}};h({lastScanned:performance.now(),contentBefore:[],lastScanHadContent:!1})(performance.now())},Wn=async r=>{if(r.startsWith("http")&&r.includes(location.host)===!1)throw new xn;const o=document.createElement("img");return o.src=r,await dt(o,"load"),o},or=async(r,o=["qr_code"])=>await new Be({formats:o}).detect(r),jn=async(r,o=["qr_code"])=>{const i=new Be({formats:o}),c=await Wn(r);return await i.detect(c)};var ir={},X={};Object.defineProperty(X,"__esModule",{value:!0}),X.compactObject=lr,X.deprecated=Yn;var Ln=X.detectBrowser=Jn;X.disableLog=Nn,X.disableWarnings=zn,X.extractVersion=Ve,X.filterStats=Qn,X.log=Gn,X.walkStats=qe,X.wrapPeerConnectionEvent=qn;function Hn(r,o,i){return o=Bn(o),o in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i,r}function Bn(r){var o=Vn(r,"string");return fe(o)==="symbol"?o:String(o)}function Vn(r,o){if(fe(r)!=="object"||r===null)return r;var i=r[Symbol.toPrimitive];if(i!==void 0){var c=i.call(r,o||"default");if(fe(c)!=="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(o==="string"?String:Number)(r)}function fe(r){"@babel/helpers - typeof";return fe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},fe(r)}var sr=!0,cr=!0;function Ve(r,o,i){var c=r.match(o);return c&&c.length>=i&&parseInt(c[i],10)}function qn(r,o,i){if(r.RTCPeerConnection){var c=r.RTCPeerConnection.prototype,l=c.addEventListener;c.addEventListener=function(v,g){if(v!==o)return l.apply(this,arguments);var b=function(C){var S=i(C);S&&(g.handleEvent?g.handleEvent(S):g(S))};return this._eventMap=this._eventMap||{},this._eventMap[o]||(this._eventMap[o]=new Map),this._eventMap[o].set(g,b),l.apply(this,[v,b])};var h=c.removeEventListener;c.removeEventListener=function(v,g){if(v!==o||!this._eventMap||!this._eventMap[o])return h.apply(this,arguments);if(!this._eventMap[o].has(g))return h.apply(this,arguments);var b=this._eventMap[o].get(g);return this._eventMap[o].delete(g),this._eventMap[o].size===0&&delete this._eventMap[o],Object.keys(this._eventMap).length===0&&delete this._eventMap,h.apply(this,[v,b])},Object.defineProperty(c,"on"+o,{get:function(){return this["_on"+o]},set:function(g){this["_on"+o]&&(this.removeEventListener(o,this["_on"+o]),delete this["_on"+o]),g&&this.addEventListener(o,this["_on"+o]=g)},enumerable:!0,configurable:!0})}}function Nn(r){return typeof r!="boolean"?new Error("Argument type: "+fe(r)+". Please use a boolean."):(sr=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function zn(r){return typeof r!="boolean"?new Error("Argument type: "+fe(r)+". Please use a boolean."):(cr=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function Gn(){if((typeof window>"u"?"undefined":fe(window))==="object"){if(sr)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Yn(r,o){cr&&console.warn(r+" is deprecated, please use "+o+" instead.")}function Jn(r){var o={browser:null,version:null};if(typeof r>"u"||!r.navigator||!r.navigator.userAgent)return o.browser="Not a browser.",o;var i=r.navigator;if(i.mozGetUserMedia)o.browser="firefox",o.version=Ve(i.userAgent,/Firefox\/(\d+)\./,1);else if(i.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection)o.browser="chrome",o.version=Ve(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.RTCPeerConnection&&i.userAgent.match(/AppleWebKit\/(\d+)\./))o.browser="safari",o.version=Ve(i.userAgent,/AppleWebKit\/(\d+)\./,1),o.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return o.browser="Not a supported browser.",o;return o}function ur(r){return Object.prototype.toString.call(r)==="[object Object]"}function lr(r){return ur(r)?Object.keys(r).reduce(function(o,i){var c=ur(r[i]),l=c?lr(r[i]):r[i],h=c&&!Object.keys(l).length;return l===void 0||h?o:Object.assign(o,Hn({},i,l))},{}):r}function qe(r,o,i){!o||i.has(o.id)||(i.set(o.id,o),Object.keys(o).forEach(function(c){c.endsWith("Id")?qe(r,r.get(o[c]),i):c.endsWith("Ids")&&o[c].forEach(function(l){qe(r,r.get(l),i)})}))}function Qn(r,o,i){var c=i?"outbound-rtp":"inbound-rtp",l=new Map;if(o===null)return l;var h=[];return r.forEach(function(v){v.type==="track"&&v.trackIdentifier===o.id&&h.push(v)}),h.forEach(function(v){r.forEach(function(g){g.type===c&&g.trackId===v.id&&qe(r,g,l)})}),l}Object.defineProperty(ir,"__esModule",{value:!0});var Xn=ir.shimGetUserMedia=ea,Zn=Kn(X);function dr(r){if(typeof WeakMap!="function")return null;var o=new WeakMap,i=new WeakMap;return(dr=function(l){return l?i:o})(r)}function Kn(r,o){if(r&&r.__esModule)return r;if(r===null||he(r)!=="object"&&typeof r!="function")return{default:r};var i=dr(o);if(i&&i.has(r))return i.get(r);var c={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in r)if(h!=="default"&&Object.prototype.hasOwnProperty.call(r,h)){var v=l?Object.getOwnPropertyDescriptor(r,h):null;v&&(v.get||v.set)?Object.defineProperty(c,h,v):c[h]=r[h]}return c.default=r,i&&i.set(r,c),c}function he(r){"@babel/helpers - typeof";return he=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},he(r)}var fr=Zn.log;function ea(r,o){var i=r&&r.navigator;if(i.mediaDevices){var c=function(p){if(he(p)!=="object"||p.mandatory||p.optional)return p;var C={};return Object.keys(p).forEach(function(S){if(!(S==="require"||S==="advanced"||S==="mediaSource")){var $=he(p[S])==="object"?p[S]:{ideal:p[S]};$.exact!==void 0&&typeof $.exact=="number"&&($.min=$.max=$.exact);var U=function(k,R){return k?k+R.charAt(0).toUpperCase()+R.slice(1):R==="deviceId"?"sourceId":R};if($.ideal!==void 0){C.optional=C.optional||[];var W={};typeof $.ideal=="number"?(W[U("min",S)]=$.ideal,C.optional.push(W),W={},W[U("max",S)]=$.ideal,C.optional.push(W)):(W[U("",S)]=$.ideal,C.optional.push(W))}$.exact!==void 0&&typeof $.exact!="number"?(C.mandatory=C.mandatory||{},C.mandatory[U("",S)]=$.exact):["min","max"].forEach(function(j){$[j]!==void 0&&(C.mandatory=C.mandatory||{},C.mandatory[U(j,S)]=$[j])})}}),p.advanced&&(C.optional=(C.optional||[]).concat(p.advanced)),C},l=function(p,C){if(o.version>=61)return C(p);if(p=JSON.parse(JSON.stringify(p)),p&&he(p.audio)==="object"){var S=function(k,R,Z){R in k&&!(Z in k)&&(k[Z]=k[R],delete k[R])};p=JSON.parse(JSON.stringify(p)),S(p.audio,"autoGainControl","googAutoGainControl"),S(p.audio,"noiseSuppression","googNoiseSuppression"),p.audio=c(p.audio)}if(p&&he(p.video)==="object"){var $=p.video.facingMode;$=$&&(he($)==="object"?$:{ideal:$});var U=o.version<66;if($&&($.exact==="user"||$.exact==="environment"||$.ideal==="user"||$.ideal==="environment")&&!(i.mediaDevices.getSupportedConstraints&&i.mediaDevices.getSupportedConstraints().facingMode&&!U)){delete p.video.facingMode;var W;if($.exact==="environment"||$.ideal==="environment"?W=["back","rear"]:($.exact==="user"||$.ideal==="user")&&(W=["front"]),W)return i.mediaDevices.enumerateDevices().then(function(j){j=j.filter(function(R){return R.kind==="videoinput"});var k=j.find(function(R){return W.some(function(Z){return R.label.toLowerCase().includes(Z)})});return!k&&j.length&&W.includes("back")&&(k=j[j.length-1]),k&&(p.video.deviceId=$.exact?{exact:k.deviceId}:{ideal:k.deviceId}),p.video=c(p.video),fr("chrome: "+JSON.stringify(p)),C(p)})}p.video=c(p.video)}return fr("chrome: "+JSON.stringify(p)),C(p)},h=function(p){return o.version>=64?p:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[p.name]||p.name,message:p.message,constraint:p.constraint||p.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},v=function(p,C,S){l(p,function($){i.webkitGetUserMedia($,C,function(U){S&&S(h(U))})})};if(i.getUserMedia=v.bind(i),i.mediaDevices.getUserMedia){var g=i.mediaDevices.getUserMedia.bind(i.mediaDevices);i.mediaDevices.getUserMedia=function(b){return l(b,function(p){return g(p).then(function(C){if(p.audio&&!C.getAudioTracks().length||p.video&&!C.getVideoTracks().length)throw C.getTracks().forEach(function(S){S.stop()}),new DOMException("","NotFoundError");return C},function(C){return Promise.reject(h(C))})})}}}}var hr={};Object.defineProperty(hr,"__esModule",{value:!0});var ta=hr.shimGetUserMedia=aa,ra=na(X);function pr(r){if(typeof WeakMap!="function")return null;var o=new WeakMap,i=new WeakMap;return(pr=function(l){return l?i:o})(r)}function na(r,o){if(r&&r.__esModule)return r;if(r===null||$e(r)!=="object"&&typeof r!="function")return{default:r};var i=pr(o);if(i&&i.has(r))return i.get(r);var c={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in r)if(h!=="default"&&Object.prototype.hasOwnProperty.call(r,h)){var v=l?Object.getOwnPropertyDescriptor(r,h):null;v&&(v.get||v.set)?Object.defineProperty(c,h,v):c[h]=r[h]}return c.default=r,i&&i.set(r,c),c}function $e(r){"@babel/helpers - typeof";return $e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},$e(r)}function aa(r,o){var i=r&&r.navigator,c=r&&r.MediaStreamTrack;if(i.getUserMedia=function(b,p,C){ra.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(b).then(p,C)},!(o.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){var l=function(p,C,S){C in p&&!(S in p)&&(p[S]=p[C],delete p[C])},h=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(b){return $e(b)==="object"&&$e(b.audio)==="object"&&(b=JSON.parse(JSON.stringify(b)),l(b.audio,"autoGainControl","mozAutoGainControl"),l(b.audio,"noiseSuppression","mozNoiseSuppression")),h(b)},c&&c.prototype.getSettings){var v=c.prototype.getSettings;c.prototype.getSettings=function(){var b=v.apply(this,arguments);return l(b,"mozAutoGainControl","autoGainControl"),l(b,"mozNoiseSuppression","noiseSuppression"),b}}if(c&&c.prototype.applyConstraints){var g=c.prototype.applyConstraints;c.prototype.applyConstraints=function(b){return this.kind==="audio"&&$e(b)==="object"&&(b=JSON.parse(JSON.stringify(b)),l(b,"autoGainControl","mozAutoGainControl"),l(b,"noiseSuppression","mozNoiseSuppression")),g.apply(this,[b])}}}}var ne={};Object.defineProperty(ne,"__esModule",{value:!0}),ne.shimAudioContext=pa,ne.shimCallbacksAPI=ua,ne.shimConstraints=yr,ne.shimCreateOfferLegacy=ha;var oa=ne.shimGetUserMedia=la;ne.shimLocalStreamsAPI=sa,ne.shimRTCIceServerUrls=da,ne.shimRemoteStreamsAPI=ca,ne.shimTrackEventTransceiver=fa;var mr=ia(X);function vr(r){if(typeof WeakMap!="function")return null;var o=new WeakMap,i=new WeakMap;return(vr=function(l){return l?i:o})(r)}function ia(r,o){if(r&&r.__esModule)return r;if(r===null||pe(r)!=="object"&&typeof r!="function")return{default:r};var i=vr(o);if(i&&i.has(r))return i.get(r);var c={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in r)if(h!=="default"&&Object.prototype.hasOwnProperty.call(r,h)){var v=l?Object.getOwnPropertyDescriptor(r,h):null;v&&(v.get||v.set)?Object.defineProperty(c,h,v):c[h]=r[h]}return c.default=r,i&&i.set(r,c),c}function pe(r){"@babel/helpers - typeof";return pe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},pe(r)}function sa(r){if(!(pe(r)!=="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){var o=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(c){var l=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(c)||this._localStreams.push(c),c.getAudioTracks().forEach(function(h){return o.call(l,h,c)}),c.getVideoTracks().forEach(function(h){return o.call(l,h,c)})},r.RTCPeerConnection.prototype.addTrack=function(c){for(var l=this,h=arguments.length,v=new Array(h>1?h-1:0),g=1;g=0)){c._remoteStreams.push(h);var v=new Event("addstream");v.stream=h,c.dispatchEvent(v)}})}),o.apply(c,arguments)}}}function ua(r){if(!(pe(r)!=="object"||!r.RTCPeerConnection)){var o=r.RTCPeerConnection.prototype,i=o.createOffer,c=o.createAnswer,l=o.setLocalDescription,h=o.setRemoteDescription,v=o.addIceCandidate;o.createOffer=function(p,C){var S=arguments.length>=2?arguments[2]:arguments[0],$=i.apply(this,[S]);return C?($.then(p,C),Promise.resolve()):$},o.createAnswer=function(p,C){var S=arguments.length>=2?arguments[2]:arguments[0],$=c.apply(this,[S]);return C?($.then(p,C),Promise.resolve()):$};var g=function(p,C,S){var $=l.apply(this,[p]);return S?($.then(C,S),Promise.resolve()):$};o.setLocalDescription=g,g=function(p,C,S){var $=h.apply(this,[p]);return S?($.then(C,S),Promise.resolve()):$},o.setRemoteDescription=g,g=function(p,C,S){var $=v.apply(this,[p]);return S?($.then(C,S),Promise.resolve()):$},o.addIceCandidate=g}}function la(r){var o=r&&r.navigator;if(o.mediaDevices&&o.mediaDevices.getUserMedia){var i=o.mediaDevices,c=i.getUserMedia.bind(i);o.mediaDevices.getUserMedia=function(l){return c(yr(l))}}!o.getUserMedia&&o.mediaDevices&&o.mediaDevices.getUserMedia&&(o.getUserMedia=(function(h,v,g){o.mediaDevices.getUserMedia(h).then(v,g)}).bind(o))}function yr(r){return r&&r.video!==void 0?Object.assign({},r,{video:mr.compactObject(r.video)}):r}function da(r){if(r.RTCPeerConnection){var o=r.RTCPeerConnection;r.RTCPeerConnection=function(c,l){if(c&&c.iceServers){for(var h=[],v=0;v{let o=!1,i;return(...c)=>(o||(i=r(c),o=!0),i)};function se(r,o){if(r===!1)throw new Error(o!=null?o:"assertion failure")}function gr(r){throw new Error("this code should be unreachable")}const va=ma(()=>{const r=Ln(window);switch(r.browser){case"chrome":Xn(window,r);break;case"firefox":ta(window,r);break;case"safari":oa(window,r);break;default:throw new rr}});let _e=Promise.resolve({type:"stop",data:{}});async function wr(r,o,i){var g,b,p;if(console.debug("[vue-qrcode-reader] starting camera with constraints: ",JSON.stringify(o)),window.isSecureContext!==!0)throw new kn;if(((g=navigator==null?void 0:navigator.mediaDevices)==null?void 0:g.getUserMedia)===void 0)throw new rr;va(),console.debug("[vue-qrcode-reader] calling getUserMedia");const c=await navigator.mediaDevices.getUserMedia({audio:!1,video:o});r.srcObject!==void 0?r.srcObject=c:r.mozSrcObject!==void 0?r.mozSrcObject=c:window.URL.createObjectURL?r.src=window.URL.createObjectURL(c):window.webkitURL?r.src=window.webkitURL.createObjectURL(c):r.src=c.id,r.play(),console.debug("[vue-qrcode-reader] waiting for video element to load"),await Promise.race([dt(r,"loadeddata"),tr(6e3).then(()=>{throw new In})]),console.debug("[vue-qrcode-reader] video element loaded"),await tr(500);const[l]=c.getVideoTracks(),h=(p=(b=l==null?void 0:l.getCapabilities)==null?void 0:b.call(l))!=null?p:{};let v=!1;return i&&h.torch&&(await l.applyConstraints({advanced:[{torch:!0}]}),v=!0),console.debug("[vue-qrcode-reader] camera ready"),{type:"start",data:{videoEl:r,stream:c,capabilities:h,constraints:o,isTorchOn:v}}}async function ya(r,{constraints:o,torch:i,restart:c=!1}){_e=_e.then(h=>{if(h.type==="start"){const{data:{videoEl:v,stream:g,constraints:b,isTorchOn:p}}=h;return!c&&r===v&&o===b&&i===p?h:br(v,g,p).then(()=>wr(r,o,i))}else if(h.type==="stop"||h.type==="failed")return wr(r,o,i);gr()}).catch(h=>(console.debug(`[vue-qrcode-reader] starting camera failed with "${h}"`),{type:"failed",error:h}));const l=await _e;if(l.type==="stop")throw new Error("Something went wrong with the camera task queue (start task).");if(l.type==="failed")throw l.error;if(l.type==="start")return l.data.capabilities;gr()}async function br(r,o,i){console.debug("[vue-qrcode-reader] stopping camera"),r.src="",r.srcObject=null,r.load(),await dt(r,"error");for(const c of o.getTracks())i!=null||await c.applyConstraints({advanced:[{torch:!1}]}),o.removeTrack(c),c.stop();return{type:"stop",data:{}}}async function Ne(){if(_e=_e.then(o=>{if(o.type==="stop"||o.type==="failed")return o;const{data:{videoEl:i,stream:c,isTorchOn:l}}=o;return br(i,c,l)}),(await _e).type==="start")throw new Error("Something went wrong with the camera task queue (stop task).")}const Cr=O.defineComponent({__name:"QrcodeStream",props:{constraints:{type:Object,default(){return{facingMode:"environment"}}},formats:{type:Array,default:()=>["qr_code"]},paused:{type:Boolean,default:!1},torch:{type:Boolean,default:!1},track:{type:Function}},emits:["detect","camera-on","camera-off","error"],setup(r,{emit:o}){const i=r,c=o,l=O.ref(i.constraints),h=O.ref(i.formats);O.watch(()=>i.constraints,(I,D)=>{JSON.stringify(I)!==JSON.stringify(D)&&(l.value=I)},{deep:!0}),O.watch(()=>i.formats,(I,D)=>{JSON.stringify(I)!==JSON.stringify(D)&&(h.value=I)},{deep:!0});const v=O.ref(),g=O.ref(),b=O.ref(),p=O.ref(!1),C=O.ref(!1);O.onMounted(()=>{C.value=!0}),O.onUnmounted(()=>{Ne()});const S=O.computed(()=>({torch:i.torch,constraints:l.value,shouldStream:C.value&&!i.paused}));O.watch(S,async I=>{const D=b.value;se(D!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined.");const A=v.value;se(A!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined.");const me=A.getContext("2d");if(se(me!==null,"if cavnas is defined, canvas 2d context should also be non-null"),I.shouldStream){Ne(),p.value=!1;try{const ce=await ya(D,I);C.value?(p.value=!0,c("camera-on",ce)):await Ne()}catch(ce){c("error",ce)}}else A.width=D.videoWidth,A.height=D.videoHeight,me.drawImage(D,0,0,D.videoWidth,D.videoHeight),Ne(),p.value=!1,c("camera-off")},{deep:!0}),O.watch(h,async I=>{C.value&&await ar(I)});const $=O.computed(()=>S.value.shouldStream&&p.value);O.watch($,I=>{if(I){se(v.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined"),U(v.value),se(g.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined"),U(g.value);const D=()=>i.track===void 0?500:40;se(b.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus video element is defined"),Un(b.value,{detectHandler:A=>c("detect",A),formats:h.value,locateHandler:W,minDelay:D()})}});const U=I=>{const D=I.getContext("2d");se(D!==null,"canvas 2d context should always be non-null"),D.clearRect(0,0,I.width,I.height)},W=I=>{const D=g.value;se(D!==void 0,"onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined.");const A=b.value;if(se(A!==void 0,"onLocate handler should only be called when component is mounted. Thus video element is always defined."),I.length===0||i.track===void 0)U(D);else{const me=A.offsetWidth,ce=A.offsetHeight,Se=A.videoWidth,Pe=A.videoHeight,De=Math.max(me/Se,ce/Pe),Ae=Se*De,ze=Pe*De,ft=Ae/Se,ht=ze/Pe,pt=(me-Ae)/2,mt=(ce-ze)/2,Re=({x:ve,y:K})=>({x:Math.floor(ve*ft),y:Math.floor(K*ht)}),ae=({x:ve,y:K})=>({x:Math.floor(ve+pt),y:Math.floor(K+mt)}),ge=I.map(ve=>{const{boundingBox:K,cornerPoints:yt}=ve,{x:Ge,y:ye}=ae(Re({x:K.x,y:K.y})),{x:Ye,y:gt}=Re({x:K.width,y:K.height});return{...ve,cornerPoints:yt.map(Je=>ae(Re(Je))),boundingBox:DOMRectReadOnly.fromRect({x:Ge,y:ye,width:Ye,height:gt})}});D.width=A.offsetWidth,D.height=A.offsetHeight;const vt=D.getContext("2d");i.track(ge,vt)}},j={width:"100%",height:"100%",position:"relative","z-index":"0"},k={width:"100%",height:"100%",position:"absolute",top:"0",left:"0"},R={width:"100%",height:"100%","object-fit":"cover"},Z=O.computed(()=>$.value?R:{...R,visibility:"hidden",position:"absolute"});return(I,D)=>(O.openBlock(),O.createElementBlock("div",{style:j},[O.createElementVNode("video",{ref_key:"videoRef",ref:b,style:O.normalizeStyle(Z.value),autoplay:"",muted:"",playsinline:""},null,4),O.withDirectives(O.createElementVNode("canvas",{id:"qrcode-stream-pause-frame",ref_key:"pauseFrameRef",ref:v,style:R},null,512),[[O.vShow,!$.value]]),O.createElementVNode("canvas",{id:"qrcode-stream-tracking-layer",ref_key:"trackingLayerRef",ref:g,style:k},null,512),O.createElementVNode("div",{style:k},[O.renderSlot(I.$slots,"default")])]))}}),$r=O.defineComponent({__name:"QrcodeCapture",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect"],setup(r,{emit:o}){const i=r,c=o,l=h=>{if(!(!(h.target instanceof HTMLInputElement)||!h.target.files))for(const v of Array.from(h.target.files))or(v,i.formats).then(g=>{c("detect",g)})};return(h,v)=>(O.openBlock(),O.createElementBlock("input",{onChange:l,type:"file",name:"image",accept:"image/*",capture:"environment",multiple:""},null,32))}}),_r=O.defineComponent({__name:"QrcodeDropZone",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect","dragover","error"],setup(r,{emit:o}){const i=r,c=o,l=async g=>{try{const b=await g;c("detect",b)}catch(b){c("error",b)}},h=g=>{c("dragover",g)},v=({dataTransfer:g})=>{if(!g)return;h(!1);const b=[...Array.from(g.files)],p=g.getData("text/uri-list");b.forEach(C=>{l(or(C,i.formats))}),p!==""&&l(jn(p,i.formats))};return(g,b)=>(O.openBlock(),O.createElementBlock("div",{onDrop:O.withModifiers(v,["prevent","stop"]),onDragenter:b[0]||(b[0]=O.withModifiers(p=>h(!0),["prevent","stop"])),onDragleave:b[1]||(b[1]=O.withModifiers(p=>h(!1),["prevent","stop"])),onDragover:b[2]||(b[2]=O.withModifiers(()=>{},["prevent","stop"]))},[O.renderSlot(g.$slots,"default")],32))}});function Sr(r){r.component("qrcode-stream",Cr),r.component("qrcode-capture",$r),r.component("qrcode-drop-zone",_r)}const ga={install:Sr};ee.QrcodeCapture=$r,ee.QrcodeDropZone=_r,ee.QrcodeStream=Cr,ee.VueQrcodeReader=ga,ee.install=Sr,ee.setZXingModuleOverrides=Dn,Object.defineProperty(ee,Symbol.toStringTag,{value:"Module"})}); diff --git a/node_modules/vue-qrcode-reader/package.json b/node_modules/vue-qrcode-reader/package.json new file mode 100644 index 0000000..e8b5ea6 --- /dev/null +++ b/node_modules/vue-qrcode-reader/package.json @@ -0,0 +1,77 @@ +{ + "name": "vue-qrcode-reader", + "version": "5.6.0", + "description": "A set of Vue.js components for detecting and decoding QR codes.", + "author": { + "name": "Niklas Gruhn", + "email": "niklas@gruhn.me" + }, + "engines": { + "node": ">=18.0.0" + }, + "packageManager": "pnpm@8.3.1", + "type": "module", + "scripts": { + "build": "vite build", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs", + "format": "prettier **/*.{vue,ts,json,md} --write --ignore-path .gitignore --ignore-path docs/.gitignore", + "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "prepack": "pnpm run build" + }, + "main": "./dist/vue-qrcode-reader.js", + "module": "./dist/vue-qrcode-reader.js", + "unpkg": "./dist/vue-qrcode-reader.umd.js", + "exports": { + ".": { + "import": "./dist/vue-qrcode-reader.js", + "require": "./dist/vue-qrcode-reader.umd.js", + "types": "./dist/index.d.ts" + } + }, + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "dependencies": { + "barcode-detector": "2.2.2", + "webrtc-adapter": "8.2.3" + }, + "devDependencies": { + "@tsconfig/node20": "20.1.2", + "@types/node": "20.10.5", + "@types/w3c-image-capture": "1.0.10", + "@vite-pwa/vitepress": "0.3.1", + "@vitejs/plugin-vue": "4.5.2", + "@vue/compiler-sfc": "3.3.13", + "@vue/eslint-config-prettier": "8.0.0", + "@vue/eslint-config-typescript": "12.0.0", + "@vue/tsconfig": "0.5.1", + "eslint": "8.56.0", + "eslint-plugin-prettier": "5.1.0", + "eslint-plugin-vue": "9.19.2", + "prettier": "3.1.1", + "semantic-release": "22.0.12", + "typescript": "5.5.3", + "vite": "5.0.10", + "vite-plugin-dts": "3.6.4", + "vitepress": "1.0.0-rc.32", + "vue": "3.3.13", + "vue-tsc": "1.8.25", + "workbox-window": "7.0.0" + }, + "bugs": "https://github.com/gruhn/vue-qrcode-reader/issues", + "homepage": "https://gruhn.github.io/vue-qrcode-reader/", + "keywords": [ + "vue", + "vuejs", + "vue-component", + "qrcode", + "qrcode-reader", + "qrcode-scanner", + "webrtc" + ], + "license": "MIT", + "repository": "github:gruhn/vue-qrcode-reader" +} diff --git a/node_modules/webrtc-adapter/.eslintrc b/node_modules/webrtc-adapter/.eslintrc new file mode 100644 index 0000000..fd82de2 --- /dev/null +++ b/node_modules/webrtc-adapter/.eslintrc @@ -0,0 +1,70 @@ +{ + "rules": { + "array-bracket-spacing": 2, + "block-spacing": [2, "never"], + "brace-style": [2, "1tbs", {"allowSingleLine": false}], + "camelcase": [2, {"properties": "always"}], + "curly": 2, + "default-case": 2, + "dot-notation": 2, + "eqeqeq": 2, + "id-match": ["error", "^[\x00-\x7F]+$", { + "properties": true, + "onlyDeclarations": false, + "ignoreDestructuring": false + }], + "indent": [ + 2, + 2, + {"SwitchCase": 1} + ], + "key-spacing": [2, {"beforeColon": false, "afterColon": true}], + "keyword-spacing": 2, + "max-len": [2, 80, 2, {"ignoreUrls": true}], + "new-cap": [2, {"newIsCapExceptions": [ + "webkitRTCPeerConnection", + "mozRTCPeerConnection" + ]}], + "no-console": 0, + "no-else-return": 2, + "no-eval": 2, + "no-multi-spaces": 2, + "no-multiple-empty-lines": [2, {"max": 2}], + "no-shadow": 2, + "no-trailing-spaces": 2, + "no-unused-expressions": 2, + "no-unused-vars": [2, {"args": "none"}], + "object-curly-spacing": [2, "never"], + "padded-blocks": [2, "never"], + "quotes": [ + 2, + "single" + ], + "semi": [ + 2, + "always" + ], + "space-before-blocks": 2, + "space-before-function-paren": [2, "never"], + "space-unary-ops": 2, + "space-infix-ops": 2, + "spaced-comment": 2, + "valid-typeof": 2 + }, + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": ["eslint:recommended"], + "parserOptions": { + "sourceType": "module" + }, + "globals": { + "module": true, + "require": true, + "process": true, + "Promise": true, + "Map": true + } +} diff --git a/node_modules/webrtc-adapter/.travis.yml b/node_modules/webrtc-adapter/.travis.yml new file mode 100644 index 0000000..7b57cb7 --- /dev/null +++ b/node_modules/webrtc-adapter/.travis.yml @@ -0,0 +1,65 @@ +sudo: false +language: node_js +dist: trusty +node_js: +- "7" + +env: + - CXX=g++-4.8 +matrix: + include: + - os: linux + sudo: false + env: BROWSER=chrome BVER=stable + - os: linux + sudo: false + env: BROWSER=chrome BVER=beta + - os: linux + sudo: false + env: BROWSER=chrome BVER=unstable + - os: linux + sudo: false + env: BROWSER=firefox BVER=stable + - os: linux + sudo: false + env: BROWSER=firefox BVER=beta + - os: linux + sudo: false + env: BROWSER=firefox BVER=unstable + - os: osx + sudo: required + osx_image: xcode9.4 + env: BROWSER=safari BVER=stable + - os: osx + sudo: required + osx_image: xcode11.2 + env: BROWSER=safari BVER=unstable + + fast_finish: true + + allow_failures: + - os: linux + sudo: false + env: BROWSER=chrome BVER=unstable + - os: linux + sudo: false + env: BROWSER=firefox BVER=unstable + +before_script: + - ./node_modules/travis-multirunner/setup.sh + - export DISPLAY=:99.0 + - if [ -f /etc/init.d/xvfb ]; then sh -e /etc/init.d/xvfb start; fi + +after_failure: + - for file in *.log; do echo $file; echo "======================"; cat $file; done || true + +notifications: + email: + - + +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.8 diff --git a/node_modules/webrtc-adapter/CONTRIBUTING.md b/node_modules/webrtc-adapter/CONTRIBUTING.md new file mode 100644 index 0000000..c86d36e --- /dev/null +++ b/node_modules/webrtc-adapter/CONTRIBUTING.md @@ -0,0 +1,15 @@ +WebRTC welcomes patches/pulls for features and bug fixes. + +For contributors external to Google, follow the instructions given in the [Google Individual Contributor License Agreement](https://cla.developers.google.com/about/google-individual). + +In all cases, contributors must sign a contributor license agreement before a contribution can be accepted. Please complete the agreement for an [individual](https://developers.google.com/open-source/cla/individual) or a [corporation](https://developers.google.com/open-source/cla/corporate) as appropriate. + +If you plan to add a significant component or large chunk of code, we recommend you bring this up on the [webrtc-discuss group](https://groups.google.com/forum/#!forum/discuss-webrtc) for a design discussion before writing code. + +If appropriate, write a unit test which demonstrates that your code functions as expected. Tests are the best way to ensure that future contributors do not break your code accidentally. + +To request a change or addition, you must [submit a pull request](https://help.github.com/categories/collaborating/). + +WebRTC developers monitor outstanding pull requests. They may request changes to the pull request before accepting. They will also verify that a CLA has been signed. + +The [Developer's Guide](https://bit.ly/webrtcdevguide) for this repo has more detailed information about code style, structure and validation. diff --git a/node_modules/webrtc-adapter/Gruntfile.js b/node_modules/webrtc-adapter/Gruntfile.js new file mode 100644 index 0000000..e39392b --- /dev/null +++ b/node_modules/webrtc-adapter/Gruntfile.js @@ -0,0 +1,71 @@ +'use strict'; + +module.exports = function(grunt) { + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + babel: { + options: { + presets: ['@babel/preset-env'] + }, + dist: { + files: [{ + expand: 'true', + cwd: 'src/js', + src: ['*.js', '**/*.js'], + dest: 'dist/' + }] + } + }, + browserify: { + adapterGlobalObject: { + src: ['./dist/adapter_core5.js'], + dest: './out/adapter.js', + options: { + browserifyOptions: { + // Exposes shim methods in a global object to the browser. + // The tests require this. + standalone: 'adapter' + } + } + }, + // Use this if you do not want adapter to expose anything to the global + // scope. + adapterAndNoGlobalObject: { + src: ['./dist/adapter_core5.js'], + dest: './out/adapter_no_global.js' + } + }, + eslint: { + options: { + overrideConfigFile: '.eslintrc' + }, + target: ['src/**/*.js', 'test/*.js', 'test/unit/*.js', 'test/e2e/*.js'] + }, + copy: { + build: { + dest: 'release/', + cwd: 'out', + src: '**', + nonull: true, + expand: true + } + }, + shell: { + downloadBrowser : { + command: 'BROWSER=${BROWSER-chrome} BVER=${BVER-stable} ./node_modules/travis-multirunner/setup.sh' + }, + }, + }); + + grunt.loadNpmTasks('grunt-eslint'); + grunt.loadNpmTasks('grunt-browserify'); + grunt.loadNpmTasks('grunt-babel'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-shell'); + + grunt.registerTask('default', ['eslint', 'build']); + grunt.registerTask('lint', ['eslint']); + grunt.registerTask('build', ['babel', 'browserify']); + grunt.registerTask('copyForPublish', ['copy']); + grunt.registerTask('downloadBrowser', ['shell:downloadBrowser']) +}; diff --git a/node_modules/webrtc-adapter/LICENSE.md b/node_modules/webrtc-adapter/LICENSE.md new file mode 100644 index 0000000..30f27f9 --- /dev/null +++ b/node_modules/webrtc-adapter/LICENSE.md @@ -0,0 +1,30 @@ +Copyright (c) 2014, The WebRTC project authors. All rights reserved. +Copyright (c) 2018, The adapter.js project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/webrtc-adapter/README.md b/node_modules/webrtc-adapter/README.md new file mode 100644 index 0000000..367d995 --- /dev/null +++ b/node_modules/webrtc-adapter/README.md @@ -0,0 +1,79 @@ +# WebRTC adapter # +adapter.js is a shim to insulate apps from spec changes and prefix differences in WebRTC. The prefix differences are mostly gone these days but differences in behaviour between browsers remain. + +This repository used to be part of the WebRTC organisation on github but moved. We aim to keep the old repository updated with new releases. + +## Install ## + +#### NPM +```bash +npm install webrtc-adapter +``` + +#### Bower +```bash +bower install webrtc-adapter +``` + +## Usage ## +##### Javascript +Just import adapter: +``` +import adapter from 'webrtc-adapter'; +``` +No further action is required. You might want to use adapters browser detection +which detects which webrtc quirks are required. You can look at +``` +adapter.browserDetails.browser +``` +for webrtc engine detection (which will for example detect Opera or the Chromium based Edge as 'chrome') and +``` +adapter.browserDetails.version +``` +for the version according to the user-agent string. + +##### NPM +Copy to desired location in your src tree or use a minify/vulcanize tool (node_modules is usually not published with the code). +See [webrtc/samples repo](https://github.com/webrtc/samples) as an example on how you can do this. + +#### Prebuilt releases +##### Web +In the [gh-pages branch](https://github.com/webrtcHacks/adapter/tree/gh-pages) prebuilt ready to use files can be downloaded/linked directly. +Latest version can be found at https://webrtc.github.io/adapter/adapter-latest.js. +Specific versions can be found at https://webrtc.github.io/adapter/adapter-N.N.N.js, e.g. https://webrtc.github.io/adapter/adapter-1.0.2.js. + +##### Bower +You will find `adapter.js` in `bower_components/webrtc-adapter/`. + +##### NPM +In node_modules/webrtc-adapter/out/ folder you will find 4 files: +* `adapter.js` - includes all the shims and is visible in the browser under the global `adapter` object (window.adapter). +* `adapter_no_global.js` - same as `adapter.js` but is not exposed/visible in the browser (you cannot call/interact with the shims in the browser). + +Include the file that suits your need in your project. + +## Development ## +Head over to [test/README.md](https://github.com/webrtcHacks/adapter/blob/master/test/README.md) and get started developing. + +## Publish a new version ## +* Go to the adapter repository root directory +* Make sure your repository is clean, i.e. no untracked files etc. Also check that you are on the master branch and have pulled the latest changes. +* Depending on the impact of the release, either use `patch`, `minor` or `major` in place of ``. Run `npm version -m 'bump to %s'` and type in your password lots of times (setting up credential caching is probably a good idea). +* Create and merge the PR if green in the GitHub web ui +* Go to the releases tab in the GitHub web ui and edit the tag. +* Add a summary of the recent commits in the tag summary and a link to the diff between the previous and current version in the description, [example](https://github.com/webrtcHacks/adapter/releases/tag/v3.4.1). +* Go back to your checkout and run `git pull` +* Run `npm publish` (you need access to the [webrtc-adapter npmjs package](https://www.npmjs.com/package/webrtc-adapter)). For big changes, consider using a [tag version](https://docs.npmjs.com/adding-dist-tags-to-packages) such as `next` and then [change the dist-tag after testing](https://docs.npmjs.com/cli/dist-tag). +* Done! There should now be a new release published to NPM and the gh-pages branch. + +Note: Currently only tested on Linux, not sure about Mac but will definitely not work on Windows. + +### Publish a hotfix patch versions +In some cases it may be necessary to do a patch version while there are significant changes changes on the master branch. +To make a patch release, +* checkout the latest git tag using `git checkout tags/vMajor.minor.patch`. +* checkout a new branch, using a name such as patchrelease-major-minor-patch. +* cherry-pick the fixes using `git cherry-pick some-commit-hash`. +* run `npm version patch`. This will create a new patch version and publish it on github. +* check out `origin/bumpVersion` branch and publish the new version using `npm publish`. +* the branch can now safely be deleted. It is not necessary to merge it into the main branch since it only contains cherry-picked commits. diff --git a/node_modules/webrtc-adapter/bower.json b/node_modules/webrtc-adapter/bower.json new file mode 100644 index 0000000..cc5ac95 --- /dev/null +++ b/node_modules/webrtc-adapter/bower.json @@ -0,0 +1,25 @@ +{ + "name": "webrtc-adapter", + "description": "A shim to insulate apps from WebRTC spec changes and browser prefix differences", + "license": "BSD-3-Clause", + "main": "./release/adapter.js", + "repository": { + "type": "git", + "url": "https://github.com/webrtchacks/adapter.git" + }, + "authors": [ + "The WebRTC project authors (https://www.webrtc.org/)", + "The adapter.js project authors (https://github.com/webrtchacks/adapter/)" + ], + "moduleType": [ + "node" + ], + "ignore": [ + "test/*" + ], + "keywords": [ + "WebRTC", + "RTCPeerConnection", + "getUserMedia" + ] +} diff --git a/node_modules/webrtc-adapter/dist/adapter_core.js b/node_modules/webrtc-adapter/dist/adapter_core.js new file mode 100644 index 0000000..6eb013a --- /dev/null +++ b/node_modules/webrtc-adapter/dist/adapter_core.js @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +var _adapter_factory = require("./adapter_factory.js"); +var adapter = (0, _adapter_factory.adapterFactory)({ + window: typeof window === 'undefined' ? undefined : window +}); +var _default = adapter; +exports["default"] = _default; diff --git a/node_modules/webrtc-adapter/dist/adapter_core5.js b/node_modules/webrtc-adapter/dist/adapter_core5.js new file mode 100644 index 0000000..d96b1d0 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/adapter_core5.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +var _adapter_factory = require("./adapter_factory.js"); +var adapter = (0, _adapter_factory.adapterFactory)({ + window: typeof window === 'undefined' ? undefined : window +}); +module.exports = adapter; // this is the difference from adapter_core. diff --git a/node_modules/webrtc-adapter/dist/adapter_factory.js b/node_modules/webrtc-adapter/dist/adapter_factory.js new file mode 100644 index 0000000..0cd97fa --- /dev/null +++ b/node_modules/webrtc-adapter/dist/adapter_factory.js @@ -0,0 +1,141 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.adapterFactory = adapterFactory; +var utils = _interopRequireWildcard(require("./utils")); +var chromeShim = _interopRequireWildcard(require("./chrome/chrome_shim")); +var firefoxShim = _interopRequireWildcard(require("./firefox/firefox_shim")); +var safariShim = _interopRequireWildcard(require("./safari/safari_shim")); +var commonShim = _interopRequireWildcard(require("./common_shim")); +var sdp = _interopRequireWildcard(require("sdp")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ + +// Browser shims. + +// Shimming starts here. +function adapterFactory() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + window = _ref.window; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + shimChrome: true, + shimFirefox: true, + shimSafari: true + }; + // Utils. + var logging = utils.log; + var browserDetails = utils.detectBrowser(window); + var adapter = { + browserDetails: browserDetails, + commonShim: commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp: sdp + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + return adapter; +} diff --git a/node_modules/webrtc-adapter/dist/chrome/chrome_shim.js b/node_modules/webrtc-adapter/dist/chrome/chrome_shim.js new file mode 100644 index 0000000..8d1d984 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/chrome_shim.js @@ -0,0 +1,698 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fixNegotiationNeeded = fixNegotiationNeeded; +exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack; +exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf; +exports.shimGetStats = shimGetStats; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimMediaStream = shimMediaStream; +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats; +var utils = _interopRequireWildcard(require("../utils.js")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get: function get() { + return this._ontrack; + }, + set: function set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var _this = this; + if (!this._ontrackpoly) { + this._ontrackpoly = function (e) { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', function (te) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === te.track.id; + }); + } else { + receiver = { + track: te.track + }; + } + var event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(function (track) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === track.id; + }); + } else { + receiver = { + track: track + }; + } + var event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', { + value: { + receiver: e.receiver + } + }); + } + return e; + }); + } +} +function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) { + var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) { + return { + track: track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + var idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this2 = this; + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + _this2._senders.push(shimSenderWithDtmf(_this2, track)); + }); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + var sender = _this3._senders.find(function (s) { + return s.track === track; + }); + if (sender) { + // remove sender + _this3._senders.splice(_this3._senders.indexOf(sender), 1); + } + }); + }; + } else if (_typeof(window) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this4 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this4; + }); + return senders; + }; + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get: function get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} +function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _this5 = this; + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + var fixChromeStats_ = function fixChromeStats_(response) { + var standardReport = {}; + var reports = response.result(); + reports.forEach(function (report) { + var standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(function (name) { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + return standardReport; + }; + + // shim getStats with maplike support + var makeMapStats = function makeMapStats(stats) { + return new Map(Object.keys(stats).map(function (key) { + return [key, stats[key]]; + })); + }; + if (arguments.length >= 2) { + var successCallbackWrapper_ = function successCallbackWrapper_(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + return origGetStats.apply(this, [successCallbackWrapper_, selector]); + } + + // promise-support + return new Promise(function (resolve, reject) { + origGetStats.apply(_this5, [function (response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} +function shimSenderReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this6 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this6; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + var sender = this; + return this._pc.getStats().then(function (result) { + return ( + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true) + ); + }); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this7 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this7; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + var receiver = this; + return this._pc.getStats().then(function (result) { + return utils.filterStats(result, receiver.track, false); + }); + }; + } + if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) { + var track = arguments[0]; + var sender; + var receiver; + var err; + this.getSenders().forEach(function (s) { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(function (r) { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || sender && receiver) { + return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this8 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams).map(function (streamId) { + return _this8._shimmedLocalStreams[streamId][0]; + }); + }; + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + var sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this9 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this9.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + var existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + var newSenders = this.getSenders().filter(function (newSender) { + return existingSenders.indexOf(newSender) === -1; + }); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this10 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(function (streamId) { + var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + _this10._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (_this10._shimmedLocalStreams[streamId].length === 1) { + delete _this10._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this11 = this; + var nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(function (stream) { + return _this11._reverseStreams[stream.id]; + }); + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this12 = this; + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this12.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + var newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + origRemoveStream.apply(this, [this._streams[stream.id] || stream]); + delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id]; + delete this._streams[stream.id]; + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var _this13 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + var streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || !streams[0].getTracks().find(function (t) { + return t === track; + })) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError'); + } + var alreadyExists = this.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + var oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(function () { + _this13.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + var newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(function (s) { + return s.track === track; + }); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + function replaceExternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + var _this14 = this; + var args = arguments; + var isLegacyCall = arguments.length && typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [function (description) { + var desc = replaceInternalStreamId(_this14, description); + args[0].apply(null, [desc]); + }, function (err) { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2]]); + } + return nativeMethod.apply(this, arguments).then(function (description) { + return replaceInternalStreamId(_this14, description); + }); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', { + get: function get() { + var description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this15 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + var isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + var stream; + Object.keys(this._streams).forEach(function (streamid) { + var hasTrack = _this15._streams[streamid].getTracks().find(function (track) { + return sender.track === track; + }); + if (hasTrack) { + stream = _this15._streams[streamid]; + } + }); + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} +function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) { + var pc = e.target; + if (browserDetails.version < 72 || pc.getConfiguration && pc.getConfiguration().sdpSemantics === 'plan-b') { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} diff --git a/node_modules/webrtc-adapter/dist/chrome/getdisplaymedia.js b/node_modules/webrtc-adapter/dist/chrome/getdisplaymedia.js new file mode 100644 index 0000000..6ee7586 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/getdisplaymedia.js @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + return getSourceId(constraints).then(function (sourceId) { + var widthSpecified = constraints.video && constraints.video.width; + var heightSpecified = constraints.video && constraints.video.height; + var frameRateSpecified = constraints.video && constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} diff --git a/node_modules/webrtc-adapter/dist/chrome/getusermedia.js b/node_modules/webrtc-adapter/dist/chrome/getusermedia.js new file mode 100644 index 0000000..80e2547 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/getusermedia.js @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logging = utils.log; +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + if (!navigator.mediaDevices) { + return; + } + var constraintsToChrome_ = function constraintsToChrome_(c) { + if (_typeof(c) !== 'object' || c.mandatory || c.optional) { + return c; + } + var cc = {}; + Object.keys(c).forEach(function (key) { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + var r = _typeof(c[key]) === 'object' ? c[key] : { + ideal: c[key] + }; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + var oldname_ = function oldname_(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return name === 'deviceId' ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + var oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(function (mix) { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + var shimConstraints_ = function shimConstraints_(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && _typeof(constraints.audio) === 'object') { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && _typeof(constraints.video) === 'object') { + // Shim facingMode for mobile & surface pro. + var face = constraints.video.facingMode; + face = face && (_typeof(face) === 'object' ? face : { + ideal: face + }); + var getSupportedFacingModeLies = browserDetails.version < 66; + if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + var matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices().then(function (devices) { + devices = devices.filter(function (d) { + return d.kind === 'videoinput'; + }); + var dev = devices.find(function (d) { + return matches.some(function (match) { + return d.label.toLowerCase().includes(match); + }); + }); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + + if (dev) { + constraints.video.deviceId = face.exact ? { + exact: dev.deviceId + } : { + ideal: dev.deviceId + }; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + var shimError_ = function shimError_(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString: function toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) { + shimConstraints_(constraints, function (c) { + navigator.webkitGetUserMedia(c, onSuccess, function (e) { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (cs) { + return shimConstraints_(cs, function (c) { + return origGetUserMedia(c).then(function (stream) { + if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(function (track) { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, function (e) { + return Promise.reject(shimError_(e)); + }); + }); + }; + } +} diff --git a/node_modules/webrtc-adapter/dist/chrome/selectaudiooutput.js b/node_modules/webrtc-adapter/dist/chrome/selectaudiooutput.js new file mode 100644 index 0000000..9e577e4 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/selectaudiooutput.js @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimSelectAudioOutput = shimSelectAudioOutput; +function shimSelectAudioOutput(window) { + // Polyfillying only makes sense when setSinkId is available + // and the function is not already there. + if (!('HTMLMediaElement' in window)) { + return; + } + if (!('setSinkId' in window.HTMLMediaElement.prototype)) { + return; + } + if (!(window.navigator && window.navigator.mediaDevices)) { + return; + } + if (!window.navigator.mediaDevices.enumerateDevices) { + return; + } + if (window.navigator.mediaDevices.selectAudioOutput) { + return; + } + window.navigator.mediaDevices.selectAudioOutput = function () { + return window.navigator.mediaDevices.enumerateDevices().then(function (devices) { + return devices.filter(function (d) { + return d.kind === 'audiooutput'; + }); + }); + }; +} diff --git a/node_modules/webrtc-adapter/dist/common_shim.js b/node_modules/webrtc-adapter/dist/common_shim.js new file mode 100644 index 0000000..1214fa0 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/common_shim.js @@ -0,0 +1,436 @@ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeExtmapAllowMixed = removeExtmapAllowMixed; +exports.shimAddIceCandidateNullOrEmpty = shimAddIceCandidateNullOrEmpty; +exports.shimConnectionState = shimConnectionState; +exports.shimMaxMessageSize = shimMaxMessageSize; +exports.shimParameterlessSetLocalDescription = shimParameterlessSetLocalDescription; +exports.shimRTCIceCandidate = shimRTCIceCandidate; +exports.shimRTCIceCandidateRelayProtocol = shimRTCIceCandidateRelayProtocol; +exports.shimSendThrowTypeError = shimSendThrowTypeError; +var _sdp = _interopRequireDefault(require("sdp")); +var utils = _interopRequireWildcard(require("./utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) { + return; + } + var NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (_typeof(args) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + var nativeCandidate = new NativeRTCIceCandidate(args); + var parsedCandidate = _sdp["default"].parseCandidate(args.candidate); + for (var key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, { + value: parsedCandidate[key] + }); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} +function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'relayProtocol' in window.RTCIceCandidate.prototype) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + var parsedCandidate = _sdp["default"].parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp' + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} +function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + var sctpInDescription = function sctpInDescription(description) { + if (!description || !description.sdp) { + return false; + } + var sections = _sdp["default"].splitSections(description.sdp); + sections.shift(); + return sections.some(function (mediaSection) { + var mLine = _sdp["default"].parseMLine(mediaSection); + return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) { + // TODO: Is there a better solution for detecting Firefox? + var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + var version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + var canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + var maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' && browserDetails.version === 57) { + maxMessageSize = 65535; + } + var match = _sdp["default"].matchPrefix(description.sdp, 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + var _this$getConfiguratio = this.getConfiguration(), + sdpSemantics = _this$getConfiguratio.sdpSemantics; + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true + }); + } + } + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + var isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + var canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + var maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + var sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get: function get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + return origSetRemoteDescription.apply(this, arguments); + }; +} +function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + var origDataChannelSend = dc.send; + dc.send = function send() { + var data = arguments[0]; + var length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() { + var dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) { + wrapDcSend(e.channel, e.target); + return e; + }); +} + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +function shimConnectionState(window) { + if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + var proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get: function get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get: function get() { + return this._onconnectionstatechange || null; + }, + set: function set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) { + var origMethod = proto[method]; + proto[method] = function () { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = function (e) { + var pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + var newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} +function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + var sdp = desc.sdp.split('\n').filter(function (line) { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp: sdp + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} +function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if ((browserDetails.browser === 'chrome' && browserDetails.version < 78 || browserDetails.browser === 'firefox' && browserDetails.version < 68 || browserDetails.browser === 'safari') && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + var _this = this; + var desc = arguments[0] || {}; + if (_typeof(desc) !== 'object' || desc.type && desc.sdp) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = { + type: desc.type, + sdp: desc.sdp + }; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || desc.type !== 'offer' && desc.type !== 'answer') { + return nativeSetLocalDescription.apply(this, [desc]); + } + var func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this).then(function (d) { + return nativeSetLocalDescription.apply(_this, [d]); + }); + }; +} diff --git a/node_modules/webrtc-adapter/dist/firefox/firefox_shim.js b/node_modules/webrtc-adapter/dist/firefox/firefox_shim.js new file mode 100644 index 0000000..44c4c38 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/firefox/firefox_shim.js @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAddTransceiver = shimAddTransceiver; +exports.shimCreateAnswer = shimCreateAnswer; +exports.shimCreateOffer = shimCreateOffer; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetParameters = shimGetParameters; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimRTCDataChannel = shimRTCDataChannel; +exports.shimReceiverGetStats = shimReceiverGetStats; +exports.shimRemoveStream = shimRemoveStream; +exports.shimSenderGetStats = shimSenderGetStats; +var utils = _interopRequireWildcard(require("../utils")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimPeerConnection(window, browserDetails) { + if (_typeof(window) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + var modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + var nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + return nativeGetStats.apply(this, [selector || null]).then(function (stats) { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(function (stat) { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach(function (stat, i) { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }).then(onSucc, onErr); + }; +} +function shimSenderGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map()); + }; +} +function shimReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this2 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this2; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} +function shimRemoveStream(window) { + if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(function (sender) { + if (sender.track && stream.getTracks().includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; +} +function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} +function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + var sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = _toConsumableArray(sendEncodings); + var shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach(function (encodingParam) { + if ('rid' in encodingParam) { + var ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + var transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + var sender = transceiver.sender; + var params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + params.encodings.length === 1 && Object.keys(params.encodings[0]).length === 0) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params).then(function () { + delete sender.sendEncodings; + })["catch"](function () { + delete sender.sendEncodings; + })); + } + } + return transceiver; + }; + } +} +function shimGetParameters(window) { + if (!(_typeof(window) === 'object' && window.RTCRtpSender)) { + return; + } + var origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = function getParameters() { + var params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} +function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + var _arguments2 = arguments, + _this4 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateOffer.apply(_this4, _arguments2); + })["finally"](function () { + _this4.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + var _arguments3 = arguments, + _this5 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateAnswer.apply(_this5, _arguments3); + })["finally"](function () { + _this5.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} diff --git a/node_modules/webrtc-adapter/dist/firefox/getdisplaymedia.js b/node_modules/webrtc-adapter/dist/firefox/getdisplaymedia.js new file mode 100644 index 0000000..bd2caaa --- /dev/null +++ b/node_modules/webrtc-adapter/dist/firefox/getdisplaymedia.js @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = { + mediaSource: preferredMediaSource + }; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} diff --git a/node_modules/webrtc-adapter/dist/firefox/getusermedia.js b/node_modules/webrtc-adapter/dist/firefox/getusermedia.js new file mode 100644 index 0000000..eac0dc4 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/firefox/getusermedia.js @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + var MediaStreamTrack = window && window.MediaStreamTrack; + navigator.getUserMedia = function (constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (c) { + if (_typeof(c) === 'object' && _typeof(c.audio) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + var nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function () { + var obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function (c) { + if (this.kind === 'audio' && _typeof(c) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} diff --git a/node_modules/webrtc-adapter/dist/safari/safari_shim.js b/node_modules/webrtc-adapter/dist/safari/safari_shim.js new file mode 100644 index 0000000..9d841ee --- /dev/null +++ b/node_modules/webrtc-adapter/dist/safari/safari_shim.js @@ -0,0 +1,346 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAudioContext = shimAudioContext; +exports.shimCallbacksAPI = shimCallbacksAPI; +exports.shimConstraints = shimConstraints; +exports.shimCreateOfferLegacy = shimCreateOfferLegacy; +exports.shimGetUserMedia = shimGetUserMedia; +exports.shimLocalStreamsAPI = shimLocalStreamsAPI; +exports.shimRTCIceServerUrls = shimRTCIceServerUrls; +exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI; +exports.shimTrackEventTransceiver = shimTrackEventTransceiver; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimLocalStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + var _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this = this; + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + stream.getVideoTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track) { + var _this2 = this; + for (var _len = arguments.length, streams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + streams[_key - 1] = arguments[_key]; + } + if (streams) { + streams.forEach(function (stream) { + if (!_this2._localStreams) { + _this2._localStreams = [stream]; + } else if (!_this2._localStreams.includes(stream)) { + _this2._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + if (!this._localStreams) { + this._localStreams = []; + } + var index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + var tracks = stream.getTracks(); + this.getSenders().forEach(function (sender) { + if (tracks.includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; + } +} +function shimRemoteStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get: function get() { + return this._onaddstream; + }, + set: function set(f) { + var _this4 = this; + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!_this4._remoteStreams) { + _this4._remoteStreams = []; + } + if (_this4._remoteStreams.includes(stream)) { + return; + } + _this4._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + _this4.dispatchEvent(event); + }); + }); + } + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} +function shimCallbacksAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + var prototype = window.RTCPeerConnection.prototype; + var origCreateOffer = prototype.createOffer; + var origCreateAnswer = prototype.createAnswer; + var setLocalDescription = prototype.setLocalDescription; + var setRemoteDescription = prototype.setRemoteDescription; + var addIceCandidate = prototype.addIceCandidate; + prototype.createOffer = function createOffer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.createAnswer = function createAnswer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + var withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + withCallback = function withCallback(candidate, successCallback, failureCallback) { + var promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} +function shimGetUserMedia(window) { + var navigator = window && window.navigator; + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + var mediaDevices = navigator.mediaDevices; + var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = function (constraints) { + return _getUserMedia(shimConstraints(constraints)); + }; + } + if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb); + }.bind(navigator); + } +} +function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, constraints, { + video: utils.compactObject(constraints.video) + }); + } + return constraints; +} +function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + var OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + var newIceServers = []; + for (var i = 0; i < pcConfig.iceServers.length; i++) { + var server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get: function get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} +function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimCreateOfferLegacy(window) { + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio; + } + var audioTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'audio'; + }); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) { + this.addTransceiver('audio', { + direction: 'recvonly' + }); + } + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo; + } + var videoTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'video'; + }); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) { + this.addTransceiver('video', { + direction: 'recvonly' + }); + } + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimAudioContext(window) { + if (_typeof(window) !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} diff --git a/node_modules/webrtc-adapter/dist/utils.js b/node_modules/webrtc-adapter/dist/utils.js new file mode 100644 index 0000000..578a34d --- /dev/null +++ b/node_modules/webrtc-adapter/dist/utils.js @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.compactObject = compactObject; +exports.deprecated = deprecated; +exports.detectBrowser = detectBrowser; +exports.disableLog = disableLog; +exports.disableWarnings = disableWarnings; +exports.extractVersion = extractVersion; +exports.filterStats = filterStats; +exports.log = log; +exports.walkStats = walkStats; +exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logDisabled_ = true; +var deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +function extractVersion(uastring, expr, pos) { + var match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + var proto = window.RTCPeerConnection.prototype; + var nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + var wrappedCallback = function wrappedCallback(e) { + var modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]); + }; + var nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + var unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap]["delete"](cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]); + }; + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get: function get() { + return this['_on' + eventNameToWrap]; + }, + set: function set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} +function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + logDisabled_ = bool; + return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} +function log() { + if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +function detectBrowser(window) { + // Returned result object. + var result = { + browser: null, + version: null + }; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + var navigator = window.navigator; + if (navigator.mozGetUserMedia) { + // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { + // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { + // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +function compactObject(data) { + if (!isObject(data)) { + return data; + } + return Object.keys(data).reduce(function (accumulator, key) { + var isObj = isObject(data[key]); + var value = isObj ? compactObject(data[key]) : data[key]; + var isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, _defineProperty({}, key, value)); + }, {}); +} + +/* iterates the stats graph recursively. */ +function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(function (name) { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(function (id) { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +function filterStats(result, track, outbound) { + var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + var filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + var trackStats = []; + result.forEach(function (value) { + if (value.type === 'track' && value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(function (trackStat) { + result.forEach(function (stats) { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} diff --git a/node_modules/webrtc-adapter/index.d.ts b/node_modules/webrtc-adapter/index.d.ts new file mode 100644 index 0000000..0fd704f --- /dev/null +++ b/node_modules/webrtc-adapter/index.d.ts @@ -0,0 +1,59 @@ +declare module "webrtc-adapter" { + interface IBrowserDetails { + browser: string; + version?: number; + supportsUnifiedPlan?: boolean; + } + + interface ICommonShim { + shimRTCIceCandidate(window: Window): void; + shimMaxMessageSize(window: Window): void; + shimSendThrowTypeError(window: Window): void; + shimConnectionState(window: Window): void; + removeAllowExtmapMixed(window: Window): void; + } + + interface IChromeShim { + shimMediaStream(window: Window): void; + shimOnTrack(window: Window): void; + shimGetSendersWithDtmf(window: Window): void; + shimGetStats(window: Window): void; + shimSenderReceiverGetStats(window: Window): void; + shimAddTrackRemoveTrackWithNative(window: Window): void; + shimAddTrackRemoveTrack(window: Window): void; + shimPeerConnection(window: Window): void; + fixNegotiationNeeded(window: Window): void; + } + + interface IFirefoxShim { + shimOnTrack(window: Window): void; + shimPeerConnection(window: Window): void; + shimSenderGetStats(window: Window): void; + shimReceiverGetStats(window: Window): void; + shimRemoveStream(window: Window): void; + shimRTCDataChannel(window: Window): void; + } + + interface ISafariShim { + shimLocalStreamsAPI(window: Window): void; + shimRemoteStreamsAPI(window: Window): void; + shimCallbacksAPI(window: Window): void; + shimGetUserMedia(window: Window): void; + shimConstraints(constraints: MediaStreamConstraints): void; + shimRTCIceServerUrls(window: Window): void; + shimTrackEventTransceiver(window: Window): void; + shimCreateOfferLegacy(window: Window): void; + } + + export interface IAdapter { + browserDetails: IBrowserDetails; + commonShim: ICommonShim; + browserShim: IChromeShim | IFirefoxShim | ISafariShim | undefined; + extractVersion(uastring: string, expr: string, pos: number): number; + disableLog(disable: boolean): void; + disableWarnings(disable: boolean): void; + } + + const adapter: IAdapter; + export default adapter; +} diff --git a/node_modules/webrtc-adapter/out/adapter.js b/node_modules/webrtc-adapter/out/adapter.js new file mode 100644 index 0000000..ce2d6a8 --- /dev/null +++ b/node_modules/webrtc-adapter/out/adapter.js @@ -0,0 +1,3364 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.adapter = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}, + window = _ref.window; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + shimChrome: true, + shimFirefox: true, + shimSafari: true + }; + // Utils. + var logging = utils.log; + var browserDetails = utils.detectBrowser(window); + var adapter = { + browserDetails: browserDetails, + commonShim: commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp: sdp + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + return adapter; +} + +},{"./chrome/chrome_shim":3,"./common_shim":6,"./firefox/firefox_shim":7,"./safari/safari_shim":10,"./utils":11,"sdp":12}],3:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fixNegotiationNeeded = fixNegotiationNeeded; +exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack; +exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf; +exports.shimGetStats = shimGetStats; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimMediaStream = shimMediaStream; +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats; +var utils = _interopRequireWildcard(require("../utils.js")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get: function get() { + return this._ontrack; + }, + set: function set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var _this = this; + if (!this._ontrackpoly) { + this._ontrackpoly = function (e) { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', function (te) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === te.track.id; + }); + } else { + receiver = { + track: te.track + }; + } + var event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(function (track) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === track.id; + }); + } else { + receiver = { + track: track + }; + } + var event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', { + value: { + receiver: e.receiver + } + }); + } + return e; + }); + } +} +function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) { + var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) { + return { + track: track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + var idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this2 = this; + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + _this2._senders.push(shimSenderWithDtmf(_this2, track)); + }); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + var sender = _this3._senders.find(function (s) { + return s.track === track; + }); + if (sender) { + // remove sender + _this3._senders.splice(_this3._senders.indexOf(sender), 1); + } + }); + }; + } else if (_typeof(window) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this4 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this4; + }); + return senders; + }; + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get: function get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} +function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _this5 = this; + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + var fixChromeStats_ = function fixChromeStats_(response) { + var standardReport = {}; + var reports = response.result(); + reports.forEach(function (report) { + var standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(function (name) { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + return standardReport; + }; + + // shim getStats with maplike support + var makeMapStats = function makeMapStats(stats) { + return new Map(Object.keys(stats).map(function (key) { + return [key, stats[key]]; + })); + }; + if (arguments.length >= 2) { + var successCallbackWrapper_ = function successCallbackWrapper_(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + return origGetStats.apply(this, [successCallbackWrapper_, selector]); + } + + // promise-support + return new Promise(function (resolve, reject) { + origGetStats.apply(_this5, [function (response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} +function shimSenderReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this6 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this6; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + var sender = this; + return this._pc.getStats().then(function (result) { + return ( + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true) + ); + }); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this7 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this7; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + var receiver = this; + return this._pc.getStats().then(function (result) { + return utils.filterStats(result, receiver.track, false); + }); + }; + } + if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) { + var track = arguments[0]; + var sender; + var receiver; + var err; + this.getSenders().forEach(function (s) { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(function (r) { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || sender && receiver) { + return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this8 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams).map(function (streamId) { + return _this8._shimmedLocalStreams[streamId][0]; + }); + }; + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + var sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this9 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this9.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + var existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + var newSenders = this.getSenders().filter(function (newSender) { + return existingSenders.indexOf(newSender) === -1; + }); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this10 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(function (streamId) { + var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + _this10._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (_this10._shimmedLocalStreams[streamId].length === 1) { + delete _this10._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this11 = this; + var nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(function (stream) { + return _this11._reverseStreams[stream.id]; + }); + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this12 = this; + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this12.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + var newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + origRemoveStream.apply(this, [this._streams[stream.id] || stream]); + delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id]; + delete this._streams[stream.id]; + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var _this13 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + var streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || !streams[0].getTracks().find(function (t) { + return t === track; + })) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError'); + } + var alreadyExists = this.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + var oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(function () { + _this13.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + var newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(function (s) { + return s.track === track; + }); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + function replaceExternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + var _this14 = this; + var args = arguments; + var isLegacyCall = arguments.length && typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [function (description) { + var desc = replaceInternalStreamId(_this14, description); + args[0].apply(null, [desc]); + }, function (err) { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2]]); + } + return nativeMethod.apply(this, arguments).then(function (description) { + return replaceInternalStreamId(_this14, description); + }); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', { + get: function get() { + var description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this15 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + var isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + var stream; + Object.keys(this._streams).forEach(function (streamid) { + var hasTrack = _this15._streams[streamid].getTracks().find(function (track) { + return sender.track === track; + }); + if (hasTrack) { + stream = _this15._streams[streamid]; + } + }); + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} +function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) { + var pc = e.target; + if (browserDetails.version < 72 || pc.getConfiguration && pc.getConfiguration().sdpSemantics === 'plan-b') { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} + +},{"../utils.js":11,"./getdisplaymedia":4,"./getusermedia":5}],4:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + return getSourceId(constraints).then(function (sourceId) { + var widthSpecified = constraints.video && constraints.video.width; + var heightSpecified = constraints.video && constraints.video.height; + var frameRateSpecified = constraints.video && constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} + +},{}],5:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logging = utils.log; +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + if (!navigator.mediaDevices) { + return; + } + var constraintsToChrome_ = function constraintsToChrome_(c) { + if (_typeof(c) !== 'object' || c.mandatory || c.optional) { + return c; + } + var cc = {}; + Object.keys(c).forEach(function (key) { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + var r = _typeof(c[key]) === 'object' ? c[key] : { + ideal: c[key] + }; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + var oldname_ = function oldname_(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return name === 'deviceId' ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + var oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(function (mix) { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + var shimConstraints_ = function shimConstraints_(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && _typeof(constraints.audio) === 'object') { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && _typeof(constraints.video) === 'object') { + // Shim facingMode for mobile & surface pro. + var face = constraints.video.facingMode; + face = face && (_typeof(face) === 'object' ? face : { + ideal: face + }); + var getSupportedFacingModeLies = browserDetails.version < 66; + if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + var matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices().then(function (devices) { + devices = devices.filter(function (d) { + return d.kind === 'videoinput'; + }); + var dev = devices.find(function (d) { + return matches.some(function (match) { + return d.label.toLowerCase().includes(match); + }); + }); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + + if (dev) { + constraints.video.deviceId = face.exact ? { + exact: dev.deviceId + } : { + ideal: dev.deviceId + }; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + var shimError_ = function shimError_(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString: function toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) { + shimConstraints_(constraints, function (c) { + navigator.webkitGetUserMedia(c, onSuccess, function (e) { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (cs) { + return shimConstraints_(cs, function (c) { + return origGetUserMedia(c).then(function (stream) { + if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(function (track) { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, function (e) { + return Promise.reject(shimError_(e)); + }); + }); + }; + } +} + +},{"../utils.js":11}],6:[function(require,module,exports){ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeExtmapAllowMixed = removeExtmapAllowMixed; +exports.shimAddIceCandidateNullOrEmpty = shimAddIceCandidateNullOrEmpty; +exports.shimConnectionState = shimConnectionState; +exports.shimMaxMessageSize = shimMaxMessageSize; +exports.shimParameterlessSetLocalDescription = shimParameterlessSetLocalDescription; +exports.shimRTCIceCandidate = shimRTCIceCandidate; +exports.shimRTCIceCandidateRelayProtocol = shimRTCIceCandidateRelayProtocol; +exports.shimSendThrowTypeError = shimSendThrowTypeError; +var _sdp = _interopRequireDefault(require("sdp")); +var utils = _interopRequireWildcard(require("./utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) { + return; + } + var NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (_typeof(args) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + var nativeCandidate = new NativeRTCIceCandidate(args); + var parsedCandidate = _sdp["default"].parseCandidate(args.candidate); + for (var key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, { + value: parsedCandidate[key] + }); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} +function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'relayProtocol' in window.RTCIceCandidate.prototype) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + var parsedCandidate = _sdp["default"].parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp' + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} +function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + var sctpInDescription = function sctpInDescription(description) { + if (!description || !description.sdp) { + return false; + } + var sections = _sdp["default"].splitSections(description.sdp); + sections.shift(); + return sections.some(function (mediaSection) { + var mLine = _sdp["default"].parseMLine(mediaSection); + return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) { + // TODO: Is there a better solution for detecting Firefox? + var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + var version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + var canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + var maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' && browserDetails.version === 57) { + maxMessageSize = 65535; + } + var match = _sdp["default"].matchPrefix(description.sdp, 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + var _this$getConfiguratio = this.getConfiguration(), + sdpSemantics = _this$getConfiguratio.sdpSemantics; + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true + }); + } + } + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + var isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + var canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + var maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + var sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get: function get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + return origSetRemoteDescription.apply(this, arguments); + }; +} +function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + var origDataChannelSend = dc.send; + dc.send = function send() { + var data = arguments[0]; + var length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() { + var dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) { + wrapDcSend(e.channel, e.target); + return e; + }); +} + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +function shimConnectionState(window) { + if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + var proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get: function get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get: function get() { + return this._onconnectionstatechange || null; + }, + set: function set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) { + var origMethod = proto[method]; + proto[method] = function () { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = function (e) { + var pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + var newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} +function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + var sdp = desc.sdp.split('\n').filter(function (line) { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp: sdp + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} +function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if ((browserDetails.browser === 'chrome' && browserDetails.version < 78 || browserDetails.browser === 'firefox' && browserDetails.version < 68 || browserDetails.browser === 'safari') && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + var _this = this; + var desc = arguments[0] || {}; + if (_typeof(desc) !== 'object' || desc.type && desc.sdp) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = { + type: desc.type, + sdp: desc.sdp + }; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || desc.type !== 'offer' && desc.type !== 'answer') { + return nativeSetLocalDescription.apply(this, [desc]); + } + var func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this).then(function (d) { + return nativeSetLocalDescription.apply(_this, [d]); + }); + }; +} + +},{"./utils":11,"sdp":12}],7:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAddTransceiver = shimAddTransceiver; +exports.shimCreateAnswer = shimCreateAnswer; +exports.shimCreateOffer = shimCreateOffer; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetParameters = shimGetParameters; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimRTCDataChannel = shimRTCDataChannel; +exports.shimReceiverGetStats = shimReceiverGetStats; +exports.shimRemoveStream = shimRemoveStream; +exports.shimSenderGetStats = shimSenderGetStats; +var utils = _interopRequireWildcard(require("../utils")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimPeerConnection(window, browserDetails) { + if (_typeof(window) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + var modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + var nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + return nativeGetStats.apply(this, [selector || null]).then(function (stats) { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(function (stat) { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach(function (stat, i) { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }).then(onSucc, onErr); + }; +} +function shimSenderGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map()); + }; +} +function shimReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this2 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this2; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} +function shimRemoveStream(window) { + if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(function (sender) { + if (sender.track && stream.getTracks().includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; +} +function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} +function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + var sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = _toConsumableArray(sendEncodings); + var shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach(function (encodingParam) { + if ('rid' in encodingParam) { + var ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + var transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + var sender = transceiver.sender; + var params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + params.encodings.length === 1 && Object.keys(params.encodings[0]).length === 0) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params).then(function () { + delete sender.sendEncodings; + })["catch"](function () { + delete sender.sendEncodings; + })); + } + } + return transceiver; + }; + } +} +function shimGetParameters(window) { + if (!(_typeof(window) === 'object' && window.RTCRtpSender)) { + return; + } + var origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = function getParameters() { + var params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} +function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + var _arguments2 = arguments, + _this4 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateOffer.apply(_this4, _arguments2); + })["finally"](function () { + _this4.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + var _arguments3 = arguments, + _this5 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateAnswer.apply(_this5, _arguments3); + })["finally"](function () { + _this5.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} + +},{"../utils":11,"./getdisplaymedia":8,"./getusermedia":9}],8:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = { + mediaSource: preferredMediaSource + }; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} + +},{}],9:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + var MediaStreamTrack = window && window.MediaStreamTrack; + navigator.getUserMedia = function (constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (c) { + if (_typeof(c) === 'object' && _typeof(c.audio) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + var nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function () { + var obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function (c) { + if (this.kind === 'audio' && _typeof(c) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} + +},{"../utils":11}],10:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAudioContext = shimAudioContext; +exports.shimCallbacksAPI = shimCallbacksAPI; +exports.shimConstraints = shimConstraints; +exports.shimCreateOfferLegacy = shimCreateOfferLegacy; +exports.shimGetUserMedia = shimGetUserMedia; +exports.shimLocalStreamsAPI = shimLocalStreamsAPI; +exports.shimRTCIceServerUrls = shimRTCIceServerUrls; +exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI; +exports.shimTrackEventTransceiver = shimTrackEventTransceiver; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimLocalStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + var _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this = this; + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + stream.getVideoTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track) { + var _this2 = this; + for (var _len = arguments.length, streams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + streams[_key - 1] = arguments[_key]; + } + if (streams) { + streams.forEach(function (stream) { + if (!_this2._localStreams) { + _this2._localStreams = [stream]; + } else if (!_this2._localStreams.includes(stream)) { + _this2._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + if (!this._localStreams) { + this._localStreams = []; + } + var index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + var tracks = stream.getTracks(); + this.getSenders().forEach(function (sender) { + if (tracks.includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; + } +} +function shimRemoteStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get: function get() { + return this._onaddstream; + }, + set: function set(f) { + var _this4 = this; + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!_this4._remoteStreams) { + _this4._remoteStreams = []; + } + if (_this4._remoteStreams.includes(stream)) { + return; + } + _this4._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + _this4.dispatchEvent(event); + }); + }); + } + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} +function shimCallbacksAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + var prototype = window.RTCPeerConnection.prototype; + var origCreateOffer = prototype.createOffer; + var origCreateAnswer = prototype.createAnswer; + var setLocalDescription = prototype.setLocalDescription; + var setRemoteDescription = prototype.setRemoteDescription; + var addIceCandidate = prototype.addIceCandidate; + prototype.createOffer = function createOffer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.createAnswer = function createAnswer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + var withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + withCallback = function withCallback(candidate, successCallback, failureCallback) { + var promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} +function shimGetUserMedia(window) { + var navigator = window && window.navigator; + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + var mediaDevices = navigator.mediaDevices; + var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = function (constraints) { + return _getUserMedia(shimConstraints(constraints)); + }; + } + if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb); + }.bind(navigator); + } +} +function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, constraints, { + video: utils.compactObject(constraints.video) + }); + } + return constraints; +} +function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + var OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + var newIceServers = []; + for (var i = 0; i < pcConfig.iceServers.length; i++) { + var server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get: function get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} +function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimCreateOfferLegacy(window) { + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio; + } + var audioTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'audio'; + }); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) { + this.addTransceiver('audio', { + direction: 'recvonly' + }); + } + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo; + } + var videoTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'video'; + }); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) { + this.addTransceiver('video', { + direction: 'recvonly' + }); + } + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimAudioContext(window) { + if (_typeof(window) !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} + +},{"../utils":11}],11:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.compactObject = compactObject; +exports.deprecated = deprecated; +exports.detectBrowser = detectBrowser; +exports.disableLog = disableLog; +exports.disableWarnings = disableWarnings; +exports.extractVersion = extractVersion; +exports.filterStats = filterStats; +exports.log = log; +exports.walkStats = walkStats; +exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logDisabled_ = true; +var deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +function extractVersion(uastring, expr, pos) { + var match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + var proto = window.RTCPeerConnection.prototype; + var nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + var wrappedCallback = function wrappedCallback(e) { + var modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]); + }; + var nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + var unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap]["delete"](cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]); + }; + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get: function get() { + return this['_on' + eventNameToWrap]; + }, + set: function set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} +function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + logDisabled_ = bool; + return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} +function log() { + if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +function detectBrowser(window) { + // Returned result object. + var result = { + browser: null, + version: null + }; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + var navigator = window.navigator; + if (navigator.mozGetUserMedia) { + // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { + // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { + // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +function compactObject(data) { + if (!isObject(data)) { + return data; + } + return Object.keys(data).reduce(function (accumulator, key) { + var isObj = isObject(data[key]); + var value = isObj ? compactObject(data[key]) : data[key]; + var isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, _defineProperty({}, key, value)); + }, {}); +} + +/* iterates the stats graph recursively. */ +function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(function (name) { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(function (id) { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +function filterStats(result, track, outbound) { + var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + var filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + var trackStats = []; + result.forEach(function (value) { + if (value.type === 'track' && value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(function (trackStat) { + result.forEach(function (stats) { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} + +},{}],12:[function(require,module,exports){ +/* eslint-env node */ +'use strict'; + +// SDP helpers. + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function () { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function (blob) { + return blob.trim().split('\n').map(function (line) { + return line.trim(); + }); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function (blob) { + var parts = blob.split('\nm='); + return parts.map(function (part, index) { + return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; + }); +}; + +// Returns the session description. +SDPUtils.getDescription = function (blob) { + var sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function (blob) { + var sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function (blob, prefix) { + return SDPUtils.splitLines(blob).filter(function (line) { + return line.indexOf(prefix) === 0; + }); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function (line) { + var parts = void 0; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + var candidate = { + foundation: parts[0], + component: { 1: 'rtp', 2: 'rtcp' }[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7] + }; + + for (var i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: + // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function (candidate) { + var sdp = []; + sdp.push(candidate.foundation); + + var component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + var type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function (line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function (line) { + var parts = line.substring(9).split(' '); + var parsed = { + payloadType: parseInt(parts.shift(), 10) // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function (codec) { + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + var channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function (line) { + var parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' ') + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function (headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + (headerExtension.direction && headerExtension.direction !== 'sendrecv' ? '/' + headerExtension.direction : '') + ' ' + headerExtension.uri + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function (line) { + var parsed = {}; + var kv = void 0; + var parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (var j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function (codec) { + var line = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + var params = []; + Object.keys(codec.parameters).forEach(function (param) { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function (line) { + var parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' ') + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function (codec) { + var lines = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(function (fb) { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function (line) { + var sp = line.indexOf(' '); + var parts = { + ssrc: parseInt(line.substring(7, sp), 10) + }; + var colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function (line) { + var parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(function (ssrc) { + return parseInt(ssrc, 10); + }) + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function (mediaSection) { + var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function (line) { + var parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase() // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint) + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function (params, setupType) { + var sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(function (fp) { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function (line) { + var parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3) + }; +}; + +SDPUtils.writeCryptoLine = function (parameters) { + return 'a=crypto:' + parameters.tag + ' ' + parameters.cryptoSuite + ' ' + (_typeof(parameters.keyParams) === 'object' ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) : parameters.keyParams) + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function (keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + var parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined + }; +}; + +SDPUtils.writeCryptoKeyParams = function (keyParams) { + return keyParams.keyMethod + ':' + keyParams.keySalt + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + (keyParams.mkiValue && keyParams.mkiLength ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function (mediaSection, sessionpart) { + var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-ufrag:')[0]; + var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10) + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function (params) { + var sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function (mediaSection) { + var description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [] + }; + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + description.profile = mline[2]; + for (var i = 3; i < mline.length; i++) { + // find all codecs from mline[3..] + var pt = mline[i]; + var rtpmapline = SDPUtils.matchPrefix(mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + var codec = SDPUtils.parseRtpMap(rtpmapline); + var fmtps = SDPUtils.matchPrefix(mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:' + pt + ' ').map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: + // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function (line) { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + var wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ').map(SDPUtils.parseRtcpFb); + description.codecs.forEach(function (codec) { + wildcardRtcpFb.forEach(function (fb) { + var duplicate = codec.rtcpFeedback.find(function (existingFeedback) { + return existingFeedback.type === fb.type && existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function (kind, caps) { + var sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(function (codec) { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(function (codec) { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + var maxptime = 0; + caps.codecs.forEach(function (codec) { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(function (extension) { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function (mediaSection) { + var encodingParameters = []; + var description = SDPUtils.parseRtpParameters(mediaSection); + var hasRed = description.fecMechanisms.indexOf('RED') !== -1; + var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (parts) { + return parts.attribute === 'cname'; + }); + var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + var secondarySsrc = void 0; + + var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID').map(function (line) { + var parts = line.substring(17).split(' '); + return parts.map(function (part) { + return parseInt(part, 10); + }); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(function (codec) { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + var encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10) + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = { ssrc: secondarySsrc }; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red' + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 - 50 * 40 * 8; + } else { + bandwidth = undefined; + } + encodingParameters.forEach(function (params) { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function (mediaSection) { + var rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (obj) { + return obj.attribute === 'cname'; + })[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function (rtcpParameters) { + var sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function (mediaSection) { + var parts = void 0; + var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return { stream: parts[0], track: parts[1] }; + } + var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (msidParts) { + return msidParts.attribute === 'msid'; + }); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return { stream: parts[0], track: parts[1] }; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function (mediaSection) { + var mline = SDPUtils.parseMLine(mediaSection); + var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + var maxMessageSize = void 0; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize: maxMessageSize + }; + } + var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + var parts = sctpMapLines[0].substring(10).split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize: maxMessageSize + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function (media, sctp) { + var output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctp-port:' + sctp.port + '\r\n']; + } else { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n']; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function () { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function (sessId, sessVer, sessUser) { + var sessionId = void 0; + var version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + var user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + 'o=' + user + ' ' + sessionId + ' ' + version + ' IN IP4 127.0.0.1\r\n' + 's=-\r\n' + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function (mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + var lines = SDPUtils.splitLines(mediaSection); + for (var i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function (mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' ') + }; +}; + +SDPUtils.parseOLine = function (mediaSection) { + var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + var parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5] + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function (blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + var lines = SDPUtils.splitLines(blob); + for (var i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object') { + module.exports = SDPUtils; +} +},{}]},{},[1])(1) +}); diff --git a/node_modules/webrtc-adapter/out/adapter_no_global.js b/node_modules/webrtc-adapter/out/adapter_no_global.js new file mode 100644 index 0000000..dd390fb --- /dev/null +++ b/node_modules/webrtc-adapter/out/adapter_no_global.js @@ -0,0 +1,3363 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}, + window = _ref.window; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + shimChrome: true, + shimFirefox: true, + shimSafari: true + }; + // Utils. + var logging = utils.log; + var browserDetails = utils.detectBrowser(window); + var adapter = { + browserDetails: browserDetails, + commonShim: commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp: sdp + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + return adapter; +} + +},{"./chrome/chrome_shim":3,"./common_shim":6,"./firefox/firefox_shim":7,"./safari/safari_shim":10,"./utils":11,"sdp":12}],3:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fixNegotiationNeeded = fixNegotiationNeeded; +exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack; +exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf; +exports.shimGetStats = shimGetStats; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimMediaStream = shimMediaStream; +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats; +var utils = _interopRequireWildcard(require("../utils.js")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get: function get() { + return this._ontrack; + }, + set: function set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var _this = this; + if (!this._ontrackpoly) { + this._ontrackpoly = function (e) { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', function (te) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === te.track.id; + }); + } else { + receiver = { + track: te.track + }; + } + var event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(function (track) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === track.id; + }); + } else { + receiver = { + track: track + }; + } + var event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', { + value: { + receiver: e.receiver + } + }); + } + return e; + }); + } +} +function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) { + var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) { + return { + track: track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + var idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this2 = this; + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + _this2._senders.push(shimSenderWithDtmf(_this2, track)); + }); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + var sender = _this3._senders.find(function (s) { + return s.track === track; + }); + if (sender) { + // remove sender + _this3._senders.splice(_this3._senders.indexOf(sender), 1); + } + }); + }; + } else if (_typeof(window) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this4 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this4; + }); + return senders; + }; + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get: function get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} +function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _this5 = this; + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + var fixChromeStats_ = function fixChromeStats_(response) { + var standardReport = {}; + var reports = response.result(); + reports.forEach(function (report) { + var standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(function (name) { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + return standardReport; + }; + + // shim getStats with maplike support + var makeMapStats = function makeMapStats(stats) { + return new Map(Object.keys(stats).map(function (key) { + return [key, stats[key]]; + })); + }; + if (arguments.length >= 2) { + var successCallbackWrapper_ = function successCallbackWrapper_(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + return origGetStats.apply(this, [successCallbackWrapper_, selector]); + } + + // promise-support + return new Promise(function (resolve, reject) { + origGetStats.apply(_this5, [function (response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} +function shimSenderReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this6 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this6; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + var sender = this; + return this._pc.getStats().then(function (result) { + return ( + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true) + ); + }); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this7 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this7; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + var receiver = this; + return this._pc.getStats().then(function (result) { + return utils.filterStats(result, receiver.track, false); + }); + }; + } + if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) { + var track = arguments[0]; + var sender; + var receiver; + var err; + this.getSenders().forEach(function (s) { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(function (r) { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || sender && receiver) { + return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this8 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams).map(function (streamId) { + return _this8._shimmedLocalStreams[streamId][0]; + }); + }; + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + var sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this9 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this9.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + var existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + var newSenders = this.getSenders().filter(function (newSender) { + return existingSenders.indexOf(newSender) === -1; + }); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this10 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(function (streamId) { + var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + _this10._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (_this10._shimmedLocalStreams[streamId].length === 1) { + delete _this10._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this11 = this; + var nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(function (stream) { + return _this11._reverseStreams[stream.id]; + }); + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this12 = this; + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this12.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + var newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + origRemoveStream.apply(this, [this._streams[stream.id] || stream]); + delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id]; + delete this._streams[stream.id]; + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var _this13 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + var streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || !streams[0].getTracks().find(function (t) { + return t === track; + })) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError'); + } + var alreadyExists = this.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + var oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(function () { + _this13.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + var newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(function (s) { + return s.track === track; + }); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + function replaceExternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + var _this14 = this; + var args = arguments; + var isLegacyCall = arguments.length && typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [function (description) { + var desc = replaceInternalStreamId(_this14, description); + args[0].apply(null, [desc]); + }, function (err) { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2]]); + } + return nativeMethod.apply(this, arguments).then(function (description) { + return replaceInternalStreamId(_this14, description); + }); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', { + get: function get() { + var description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this15 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + var isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + var stream; + Object.keys(this._streams).forEach(function (streamid) { + var hasTrack = _this15._streams[streamid].getTracks().find(function (track) { + return sender.track === track; + }); + if (hasTrack) { + stream = _this15._streams[streamid]; + } + }); + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} +function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) { + var pc = e.target; + if (browserDetails.version < 72 || pc.getConfiguration && pc.getConfiguration().sdpSemantics === 'plan-b') { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} + +},{"../utils.js":11,"./getdisplaymedia":4,"./getusermedia":5}],4:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + return getSourceId(constraints).then(function (sourceId) { + var widthSpecified = constraints.video && constraints.video.width; + var heightSpecified = constraints.video && constraints.video.height; + var frameRateSpecified = constraints.video && constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} + +},{}],5:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logging = utils.log; +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + if (!navigator.mediaDevices) { + return; + } + var constraintsToChrome_ = function constraintsToChrome_(c) { + if (_typeof(c) !== 'object' || c.mandatory || c.optional) { + return c; + } + var cc = {}; + Object.keys(c).forEach(function (key) { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + var r = _typeof(c[key]) === 'object' ? c[key] : { + ideal: c[key] + }; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + var oldname_ = function oldname_(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return name === 'deviceId' ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + var oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(function (mix) { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + var shimConstraints_ = function shimConstraints_(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && _typeof(constraints.audio) === 'object') { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && _typeof(constraints.video) === 'object') { + // Shim facingMode for mobile & surface pro. + var face = constraints.video.facingMode; + face = face && (_typeof(face) === 'object' ? face : { + ideal: face + }); + var getSupportedFacingModeLies = browserDetails.version < 66; + if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + var matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices().then(function (devices) { + devices = devices.filter(function (d) { + return d.kind === 'videoinput'; + }); + var dev = devices.find(function (d) { + return matches.some(function (match) { + return d.label.toLowerCase().includes(match); + }); + }); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + + if (dev) { + constraints.video.deviceId = face.exact ? { + exact: dev.deviceId + } : { + ideal: dev.deviceId + }; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + var shimError_ = function shimError_(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString: function toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) { + shimConstraints_(constraints, function (c) { + navigator.webkitGetUserMedia(c, onSuccess, function (e) { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (cs) { + return shimConstraints_(cs, function (c) { + return origGetUserMedia(c).then(function (stream) { + if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(function (track) { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, function (e) { + return Promise.reject(shimError_(e)); + }); + }); + }; + } +} + +},{"../utils.js":11}],6:[function(require,module,exports){ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeExtmapAllowMixed = removeExtmapAllowMixed; +exports.shimAddIceCandidateNullOrEmpty = shimAddIceCandidateNullOrEmpty; +exports.shimConnectionState = shimConnectionState; +exports.shimMaxMessageSize = shimMaxMessageSize; +exports.shimParameterlessSetLocalDescription = shimParameterlessSetLocalDescription; +exports.shimRTCIceCandidate = shimRTCIceCandidate; +exports.shimRTCIceCandidateRelayProtocol = shimRTCIceCandidateRelayProtocol; +exports.shimSendThrowTypeError = shimSendThrowTypeError; +var _sdp = _interopRequireDefault(require("sdp")); +var utils = _interopRequireWildcard(require("./utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) { + return; + } + var NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (_typeof(args) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + var nativeCandidate = new NativeRTCIceCandidate(args); + var parsedCandidate = _sdp["default"].parseCandidate(args.candidate); + for (var key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, { + value: parsedCandidate[key] + }); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} +function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'relayProtocol' in window.RTCIceCandidate.prototype) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + var parsedCandidate = _sdp["default"].parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp' + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} +function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + var sctpInDescription = function sctpInDescription(description) { + if (!description || !description.sdp) { + return false; + } + var sections = _sdp["default"].splitSections(description.sdp); + sections.shift(); + return sections.some(function (mediaSection) { + var mLine = _sdp["default"].parseMLine(mediaSection); + return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) { + // TODO: Is there a better solution for detecting Firefox? + var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + var version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + var canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + var maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' && browserDetails.version === 57) { + maxMessageSize = 65535; + } + var match = _sdp["default"].matchPrefix(description.sdp, 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + var _this$getConfiguratio = this.getConfiguration(), + sdpSemantics = _this$getConfiguratio.sdpSemantics; + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true + }); + } + } + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + var isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + var canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + var maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + var sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get: function get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + return origSetRemoteDescription.apply(this, arguments); + }; +} +function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + var origDataChannelSend = dc.send; + dc.send = function send() { + var data = arguments[0]; + var length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() { + var dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) { + wrapDcSend(e.channel, e.target); + return e; + }); +} + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +function shimConnectionState(window) { + if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + var proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get: function get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get: function get() { + return this._onconnectionstatechange || null; + }, + set: function set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) { + var origMethod = proto[method]; + proto[method] = function () { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = function (e) { + var pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + var newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} +function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + var sdp = desc.sdp.split('\n').filter(function (line) { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp: sdp + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} +function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if ((browserDetails.browser === 'chrome' && browserDetails.version < 78 || browserDetails.browser === 'firefox' && browserDetails.version < 68 || browserDetails.browser === 'safari') && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + var _this = this; + var desc = arguments[0] || {}; + if (_typeof(desc) !== 'object' || desc.type && desc.sdp) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = { + type: desc.type, + sdp: desc.sdp + }; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || desc.type !== 'offer' && desc.type !== 'answer') { + return nativeSetLocalDescription.apply(this, [desc]); + } + var func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this).then(function (d) { + return nativeSetLocalDescription.apply(_this, [d]); + }); + }; +} + +},{"./utils":11,"sdp":12}],7:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAddTransceiver = shimAddTransceiver; +exports.shimCreateAnswer = shimCreateAnswer; +exports.shimCreateOffer = shimCreateOffer; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetParameters = shimGetParameters; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimRTCDataChannel = shimRTCDataChannel; +exports.shimReceiverGetStats = shimReceiverGetStats; +exports.shimRemoveStream = shimRemoveStream; +exports.shimSenderGetStats = shimSenderGetStats; +var utils = _interopRequireWildcard(require("../utils")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimPeerConnection(window, browserDetails) { + if (_typeof(window) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + var modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + var nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + return nativeGetStats.apply(this, [selector || null]).then(function (stats) { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(function (stat) { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach(function (stat, i) { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }).then(onSucc, onErr); + }; +} +function shimSenderGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map()); + }; +} +function shimReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this2 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this2; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} +function shimRemoveStream(window) { + if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(function (sender) { + if (sender.track && stream.getTracks().includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; +} +function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} +function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + var sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = _toConsumableArray(sendEncodings); + var shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach(function (encodingParam) { + if ('rid' in encodingParam) { + var ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + var transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + var sender = transceiver.sender; + var params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + params.encodings.length === 1 && Object.keys(params.encodings[0]).length === 0) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params).then(function () { + delete sender.sendEncodings; + })["catch"](function () { + delete sender.sendEncodings; + })); + } + } + return transceiver; + }; + } +} +function shimGetParameters(window) { + if (!(_typeof(window) === 'object' && window.RTCRtpSender)) { + return; + } + var origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = function getParameters() { + var params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} +function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + var _arguments2 = arguments, + _this4 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateOffer.apply(_this4, _arguments2); + })["finally"](function () { + _this4.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + var _arguments3 = arguments, + _this5 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateAnswer.apply(_this5, _arguments3); + })["finally"](function () { + _this5.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} + +},{"../utils":11,"./getdisplaymedia":8,"./getusermedia":9}],8:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = { + mediaSource: preferredMediaSource + }; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} + +},{}],9:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + var MediaStreamTrack = window && window.MediaStreamTrack; + navigator.getUserMedia = function (constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (c) { + if (_typeof(c) === 'object' && _typeof(c.audio) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + var nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function () { + var obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function (c) { + if (this.kind === 'audio' && _typeof(c) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} + +},{"../utils":11}],10:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAudioContext = shimAudioContext; +exports.shimCallbacksAPI = shimCallbacksAPI; +exports.shimConstraints = shimConstraints; +exports.shimCreateOfferLegacy = shimCreateOfferLegacy; +exports.shimGetUserMedia = shimGetUserMedia; +exports.shimLocalStreamsAPI = shimLocalStreamsAPI; +exports.shimRTCIceServerUrls = shimRTCIceServerUrls; +exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI; +exports.shimTrackEventTransceiver = shimTrackEventTransceiver; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimLocalStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + var _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this = this; + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + stream.getVideoTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track) { + var _this2 = this; + for (var _len = arguments.length, streams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + streams[_key - 1] = arguments[_key]; + } + if (streams) { + streams.forEach(function (stream) { + if (!_this2._localStreams) { + _this2._localStreams = [stream]; + } else if (!_this2._localStreams.includes(stream)) { + _this2._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + if (!this._localStreams) { + this._localStreams = []; + } + var index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + var tracks = stream.getTracks(); + this.getSenders().forEach(function (sender) { + if (tracks.includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; + } +} +function shimRemoteStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get: function get() { + return this._onaddstream; + }, + set: function set(f) { + var _this4 = this; + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!_this4._remoteStreams) { + _this4._remoteStreams = []; + } + if (_this4._remoteStreams.includes(stream)) { + return; + } + _this4._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + _this4.dispatchEvent(event); + }); + }); + } + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} +function shimCallbacksAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + var prototype = window.RTCPeerConnection.prototype; + var origCreateOffer = prototype.createOffer; + var origCreateAnswer = prototype.createAnswer; + var setLocalDescription = prototype.setLocalDescription; + var setRemoteDescription = prototype.setRemoteDescription; + var addIceCandidate = prototype.addIceCandidate; + prototype.createOffer = function createOffer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.createAnswer = function createAnswer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + var withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + withCallback = function withCallback(candidate, successCallback, failureCallback) { + var promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} +function shimGetUserMedia(window) { + var navigator = window && window.navigator; + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + var mediaDevices = navigator.mediaDevices; + var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = function (constraints) { + return _getUserMedia(shimConstraints(constraints)); + }; + } + if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb); + }.bind(navigator); + } +} +function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, constraints, { + video: utils.compactObject(constraints.video) + }); + } + return constraints; +} +function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + var OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + var newIceServers = []; + for (var i = 0; i < pcConfig.iceServers.length; i++) { + var server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get: function get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} +function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimCreateOfferLegacy(window) { + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio; + } + var audioTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'audio'; + }); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) { + this.addTransceiver('audio', { + direction: 'recvonly' + }); + } + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo; + } + var videoTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'video'; + }); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) { + this.addTransceiver('video', { + direction: 'recvonly' + }); + } + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimAudioContext(window) { + if (_typeof(window) !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} + +},{"../utils":11}],11:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.compactObject = compactObject; +exports.deprecated = deprecated; +exports.detectBrowser = detectBrowser; +exports.disableLog = disableLog; +exports.disableWarnings = disableWarnings; +exports.extractVersion = extractVersion; +exports.filterStats = filterStats; +exports.log = log; +exports.walkStats = walkStats; +exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logDisabled_ = true; +var deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +function extractVersion(uastring, expr, pos) { + var match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + var proto = window.RTCPeerConnection.prototype; + var nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + var wrappedCallback = function wrappedCallback(e) { + var modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]); + }; + var nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + var unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap]["delete"](cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]); + }; + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get: function get() { + return this['_on' + eventNameToWrap]; + }, + set: function set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} +function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + logDisabled_ = bool; + return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} +function log() { + if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +function detectBrowser(window) { + // Returned result object. + var result = { + browser: null, + version: null + }; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + var navigator = window.navigator; + if (navigator.mozGetUserMedia) { + // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { + // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { + // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +function compactObject(data) { + if (!isObject(data)) { + return data; + } + return Object.keys(data).reduce(function (accumulator, key) { + var isObj = isObject(data[key]); + var value = isObj ? compactObject(data[key]) : data[key]; + var isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, _defineProperty({}, key, value)); + }, {}); +} + +/* iterates the stats graph recursively. */ +function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(function (name) { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(function (id) { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +function filterStats(result, track, outbound) { + var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + var filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + var trackStats = []; + result.forEach(function (value) { + if (value.type === 'track' && value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(function (trackStat) { + result.forEach(function (stats) { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} + +},{}],12:[function(require,module,exports){ +/* eslint-env node */ +'use strict'; + +// SDP helpers. + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function () { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function (blob) { + return blob.trim().split('\n').map(function (line) { + return line.trim(); + }); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function (blob) { + var parts = blob.split('\nm='); + return parts.map(function (part, index) { + return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; + }); +}; + +// Returns the session description. +SDPUtils.getDescription = function (blob) { + var sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function (blob) { + var sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function (blob, prefix) { + return SDPUtils.splitLines(blob).filter(function (line) { + return line.indexOf(prefix) === 0; + }); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function (line) { + var parts = void 0; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + var candidate = { + foundation: parts[0], + component: { 1: 'rtp', 2: 'rtcp' }[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7] + }; + + for (var i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: + // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function (candidate) { + var sdp = []; + sdp.push(candidate.foundation); + + var component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + var type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function (line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function (line) { + var parts = line.substring(9).split(' '); + var parsed = { + payloadType: parseInt(parts.shift(), 10) // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function (codec) { + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + var channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function (line) { + var parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' ') + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function (headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + (headerExtension.direction && headerExtension.direction !== 'sendrecv' ? '/' + headerExtension.direction : '') + ' ' + headerExtension.uri + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function (line) { + var parsed = {}; + var kv = void 0; + var parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (var j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function (codec) { + var line = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + var params = []; + Object.keys(codec.parameters).forEach(function (param) { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function (line) { + var parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' ') + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function (codec) { + var lines = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(function (fb) { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function (line) { + var sp = line.indexOf(' '); + var parts = { + ssrc: parseInt(line.substring(7, sp), 10) + }; + var colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function (line) { + var parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(function (ssrc) { + return parseInt(ssrc, 10); + }) + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function (mediaSection) { + var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function (line) { + var parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase() // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint) + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function (params, setupType) { + var sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(function (fp) { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function (line) { + var parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3) + }; +}; + +SDPUtils.writeCryptoLine = function (parameters) { + return 'a=crypto:' + parameters.tag + ' ' + parameters.cryptoSuite + ' ' + (_typeof(parameters.keyParams) === 'object' ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) : parameters.keyParams) + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function (keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + var parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined + }; +}; + +SDPUtils.writeCryptoKeyParams = function (keyParams) { + return keyParams.keyMethod + ':' + keyParams.keySalt + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + (keyParams.mkiValue && keyParams.mkiLength ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function (mediaSection, sessionpart) { + var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-ufrag:')[0]; + var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10) + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function (params) { + var sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function (mediaSection) { + var description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [] + }; + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + description.profile = mline[2]; + for (var i = 3; i < mline.length; i++) { + // find all codecs from mline[3..] + var pt = mline[i]; + var rtpmapline = SDPUtils.matchPrefix(mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + var codec = SDPUtils.parseRtpMap(rtpmapline); + var fmtps = SDPUtils.matchPrefix(mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:' + pt + ' ').map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: + // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function (line) { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + var wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ').map(SDPUtils.parseRtcpFb); + description.codecs.forEach(function (codec) { + wildcardRtcpFb.forEach(function (fb) { + var duplicate = codec.rtcpFeedback.find(function (existingFeedback) { + return existingFeedback.type === fb.type && existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function (kind, caps) { + var sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(function (codec) { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(function (codec) { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + var maxptime = 0; + caps.codecs.forEach(function (codec) { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(function (extension) { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function (mediaSection) { + var encodingParameters = []; + var description = SDPUtils.parseRtpParameters(mediaSection); + var hasRed = description.fecMechanisms.indexOf('RED') !== -1; + var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (parts) { + return parts.attribute === 'cname'; + }); + var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + var secondarySsrc = void 0; + + var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID').map(function (line) { + var parts = line.substring(17).split(' '); + return parts.map(function (part) { + return parseInt(part, 10); + }); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(function (codec) { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + var encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10) + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = { ssrc: secondarySsrc }; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red' + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 - 50 * 40 * 8; + } else { + bandwidth = undefined; + } + encodingParameters.forEach(function (params) { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function (mediaSection) { + var rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (obj) { + return obj.attribute === 'cname'; + })[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function (rtcpParameters) { + var sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function (mediaSection) { + var parts = void 0; + var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return { stream: parts[0], track: parts[1] }; + } + var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (msidParts) { + return msidParts.attribute === 'msid'; + }); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return { stream: parts[0], track: parts[1] }; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function (mediaSection) { + var mline = SDPUtils.parseMLine(mediaSection); + var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + var maxMessageSize = void 0; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize: maxMessageSize + }; + } + var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + var parts = sctpMapLines[0].substring(10).split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize: maxMessageSize + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function (media, sctp) { + var output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctp-port:' + sctp.port + '\r\n']; + } else { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n']; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function () { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function (sessId, sessVer, sessUser) { + var sessionId = void 0; + var version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + var user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + 'o=' + user + ' ' + sessionId + ' ' + version + ' IN IP4 127.0.0.1\r\n' + 's=-\r\n' + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function (mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + var lines = SDPUtils.splitLines(mediaSection); + for (var i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function (mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' ') + }; +}; + +SDPUtils.parseOLine = function (mediaSection) { + var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + var parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5] + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function (blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + var lines = SDPUtils.splitLines(blob); + for (var i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object') { + module.exports = SDPUtils; +} +},{}]},{},[1]); diff --git a/node_modules/webrtc-adapter/out/esbuild.js b/node_modules/webrtc-adapter/out/esbuild.js new file mode 100644 index 0000000..0f8320a --- /dev/null +++ b/node_modules/webrtc-adapter/out/esbuild.js @@ -0,0 +1,35 @@ +"use strict";(()=>{var P=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var x=P(E=>{"use strict";Object.defineProperty(E,"__esModule",{value:!0});var J=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};E.extractVersion=F;E.wrapPeerConnectionEvent=Te;E.disableLog=Pe;E.disableWarnings=_e;E.log=Ee;E.deprecated=Me;E.detectBrowser=be;E.compactObject=ee;E.walkStats=N;E.filterStats=ke;function Re(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Z=!0,w=!0;function F(e,t,r){var n=e.match(t);return n&&n.length>=r&&parseInt(n[r],10)}function Te(e,t,r){if(!!e.RTCPeerConnection){var n=e.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(u,c){if(u!==t)return i.apply(this,arguments);var p=function(o){var d=r(o);d&&(c.handleEvent?c.handleEvent(d):c(d))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(c,p),i.apply(this,[u,p])};var a=n.removeEventListener;n.removeEventListener=function(u,c){if(u!==t||!this._eventMap||!this._eventMap[t])return a.apply(this,arguments);if(!this._eventMap[t].has(c))return a.apply(this,arguments);var p=this._eventMap[t].get(c);return this._eventMap[t].delete(c),this._eventMap[t].size===0&&delete this._eventMap[t],Object.keys(this._eventMap).length===0&&delete this._eventMap,a.apply(this,[u,p])},Object.defineProperty(n,"on"+t,{get:function(){return this["_on"+t]},set:function(c){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),c&&this.addEventListener(t,this["_on"+t]=c)},enumerable:!0,configurable:!0})}}function Pe(e){return typeof e!="boolean"?new Error("Argument type: "+(typeof e>"u"?"undefined":J(e))+". Please use a boolean."):(Z=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function _e(e){return typeof e!="boolean"?new Error("Argument type: "+(typeof e>"u"?"undefined":J(e))+". Please use a boolean."):(w=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Ee(){if((typeof window>"u"?"undefined":J(window))==="object"){if(Z)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Me(e,t){!w||console.warn(e+" is deprecated, please use "+t+" instead.")}function be(e){var t={browser:null,version:null};if(typeof e>"u"||!e.navigator)return t.browser="Not a browser.",t;var r=e.navigator;if(r.mozGetUserMedia)t.browser="firefox",t.version=F(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||e.isSecureContext===!1&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=F(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(e.RTCPeerConnection&&r.userAgent.match(/AppleWebKit\/(\d+)\./))t.browser="safari",t.version=F(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype;else return t.browser="Not a supported browser.",t;return t}function Q(e){return Object.prototype.toString.call(e)==="[object Object]"}function ee(e){return Q(e)?Object.keys(e).reduce(function(t,r){var n=Q(e[r]),i=n?ee(e[r]):e[r],a=n&&!Object.keys(i).length;return i===void 0||a?t:Object.assign(t,Re({},r,i))},{}):e}function N(e,t,r){!t||r.has(t.id)||(r.set(t.id,t),Object.keys(t).forEach(function(n){n.endsWith("Id")?N(e,e.get(t[n]),r):n.endsWith("Ids")&&t[n].forEach(function(i){N(e,e.get(i),r)})}))}function ke(e,t,r){var n=r?"outbound-rtp":"inbound-rtp",i=new Map;if(t===null)return i;var a=[];return e.forEach(function(u){u.type==="track"&&u.trackIdentifier===t.id&&a.push(u)}),a.forEach(function(u){e.forEach(function(c){c.type===n&&c.trackId===u.id&&N(e,c,i)})}),i}});var re=P(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});var I=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};j.shimGetUserMedia=Ie;var xe=x(),De=Oe(xe);function Oe(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}var te=De.log;function Ie(e,t){var r=e&&e.navigator;if(!!r.mediaDevices){var n=function(s){if((typeof s>"u"?"undefined":I(s))!=="object"||s.mandatory||s.optional)return s;var o={};return Object.keys(s).forEach(function(d){if(!(d==="require"||d==="advanced"||d==="mediaSource")){var m=I(s[d])==="object"?s[d]:{ideal:s[d]};m.exact!==void 0&&typeof m.exact=="number"&&(m.min=m.max=m.exact);var l=function(y,g){return y?y+g.charAt(0).toUpperCase()+g.slice(1):g==="deviceId"?"sourceId":g};if(m.ideal!==void 0){o.optional=o.optional||[];var v={};typeof m.ideal=="number"?(v[l("min",d)]=m.ideal,o.optional.push(v),v={},v[l("max",d)]=m.ideal,o.optional.push(v)):(v[l("",d)]=m.ideal,o.optional.push(v))}m.exact!==void 0&&typeof m.exact!="number"?(o.mandatory=o.mandatory||{},o.mandatory[l("",d)]=m.exact):["min","max"].forEach(function(h){m[h]!==void 0&&(o.mandatory=o.mandatory||{},o.mandatory[l(h,d)]=m[h])})}}),s.advanced&&(o.optional=(o.optional||[]).concat(s.advanced)),o},i=function(s,o){if(t.version>=61)return o(s);if(s=JSON.parse(JSON.stringify(s)),s&&I(s.audio)==="object"){var d=function(y,g,U){g in y&&!(U in y)&&(y[U]=y[g],delete y[g])};s=JSON.parse(JSON.stringify(s)),d(s.audio,"autoGainControl","googAutoGainControl"),d(s.audio,"noiseSuppression","googNoiseSuppression"),s.audio=n(s.audio)}if(s&&I(s.video)==="object"){var m=s.video.facingMode;m=m&&((typeof m>"u"?"undefined":I(m))==="object"?m:{ideal:m});var l=t.version<66;if(m&&(m.exact==="user"||m.exact==="environment"||m.ideal==="user"||m.ideal==="environment")&&!(r.mediaDevices.getSupportedConstraints&&r.mediaDevices.getSupportedConstraints().facingMode&&!l)){delete s.video.facingMode;var v=void 0;if(m.exact==="environment"||m.ideal==="environment"?v=["back","rear"]:(m.exact==="user"||m.ideal==="user")&&(v=["front"]),v)return r.mediaDevices.enumerateDevices().then(function(h){h=h.filter(function(g){return g.kind==="videoinput"});var y=h.find(function(g){return v.some(function(U){return g.label.toLowerCase().includes(U)})});return!y&&h.length&&v.includes("back")&&(y=h[h.length-1]),y&&(s.video.deviceId=m.exact?{exact:y.deviceId}:{ideal:y.deviceId}),s.video=n(s.video),te("chrome: "+JSON.stringify(s)),o(s)})}s.video=n(s.video)}return te("chrome: "+JSON.stringify(s)),o(s)},a=function(s){return t.version>=64?s:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[s.name]||s.name,message:s.message,constraint:s.constraint||s.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},u=function(s,o,d){i(s,function(m){r.webkitGetUserMedia(m,o,function(l){d&&d(a(l))})})};if(r.getUserMedia=u.bind(r),r.mediaDevices.getUserMedia){var c=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(p){return i(p,function(s){return c(s).then(function(o){if(s.audio&&!o.getAudioTracks().length||s.video&&!o.getVideoTracks().length)throw o.getTracks().forEach(function(d){d.stop()}),new DOMException("","NotFoundError");return o},function(o){return Promise.reject(a(o))})})}}}}});var ne=P(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.shimGetDisplayMedia=Le;function Le(e,t){if(!(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices)&&!!e.navigator.mediaDevices){if(typeof t!="function"){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}e.navigator.mediaDevices.getDisplayMedia=function(n){return t(n).then(function(i){var a=n.video&&n.video.width,u=n.video&&n.video.height,c=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:i,maxFrameRate:c||3}},a&&(n.video.mandatory.maxWidth=a),u&&(n.video.mandatory.maxHeight=u),e.navigator.mediaDevices.getUserMedia(n)})}}}});var ie=P(K=>{"use strict";Object.defineProperty(K,"__esModule",{value:!0});K.shimSelectAudioOutput=Ae;function Ae(e){"HTMLMediaElement"in e&&"setSinkId"in e.HTMLMediaElement.prototype&&(!(e.navigator&&e.navigator.mediaDevices)||!e.navigator.mediaDevices.enumerateDevices||e.navigator.mediaDevices.selectAudioOutput||(e.navigator.mediaDevices.selectAudioOutput=function(){return e.navigator.mediaDevices.enumerateDevices().then(function(t){return t.filter(function(r){return r.kind==="audiooutput"})})}))}});var oe=P(S=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0});S.shimSelectAudioOutput=S.shimGetDisplayMedia=S.shimGetUserMedia=void 0;var z=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ge=re();Object.defineProperty(S,"shimGetUserMedia",{enumerable:!0,get:function(){return Ge.shimGetUserMedia}});var Ue=ne();Object.defineProperty(S,"shimGetDisplayMedia",{enumerable:!0,get:function(){return Ue.shimGetDisplayMedia}});var Fe=ie();Object.defineProperty(S,"shimSelectAudioOutput",{enumerable:!0,get:function(){return Fe.shimSelectAudioOutput}});S.shimMediaStream=qe;S.shimOnTrack=Ve;S.shimGetSendersWithDtmf=Je;S.shimGetStats=je;S.shimSenderReceiverGetStats=Be;S.shimAddTrackRemoveTrackWithNative=se;S.shimAddTrackRemoveTrack=Ke;S.shimPeerConnection=We;S.fixNegotiationNeeded=He;var Ne=x(),L=ze(Ne);function ze(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function ae(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function qe(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Ve(e){if((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(n){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=n)},enumerable:!0,configurable:!0});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return this._ontrackpoly||(this._ontrackpoly=function(i){i.stream.addEventListener("addtrack",function(a){var u=void 0;e.RTCPeerConnection.prototype.getReceivers?u=n.getReceivers().find(function(p){return p.track&&p.track.id===a.track.id}):u={track:a.track};var c=new Event("track");c.track=a.track,c.receiver=u,c.transceiver={receiver:u},c.streams=[i.stream],n.dispatchEvent(c)}),i.stream.getTracks().forEach(function(a){var u=void 0;e.RTCPeerConnection.prototype.getReceivers?u=n.getReceivers().find(function(p){return p.track&&p.track.id===a.id}):u={track:a};var c=new Event("track");c.track=a,c.receiver=u,c.transceiver={receiver:u},c.streams=[i.stream],n.dispatchEvent(c)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else L.wrapPeerConnectionEvent(e,"track",function(r){return r.transceiver||Object.defineProperty(r,"transceiver",{value:{receiver:r.receiver}}),r})}function Je(e){if((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var t=function(p,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=p.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:p}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(p,s){var o=r.apply(this,arguments);return o||(o=t(this,p),this._senders.push(o)),o};var n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(p){n.apply(this,arguments);var s=this._senders.indexOf(p);s!==-1&&this._senders.splice(s,1)}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(p){var s=this;this._senders=this._senders||[],i.apply(this,[p]),p.getTracks().forEach(function(o){s._senders.push(t(s,o))})};var a=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(p){var s=this;this._senders=this._senders||[],a.apply(this,[p]),p.getTracks().forEach(function(o){var d=s._senders.find(function(m){return m.track===o});d&&s._senders.splice(s._senders.indexOf(d),1)})}}else if((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){var u=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var p=this,s=u.apply(this,[]);return s.forEach(function(o){return o._pc=p}),s},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function je(e){if(!!e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var n=this,i=Array.prototype.slice.call(arguments),a=i[0],u=i[1],c=i[2];if(arguments.length>0&&typeof a=="function")return t.apply(this,arguments);if(t.length===0&&(arguments.length===0||typeof a!="function"))return t.apply(this,[]);var p=function(m){var l={},v=m.result();return v.forEach(function(h){var y={id:h.id,timestamp:h.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[h.type]||h.type};h.names().forEach(function(g){y[g]=h.stat(g)}),l[y.id]=y}),l},s=function(m){return new Map(Object.keys(m).map(function(l){return[l,m[l]]}))};if(arguments.length>=2){var o=function(m){u(s(p(m)))};return t.apply(this,[o,a])}return new Promise(function(d,m){t.apply(n,[function(l){d(s(p(l)))},m])}).then(u,c)}}}function Be(e){if(!!((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver)){if(!("getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var u=this,c=t.apply(this,[]);return c.forEach(function(p){return p._pc=u}),c});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var u=r.apply(this,arguments);return u._pc=this,u}),e.RTCRtpSender.prototype.getStats=function(){var u=this;return this._pc.getStats().then(function(c){return L.filterStats(c,u.track,!0)})}}if(!("getStats"in e.RTCRtpReceiver.prototype)){var n=e.RTCPeerConnection.prototype.getReceivers;n&&(e.RTCPeerConnection.prototype.getReceivers=function(){var u=this,c=n.apply(this,[]);return c.forEach(function(p){return p._pc=u}),c}),L.wrapPeerConnectionEvent(e,"track",function(a){return a.receiver._pc=a.srcElement,a}),e.RTCRtpReceiver.prototype.getStats=function(){var u=this;return this._pc.getStats().then(function(c){return L.filterStats(c,u.track,!1)})}}if("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype){var i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){var u=arguments[0],c=void 0,p=void 0,s=void 0;return this.getSenders().forEach(function(o){o.track===u&&(c?s=!0:c=o)}),this.getReceivers().forEach(function(o){return o.track===u&&(p?s=!0:p=o),o.track===u}),s||c&&p?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):c?c.getStats():p?p.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}}}function se(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var u=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(c){return u._shimmedLocalStreams[c][0]})};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(u,c){if(!c)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var p=t.apply(this,arguments);return this._shimmedLocalStreams[c.id]?this._shimmedLocalStreams[c.id].indexOf(p)===-1&&this._shimmedLocalStreams[c.id].push(p):this._shimmedLocalStreams[c.id]=[c,p],p};var r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(u){var c=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},u.getTracks().forEach(function(o){var d=c.getSenders().find(function(m){return m.track===o});if(d)throw new DOMException("Track already exists.","InvalidAccessError")});var p=this.getSenders();r.apply(this,arguments);var s=this.getSenders().filter(function(o){return p.indexOf(o)===-1});this._shimmedLocalStreams[u.id]=[u].concat(s)};var n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(u){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[u.id],n.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(u){var c=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},u&&Object.keys(this._shimmedLocalStreams).forEach(function(p){var s=c._shimmedLocalStreams[p].indexOf(u);s!==-1&&c._shimmedLocalStreams[p].splice(s,1),c._shimmedLocalStreams[p].length===1&&delete c._shimmedLocalStreams[p]}),i.apply(this,arguments)}}function Ke(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return se(e);var r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var o=this,d=r.apply(this);return this._reverseStreams=this._reverseStreams||{},d.map(function(m){return o._reverseStreams[m.id]})};var n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(o){var d=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},o.getTracks().forEach(function(l){var v=d.getSenders().find(function(h){return h.track===l});if(v)throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[o.id]){var m=new e.MediaStream(o.getTracks());this._streams[o.id]=m,this._reverseStreams[m.id]=o,o=m}n.apply(this,[o])};var i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(o){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[o.id]||o]),delete this._reverseStreams[this._streams[o.id]?this._streams[o.id].id:o.id],delete this._streams[o.id]},e.RTCPeerConnection.prototype.addTrack=function(o,d){var m=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var l=[].slice.call(arguments,1);if(l.length!==1||!l[0].getTracks().find(function(g){return g===o}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");var v=this.getSenders().find(function(g){return g.track===o});if(v)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var h=this._streams[d.id];if(h)h.addTrack(o),Promise.resolve().then(function(){m.dispatchEvent(new Event("negotiationneeded"))});else{var y=new e.MediaStream([o]);this._streams[d.id]=y,this._reverseStreams[y.id]=d,this.addStream(y)}return this.getSenders().find(function(g){return g.track===o})};function a(s,o){var d=o.sdp;return Object.keys(s._reverseStreams||[]).forEach(function(m){var l=s._reverseStreams[m],v=s._streams[l.id];d=d.replace(new RegExp(v.id,"g"),l.id)}),new RTCSessionDescription({type:o.type,sdp:d})}function u(s,o){var d=o.sdp;return Object.keys(s._reverseStreams||[]).forEach(function(m){var l=s._reverseStreams[m],v=s._streams[l.id];d=d.replace(new RegExp(l.id,"g"),v.id)}),new RTCSessionDescription({type:o.type,sdp:d})}["createOffer","createAnswer"].forEach(function(s){var o=e.RTCPeerConnection.prototype[s],d=ae({},s,function(){var m=this,l=arguments,v=arguments.length&&typeof arguments[0]=="function";return v?o.apply(this,[function(h){var y=a(m,h);l[0].apply(null,[y])},function(h){l[1]&&l[1].apply(null,h)},arguments[2]]):o.apply(this,arguments).then(function(h){return a(m,h)})});e.RTCPeerConnection.prototype[s]=d[s]});var c=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?c.apply(this,arguments):(arguments[0]=u(this,arguments[0]),c.apply(this,arguments))};var p=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var o=p.get.apply(this);return o.type===""?o:a(this,o)}}),e.RTCPeerConnection.prototype.removeTrack=function(o){var d=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!o._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");var m=o._pc===this;if(!m)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};var l=void 0;Object.keys(this._streams).forEach(function(v){var h=d._streams[v].getTracks().find(function(y){return o.track===y});h&&(l=d._streams[v])}),l&&(l.getTracks().length===1?this.removeStream(this._reverseStreams[l.id]):l.removeTrack(o.track),this.dispatchEvent(new Event("negotiationneeded")))}}function We(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),!!e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(r){var n=e.RTCPeerConnection.prototype[r],i=ae({},r,function(){return arguments[0]=new(r==="addIceCandidate"?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)});e.RTCPeerConnection.prototype[r]=i[r]})}function He(e,t){L.wrapPeerConnectionEvent(e,"negotiationneeded",function(r){var n=r.target;if(!((t.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return r})}});var ce=P(H=>{"use strict";Object.defineProperty(H,"__esModule",{value:!0});var W=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};H.shimGetUserMedia=Qe;var Xe=x(),Ye=$e(Xe);function $e(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function Qe(e,t){var r=e&&e.navigator,n=e&&e.MediaStreamTrack;if(r.getUserMedia=function(p,s,o){Ye.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(p).then(s,o)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){var i=function(s,o,d){o in s&&!(d in s)&&(s[d]=s[o],delete s[o])},a=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(p){return(typeof p>"u"?"undefined":W(p))==="object"&&W(p.audio)==="object"&&(p=JSON.parse(JSON.stringify(p)),i(p.audio,"autoGainControl","mozAutoGainControl"),i(p.audio,"noiseSuppression","mozNoiseSuppression")),a(p)},n&&n.prototype.getSettings){var u=n.prototype.getSettings;n.prototype.getSettings=function(){var p=u.apply(this,arguments);return i(p,"mozAutoGainControl","autoGainControl"),i(p,"mozNoiseSuppression","noiseSuppression"),p}}if(n&&n.prototype.applyConstraints){var c=n.prototype.applyConstraints;n.prototype.applyConstraints=function(p){return this.kind==="audio"&&(typeof p>"u"?"undefined":W(p))==="object"&&(p=JSON.parse(JSON.stringify(p)),i(p,"autoGainControl","mozAutoGainControl"),i(p,"noiseSuppression","mozNoiseSuppression")),c.apply(this,[p])}}}}});var ue=P(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.shimGetDisplayMedia=Ze;function Ze(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||!e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){var i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return n.video===!0?n.video={mediaSource:t}:n.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(n)})}});var fe=P(R=>{"use strict";Object.defineProperty(R,"__esModule",{value:!0});R.shimGetDisplayMedia=R.shimGetUserMedia=void 0;var D=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},we=ce();Object.defineProperty(R,"shimGetUserMedia",{enumerable:!0,get:function(){return we.shimGetUserMedia}});var et=ue();Object.defineProperty(R,"shimGetDisplayMedia",{enumerable:!0,get:function(){return et.shimGetDisplayMedia}});R.shimOnTrack=it;R.shimPeerConnection=at;R.shimSenderGetStats=st;R.shimReceiverGetStats=ot;R.shimRemoveStream=ct;R.shimRTCDataChannel=ut;R.shimAddTransceiver=pt;R.shimGetParameters=ft;R.shimCreateOffer=dt;R.shimCreateAnswer=mt;var tt=x(),pe=rt(tt);function rt(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function nt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function it(e){(typeof e>"u"?"undefined":D(e))==="object"&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function at(e,t){if(!((typeof e>"u"?"undefined":D(e))!=="object"||!(e.RTCPeerConnection||e.mozRTCPeerConnection))){!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){var a=e.RTCPeerConnection.prototype[i],u=nt({},i,function(){return arguments[0]=new(i==="addIceCandidate"?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),a.apply(this,arguments)});e.RTCPeerConnection.prototype[i]=u[i]});var r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var a=Array.prototype.slice.call(arguments),u=a[0],c=a[1],p=a[2];return n.apply(this,[u||null]).then(function(s){if(t.version<53&&!c)try{s.forEach(function(o){o.type=r[o.type]||o.type})}catch(o){if(o.name!=="TypeError")throw o;s.forEach(function(d,m){s.set(m,Object.assign({},d,{type:r[d.type]||d.type}))})}return s}).then(c,p)}}}function st(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection&&e.RTCRtpSender)&&!(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var i=this,a=t.apply(this,[]);return a.forEach(function(u){return u._pc=i}),a});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var i=r.apply(this,arguments);return i._pc=this,i}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}}function ot(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection&&e.RTCRtpSender)&&!(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)){var t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){var n=this,i=t.apply(this,[]);return i.forEach(function(a){return a._pc=n}),i}),pe.wrapPeerConnectionEvent(e,"track",function(r){return r.receiver._pc=r.srcElement,r}),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function ct(e){!e.RTCPeerConnection||"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(r){var n=this;pe.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(i){i.track&&r.getTracks().includes(i.track)&&n.removeTrack(i)})})}function ut(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function pt(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var n=arguments[1],i=n&&"sendEncodings"in n;i&&n.sendEncodings.forEach(function(p){if("rid"in p){var s=/^[a-z0-9]{0,16}$/i;if(!s.test(p.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in p&&!(parseFloat(p.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in p&&!(parseFloat(p.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var a=t.apply(this,arguments);if(i){var u=a.sender,c=u.getParameters();(!("encodings"in c)||c.encodings.length===1&&Object.keys(c.encodings[0]).length===0)&&(c.encodings=n.sendEncodings,u.sendEncodings=n.sendEncodings,this.setParametersPromises.push(u.setParameters(c).then(function(){delete u.sendEncodings}).catch(function(){delete u.sendEncodings})))}return a})}}function ft(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCRtpSender)){var t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){var n=t.apply(this,arguments);return"encodings"in n||(n.encodings=[].concat(this.sendEncodings||[{}])),n})}}function dt(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){var n=this,i=arguments;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return t.apply(n,i)}).finally(function(){n.setParametersPromises=[]}):t.apply(this,arguments)}}}function mt(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){var n=this,i=arguments;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return t.apply(n,i)}).finally(function(){n.setParametersPromises=[]}):t.apply(this,arguments)}}}});var le=P(M=>{"use strict";Object.defineProperty(M,"__esModule",{value:!0});var A=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};M.shimLocalStreamsAPI=vt;M.shimRemoteStreamsAPI=yt;M.shimCallbacksAPI=gt;M.shimGetUserMedia=Ct;M.shimConstraints=me;M.shimRTCIceServerUrls=St;M.shimTrackEventTransceiver=Rt;M.shimCreateOfferLegacy=Tt;M.shimAudioContext=Pt;var lt=x(),de=ht(lt);function ht(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function vt(e){if(!((typeof e>"u"?"undefined":A(e))!=="object"||!e.RTCPeerConnection)){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(n){var i=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(n)||this._localStreams.push(n),n.getAudioTracks().forEach(function(a){return t.call(i,a,n)}),n.getVideoTracks().forEach(function(a){return t.call(i,a,n)})},e.RTCPeerConnection.prototype.addTrack=function(n){for(var i=this,a=arguments.length,u=Array(a>1?a-1:0),c=1;c"u"?"undefined":A(e))!=="object"||!e.RTCPeerConnection)&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(n){var i=this;this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=n),this.addEventListener("track",this._onaddstreampoly=function(a){a.streams.forEach(function(u){if(i._remoteStreams||(i._remoteStreams=[]),!i._remoteStreams.includes(u)){i._remoteStreams.push(u);var c=new Event("addstream");c.stream=u,i.dispatchEvent(c)}})})}});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(function(a){if(n._remoteStreams||(n._remoteStreams=[]),!(n._remoteStreams.indexOf(a)>=0)){n._remoteStreams.push(a);var u=new Event("addstream");u.stream=a,n.dispatchEvent(u)}})}),t.apply(n,arguments)}}}function gt(e){if(!((typeof e>"u"?"undefined":A(e))!=="object"||!e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype,r=t.createOffer,n=t.createAnswer,i=t.setLocalDescription,a=t.setRemoteDescription,u=t.addIceCandidate;t.createOffer=function(s,o){var d=arguments.length>=2?arguments[2]:arguments[0],m=r.apply(this,[d]);return o?(m.then(s,o),Promise.resolve()):m},t.createAnswer=function(s,o){var d=arguments.length>=2?arguments[2]:arguments[0],m=n.apply(this,[d]);return o?(m.then(s,o),Promise.resolve()):m};var c=function(s,o,d){var m=i.apply(this,[s]);return d?(m.then(o,d),Promise.resolve()):m};t.setLocalDescription=c,c=function(s,o,d){var m=a.apply(this,[s]);return d?(m.then(o,d),Promise.resolve()):m},t.setRemoteDescription=c,c=function(s,o,d){var m=u.apply(this,[s]);return d?(m.then(o,d),Promise.resolve()):m},t.addIceCandidate=c}}function Ct(e){var t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){var r=t.mediaDevices,n=r.getUserMedia.bind(r);t.mediaDevices.getUserMedia=function(i){return n(me(i))}}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(a,u,c){t.mediaDevices.getUserMedia(a).then(u,c)}.bind(t))}function me(e){return e&&e.video!==void 0?Object.assign({},e,{video:de.compactObject(e.video)}):e}function St(e){if(!!e.RTCPeerConnection){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(n,i){if(n&&n.iceServers){for(var a=[],u=0;u"u"?"undefined":A(e))==="object"&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function Tt(e){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(n){if(n){typeof n.offerToReceiveAudio<"u"&&(n.offerToReceiveAudio=!!n.offerToReceiveAudio);var i=this.getTransceivers().find(function(u){return u.receiver.track.kind==="audio"});n.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):n.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio",{direction:"recvonly"}),typeof n.offerToReceiveVideo<"u"&&(n.offerToReceiveVideo=!!n.offerToReceiveVideo);var a=this.getTransceivers().find(function(u){return u.receiver.track.kind==="video"});n.offerToReceiveVideo===!1&&a?a.direction==="sendrecv"?a.setDirection?a.setDirection("sendonly"):a.direction="sendonly":a.direction==="recvonly"&&(a.setDirection?a.setDirection("inactive"):a.direction="inactive"):n.offerToReceiveVideo===!0&&!a&&this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Pt(e){(typeof e>"u"?"undefined":A(e))!=="object"||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}});var Y=P((rr,q)=>{"use strict";var he=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f={};f.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)};f.localCName=f.generateIdentifier();f.splitLines=function(e){return e.trim().split(` +`).map(function(t){return t.trim()})};f.splitSections=function(e){var t=e.split(` +m=`);return t.map(function(r,n){return(n>0?"m="+r:r).trim()+`\r +`})};f.getDescription=function(e){var t=f.splitSections(e);return t&&t[0]};f.getMediaSections=function(e){var t=f.splitSections(e);return t.shift(),t};f.matchPrefix=function(e,t){return f.splitLines(e).filter(function(r){return r.indexOf(t)===0})};f.parseCandidate=function(e){var t=void 0;e.indexOf("a=candidate:")===0?t=e.substring(12).split(" "):t=e.substring(10).split(" ");for(var r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},n=8;n0?t[0].split("/")[1]:"sendrecv",uri:t[1]}};f.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&e.direction!=="sendrecv"?"/"+e.direction:"")+" "+e.uri+`\r +`};f.parseFmtp=function(e){for(var t={},r=void 0,n=e.substr(e.indexOf(" ")+1).split(";"),i=0;i-1?(r.attribute=e.substr(t+1,n-t-1),r.value=e.substr(n+1)):r.attribute=e.substr(t+1),r};f.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(function(r){return parseInt(r,10)})}};f.getMid=function(e){var t=f.matchPrefix(e,"a=mid:")[0];if(t)return t.substr(6)};f.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}};f.getDtlsParameters=function(e,t){var r=f.matchPrefix(e+t,"a=fingerprint:");return{role:"auto",fingerprints:r.map(f.parseFingerprint)}};f.writeDtlsParameters=function(e,t){var r="a=setup:"+t+`\r +`;return e.fingerprints.forEach(function(n){r+="a=fingerprint:"+n.algorithm+" "+n.value+`\r +`}),r};f.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}};f.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+(he(e.keyParams)==="object"?f.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+`\r +`};f.parseCryptoKeyParams=function(e){if(e.indexOf("inline:")!==0)return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}};f.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")};f.getCryptoParameters=function(e,t){var r=f.matchPrefix(e+t,"a=crypto:");return r.map(f.parseCryptoLine)};f.getIceParameters=function(e,t){var r=f.matchPrefix(e+t,"a=ice-ufrag:")[0],n=f.matchPrefix(e+t,"a=ice-pwd:")[0];return r&&n?{usernameFragment:r.substr(12),password:n.substr(10)}:null};f.writeIceParameters=function(e){var t="a=ice-ufrag:"+e.usernameFragment+`\r +a=ice-pwd:`+e.password+`\r +`;return e.iceLite&&(t+=`a=ice-lite\r +`),t};f.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=f.splitLines(e),n=r[0].split(" "),i=3;i0?"9":"0",r+=" UDP/TLS/RTP/SAVPF ",r+=t.codecs.map(function(i){return i.preferredPayloadType!==void 0?i.preferredPayloadType:i.payloadType}).join(" ")+`\r +`,r+=`c=IN IP4 0.0.0.0\r +`,r+=`a=rtcp:9 IN IP4 0.0.0.0\r +`,t.codecs.forEach(function(i){r+=f.writeRtpMap(i),r+=f.writeFmtp(i),r+=f.writeRtcpFb(i)});var n=0;return t.codecs.forEach(function(i){i.maxptime>n&&(n=i.maxptime)}),n>0&&(r+="a=maxptime:"+n+`\r +`),t.headerExtensions&&t.headerExtensions.forEach(function(i){r+=f.writeExtmap(i)}),r};f.parseRtpEncodingParameters=function(e){var t=[],r=f.parseRtpParameters(e),n=r.fecMechanisms.indexOf("RED")!==-1,i=r.fecMechanisms.indexOf("ULPFEC")!==-1,a=f.matchPrefix(e,"a=ssrc:").map(function(o){return f.parseSsrcMedia(o)}).filter(function(o){return o.attribute==="cname"}),u=a.length>0&&a[0].ssrc,c=void 0,p=f.matchPrefix(e,"a=ssrc-group:FID").map(function(o){var d=o.substr(17).split(" ");return d.map(function(m){return parseInt(m,10)})});p.length>0&&p[0].length>1&&p[0][0]===u&&(c=p[0][1]),r.codecs.forEach(function(o){if(o.name.toUpperCase()==="RTX"&&o.parameters.apt){var d={ssrc:u,codecPayloadType:parseInt(o.parameters.apt,10)};u&&c&&(d.rtx={ssrc:c}),t.push(d),n&&(d=JSON.parse(JSON.stringify(d)),d.fec={ssrc:u,mechanism:i?"red+ulpfec":"red"},t.push(d))}}),t.length===0&&u&&t.push({ssrc:u});var s=f.matchPrefix(e,"b=");return s.length&&(s[0].indexOf("b=TIAS:")===0?s=parseInt(s[0].substr(7),10):s[0].indexOf("b=AS:")===0?s=parseInt(s[0].substr(5),10)*1e3*.95-50*40*8:s=void 0,t.forEach(function(o){o.maxBitrate=s})),t};f.parseRtcpParameters=function(e){var t={},r=f.matchPrefix(e,"a=ssrc:").map(function(a){return f.parseSsrcMedia(a)}).filter(function(a){return a.attribute==="cname"})[0];r&&(t.cname=r.value,t.ssrc=r.ssrc);var n=f.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=n.length>0,t.compound=n.length===0;var i=f.matchPrefix(e,"a=rtcp-mux");return t.mux=i.length>0,t};f.writeRtcpParameters=function(e){var t="";return e.reducedSize&&(t+=`a=rtcp-rsize\r +`),e.mux&&(t+=`a=rtcp-mux\r +`),e.ssrc!==void 0&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+`\r +`),t};f.parseMsid=function(e){var t=void 0,r=f.matchPrefix(e,"a=msid:");if(r.length===1)return t=r[0].substr(7).split(" "),{stream:t[0],track:t[1]};var n=f.matchPrefix(e,"a=ssrc:").map(function(i){return f.parseSsrcMedia(i)}).filter(function(i){return i.attribute==="msid"});if(n.length>0)return t=n[0].value.split(" "),{stream:t[0],track:t[1]}};f.parseSctpDescription=function(e){var t=f.parseMLine(e),r=f.matchPrefix(e,"a=max-message-size:"),n=void 0;r.length>0&&(n=parseInt(r[0].substr(19),10)),isNaN(n)&&(n=65536);var i=f.matchPrefix(e,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substr(12),10),protocol:t.fmt,maxMessageSize:n};var a=f.matchPrefix(e,"a=sctpmap:");if(a.length>0){var u=a[0].substr(10).split(" ");return{port:parseInt(u[0],10),protocol:u[1],maxMessageSize:n}}};f.writeSctpDescription=function(e,t){var r=[];return e.protocol!=="DTLS/SCTP"?r=["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+`\r +`,`c=IN IP4 0.0.0.0\r +`,"a=sctp-port:"+t.port+`\r +`]:r=["m="+e.kind+" 9 "+e.protocol+" "+t.port+`\r +`,`c=IN IP4 0.0.0.0\r +`,"a=sctpmap:"+t.port+" "+t.protocol+` 65535\r +`],t.maxMessageSize!==void 0&&r.push("a=max-message-size:"+t.maxMessageSize+`\r +`),r.join("")};f.generateSessionId=function(){return Math.random().toString().substr(2,21)};f.writeSessionBoilerplate=function(e,t,r){var n=void 0,i=t!==void 0?t:2;e?n=e:n=f.generateSessionId();var a=r||"thisisadapterortc";return`v=0\r +o=`+a+" "+n+" "+i+` IN IP4 127.0.0.1\r +s=-\r +t=0 0\r +`};f.getDirection=function(e,t){for(var r=f.splitLines(e),n=0;n"u"?"undefined":he(q))==="object"&&(q.exports=f)});var ge=P(k=>{"use strict";Object.defineProperty(k,"__esModule",{value:!0});var ve=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};k.shimRTCIceCandidate=kt;k.shimMaxMessageSize=xt;k.shimSendThrowTypeError=Dt;k.shimConnectionState=Ot;k.removeExtmapAllowMixed=It;k.shimAddIceCandidateNullOrEmpty=Lt;k.shimParameterlessSetLocalDescription=At;var _t=Y(),V=bt(_t),Et=x(),ye=Mt(Et);function Mt(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function bt(e){return e&&e.__esModule?e:{default:e}}function kt(e){if(!(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)){var t=e.RTCIceCandidate;e.RTCIceCandidate=function(n){if((typeof n>"u"?"undefined":ve(n))==="object"&&n.candidate&&n.candidate.indexOf("a=")===0&&(n=JSON.parse(JSON.stringify(n)),n.candidate=n.candidate.substr(2)),n.candidate&&n.candidate.length){var i=new t(n),a=V.default.parseCandidate(n.candidate),u=Object.assign(i,a);return u.toJSON=function(){return{candidate:u.candidate,sdpMid:u.sdpMid,sdpMLineIndex:u.sdpMLineIndex,usernameFragment:u.usernameFragment}},u}return new t(n)},e.RTCIceCandidate.prototype=t.prototype,ye.wrapPeerConnectionEvent(e,"icecandidate",function(r){return r.candidate&&Object.defineProperty(r,"candidate",{value:new e.RTCIceCandidate(r.candidate),writable:"false"}),r})}}function xt(e,t){if(!!e.RTCPeerConnection){"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp}});var r=function(p){if(!p||!p.sdp)return!1;var s=V.default.splitSections(p.sdp);return s.shift(),s.some(function(o){var d=V.default.parseMLine(o);return d&&d.kind==="application"&&d.protocol.indexOf("SCTP")!==-1})},n=function(p){var s=p.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(s===null||s.length<2)return-1;var o=parseInt(s[1],10);return o!==o?-1:o},i=function(p){var s=65536;return t.browser==="firefox"&&(t.version<57?p===-1?s=16384:s=2147483637:t.version<60?s=t.version===57?65535:65536:s=2147483637),s},a=function(p,s){var o=65536;t.browser==="firefox"&&t.version===57&&(o=65535);var d=V.default.matchPrefix(p.sdp,"a=max-message-size:");return d.length>0?o=parseInt(d[0].substr(19),10):t.browser==="firefox"&&s!==-1&&(o=2147483637),o},u=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,t.browser==="chrome"&&t.version>=76){var p=this.getConfiguration(),s=p.sdpSemantics;s==="plan-b"&&Object.defineProperty(this,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(r(arguments[0])){var o=n(arguments[0]),d=i(o),m=a(arguments[0],o),l=void 0;d===0&&m===0?l=Number.POSITIVE_INFINITY:d===0||m===0?l=Math.max(d,m):l=Math.min(d,m);var v={};Object.defineProperty(v,"maxMessageSize",{get:function(){return l}}),this._sctp=v}return u.apply(this,arguments)}}}function Dt(e){if(!(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype))return;function t(n,i){var a=n.send;n.send=function(){var c=arguments[0],p=c.length||c.size||c.byteLength;if(n.readyState==="open"&&i.sctp&&p>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return a.apply(n,arguments)}}var r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){var i=r.apply(this,arguments);return t(i,this),i},ye.wrapPeerConnectionEvent(e,"datachannel",function(n){return t(n.channel,n.target),n})}function Ot(e){if(!(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(n){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),n&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=n)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(function(r){var n=t[r];t[r]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=function(i){var a=i.target;if(a._lastConnectionState!==a.connectionState){a._lastConnectionState=a.connectionState;var u=new Event("connectionstatechange",i);a.dispatchEvent(u)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}}function It(e,t){if(!!e.RTCPeerConnection&&!(t.browser==="chrome"&&t.version>=71)&&!(t.browser==="safari"&&t.version>=605)){var r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(i){if(i&&i.sdp&&i.sdp.indexOf(` +a=extmap-allow-mixed`)!==-1){var a=i.sdp.split(` +`).filter(function(u){return u.trim()!=="a=extmap-allow-mixed"}).join(` +`);e.RTCSessionDescription&&i instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:i.type,sdp:a}):i.sdp=a}return r.apply(this,arguments)}}}function Lt(e,t){if(!!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype)){var r=e.RTCPeerConnection.prototype.addIceCandidate;!r||r.length===0||(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(t.browser==="chrome"&&t.version<78||t.browser==="firefox"&&t.version<68||t.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}}function At(e,t){if(!!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype)){var r=e.RTCPeerConnection.prototype.setLocalDescription;!r||r.length===0||(e.RTCPeerConnection.prototype.setLocalDescription=function(){var i=this,a=arguments[0]||{};if((typeof a>"u"?"undefined":ve(a))!=="object"||a.type&&a.sdp)return r.apply(this,arguments);if(a={type:a.type,sdp:a.sdp},!a.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":a.type="offer";break;default:a.type="answer";break}if(a.sdp||a.type!=="offer"&&a.type!=="answer")return r.apply(this,[a]);var u=a.type==="offer"?this.createOffer:this.createAnswer;return u.apply(this).then(function(c){return r.apply(i,[c])})})}}});var Ce=P($=>{"use strict";Object.defineProperty($,"__esModule",{value:!0});$.adapterFactory=Jt;var Gt=x(),G=O(Gt),Ut=oe(),_=O(Ut),Ft=fe(),T=O(Ft),Nt=le(),b=O(Nt),zt=ge(),C=O(zt),qt=Y(),Vt=O(qt);function O(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function Jt(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.window,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},n=G.log,i=G.detectBrowser(t),a={browserDetails:i,commonShim:C,extractVersion:G.extractVersion,disableLog:G.disableLog,disableWarnings:G.disableWarnings,sdp:Vt};switch(i.browser){case"chrome":if(!_||!_.shimPeerConnection||!r.shimChrome)return n("Chrome shim is not included in this adapter release."),a;if(i.version===null)return n("Chrome shim can not determine version, not shimming."),a;n("adapter.js shimming chrome."),a.browserShim=_,C.shimAddIceCandidateNullOrEmpty(t,i),C.shimParameterlessSetLocalDescription(t,i),_.shimGetUserMedia(t,i),_.shimMediaStream(t,i),_.shimPeerConnection(t,i),_.shimOnTrack(t,i),_.shimAddTrackRemoveTrack(t,i),_.shimGetSendersWithDtmf(t,i),_.shimGetStats(t,i),_.shimSenderReceiverGetStats(t,i),_.fixNegotiationNeeded(t,i),_.shimSelectAudioOutput(t,i),C.shimRTCIceCandidate(t,i),C.shimConnectionState(t,i),C.shimMaxMessageSize(t,i),C.shimSendThrowTypeError(t,i),C.removeExtmapAllowMixed(t,i);break;case"firefox":if(!T||!T.shimPeerConnection||!r.shimFirefox)return n("Firefox shim is not included in this adapter release."),a;n("adapter.js shimming firefox."),a.browserShim=T,C.shimAddIceCandidateNullOrEmpty(t,i),C.shimParameterlessSetLocalDescription(t,i),T.shimGetUserMedia(t,i),T.shimPeerConnection(t,i),T.shimOnTrack(t,i),T.shimRemoveStream(t,i),T.shimSenderGetStats(t,i),T.shimReceiverGetStats(t,i),T.shimRTCDataChannel(t,i),T.shimAddTransceiver(t,i),T.shimGetParameters(t,i),T.shimCreateOffer(t,i),T.shimCreateAnswer(t,i),C.shimRTCIceCandidate(t,i),C.shimConnectionState(t,i),C.shimMaxMessageSize(t,i),C.shimSendThrowTypeError(t,i);break;case"safari":if(!b||!r.shimSafari)return n("Safari shim is not included in this adapter release."),a;n("adapter.js shimming safari."),a.browserShim=b,C.shimAddIceCandidateNullOrEmpty(t,i),C.shimParameterlessSetLocalDescription(t,i),b.shimRTCIceServerUrls(t,i),b.shimCreateOfferLegacy(t,i),b.shimCallbacksAPI(t,i),b.shimLocalStreamsAPI(t,i),b.shimRemoteStreamsAPI(t,i),b.shimTrackEventTransceiver(t,i),b.shimGetUserMedia(t,i),b.shimAudioContext(t,i),C.shimRTCIceCandidate(t,i),C.shimMaxMessageSize(t,i),C.shimSendThrowTypeError(t,i),C.removeExtmapAllowMixed(t,i);break;default:n("Unsupported browser!");break}return a}});var Kt=P((ar,Se)=>{var jt=Ce(),Bt=(0,jt.adapterFactory)({window:typeof window>"u"?void 0:window});Se.exports=Bt});"use strict";Kt();})(); diff --git a/node_modules/webrtc-adapter/package.json b/node_modules/webrtc-adapter/package.json new file mode 100644 index 0000000..4215dbc --- /dev/null +++ b/node_modules/webrtc-adapter/package.json @@ -0,0 +1,62 @@ +{ + "name": "webrtc-adapter", + "version": "8.2.3", + "description": "A shim to insulate apps from WebRTC spec changes and browser prefix differences", + "license": "BSD-3-Clause", + "main": "./dist/adapter_core.js", + "types": "./index.d.ts", + "module": "./src/js/adapter_core.js", + "repository": { + "type": "git", + "url": "https://github.com/webrtchacks/adapter.git" + }, + "authors": [ + "The WebRTC project authors (https://www.webrtc.org/)", + "The adapter.js project authors (https://github.com/webrtchacks/adapter/)" + ], + "scripts": { + "preversion": "git stash && npm install && npm update && BROWSER=chrome BVER=stable CI=true npm test && git checkout -B bumpVersion && grunt build && grunt copyForPublish && git add package.json release/* && git commit -m 'Add adapter artifacts' --allow-empty", + "version": "", + "postversion": "export GITTAG=\"echo $(git describe --abbrev=0 --tags | sed 's/^v//')\" && git push --force --set-upstream origin bumpVersion --follow-tags && git checkout gh-pages && git pull && cp out/adapter.js adapter.js && cp adapter.js adapter-`$GITTAG`.js && rm adapter-latest.js && ln -s adapter-`$GITTAG`.js adapter-latest.js && mkdir -p adapter-`$GITTAG`-variants && cp out/adapter.js adapter-`$GITTAG`-variants/ && cp out/adapter_*.js adapter-`$GITTAG`-variants/ && git add adapter.js adapter-latest.js adapter-`$GITTAG`.js adapter-`$GITTAG`-variants && git commit -m `$GITTAG` && git push --set-upstream origin gh-pages && git checkout main", + "prepare": "grunt build", + "prepublishonly": "npm test", + "test": "grunt && mocha test/unit && grunt downloadBrowser && karma start test/karma.conf.js", + "lint-and-unit-tests": "grunt && mocha test/unit", + "e2e-tests": "grunt && grunt downloadBrowser && karma start test/karma.conf.js" + }, + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "npm": ">=3.10.0", + "node": ">=6.0.0" + }, + "devDependencies": { + "@babel/core": "^7.21.0", + "@babel/preset-env": "^7.20.2", + "babel-preset-env": "^1.7.0", + "brfs": "^1.5.0", + "chai": "^3.5.0", + "grunt": "^1.1.0", + "grunt-babel": "^8.0.0", + "grunt-browserify": "^6.0.0", + "grunt-cli": "^1.3.1", + "grunt-contrib-clean": "^1.1.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-eslint": "^24.0.0", + "grunt-shell": "^2.1.0", + "karma": "^6.4.1", + "karma-browserify": "^8.1.0", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^2.2.0", + "karma-firefox-launcher": "^1.3.0", + "karma-mocha": "^2.0.1", + "karma-mocha-reporter": "^2.2.3", + "karma-safari-launcher": "^1.0.0", + "karma-stability-reporter": "^3.0.1", + "mocha": "^10.1.0", + "sinon": "^2.2.0", + "sinon-chai": "^2.14.0", + "travis-multirunner": "^5.0.1" + } +} diff --git a/node_modules/webrtc-adapter/src/js/adapter_core.js b/node_modules/webrtc-adapter/src/js/adapter_core.js new file mode 100644 index 0000000..e24468f --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/adapter_core.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +import {adapterFactory} from './adapter_factory.js'; + +const adapter = + adapterFactory({window: typeof window === 'undefined' ? undefined : window}); +export default adapter; diff --git a/node_modules/webrtc-adapter/src/js/adapter_core5.js b/node_modules/webrtc-adapter/src/js/adapter_core5.js new file mode 100644 index 0000000..941e1a3 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/adapter_core5.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +import {adapterFactory} from './adapter_factory.js'; + +const adapter = + adapterFactory({window: typeof window === 'undefined' ? undefined : window}); +module.exports = adapter; // this is the difference from adapter_core. diff --git a/node_modules/webrtc-adapter/src/js/adapter_factory.js b/node_modules/webrtc-adapter/src/js/adapter_factory.js new file mode 100644 index 0000000..54bdda2 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/adapter_factory.js @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +import * as utils from './utils'; + +// Browser shims. +import * as chromeShim from './chrome/chrome_shim'; +import * as firefoxShim from './firefox/firefox_shim'; +import * as safariShim from './safari/safari_shim'; +import * as commonShim from './common_shim'; +import * as sdp from 'sdp'; + +// Shimming starts here. +export function adapterFactory({window} = {}, options = { + shimChrome: true, + shimFirefox: true, + shimSafari: true, +}) { + // Utils. + const logging = utils.log; + const browserDetails = utils.detectBrowser(window); + + const adapter = { + browserDetails, + commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp, + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || + !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || + !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + + return adapter; +} diff --git a/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js b/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js new file mode 100644 index 0000000..46aee7e --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js @@ -0,0 +1,702 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; +import * as utils from '../utils.js'; + +export {shimGetUserMedia} from './getusermedia'; +export {shimGetDisplayMedia} from './getdisplaymedia'; + +export function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} + +export function shimOnTrack(window) { + if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in + window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get() { + return this._ontrack; + }, + set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + const origSetRemoteDescription = + window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription() { + if (!this._ontrackpoly) { + this._ontrackpoly = (e) => { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', te => { + let receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = this.getReceivers() + .find(r => r.track && r.track.id === te.track.id); + } else { + receiver = {track: te.track}; + } + + const event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = {receiver}; + event.streams = [e.stream]; + this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(track => { + let receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = this.getReceivers() + .find(r => r.track && r.track.id === track.id); + } else { + receiver = {track}; + } + const event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = {receiver}; + event.streams = [e.stream]; + this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', e => { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', + {value: {receiver: e.receiver}}); + } + return e; + }); + } +} + +export function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (typeof window === 'object' && window.RTCPeerConnection && + !('getSenders' in window.RTCPeerConnection.prototype) && + 'createDTMFSender' in window.RTCPeerConnection.prototype) { + const shimSenderWithDtmf = function(pc, track) { + return { + track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, stream) { + let sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + + const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = + function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + const idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + const origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(track => { + this._senders.push(shimSenderWithDtmf(this, track)); + }); + }; + + const origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + + stream.getTracks().forEach(track => { + const sender = this._senders.find(s => s.track === track); + if (sender) { // remove sender + this._senders.splice(this._senders.indexOf(sender), 1); + } + }); + }; + } else if (typeof window === 'object' && window.RTCPeerConnection && + 'getSenders' in window.RTCPeerConnection.prototype && + 'createDTMFSender' in window.RTCPeerConnection.prototype && + window.RTCRtpSender && + !('dtmf' in window.RTCRtpSender.prototype)) { + const origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + const senders = origGetSenders.apply(this, []); + senders.forEach(sender => sender._pc = this); + return senders; + }; + + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} + +export function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + + const origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + const [selector, onSucc, onErr] = arguments; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || + typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + + const fixChromeStats_ = function(response) { + const standardReport = {}; + const reports = response.result(); + reports.forEach(report => { + const standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(name => { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + + return standardReport; + }; + + // shim getStats with maplike support + const makeMapStats = function(stats) { + return new Map(Object.keys(stats).map(key => [key, stats[key]])); + }; + + if (arguments.length >= 2) { + const successCallbackWrapper_ = function(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + + return origGetStats.apply(this, [successCallbackWrapper_, + selector]); + } + + // promise-support + return new Promise((resolve, reject) => { + origGetStats.apply(this, [ + function(response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} + +export function shimSenderReceiverGetStats(window) { + if (!(typeof window === 'object' && window.RTCPeerConnection && + window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + const origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + const senders = origGetSenders.apply(this, []); + senders.forEach(sender => sender._pc = this); + return senders; + }; + } + + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + const sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + const sender = this; + return this._pc.getStats().then(result => + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true)); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = + function getReceivers() { + const receivers = origGetReceivers.apply(this, []); + receivers.forEach(receiver => receiver._pc = this); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', e => { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + const receiver = this; + return this._pc.getStats().then(result => + utils.filterStats(result, receiver.track, false)); + }; + } + + if (!('getStats' in window.RTCRtpSender.prototype && + 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + const origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && + arguments[0] instanceof window.MediaStreamTrack) { + const track = arguments[0]; + let sender; + let receiver; + let err; + this.getSenders().forEach(s => { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(r => { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || (sender && receiver)) { + return Promise.reject(new DOMException( + 'There are more than one sender or receiver for the track.', + 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException( + 'There is no sender or receiver for the track.', + 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} + +export function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = + function getLocalStreams() { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams) + .map(streamId => this._shimmedLocalStreams[streamId][0]); + }; + + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + + const sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + + const origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + + stream.getTracks().forEach(track => { + const alreadyExists = this.getSenders().find(s => s.track === track); + if (alreadyExists) { + throw new DOMException('Track already exists.', + 'InvalidAccessError'); + } + }); + const existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + const newSenders = this.getSenders() + .filter(newSender => existingSenders.indexOf(newSender) === -1); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + + const origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + + const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = + function removeTrack(sender) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(streamId => { + const idx = this._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + this._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (this._shimmedLocalStreams[streamId].length === 1) { + delete this._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} + +export function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && + browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + const origGetLocalStreams = window.RTCPeerConnection.prototype + .getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = + function getLocalStreams() { + const nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(stream => this._reverseStreams[stream.id]); + }; + + const origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + + stream.getTracks().forEach(track => { + const alreadyExists = this.getSenders().find(s => s.track === track); + if (alreadyExists) { + throw new DOMException('Track already exists.', + 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + const newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + + const origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + + origRemoveStream.apply(this, [(this._streams[stream.id] || stream)]); + delete this._reverseStreams[(this._streams[stream.id] ? + this._streams[stream.id].id : stream.id)]; + delete this._streams[stream.id]; + }; + + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, stream) { + if (this.signalingState === 'closed') { + throw new DOMException( + 'The RTCPeerConnection\'s signalingState is \'closed\'.', + 'InvalidStateError'); + } + const streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || + !streams[0].getTracks().find(t => t === track)) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException( + 'The adapter.js addTrack polyfill only supports a single ' + + ' stream which is associated with the specified track.', + 'NotSupportedError'); + } + + const alreadyExists = this.getSenders().find(s => s.track === track); + if (alreadyExists) { + throw new DOMException('Track already exists.', + 'InvalidAccessError'); + } + + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + const oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(() => { + this.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + const newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(s => s.track === track); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + let sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(internalId => { + const externalStream = pc._reverseStreams[internalId]; + const internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), + externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp + }); + } + function replaceExternalStreamId(pc, description) { + let sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(internalId => { + const externalStream = pc._reverseStreams[internalId]; + const internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), + internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function(method) { + const nativeMethod = window.RTCPeerConnection.prototype[method]; + const methodObj = {[method]() { + const args = arguments; + const isLegacyCall = arguments.length && + typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [ + (description) => { + const desc = replaceInternalStreamId(this, description); + args[0].apply(null, [desc]); + }, + (err) => { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2] + ]); + } + return nativeMethod.apply(this, arguments) + .then(description => replaceInternalStreamId(this, description)); + }}; + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + + const origSetLocalDescription = + window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = + function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + const origLocalDescription = Object.getOwnPropertyDescriptor( + window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, + 'localDescription', { + get() { + const description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + + window.RTCPeerConnection.prototype.removeTrack = + function removeTrack(sender) { + if (this.signalingState === 'closed') { + throw new DOMException( + 'The RTCPeerConnection\'s signalingState is \'closed\'.', + 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + const isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', + 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + let stream; + Object.keys(this._streams).forEach(streamid => { + const hasTrack = this._streams[streamid].getTracks() + .find(track => sender.track === track); + if (hasTrack) { + stream = this._streams[streamid]; + } + }); + + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} + +export function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] + .forEach(function(method) { + const nativeMethod = window.RTCPeerConnection.prototype[method]; + const methodObj = {[method]() { + arguments[0] = new ((method === 'addIceCandidate') ? + window.RTCIceCandidate : + window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }}; + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +export function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', e => { + const pc = e.target; + if (browserDetails.version < 72 || (pc.getConfiguration && + pc.getConfiguration().sdpSemantics === 'plan-b')) { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} diff --git a/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js b/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js new file mode 100644 index 0000000..1e8f6ec --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; +export function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && + 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!(window.navigator.mediaDevices)) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = + function getDisplayMedia(constraints) { + return getSourceId(constraints) + .then(sourceId => { + const widthSpecified = constraints.video && constraints.video.width; + const heightSpecified = constraints.video && + constraints.video.height; + const frameRateSpecified = constraints.video && + constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js b/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js new file mode 100644 index 0000000..7b29d20 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; +import * as utils from '../utils.js'; +const logging = utils.log; + +export function shimGetUserMedia(window, browserDetails) { + const navigator = window && window.navigator; + + if (!navigator.mediaDevices) { + return; + } + + const constraintsToChrome_ = function(c) { + if (typeof c !== 'object' || c.mandatory || c.optional) { + return c; + } + const cc = {}; + Object.keys(c).forEach(key => { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + const r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]}; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + const oldname_ = function(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return (name === 'deviceId') ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + let oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(mix => { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + + const shimConstraints_ = function(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && typeof constraints.audio === 'object') { + const remap = function(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && typeof constraints.video === 'object') { + // Shim facingMode for mobile & surface pro. + let face = constraints.video.facingMode; + face = face && ((typeof face === 'object') ? face : {ideal: face}); + const getSupportedFacingModeLies = browserDetails.version < 66; + + if ((face && (face.exact === 'user' || face.exact === 'environment' || + face.ideal === 'user' || face.ideal === 'environment')) && + !(navigator.mediaDevices.getSupportedConstraints && + navigator.mediaDevices.getSupportedConstraints().facingMode && + !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + let matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices() + .then(devices => { + devices = devices.filter(d => d.kind === 'videoinput'); + let dev = devices.find(d => matches.some(match => + d.label.toLowerCase().includes(match))); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + if (dev) { + constraints.video.deviceId = face.exact + ? {exact: dev.deviceId} + : {ideal: dev.deviceId}; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + + const shimError_ = function(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + + const getUserMedia_ = function(constraints, onSuccess, onError) { + shimConstraints_(constraints, c => { + navigator.webkitGetUserMedia(c, onSuccess, e => { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + const origGetUserMedia = navigator.mediaDevices.getUserMedia. + bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function(cs) { + return shimConstraints_(cs, c => origGetUserMedia(c).then(stream => { + if (c.audio && !stream.getAudioTracks().length || + c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(track => { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, e => Promise.reject(shimError_(e)))); + }; + } +} diff --git a/node_modules/webrtc-adapter/src/js/common_shim.js b/node_modules/webrtc-adapter/src/js/common_shim.js new file mode 100644 index 0000000..96d7c8e --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/common_shim.js @@ -0,0 +1,462 @@ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +import SDPUtils from 'sdp'; +import * as utils from './utils'; + +export function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'foundation' in + window.RTCIceCandidate.prototype)) { + return; + } + + const NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (typeof args === 'object' && args.candidate && + args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + const nativeCandidate = new NativeRTCIceCandidate(args); + const parsedCandidate = SDPUtils.parseCandidate(args.candidate); + for (const key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, + {value: parsedCandidate[key]}); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment, + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', e => { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} + +export function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'relayProtocol' in + window.RTCIceCandidate.prototype)) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', e => { + if (e.candidate) { + const parsedCandidate = SDPUtils.parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp', + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} + +export function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + + const sctpInDescription = function(description) { + if (!description || !description.sdp) { + return false; + } + const sections = SDPUtils.splitSections(description.sdp); + sections.shift(); + return sections.some(mediaSection => { + const mLine = SDPUtils.parseMLine(mediaSection); + return mLine && mLine.kind === 'application' + && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + + const getRemoteFirefoxVersion = function(description) { + // TODO: Is there a better solution for detecting Firefox? + const match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + const version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + + const getCanSendMaxMessageSize = function(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + let canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = + browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + + const getMaxMessageSize = function(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + let maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' + && browserDetails.version === 57) { + maxMessageSize = 65535; + } + + const match = SDPUtils.matchPrefix(description.sdp, + 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && + remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + + const origSetRemoteDescription = + window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + const {sdpSemantics} = this.getConfiguration(); + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true, + }); + } + } + + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + const isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + const canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + const remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + let maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + const sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + + return origSetRemoteDescription.apply(this, arguments); + }; +} + +export function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && + 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + const origDataChannelSend = dc.send; + dc.send = function send() { + const data = arguments[0]; + const length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && + pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + const origCreateDataChannel = + window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = + function createDataChannel() { + const dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', e => { + wrapDcSend(e.channel, e.target); + return e; + }); +} + + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +export function shimConnectionState(window) { + if (!window.RTCPeerConnection || + 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + const proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get() { + return this._onconnectionstatechange || null; + }, + set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', + this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', + this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + + ['setLocalDescription', 'setRemoteDescription'].forEach((method) => { + const origMethod = proto[method]; + proto[method] = function() { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = e => { + const pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + const newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', + this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} + +export function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + const nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + const sdp = desc.sdp.split('\n').filter((line) => { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && + desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp, + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} + +export function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + const nativeAddIceCandidate = + window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = + function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if (((browserDetails.browser === 'chrome' && browserDetails.version < 78) + || (browserDetails.browser === 'firefox' + && browserDetails.version < 68) + || (browserDetails.browser === 'safari')) + && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +export function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + const nativeSetLocalDescription = + window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = + function setLocalDescription() { + let desc = arguments[0] || {}; + if (typeof desc !== 'object' || (desc.type && desc.sdp)) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = {type: desc.type, sdp: desc.sdp}; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || (desc.type !== 'offer' && desc.type !== 'answer')) { + return nativeSetLocalDescription.apply(this, [desc]); + } + const func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this) + .then(d => nativeSetLocalDescription.apply(this, [d])); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js b/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js new file mode 100644 index 0000000..4b9852b --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js @@ -0,0 +1,300 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +import * as utils from '../utils'; +export {shimGetUserMedia} from './getusermedia'; +export {shimGetDisplayMedia} from './getdisplaymedia'; + +export function shimOnTrack(window) { + if (typeof window === 'object' && window.RTCTrackEvent && + ('receiver' in window.RTCTrackEvent.prototype) && + !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get() { + return {receiver: this.receiver}; + } + }); + } +} + +export function shimPeerConnection(window, browserDetails) { + if (typeof window !== 'object' || + !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] + .forEach(function(method) { + const nativeMethod = window.RTCPeerConnection.prototype[method]; + const methodObj = {[method]() { + arguments[0] = new ((method === 'addIceCandidate') ? + window.RTCIceCandidate : + window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }}; + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + + const modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + + const nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + const [selector, onSucc, onErr] = arguments; + return nativeGetStats.apply(this, [selector || null]) + .then(stats => { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(stat => { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach((stat, i) => { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }) + .then(onSucc, onErr); + }; +} + +export function shimSenderGetStats(window) { + if (!(typeof window === 'object' && window.RTCPeerConnection && + window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + const origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + const senders = origGetSenders.apply(this, []); + senders.forEach(sender => sender._pc = this); + return senders; + }; + } + + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + const sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : + Promise.resolve(new Map()); + }; +} + +export function shimReceiverGetStats(window) { + if (!(typeof window === 'object' && window.RTCPeerConnection && + window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + const receivers = origGetReceivers.apply(this, []); + receivers.forEach(receiver => receiver._pc = this); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', e => { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} + +export function shimRemoveStream(window) { + if (!window.RTCPeerConnection || + 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(sender => { + if (sender.track && stream.getTracks().includes(sender.track)) { + this.removeTrack(sender); + } + }); + }; +} + +export function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} + +export function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(typeof window === 'object' && window.RTCPeerConnection)) { + return; + } + const origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = + function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + let sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = [...sendEncodings]; + const shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach((encodingParam) => { + if ('rid' in encodingParam) { + const ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + const transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + const {sender} = transceiver; + const params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + (params.encodings.length === 1 && + Object.keys(params.encodings[0]).length === 0)) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params) + .then(() => { + delete sender.sendEncodings; + }).catch(() => { + delete sender.sendEncodings; + }) + ); + } + } + return transceiver; + }; + } +} + +export function shimGetParameters(window) { + if (!(typeof window === 'object' && window.RTCRtpSender)) { + return; + } + const origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = + function getParameters() { + const params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} + +export function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(typeof window === 'object' && window.RTCPeerConnection)) { + return; + } + const origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises) + .then(() => { + return origCreateOffer.apply(this, arguments); + }) + .finally(() => { + this.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} + +export function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(typeof window === 'object' && window.RTCPeerConnection)) { + return; + } + const origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises) + .then(() => { + return origCreateAnswer.apply(this, arguments); + }) + .finally(() => { + this.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js b/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js new file mode 100644 index 0000000..0ecce44 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +export function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && + 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!(window.navigator.mediaDevices)) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = + function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + const err = new DOMException('getDisplayMedia without video ' + + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = {mediaSource: preferredMediaSource}; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js b/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js new file mode 100644 index 0000000..6b7d87b --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +import * as utils from '../utils'; + +export function shimGetUserMedia(window, browserDetails) { + const navigator = window && window.navigator; + const MediaStreamTrack = window && window.MediaStreamTrack; + + navigator.getUserMedia = function(constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', + 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + + if (!(browserDetails.version > 55 && + 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + const remap = function(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + + const nativeGetUserMedia = navigator.mediaDevices.getUserMedia. + bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function(c) { + if (typeof c === 'object' && typeof c.audio === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + const nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function() { + const obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + const nativeApplyConstraints = + MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function(c) { + if (this.kind === 'audio' && typeof c === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} diff --git a/node_modules/webrtc-adapter/src/js/safari/safari_shim.js b/node_modules/webrtc-adapter/src/js/safari/safari_shim.js new file mode 100644 index 0000000..cfd09a3 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/safari/safari_shim.js @@ -0,0 +1,352 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; +import * as utils from '../utils'; + +export function shimLocalStreamsAPI(window) { + if (typeof window !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = + function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + const _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(track => _addTrack.call(this, track, + stream)); + stream.getVideoTracks().forEach(track => _addTrack.call(this, track, + stream)); + }; + + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, ...streams) { + if (streams) { + streams.forEach((stream) => { + if (!this._localStreams) { + this._localStreams = [stream]; + } else if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + if (!this._localStreams) { + this._localStreams = []; + } + const index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + const tracks = stream.getTracks(); + this.getSenders().forEach(sender => { + if (tracks.includes(sender.track)) { + this.removeTrack(sender); + } + }); + }; + } +} + +export function shimRemoteStreamsAPI(window) { + if (typeof window !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = + function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get() { + return this._onaddstream; + }, + set(f) { + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = (e) => { + e.streams.forEach(stream => { + if (!this._remoteStreams) { + this._remoteStreams = []; + } + if (this._remoteStreams.includes(stream)) { + return; + } + this._remoteStreams.push(stream); + const event = new Event('addstream'); + event.stream = stream; + this.dispatchEvent(event); + }); + }); + } + }); + const origSetRemoteDescription = + window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription() { + const pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function(e) { + e.streams.forEach(stream => { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + const event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} + +export function shimCallbacksAPI(window) { + if (typeof window !== 'object' || !window.RTCPeerConnection) { + return; + } + const prototype = window.RTCPeerConnection.prototype; + const origCreateOffer = prototype.createOffer; + const origCreateAnswer = prototype.createAnswer; + const setLocalDescription = prototype.setLocalDescription; + const setRemoteDescription = prototype.setRemoteDescription; + const addIceCandidate = prototype.addIceCandidate; + + prototype.createOffer = + function createOffer(successCallback, failureCallback) { + const options = (arguments.length >= 2) ? arguments[2] : arguments[0]; + const promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + + prototype.createAnswer = + function createAnswer(successCallback, failureCallback) { + const options = (arguments.length >= 2) ? arguments[2] : arguments[0]; + const promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + + let withCallback = function(description, successCallback, failureCallback) { + const promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + + withCallback = function(description, successCallback, failureCallback) { + const promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + + withCallback = function(candidate, successCallback, failureCallback) { + const promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} + +export function shimGetUserMedia(window) { + const navigator = window && window.navigator; + + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + const mediaDevices = navigator.mediaDevices; + const _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = (constraints) => { + return _getUserMedia(shimConstraints(constraints)); + }; + } + + if (!navigator.getUserMedia && navigator.mediaDevices && + navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints) + .then(cb, errcb); + }.bind(navigator); + } +} + +export function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, + constraints, + {video: utils.compactObject(constraints.video)} + ); + } + + return constraints; +} + +export function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + const OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = + function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + const newIceServers = []; + for (let i = 0; i < pcConfig.iceServers.length; i++) { + let server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} + +export function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (typeof window === 'object' && window.RTCTrackEvent && + 'receiver' in window.RTCTrackEvent.prototype && + !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get() { + return {receiver: this.receiver}; + } + }); + } +} + +export function shimCreateOfferLegacy(window) { + const origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = + function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = + !!offerOptions.offerToReceiveAudio; + } + const audioTransceiver = this.getTransceivers().find(transceiver => + transceiver.receiver.track.kind === 'audio'); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && + !audioTransceiver) { + this.addTransceiver('audio', {direction: 'recvonly'}); + } + + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = + !!offerOptions.offerToReceiveVideo; + } + const videoTransceiver = this.getTransceivers().find(transceiver => + transceiver.receiver.track.kind === 'video'); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && + !videoTransceiver) { + this.addTransceiver('video', {direction: 'recvonly'}); + } + } + return origCreateOffer.apply(this, arguments); + }; +} + +export function shimAudioContext(window) { + if (typeof window !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} + diff --git a/node_modules/webrtc-adapter/src/js/utils.js b/node_modules/webrtc-adapter/src/js/utils.js new file mode 100644 index 0000000..c03f0fa --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/utils.js @@ -0,0 +1,263 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +let logDisabled_ = true; +let deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +export function extractVersion(uastring, expr, pos) { + const match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +export function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + const proto = window.RTCPeerConnection.prototype; + const nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function(nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + const wrappedCallback = (e) => { + const modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, + wrappedCallback]); + }; + + const nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function(nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap + || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + const unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap].delete(cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, + unwrappedCb]); + }; + + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get() { + return this['_on' + eventNameToWrap]; + }, + set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, + this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, + this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} + +export function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + typeof bool + + '. Please use a boolean.'); + } + logDisabled_ = bool; + return (bool) ? 'adapter.js logging disabled' : + 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +export function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + typeof bool + + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} + +export function log() { + if (typeof window === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +export function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +export function detectBrowser(window) { + // Returned result object. + const result = {browser: null, version: null}; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || + !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + + const {navigator} = window; + + if (navigator.mozGetUserMedia) { // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, + /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || + (window.isSecureContext === false && window.webkitRTCPeerConnection)) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, + /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && + navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, + /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && + 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +export function compactObject(data) { + if (!isObject(data)) { + return data; + } + + return Object.keys(data).reduce(function(accumulator, key) { + const isObj = isObject(data[key]); + const value = isObj ? compactObject(data[key]) : data[key]; + const isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, {[key]: value}); + }, {}); +} + +/* iterates the stats graph recursively. */ +export function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(name => { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(id => { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +export function filterStats(result, track, outbound) { + const streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + const filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + const trackStats = []; + result.forEach(value => { + if (value.type === 'track' && + value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(trackStat => { + result.forEach(stats => { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} + diff --git a/node_modules/zxing-wasm/LICENSE b/node_modules/zxing-wasm/LICENSE new file mode 100644 index 0000000..5dd3d5b --- /dev/null +++ b/node_modules/zxing-wasm/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Ze-Zheng Wu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/zxing-wasm/README.md b/node_modules/zxing-wasm/README.md new file mode 100644 index 0000000..38d65ef --- /dev/null +++ b/node_modules/zxing-wasm/README.md @@ -0,0 +1,246 @@ +# zxing-wasm + +[![npm](https://img.shields.io/npm/v/zxing-wasm)](https://www.npmjs.com/package/zxing-wasm/v/latest) [![npm bundle size (scoped)](https://img.shields.io/bundlephobia/minzip/zxing-wasm)](https://www.npmjs.com/package/zxing-wasm/v/latest) [![jsDelivr hits (npm scoped)](https://img.shields.io/jsdelivr/npm/hm/zxing-wasm?color=%23ff5627)](https://cdn.jsdelivr.net/npm/zxing-wasm@latest/) [![Netlify Status](https://api.netlify.com/api/v1/badges/743dfd74-1572-49fb-a758-c1840e174366/deploy-status?branch=main)](https://app.netlify.com/sites/zxing-wasm/deploys) + +[ZXing-C++](https://github.com/zxing-cpp/zxing-cpp) WebAssembly as an ES/CJS module with types. Read or write barcodes in your browser (or other JS runtimes like node)! + +Visit [this online demo](https://zxing-wasm-demo.netlify.app/) to quickly explore its basic functions. It works best on the latest chromium browsers. + +## Build + +```bash +git clone --recurse-submodules https://github.com/Sec-ant/zxing-wasm +cd zxing-wasm +npm i +# install cmake first: +# https://cmake.org/download/ +npm run cmake +# install emscripten first: +# https://emscripten.org/docs/getting_started/downloads.html +npm run build:wasm +npm run build +``` + +## Install + +``` +npm i zxing-wasm +``` + +## Documentation + +https://zxing-wasm.netlify.app/ + +## Demo + +Demo page: https://zxing-wasm-demo.netlify.app/ + +Demo source: https://github.com/Sec-ant/zxing-wasm-demo + +## Usage + +This package exports 3 subpaths: `full`, `reader` and `writer`. You can choose whichever fits your needs. If you use TypeScript, you should set [`moduleResolution`](https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution) to [`bundler`](https://www.typescriptlang.org/docs/handbook/modules/reference.html#bundler), [`node16` or `nodenext`](https://www.typescriptlang.org/docs/handbook/modules/reference.html#node16-nodenext-1) in your `tsconfig.json` file to properly resolve the exported module. + +### `zxing-wasm` or `zxing-wasm/full` + +These 2 subpaths include functions to both read and write barcodes. The wasm binary size is ~1.17 MB. + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, + writeBarcodeToImageFile, +} from "zxing-wasm"; +``` + +or + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, + writeBarcodeToImageFile, +} from "zxing-wasm/full"; +``` + +### `zxing-wasm/reader` + +This subpath only includes functions to read barcodes. The wasm binary size is ~930 KB. + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, +} from "zxing-wasm/reader"; +``` + +### `zxing-wasm/writer` + +This subpath only includes a function to write barcodes. The wasm binary size is ~330 KB. + +```ts +import { writeBarcodeToImageFile } from "zxing-wasm/writer"; +``` + +### IIFE Scripts + +Apart from ES and CJS modules, this package also ships IIFE scripts. The registered global variable is named `ZXingWASM`. + +```html + + + + + + + + +``` + +### [`readBarcodesFromImageFile`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageFile.html) and [`readBarcodesFromImageData`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageData.html) + +These 2 functions are for reading barcodes. + +[`readBarcodesFromImageFile`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageFile.html) accepts an image [`Blob`](https://developer.mozilla.org/docs/Web/API/Blob) or an image [`File`](https://developer.mozilla.org/docs/Web/API/File) as the first input. They're encoded images, e.g. `.png` `.jpg` files. + +[`readBarcodesFromImageData`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageData.html) accepts an [`ImageData`](https://developer.mozilla.org/docs/Web/API/ImageData) as the first input. They're raw pixels that usually acquired from [``](https://developer.mozilla.org/docs/Web/HTML/Element/canvas) or related APIs. + +Both of these 2 functions optionally accept the same second input: [`ReaderOptions`](https://zxing-wasm.netlify.app/interfaces/full.ReaderOptions.html). + +The return result of these 2 functions is a `Promise` of an array of [`ReadResult`](https://zxing-wasm.netlify.app/interfaces/full.ReadResult.html)s. + +e.g. + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, + type ReaderOptions, +} from "zxing-wasm/reader"; + +const readerOptions: ReaderOptions = { + tryHarder: true, + formats: ["QRCode"], + maxNumberOfSymbols: 1, +}; + +/** + * Read from image file/blob + */ +const imageFile = await fetch( + "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Hello%20world!", +).then((resp) => resp.blob()); + +const imageFileReadResults = await readBarcodesFromImageFile( + imageFile, + readerOptions, +); + +console.log(imageFileReadResults[0].text); // Hello world! + +/** + * Read from image data + */ +const imageData = await createImageBitmap(imageFile).then((imageBitmap) => { + const { width, height } = imageBitmap; + const context = new OffscreenCanvas(width, height).getContext( + "2d", + ) as OffscreenCanvasRenderingContext2D; + context.drawImage(imageBitmap, 0, 0, width, height); + return context.getImageData(0, 0, width, height); +}); + +const imageDataReadResults = await readBarcodesFromImageData( + imageData, + readerOptions, +); + +console.log(imageDataReadResults[0].text); // Hello world! +``` + +### [`writeBarcodeToImageFile`](https://zxing-wasm.netlify.app/functions/full.writeBarcodeToImageFile.html) + +This function is used to write barcodes. The first argument of this function is a text string to be encoded and the optional second argument is an [`WriterOptions`](https://zxing-wasm.netlify.app/interfaces/full.WriterOptions.html). + +The return result of this function is a `Promise` of a [`WriteResult`](https://zxing-wasm.netlify.app/interfaces/full.WriteResult.html). + +e.g. + +```ts +import { writeBarcodeToImageFile, type WriterOptions } from "zxing-wasm/writer"; + +const writerOptions: WriterOptions = { + format: "QRCode", + width: 150, + height: 150, + margin: 10, + eccLevel: 2, +}; + +const writeOutput = await writeBarcodeToImageFile( + "Hello world!", + writerOptions, +); + +console.log(writeOutput.image); +``` + +## Notes + +When using this package, the `.wasm` binary needs to be served along with the JS glue code. In order to provide a smooth dev experience, the serve path is automatically assigned the [jsDelivr CDN](https://fastly.jsdelivr.net/npm/zxing-wasm/) url upon build. + +If you would like to change the serve path (to one of your local network hosts, some other CDNs, or just Base64 encoded data URIs), please use [`setZXingModuleOverrides`](https://zxing-wasm.netlify.app/functions/full.setZXingModuleOverrides.html) to override the [`locateFile`](https://emscripten.org/docs/api_reference/module.html?highlight=locatefile#Module.locateFile) function in advance. `locateFile` is one of the [Emscripten `Module` attribute hooks](https://emscripten.org/docs/api_reference/module.html?highlight=locatefile#affecting-execution) that can affect the code execution of the `Module` object during its lifecycles. + +e.g. + +```ts +import { setZXingModuleOverrides, writeBarcodeToImageFile } from "zxing-wasm"; + +// override the locateFile function +setZXingModuleOverrides({ + locateFile: (path, prefix) => { + if (path.endsWith(".wasm")) { + return `https://unpkg.com/zxing-wasm@1/dist/full/${path}`; + } + return prefix + path; + }, +}); + +// call read or write functions afterwards +const writeOutput = await writeBarcodeToImageFile("Hello world!"); +``` + +The wasm binary won't be fetched or instantiated unless a [read](#readbarcodesfromimagefile-and-readbarcodesfromimagedata) or [write](#writebarcodetoimagefile) function is firstly called, and will only be instantiated once given the same ([`Object.is`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/is)) [ZXingModuleOverrides](https://zxing-wasm.netlify.app/types/full.ZXingModuleOverrides). If you want to manually trigger the download and instantiation of the wasm binary prior to any read or write functions, you can use [`getZXingModule`](https://zxing-wasm.netlify.app/functions/full.getZXingModule). This function will also return a `Promise` that resolves to a [`ZXingModule`](https://zxing-wasm.netlify.app/types/full.ZXingModule). + +```ts +import { getZXingModule } from "zxing-wasm"; + +/** + * This function will trigger the download and + * instantiation of the wasm binary immediately + */ +const zxingModulePromise1 = getZXingModule(); + +const zxingModulePromise2 = getZXingModule(); + +console.log(zxingModulePromise1 === zxingModulePromise2); // true +``` + +[`getZXingModule`](https://zxing-wasm.netlify.app/functions/full.getZXingModule) can also optionally accept a [`ZXingModuleOverrides`](https://zxing-wasm.netlify.app/types/full.ZXingModuleOverrides.html) argument. + +```ts +import { getZXingModule } from "zxing-wasm"; + +getZXingModule({ + locateFile: (path, prefix) => { + if (path.endsWith(".wasm")) { + return `https://unpkg.com/zxing-wasm@1/dist/full/${path}`; + } + return prefix + path; + }, +}); +``` + +## License + +MIT diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/barcodeFormat.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/barcodeFormat.d.ts new file mode 100644 index 0000000..4d682b6 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/barcodeFormat.d.ts @@ -0,0 +1,21 @@ +export declare const barcodeFormats: readonly ["Aztec", "Codabar", "Code128", "Code39", "Code93", "DataBar", "DataBarExpanded", "DataMatrix", "DXFilmEdge", "EAN-13", "EAN-8", "ITF", "Linear-Codes", "Matrix-Codes", "MaxiCode", "MicroQRCode", "None", "PDF417", "QRCode", "rMQRCode", "UPC-A", "UPC-E"]; +/** + * @internal + */ +export type BarcodeFormat = (typeof barcodeFormats)[number]; +/** + * Barcode formats that can be used in {@link ReaderOptions.formats | `ReaderOptions.formats`} to read barcodes. + */ +export type ReadInputBarcodeFormat = Exclude; +/** + * Barcode formats that can be used in {@link WriterOptions.format | `WriterOptions.format`} to write barcodes. + */ +export type WriteInputBarcodeFormat = Exclude; +/** + * Barcode formats that may be returned in {@link ReadResult.format} in read functions. + */ +export type ReadOutputBarcodeFormat = Exclude; +export declare function formatsToString(formats: BarcodeFormat[]): string; +export declare function formatsFromString(formatString: string): BarcodeFormat[]; +export declare function formatFromString(format: string): BarcodeFormat; +export declare function normalizeFormatString(format: string): string; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/binarizer.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/binarizer.d.ts new file mode 100644 index 0000000..52ee7e9 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/binarizer.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const binarizers: readonly ["LocalAverage", "GlobalHistogram", "FixedThreshold", "BoolCast"]; +export type Binarizer = (typeof binarizers)[number]; +/** + * @internal + */ +export type ZXingBinarizer = Record; +export declare function binarizerToZXingEnum(zxingModule: ZXingModule, binarizer: Binarizer): ZXingEnum; +export declare function zxingEnumToBinarizer(zxingEnum: ZXingEnum): Binarizer; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/characterSet.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/characterSet.d.ts new file mode 100644 index 0000000..35ecb14 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/characterSet.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule, ZXingModuleType } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const characterSets: readonly ["Unknown", "ASCII", "ISO8859_1", "ISO8859_2", "ISO8859_3", "ISO8859_4", "ISO8859_5", "ISO8859_6", "ISO8859_7", "ISO8859_8", "ISO8859_9", "ISO8859_10", "ISO8859_11", "ISO8859_13", "ISO8859_14", "ISO8859_15", "ISO8859_16", "Cp437", "Cp1250", "Cp1251", "Cp1252", "Cp1256", "Shift_JIS", "Big5", "GB2312", "GB18030", "EUC_JP", "EUC_KR", "UTF16BE", "UTF8", "UTF16LE", "UTF32BE", "UTF32LE", "BINARY"]; +export type CharacterSet = (typeof characterSets)[number]; +/** + * @internal + */ +export type ZXingCharacterSet = Record; +export declare function characterSetToZXingEnum(zxingModule: ZXingModule, characterSet: CharacterSet): ZXingEnum; +export declare function zxingEnumToCharacterSet(zxingEnum: ZXingEnum): CharacterSet; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/contentType.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/contentType.d.ts new file mode 100644 index 0000000..9fe9007 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/contentType.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const contentTypes: readonly ["Text", "Binary", "Mixed", "GS1", "ISO15434", "UnknownECI"]; +export type ContentType = (typeof contentTypes)[number]; +/** + * @internal + */ +export type ZXingContentType = Record; +export declare function contentTypeToZXingEnum(zxingModule: ZXingModule, contentType: ContentType): ZXingEnum; +export declare function zxingEnumToContentType(zxingEnum: ZXingEnum): ContentType; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/eanAddOnSymbol.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/eanAddOnSymbol.d.ts new file mode 100644 index 0000000..fb45fd7 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/eanAddOnSymbol.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const eanAddOnSymbols: readonly ["Ignore", "Read", "Require"]; +export type EanAddOnSymbol = (typeof eanAddOnSymbols)[number]; +/** + * @internal + */ +export type ZXingEanAddOnSymbol = Record; +export declare function eanAddOnSymbolToZXingEnum(zxingModule: ZXingModule, eanAddOnSymbol: EanAddOnSymbol): ZXingEnum; +export declare function zxingEnumToEanAddOnSymbol(zxingEnum: ZXingEnum): EanAddOnSymbol; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/eccLevel.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/eccLevel.d.ts new file mode 100644 index 0000000..bbfb1bc --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/eccLevel.d.ts @@ -0,0 +1,4 @@ +export declare const writeInputEccLevels: readonly [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]; +export type WriteInputEccLevel = (typeof writeInputEccLevels)[number]; +export declare const readOutputEccLevels: readonly ["L", "M", "Q", "H"]; +export type ReadOutputEccLevel = (typeof readOutputEccLevels)[number]; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/enum.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/enum.d.ts new file mode 100644 index 0000000..7d42d60 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/enum.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export interface ZXingEnum { + value: number; +} diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/exposedReaderBindings.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/exposedReaderBindings.d.ts new file mode 100644 index 0000000..cc29207 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/exposedReaderBindings.d.ts @@ -0,0 +1,17 @@ +import { type ReaderOptions } from "./index.js"; +export declare const defaultReaderOptions: Required; +export { barcodeFormats, type BarcodeFormat, type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat, binarizers, type ZXingBinarizer, type Binarizer, characterSets, type ZXingCharacterSet, type CharacterSet, contentTypes, type ZXingContentType, type ContentType, type ZXingReaderOptions, type ReaderOptions, eanAddOnSymbols, type ZXingEanAddOnSymbol, type EanAddOnSymbol, readOutputEccLevels, type ReadOutputEccLevel, type ZXingEnum, type ZXingPoint, type ZXingPosition, type Point, type Position, type ZXingReadResult, type ReadResult, textModes, type ZXingTextMode, type TextMode, type ZXingVector, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultReaderOptions` + */ +defaultReaderOptions as defaultDecodeHints, }; +export { +/** + * @deprecated renamed as `ZXingReaderOptions` + */ +type ZXingReaderOptions as ZXingDecodeHints, +/** + * @deprecated renamed as `ReaderOptions` + */ +type ReaderOptions as DecodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/exposedWriterBindings.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/exposedWriterBindings.d.ts new file mode 100644 index 0000000..9254a66 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/exposedWriterBindings.d.ts @@ -0,0 +1,17 @@ +import { type WriterOptions } from "./index.js"; +export declare const defaultWriterOptions: Required; +export { barcodeFormats, type BarcodeFormat, type WriteInputBarcodeFormat, characterSets, type ZXingCharacterSet, type CharacterSet, writeInputEccLevels, type WriteInputEccLevel, type ZXingWriterOptions, type WriterOptions, type ZXingEnum, type ZXingWriteResult, type WriteResult, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultWriterOptions` + */ +defaultWriterOptions as defaultEncodeHints, }; +export { +/** + * @deprecated renamed as `ZXingWriterOptions` + */ +type ZXingWriterOptions as ZXingEncodeHints, +/** + * @deprecated renamed as `WriterOptions` + */ +type WriterOptions as EncodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/index.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/index.d.ts new file mode 100644 index 0000000..0081c44 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/index.d.ts @@ -0,0 +1,14 @@ +export * from "./barcodeFormat.js"; +export * from "./binarizer.js"; +export * from "./characterSet.js"; +export * from "./contentType.js"; +export * from "./readerOptions.js"; +export * from "./eanAddOnSymbol.js"; +export * from "./eccLevel.js"; +export * from "./writerOptions.js"; +export * from "./enum.js"; +export * from "./position.js"; +export * from "./readResult.js"; +export * from "./textMode.js"; +export * from "./vector.js"; +export * from "./writeResult.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/position.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/position.d.ts new file mode 100644 index 0000000..2cbe76c --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/position.d.ts @@ -0,0 +1,55 @@ +/** + * @internal + */ +export interface ZXingPoint { + x: number; + y: number; +} +/** + * @internal + */ +export interface ZXingPosition { + topLeft: ZXingPoint; + topRight: ZXingPoint; + bottomLeft: ZXingPoint; + bottomRight: ZXingPoint; +} +/** + * X, Y coordinates to describe a point. + * + * @property x X coordinate. + * @property y Y coordinate. + * + * @see {@link Position | `Position`} + */ +export interface Point extends ZXingPoint { +} +/** + * Position of the decoded barcode. + */ +export interface Position { + /** + * Top-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topLeft: Point; + /** + * Top-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topRight: Point; + /** + * Bottom-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomLeft: Point; + /** + * Bottom-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomRight: Point; +} diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/readResult.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/readResult.d.ts new file mode 100644 index 0000000..fdee88d --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/readResult.d.ts @@ -0,0 +1,123 @@ +import { ReadOutputBarcodeFormat } from "./barcodeFormat.js"; +import { ReadOutputEccLevel } from "./eccLevel.js"; +import { ContentType } from "./contentType.js"; +import { ZXingPosition, Position } from "./position.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReadResult { + /** + * Whether the barcode is valid. + */ + isValid: boolean; + /** + * Error message (if any). + * + * @see {@link ReaderOptions.returnErrors | `ReaderOptions.returnErrors`} + */ + error: string; + format: string; + /** + * Raw / Standard content without any modifications like character set conversions. + */ + bytes: Uint8Array; + /** + * Raw / Standard content following the ECI protocol. + */ + bytesECI: Uint8Array; + /** + * The {@link ReadResult.bytes | `ReadResult.bytes`} content rendered to unicode / utf8 text + * accoring to specified {@link ReaderOptions.textMode | `ReaderOptions.textMode`}. + */ + text: string; + eccLevel: string; + contentType: ZXingEnum; + /** + * Whether or not an ECI tag was found. + */ + hasECI: boolean; + position: ZXingPosition; + /** + * Orientation of the barcode in degree. + */ + orientation: number; + /** + * Whether the symbol is mirrored (currently only supported by QRCode and DataMatrix). + */ + isMirrored: boolean; + /** + * Whether the symbol is inverted / has reveresed reflectance. + * + * @see {@link ReaderOptions.tryInvert | `ReaderOptions.tryInvert`} + */ + isInverted: boolean; + /** + * Symbology identifier `"]cm"` where `"c"` is the symbology code character, `"m"` the modifier. + */ + symbologyIdentifier: string; + /** + * Number of symbols in a structured append sequence. + * + * If this is not part of a structured append sequence, the returned value is `-1`. + * If it is a structured append symbol but the total number of symbols is unknown, the + * returned value is `0` (see PDF417 if optional "Segment Count" not given). + */ + sequenceSize: number; + /** + * The 0-based index of this symbol in a structured append sequence. + */ + sequenceIndex: number; + /** + * ID to check if a set of symbols belongs to the same structured append sequence. + * + * If the symbology does not support this feature, the returned value is empty (see MaxiCode). + * For QR Code, this is the parity integer converted to a string. + * For PDF417 and DataMatrix, this is the `"fileId"`. + */ + sequenceId: string; + /** + * Set if this is the reader initialisation / programming symbol. + */ + readerInit: boolean; + /** + * Number of lines have been detected with this code (applies only to linear symbologies). + */ + lineCount: number; + /** + * QRCode / DataMatrix / Aztec version or size. + * + * This property will be removed in the future. + * + * @deprecated + */ + version: string; +} +export interface ReadResult extends Omit { + /** + * Format of the barcode, should be one of {@link ReadOutputBarcodeFormat | `ReadOutputBarcodeFormat`}. + * + * Possible values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"None"`, + * `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + */ + format: ReadOutputBarcodeFormat; + /** + * Error correction level of the symbol (empty string if not applicable). + * + * This property may be renamed to `ecLevel` in the future. + */ + eccLevel: ReadOutputEccLevel; + /** + * A hint to the type of the content found. + */ + contentType: ContentType; + /** + * Position of the detected barcode. + */ + position: Position; +} +export declare function zxingReadResultToReadResult(zxingReadResult: ZXingReadResult): ReadResult; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/readerOptions.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/readerOptions.d.ts new file mode 100644 index 0000000..93eda5b --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/readerOptions.d.ts @@ -0,0 +1,204 @@ +import { ZXingModule } from "../core.js"; +import { ReadInputBarcodeFormat } from "./barcodeFormat.js"; +import { Binarizer } from "./binarizer.js"; +import { CharacterSet } from "./characterSet.js"; +import { EanAddOnSymbol } from "./eanAddOnSymbol.js"; +import { TextMode } from "./textMode.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReaderOptions { + formats: string; + /** + * Spend more time to try to find a barcode. Optimize for accuracy, not speed. + * + * @defaultValue `true` + */ + tryHarder: boolean; + /** + * Try detecting code in 90, 180 and 270 degree rotated images. + * + * @defaultValue `true` + */ + tryRotate: boolean; + /** + * Try detecting inverted (reversed reflectance) codes if the format allows for those. + * + * @defaultValue `true` + */ + tryInvert: boolean; + /** + * Try detecting code in downscaled images (depending on image size). + * + * @defaultValue `true` + * @see {@link downscaleFactor | `downscaleFactor`} {@link downscaleThreshold | `downscaleThreshold`} + */ + tryDownscale: boolean; + binarizer: ZXingEnum; + /** + * Set to `true` if the input contains nothing but a single perfectly aligned barcode (usually generated images). + * + * @defaultValue `false` + */ + isPure: boolean; + /** + * Image size ( min(width, height) ) threshold at which to start downscaled scanning + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `500` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleFactor | `downscaleFactor`} + */ + downscaleThreshold: number; + /** + * Scale factor to use during downscaling, meaningful values are `2`, `3` and `4`. + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `3` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleThreshold | `downscaleThreshold`} + */ + downscaleFactor: number; + /** + * The number of scan lines in a linear barcode that have to be equal to accept the result. + * + * @defaultValue `2` + */ + minLineCount: number; + /** + * The maximum number of symbols / barcodes to detect / look for in the image. + * The upper limit of this number is 255. + * + * @defaultValue `255` + */ + maxNumberOfSymbols: number; + /** + * If `true`, the Code-39 reader will try to read extended mode. + * + * @defaultValue `false` + */ + tryCode39ExtendedMode: boolean; + /** + * Assume Code-39 codes employ a check digit and validate it. + * + * @defaultValue `false` + */ + validateCode39CheckSum: boolean; + /** + * Assume ITF codes employ a GS1 check digit and validate it. + * + * @defaultValue `false` + */ + validateITFCheckSum: boolean; + /** + * If `true`, return the start and end chars in a Codabar barcode instead of stripping them. + * + * @defaultValue `false` + */ + returnCodabarStartEnd: boolean; + /** + * If `true`, return the barcodes with errors as well (e.g. checksum errors). + * + * @defaultValue `false` + */ + returnErrors: boolean; + eanAddOnSymbol: ZXingEnum; + textMode: ZXingEnum; + characterSet: ZXingEnum; +} +/** + * Reader options for reading barcodes. + */ +export interface ReaderOptions extends Partial> { + /** + * A set of {@link ReadInputBarcodeFormat | `ReadInputBarcodeFormat`}s that should be searched for. + * An empty list `[]` indicates all supported formats. + * + * Supported values in this list are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, `"Linear-Codes"`, `"Matrix-Codes"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `[]` + */ + formats?: ReadInputBarcodeFormat[]; + /** + * Algorithm to use for the grayscale to binary transformation. + * The difference is how to get to a threshold value T + * which results in a bit value R = L <= T. + * + * - `"LocalAverage"` + * + * T = average of neighboring pixels for matrix and GlobalHistogram for linear + * + * - `"GlobalHistogram"` + * + * T = valley between the 2 largest peaks in the histogram (per line in linear case) + * + * - `"FixedThreshold"` + * + * T = 127 + * + * - `"BoolCast"` + * + * T = 0, fastest possible + * + * @defaultValue `"LocalAverage"` + */ + binarizer?: Binarizer; + /** + * Specify whether to ignore, read or require EAN-2 / 5 add-on symbols while scanning EAN / UPC codes. + * + * - `"Ignore"` + * + * Ignore any Add-On symbol during read / scan + * + * - `"Read"` + * + * Read EAN-2 / EAN-5 Add-On symbol if found + * + * - `"Require"` + * + * Require EAN-2 / EAN-5 Add-On symbol to be present + * + * @defaultValue `"Read"` + */ + eanAddOnSymbol?: EanAddOnSymbol; + /** + * Specifies the `TextMode` that controls the result of {@link ReadResult.text | `ReadResult.text`}. + * + * - `"Plain"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to unicode based on ECI info or guessed character set + * + * - `"ECI"` + * + * Standard content following the ECI protocol with every character set ECI segment transcoded to unicode + * + * - `"HRI"` + * + * Human Readable Interpretation (dependent on the ContentType) + * + * - `"Hex"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to ASCII string of HEX values + * + * - `"Escaped"` + * + * Escape non-graphical characters in angle brackets (e.g. ASCII `29` will be transcoded to `""`) + * + * @defaultValue `"Plain"` + */ + textMode?: TextMode; + /** + * Character set to use (when applicable). + * If this is set to `"Unknown"`, auto-detecting will be used. + * + * @defaultValue `"Unknown"` + */ + characterSet?: CharacterSet; +} +export declare const defaultReaderOptions: Required; +export declare function readerOptionsToZXingReaderOptions(zxingModule: ZXingModule, readerOptions: Required): ZXingReaderOptions; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/textMode.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/textMode.d.ts new file mode 100644 index 0000000..5be28ff --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/textMode.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const textModes: readonly ["Plain", "ECI", "HRI", "Hex", "Escaped"]; +export type TextMode = (typeof textModes)[number]; +/** + * @internal + */ +export type ZXingTextMode = Record; +export declare function textModeToZXingEnum(zxingModule: ZXingModule, textMode: TextMode): ZXingEnum; +export declare function zxingEnumToTextMode(zxingEnum: ZXingEnum): TextMode; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/vector.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/vector.d.ts new file mode 100644 index 0000000..034bd5a --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/vector.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface ZXingVector { + size: () => number; + get: (i: number) => T | undefined; +} diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/writeResult.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/writeResult.d.ts new file mode 100644 index 0000000..ac46b1f --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/writeResult.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export interface ZXingWriteResult { + image: Uint8Array; + /** + * Encoding error. + * If there's no error, this will be an empty string `""`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + error: string; + delete: () => void; +} +export interface WriteResult extends Omit { + /** + * The encoded barcode as an image blob. + * If some error happens, this will be `null`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + image: Blob | null; +} +export declare function zxingWriteResultToWriteResult(zxingWriteResult: ZXingWriteResult): WriteResult; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/writerOptions.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/writerOptions.d.ts new file mode 100644 index 0000000..120e2ae --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/writerOptions.d.ts @@ -0,0 +1,64 @@ +import { ZXingModule } from "../core.js"; +import { WriteInputBarcodeFormat } from "./barcodeFormat.js"; +import { CharacterSet } from "./characterSet.js"; +import { WriteInputEccLevel } from "./eccLevel.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingWriterOptions { + /** + * Width of the barcode. + * + * @defaultValue `200` + */ + width: number; + /** + * Height of the barcode. + * + * @defaultValue `200` + */ + height: number; + format: string; + characterSet: ZXingEnum; + eccLevel: number; + /** + * The minimum number of quiet zone pixels. + * + * @defaultValue `10` + */ + margin: number; +} +/** + * Writer options for writing barcodes. + */ +export interface WriterOptions extends Partial> { + /** + * The format of the barcode to write. + * + * Supported values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataMatrix"`, `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"PDF417"`, `"QRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `"QRCode"` + */ + format?: WriteInputBarcodeFormat; + /** + * Character set to use for encoding the text. + * Used for Aztec, PDF417, and QRCode only. + * + * @defaultValue `"UTF8"` + */ + characterSet?: CharacterSet; + /** + * Error correction level of the symbol. + * Used for Aztec, PDF417, and QRCode only. + * `-1` means auto. + * + * @defaultValue `-1` + */ + eccLevel?: WriteInputEccLevel; +} +export declare const defaultWriterOptions: Required; +export declare function writerOptionsToZXingWriterOptions(zxingModule: ZXingModule, writerOptions: Required): ZXingWriterOptions; diff --git a/node_modules/zxing-wasm/dist/cjs/core-D9FNMpWh.cjs b/node_modules/zxing-wasm/dist/cjs/core-D9FNMpWh.cjs new file mode 100644 index 0000000..3461d7f --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/core-D9FNMpWh.cjs @@ -0,0 +1 @@ +"use strict";const g=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function E(e){return e.join("|")}function T(e){const t=y(e);let r=0,n=g.length-1;for(;r<=n;){const o=Math.floor((r+n)/2),a=g[o],i=y(a);if(i===t)return a;i{const r=e.match(/_(.+?)\.wasm$/);return r?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${r[1]}/${e}`:t+e}};let m=new WeakMap;function f(e,t){var a;const r=m.get(e);if(r!=null&&r.modulePromise&&(t===void 0||Object.is(t,r.moduleOverrides)))return r.modulePromise;const n=(a=t!=null?t:r==null?void 0:r.moduleOverrides)!=null?a:X,o=e({...n});return m.set(e,{moduleOverrides:n,modulePromise:o}),o}function x(){m=new WeakMap}function Z(e,t){m.set(e,{moduleOverrides:t})}async function z(e,t,r=d){const n={...d,...r},o=await f(e),{size:a}=t,i=new Uint8Array(await t.arrayBuffer()),u=o._malloc(a);o.HEAPU8.set(i,u);const l=o.readBarcodesFromImage(u,a,C(o,n));o._free(u);const c=[];for(let s=0;s +import { type ZXingReaderOptions, type ReaderOptions, type ZXingWriterOptions, type WriterOptions, type ZXingReadResult, type ReadResult, type ZXingWriteResult, type ZXingBinarizer, type ZXingCharacterSet, type ZXingContentType, type ZXingEanAddOnSymbol, type ZXingTextMode, type ZXingVector } from "./bindings/index.js"; +export type ZXingModuleType = "reader" | "writer" | "full"; +interface ZXingBaseModule extends EmscriptenModule { + CharacterSet: ZXingCharacterSet; +} +/** + * @internal + */ +export interface ZXingReaderModule extends ZXingBaseModule { + Binarizer: ZXingBinarizer; + ContentType: ZXingContentType; + EanAddOnSymbol: ZXingEanAddOnSymbol; + TextMode: ZXingTextMode; + readBarcodesFromImage(bufferPtr: number, bufferLength: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; + readBarcodesFromPixmap(bufferPtr: number, imgWidth: number, imgHeight: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; +} +/** + * @internal + */ +export interface ZXingWriterModule extends ZXingBaseModule { + writeBarcodeToImage(text: string, zxingWriterOptions: ZXingWriterOptions): ZXingWriteResult; +} +/** + * @internal + */ +export interface ZXingFullModule extends ZXingReaderModule, ZXingWriterModule { +} +export type ZXingModule = T extends "reader" ? ZXingReaderModule : T extends "writer" ? ZXingWriterModule : T extends "full" ? ZXingFullModule : ZXingReaderModule | ZXingWriterModule | ZXingFullModule; +export type ZXingReaderModuleFactory = EmscriptenModuleFactory; +export type ZXingWriterModuleFactory = EmscriptenModuleFactory; +export type ZXingFullModuleFactory = EmscriptenModuleFactory; +export type ZXingModuleFactory = T extends "reader" ? ZXingReaderModuleFactory : T extends "writer" ? ZXingWriterModuleFactory : T extends "full" ? ZXingFullModuleFactory : ZXingReaderModuleFactory | ZXingWriterModuleFactory | ZXingFullModuleFactory; +export type ZXingModuleOverrides = Partial; +export declare function getZXingModuleWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides?: ZXingModuleOverrides): Promise>; +export declare function purgeZXingModule(): void; +export declare function setZXingModuleOverridesWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageDataWithFactory(zxingModuleFactory: ZXingModuleFactory, imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, text: string, writerOptions?: WriterOptions): Promise; +export {}; diff --git a/node_modules/zxing-wasm/dist/cjs/full/index.d.ts b/node_modules/zxing-wasm/dist/cjs/full/index.d.ts new file mode 100644 index 0000000..619c27e --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/full/index.d.ts @@ -0,0 +1,10 @@ +import { type ZXingFullModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions, WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingFullModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/full/index.js b/node_modules/zxing-wasm/dist/cjs/full/index.js new file mode 100644 index 0000000..4565e37 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/full/index.js @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("../core-D9FNMpWh.cjs");var ce=(()=>{var k=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(L={}){var l=L,Ze,fe;l.ready=new Promise((e,r)=>{Ze=e,fe=r});var Ge=Object.assign({},l),qe="./this.program",Je=typeof window=="object",ve=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var H="";function Hr(e){return l.locateFile?l.locateFile(e,H):H+e}var Ee;(Je||ve)&&(ve?H=self.location.href:typeof document<"u"&&document.currentScript&&(H=document.currentScript.src),k&&(H=k),H.indexOf("blob:")!==0?H=H.substr(0,H.replace(/[?#].*/,"").lastIndexOf("/")+1):H="",ve&&(Ee=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),l.print||console.log.bind(console);var Q=l.printErr||console.error.bind(console);Object.assign(l,Ge),Ge=null,l.arguments&&l.arguments,l.thisProgram&&(qe=l.thisProgram),l.quit&&l.quit;var ee;l.wasmBinary&&(ee=l.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var de,Ke=!1,j,W,Z,re,O,m,Qe,er;function rr(){var e=de.buffer;l.HEAP8=j=new Int8Array(e),l.HEAP16=Z=new Int16Array(e),l.HEAPU8=W=new Uint8Array(e),l.HEAPU16=re=new Uint16Array(e),l.HEAP32=O=new Int32Array(e),l.HEAPU32=m=new Uint32Array(e),l.HEAPF32=Qe=new Float32Array(e),l.HEAPF64=er=new Float64Array(e)}var tr=[],nr=[],ir=[];function Ur(){if(l.preRun)for(typeof l.preRun=="function"&&(l.preRun=[l.preRun]);l.preRun.length;)Yr(l.preRun.shift());Se(tr)}function xr(){Se(nr)}function Vr(){if(l.postRun)for(typeof l.postRun=="function"&&(l.postRun=[l.postRun]);l.postRun.length;)Lr(l.postRun.shift());Se(ir)}function Yr(e){tr.unshift(e)}function Br(e){nr.unshift(e)}function Lr(e){ir.unshift(e)}var z=0,te=null;function zr(e){var r;z++,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,z)}function Nr(e){var r;if(z--,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,z),z==0&&te){var t=te;te=null,t()}}function pe(e){var r;(r=l.onAbort)===null||r===void 0||r.call(l,e),e="Aborted("+e+")",Q(e),Ke=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw fe(t),t}var Xr="data:application/octet-stream;base64,",ar=e=>e.startsWith(Xr),G;G="zxing_full.wasm",ar(G)||(G=Hr(G));function or(e){if(e==G&&ee)return new Uint8Array(ee);if(Ee)return Ee(e);throw"both async and sync fetching of the wasm failed"}function Zr(e){return!ee&&(Je||ve)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>or(e)):Promise.resolve().then(()=>or(e))}function sr(e,r,t){return Zr(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{Q(`failed to asynchronously prepare wasm: ${n}`),pe(n)})}function Gr(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!ar(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(n,function(o){return Q(`wasm streaming compile failed: ${o}`),Q("falling back to ArrayBuffer instantiation"),sr(r,t,n)})}):sr(r,t,n)}function qr(){var e={a:Hn};function r(n,i){return F=n.exports,de=F.ja,rr(),_r=F.na,Br(F.ka),Nr(),F}zr();function t(n){r(n.instance)}if(l.instantiateWasm)try{return l.instantiateWasm(e,r)}catch(n){Q(`Module.instantiateWasm callback failed with error: ${n}`),fe(n)}return Gr(ee,G,e,t).catch(fe),{}}var Se=e=>{for(;e.length>0;)e.shift()(l)};l.noExitRuntime;var he=[],ge=0,Jr=e=>{var r=new Re(e);return r.get_caught()||(r.set_caught(!0),ge--),r.set_rethrown(!1),he.push(r),Dr(r.excPtr),r.get_exception_ptr()},V=0,Kr=()=>{$(0,0);var e=he.pop();Rr(e.excPtr),V=0};function Re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){m[this.ptr+4>>2]=r},this.get_type=function(){return m[this.ptr+4>>2]},this.set_destructor=function(r){m[this.ptr+8>>2]=r},this.get_destructor=function(){return m[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,j[this.ptr+12>>0]=r},this.get_caught=function(){return j[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,j[this.ptr+13>>0]=r},this.get_rethrown=function(){return j[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){m[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return m[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Wr(this.get_type());if(r)return m[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Qr=e=>{throw V||(V=e),V},De=e=>{var r=V;if(!r)return le(0),0;var t=new Re(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return le(0),r;for(var i in e){var a=e[i];if(a===0||a===n)break;var o=t.ptr+16;if(Or(a,n,o))return le(a),r}return le(n),r},et=()=>De([]),rt=e=>De([e]),tt=(e,r)=>De([e,r]),nt=()=>{var e=he.pop();e||pe("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(he.push(e),e.set_rethrown(!0),e.set_caught(!1),ge++),V=r,V},it=(e,r,t)=>{var n=new Re(e);throw n.init(r,t),V=e,ge++,V},at=()=>ge,_e={},Oe=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function We(e){return this.fromWireType(O[e>>2])}var q={},N={},ye={},ur,me=e=>{throw new ur(e)},X=(e,r,t)=>{e.forEach(function(s){ye[s]=r});function n(s){var u=t(s);u.length!==e.length&&me("Mismatched type converter count");for(var f=0;f{N.hasOwnProperty(s)?i[u]=N[s]:(a.push(s),q.hasOwnProperty(s)||(q[s]=[]),q[s].push(()=>{i[u]=N[s],++o,o===a.length&&n(i)}))}),a.length===0&&n(i)},ot=e=>{var r=_e[e];delete _e[e];var t=r.rawConstructor,n=r.rawDestructor,i=r.fields,a=i.map(o=>o.getterReturnType).concat(i.map(o=>o.setterArgumentType));X([e],a,o=>{var s={};return i.forEach((u,f)=>{var v=u.fieldName,p=o[f],h=u.getter,g=u.getterContext,P=o[f+i.length],C=u.setter,y=u.setterContext;s[v]={read:R=>p.fromWireType(h(g,R)),write:(R,c)=>{var d=[];C(y,R,P.toWireType(d,c)),Oe(d)}}}),[{name:r.name,fromWireType:u=>{var f={};for(var v in s)f[v]=s[v].read(u);return n(u),f},toWireType:(u,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var p=t();for(v in s)s[v].write(p,f[v]);return u!==null&&u.push(n,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction:n}]})},st=(e,r,t,n,i)=>{},ut=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);lr=e},lr,S=e=>{for(var r="",t=e;W[t];)r+=lr[W[t++]];return r},J,_=e=>{throw new J(e)};function lt(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||_(`type "${n}" must have a positive integer typeid pointer`),N.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;_(`Cannot register type '${n}' twice`)}if(N[e]=r,delete ye[e],q.hasOwnProperty(e)){var i=q[e];delete q[e],i.forEach(a=>a())}}function U(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return lt(e,r,t)}var x=8,ct=(e,r,t,n)=>{r=S(r),U(e,{name:r,fromWireType:function(i){return!!i},toWireType:function(i,a){return a?t:n},argPackAdvance:x,readValueFromPointer:function(i){return this.fromWireType(W[i])},destructorFunction:null})},ft=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),ke=e=>{function r(t){return t.$$.ptrType.registeredClass.name}_(r(e)+" instance already deleted")},Me=!1,cr=e=>{},vt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},fr=e=>{e.count.value-=1;var r=e.count.value===0;r&&vt(e)},vr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=vr(e,r,t.baseClass);return n===null?null:t.downcast(n)},dr={},dt=()=>Object.keys(ae).length,pt=()=>{var e=[];for(var r in ae)ae.hasOwnProperty(r)&&e.push(ae[r]);return e},ne=[],je=()=>{for(;ne.length;){var e=ne.pop();e.$$.deleteScheduled=!1,e.delete()}},ie,ht=e=>{ie=e,ne.length&&ie&&ie(je)},gt=()=>{l.getInheritedInstanceCount=dt,l.getLiveInheritedInstances=pt,l.flushPendingDeletes=je,l.setDelayFunction=ht},ae={},_t=(e,r)=>{for(r===void 0&&_("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},yt=(e,r)=>(r=_t(e,r),ae[r]),$e=(e,r)=>{(!r.ptrType||!r.ptr)&&me("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&me("Both smartPtrType and smartPtr must be specified"),r.count={value:1},oe(Object.create(e,{$$:{value:r,writable:!0}}))};function mt(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=yt(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function i(){return this.isSmartPointer?$e(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):$e(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a=this.registeredClass.getActualType(r),o=dr[a];if(!o)return i.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var u=vr(r,this.registeredClass,s.registeredClass);return u===null?i.call(this):this.isSmartPointer?$e(s.registeredClass.instancePrototype,{ptrType:s,ptr:u,smartPtrType:this,smartPtr:e}):$e(s.registeredClass.instancePrototype,{ptrType:s,ptr:u})}var oe=e=>typeof FinalizationRegistry>"u"?(oe=r=>r,e):(Me=new FinalizationRegistry(r=>{fr(r.$$)}),oe=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var i={$$:t};Me.register(r,i,r)}return r},cr=r=>Me.unregister(r),oe(e)),$t=()=>{Object.assign(be.prototype,{isAliasOf(e){if(!(this instanceof be)||!(e instanceof be))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,i=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)i=n.upcast(i),n=n.baseClass;return r===n&&t===i},clone(){if(this.$$.ptr||ke(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=oe(Object.create(Object.getPrototypeOf(this),{$$:{value:ft(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),cr(this),fr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),ne.push(this),ne.length===1&&ie&&ie(je),this.$$.deleteScheduled=!0,this}})};function be(){}var se=(e,r)=>Object.defineProperty(r,"name",{value:e}),pr=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||_(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},Ie=(e,r,t)=>{l.hasOwnProperty(e)?((t===void 0||l[e].overloadTable!==void 0&&l[e].overloadTable[t]!==void 0)&&_(`Cannot register public name '${e}' twice`),pr(l,e,e),l.hasOwnProperty(t)&&_(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),l[e].overloadTable[t]=r):(l[e]=r,t!==void 0&&(l[e].numArguments=t))},bt=48,wt=57,Tt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=bt&&r<=wt?`_${e}`:e};function Pt(e,r,t,n,i,a,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=i,this.getActualType=a,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var He=(e,r,t)=>{for(;r!==t;)r.upcast||_(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function Ct(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=He(r.$$.ptr,t,this.registeredClass);return n}function At(e,r){var t;if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=He(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&_("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var i=r.clone();t=this.rawShare(t,Y.toHandle(()=>i.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:_("Unsupporting sharing policy")}return t}function Ft(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=He(r.$$.ptr,t,this.registeredClass);return n}function hr(e){return this.fromWireType(m[e>>2])}var Et=()=>{Object.assign(we.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:x,readValueFromPointer:hr,deleteObject(e){e!==null&&e.delete()},fromWireType:mt})};function we(e,r,t,n,i,a,o,s,u,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=i,this.pointeeType=a,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=f,this.rawDestructor=v,!i&&r.baseClass===void 0?n?(this.toWireType=Ct,this.destructorFunction=null):(this.toWireType=Ft,this.destructorFunction=null):this.toWireType=At}var gr=(e,r,t)=>{l.hasOwnProperty(e)||me("Replacing nonexistant public symbol"),l[e].overloadTable!==void 0&&t!==void 0?l[e].overloadTable[t]=r:(l[e]=r,l[e].argCount=t)},St=(e,r,t)=>{var n=l["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},Te=[],_r,b=e=>{var r=Te[e];return r||(e>=Te.length&&(Te.length=e+1),Te[e]=r=_r.get(e)),r},Rt=(e,r,t)=>{if(e.includes("j"))return St(e,r,t);var n=b(r).apply(null,t);return n},Dt=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Rt(e,r,t)}},I=(e,r)=>{e=S(e);function t(){return e.includes("j")?Dt(e,r):b(r)}var n=t();return typeof n!="function"&&_(`unknown function pointer with signature ${e}: ${r}`),n},Ot=(e,r)=>{var t=se(r,function(n){this.name=r,this.message=n;var i=new Error(n).stack;i!==void 0&&(this.stack=this.toString()+` +`+i.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},yr,mr=e=>{var r=Sr(e),t=S(r);return B(r),t},Pe=(e,r)=>{var t=[],n={};function i(a){if(!n[a]&&!N[a]){if(ye[a]){ye[a].forEach(i);return}t.push(a),n[a]=!0}}throw r.forEach(i),new yr(`${e}: `+t.map(mr).join([", "]))},Wt=(e,r,t,n,i,a,o,s,u,f,v,p,h)=>{v=S(v),a=I(i,a),s&&(s=I(o,s)),f&&(f=I(u,f)),h=I(p,h);var g=Tt(v);Ie(g,function(){Pe(`Cannot construct ${v} due to unbound types`,[n])}),X([e,r,t],n?[n]:[],function(P){P=P[0];var C,y;n?(C=P.registeredClass,y=C.instancePrototype):y=be.prototype;var R=se(v,function(){if(Object.getPrototypeOf(this)!==c)throw new J("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new J(v+" has no accessible constructor");var Ir=d.constructor_body[arguments.length];if(Ir===void 0)throw new J(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return Ir.apply(this,arguments)}),c=Object.create(y,{constructor:{value:R}});R.prototype=c;var d=new Pt(v,R,c,h,C,a,s,f);if(d.baseClass){var A,E;(E=(A=d.baseClass).__derivedClasses)!==null&&E!==void 0||(A.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var K=new we(v,d,!0,!1,!1),Fe=new we(v+"*",d,!1,!1,!1),jr=new we(v+" const*",d,!1,!0,!1);return dr[e]={pointerType:Fe,constPointerType:jr},gr(g,R),[K,Fe,jr]})},Ue=(e,r)=>{for(var t=[],n=0;n>2]);return t};function kt(e){for(var r=1;r{var o=Ue(r,t);i=I(n,i),X([],[e],function(s){s=s[0];var u=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new J(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{Pe(`Cannot construct ${s.name} due to unbound types`,o)},X([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=xe(u,f,null,i,a),[])),[]})},$r=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},jt=(e,r,t,n,i,a,o,s,u)=>{var f=Ue(t,n);r=S(r),r=$r(r),a=I(i,a),X([],[e],function(v){v=v[0];var p=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function h(){Pe(`Cannot call ${p} due to unbound types`,f)}var g=v.registeredClass.instancePrototype,P=g[r];return P===void 0||P.overloadTable===void 0&&P.className!==v.name&&P.argCount===t-2?(h.argCount=t-2,h.className=v.name,g[r]=h):(pr(g,r,p),g[r].overloadTable[t-2]=h),X([],f,function(C){var y=xe(p,C,v,a,o);return g[r].overloadTable===void 0?(y.argCount=t-2,g[r]=y):g[r].overloadTable[t-2]=y,[]}),[]})};function It(){Object.assign(br.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function br(){this.allocated=[void 0],this.freelist=[]}var M=new br,Ve=e=>{e>=M.reserved&&--M.get(e).refcount===0&&M.free(e)},Ht=()=>{for(var e=0,r=M.reserved;r{M.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),M.reserved=M.allocated.length,l.count_emval_handles=Ht},Y={toValue:e=>(e||_("Cannot use deleted val. handle = "+e),M.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return M.allocate({refcount:1,value:e})}}},xt=(e,r)=>{r=S(r),U(e,{name:r,fromWireType:t=>{var n=Y.toValue(t);return Ve(t),n},toWireType:(t,n)=>Y.toHandle(n),argPackAdvance:x,readValueFromPointer:We,destructorFunction:null})},Vt=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(j[n>>0])}:function(n){return this.fromWireType(W[n>>0])};case 2:return t?function(n){return this.fromWireType(Z[n>>1])}:function(n){return this.fromWireType(re[n>>1])};case 4:return t?function(n){return this.fromWireType(O[n>>2])}:function(n){return this.fromWireType(m[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Yt=(e,r,t,n)=>{r=S(r);function i(){}i.values={},U(e,{name:r,constructor:i,fromWireType:function(a){return this.constructor.values[a]},toWireType:(a,o)=>o.value,argPackAdvance:x,readValueFromPointer:Vt(r,t,n),destructorFunction:null}),Ie(r,i)},Ye=(e,r)=>{var t=N[e];return t===void 0&&_(r+" has unknown type "+mr(e)),t},Bt=(e,r,t)=>{var n=Ye(e,"enum");r=S(r);var i=n.constructor,a=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:se(`${n.name}_${r}`,function(){})}});i.values[t]=a,i[r]=a},Be=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},Lt=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(Qe[t>>2])};case 8:return function(t){return this.fromWireType(er[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},zt=(e,r,t)=>{r=S(r),U(e,{name:r,fromWireType:n=>n,toWireType:(n,i)=>i,argPackAdvance:x,readValueFromPointer:Lt(r,t),destructorFunction:null})},Nt=(e,r,t,n,i,a,o)=>{var s=Ue(r,t);e=S(e),e=$r(e),i=I(n,i),Ie(e,function(){Pe(`Cannot call ${e} due to unbound types`,s)},r-1),X([],s,function(u){var f=[u[0],null].concat(u.slice(1));return gr(e,xe(e,f,null,i,a),r-1),[]})},Xt=(e,r,t)=>{switch(r){case 1:return t?n=>j[n>>0]:n=>W[n>>0];case 2:return t?n=>Z[n>>1]:n=>re[n>>1];case 4:return t?n=>O[n>>2]:n=>m[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Zt=(e,r,t,n,i)=>{r=S(r);var a=v=>v;if(n===0){var o=32-8*t;a=v=>v<>>o}var s=r.includes("unsigned"),u=(v,p)=>{},f;s?f=function(v,p){return u(p,this.name),p>>>0}:f=function(v,p){return u(p,this.name),p},U(e,{name:r,fromWireType:a,toWireType:f,argPackAdvance:x,readValueFromPointer:Xt(r,t,n!==0),destructorFunction:null})},Gt=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],i=n[r];function a(o){var s=m[o>>2],u=m[o+4>>2];return new i(j.buffer,u,s)}t=S(t),U(e,{name:t,fromWireType:a,argPackAdvance:x,readValueFromPointer:a},{ignoreDuplicateRegistrations:!0})},wr=(e,r,t,n)=>{if(!(n>0))return 0;for(var i=t,a=t+n-1,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-i},qt=(e,r,t)=>wr(e,W,r,t),Tr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Pr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Jt=(e,r,t)=>{for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;if(i-r>16&&e.buffer&&Pr)return Pr.decode(e.subarray(r,i));for(var a="";r>10,56320|f&1023)}}return a},Le=(e,r)=>e?Jt(W,e,r):"",Kt=(e,r)=>{r=S(r);var t=r==="std::string";U(e,{name:r,fromWireType(n){var i=m[n>>2],a=n+4,o;if(t)for(var s=a,u=0;u<=i;++u){var f=a+u;if(u==i||W[f]==0){var v=f-s,p=Le(s,v);o===void 0?o=p:(o+="\0",o+=p),s=f+1}}else{for(var h=new Array(i),u=0;u>2]=a,t&&o)qt(i,u,a+1);else if(o)for(var f=0;f255&&(B(u),_("String has UTF-16 code units that do not fit in 8 bits")),W[u+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,i=n+r/2;!(n>=i)&&re[n];)++n;if(t=n<<1,t-e>32&&Cr)return Cr.decode(W.subarray(e,t));for(var a="",o=0;!(o>=r/2);++o){var s=Z[e+o*2>>1];if(s==0)break;a+=String.fromCharCode(s)}return a},en=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var i=r,a=t>1]=s,r+=2}return Z[r>>1]=0,r-i},rn=e=>e.length*2,tn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var i=O[e+t*4>>2];if(i==0)break;if(++t,i>=65536){var a=i-65536;n+=String.fromCharCode(55296|a>>10,56320|a&1023)}else n+=String.fromCharCode(i)}return n},nn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var i=r,a=i+t-4,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(O[r>>2]=s,r+=4,r+4>a)break}return O[r>>2]=0,r-i},an=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},on=(e,r,t)=>{t=S(t);var n,i,a,o,s;r===2?(n=Qt,i=en,o=rn,a=()=>re,s=1):r===4&&(n=tn,i=nn,o=an,a=()=>m,s=2),U(e,{name:t,fromWireType:u=>{for(var f=m[u>>2],v=a(),p,h=u+4,g=0;g<=f;++g){var P=u+4+g*r;if(g==f||v[P>>s]==0){var C=P-h,y=n(h,C);p===void 0?p=y:(p+="\0",p+=y),h=P+r}}return B(u),p},toWireType:(u,f)=>{typeof f!="string"&&_(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),p=Xe(4+v+r);return m[p>>2]=v>>s,i(f,p+4,v+r),u!==null&&u.push(B,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction(u){B(u)}})},sn=(e,r,t,n,i,a)=>{_e[e]={name:S(r),rawConstructor:I(t,n),rawDestructor:I(i,a),fields:[]}},un=(e,r,t,n,i,a,o,s,u,f)=>{_e[e].fields.push({fieldName:S(r),getterReturnType:t,getter:I(n,i),getterContext:a,setterArgumentType:o,setter:I(s,u),setterContext:f})},ln=(e,r)=>{r=S(r),U(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},ze=[],cn=(e,r,t,n)=>(e=ze[e],r=Y.toValue(r),e(null,r,t,n)),fn={},vn=e=>{var r=fn[e];return r===void 0?S(e):r},Ar=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},dn=e=>e===0?Y.toHandle(Ar()):(e=vn(e),Y.toHandle(Ar()[e])),pn=e=>{var r=ze.length;return ze.push(e),r},hn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},gn=Reflect.construct,_n=(e,r,t)=>{var n=[],i=e.toWireType(n,t);return n.length&&(m[r>>2]=Y.toHandle(n)),i},yn=(e,r,t)=>{var n=hn(e,r),i=n.shift();e--;var a=new Array(e),o=(u,f,v,p)=>{for(var h=0,g=0;gu.name).join(", ")}) => ${i.name}>`;return pn(se(s,o))},mn=e=>{e>4&&(M.get(e).refcount+=1)},$n=e=>{var r=Y.toValue(e);Oe(r),Ve(e)},bn=(e,r)=>{e=Ye(e,"_emval_take_value");var t=e.readValueFromPointer(r);return Y.toHandle(t)},wn=()=>{pe("")},Tn=(e,r,t)=>W.copyWithin(e,r,r+t),Pn=()=>2147483648,Cn=e=>{var r=de.buffer,t=(e-r.byteLength+65535)/65536;try{return de.grow(t),rr(),1}catch{}},An=e=>{var r=W.length;e>>>=0;var t=Pn();if(e>t)return!1;for(var n=(u,f)=>u+(f-u%f)%f,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var o=Math.min(t,n(Math.max(e,a),65536)),s=Cn(o);if(s)return!0}return!1},Ne={},Fn=()=>qe||"./this.program",ue=()=>{if(!ue.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:Fn()};for(var t in Ne)Ne[t]===void 0?delete r[t]:r[t]=Ne[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);ue.strings=n}return ue.strings},En=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);j[r>>0]=0},Sn=(e,r)=>{var t=0;return ue().forEach((n,i)=>{var a=r+t;m[e+i*4>>2]=a,En(n,a),t+=n.length+1}),0},Rn=(e,r)=>{var t=ue();m[e>>2]=t.length;var n=0;return t.forEach(i=>n+=i.length+1),m[r>>2]=n,0},Dn=e=>e,Ce=e=>e%4===0&&(e%100!==0||e%400===0),On=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Fr=[31,29,31,30,31,30,31,31,30,31,30,31],Er=[31,28,31,30,31,30,31,31,30,31,30,31],Wn=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=Ce(t.getFullYear()),i=t.getMonth(),a=(n?Fr:Er)[i];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),i<11?t.setMonth(i+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function kn(e,r,t){var n=t>0?t:Tr(e)+1,i=new Array(n),a=wr(e,i,0,i.length);return r&&(i.length=a),i}var Mn=(e,r)=>{j.set(e,r)},jn=(e,r,t,n)=>{var i=m[n+40>>2],a={tm_sec:O[n>>2],tm_min:O[n+4>>2],tm_hour:O[n+8>>2],tm_mday:O[n+12>>2],tm_mon:O[n+16>>2],tm_year:O[n+20>>2],tm_wday:O[n+24>>2],tm_yday:O[n+28>>2],tm_isdst:O[n+32>>2],tm_gmtoff:O[n+36>>2],tm_zone:i?Le(i):""},o=Le(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function p(c,d,A){for(var E=typeof c=="number"?c.toString():c||"";E.length0?1:0}var E;return(E=A(c.getFullYear()-d.getFullYear()))===0&&(E=A(c.getMonth()-d.getMonth()))===0&&(E=A(c.getDate()-d.getDate())),E}function P(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function C(c){var d=Wn(new Date(c.tm_year+1900,0,1),c.tm_yday),A=new Date(d.getFullYear(),0,4),E=new Date(d.getFullYear()+1,0,4),K=P(A),Fe=P(E);return g(K,d)<=0?g(Fe,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var y={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return h(d/100|0,2)},"%d":c=>h(c.tm_mday,2),"%e":c=>p(c.tm_mday,2," "),"%g":c=>C(c).toString().substring(2),"%G":c=>C(c),"%H":c=>h(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),h(d,2)},"%j":c=>h(c.tm_mday+On(Ce(c.tm_year+1900)?Fr:Er,c.tm_mon-1),3),"%m":c=>h(c.tm_mon+1,2),"%M":c=>h(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>h(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return h(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var E=(c.tm_wday+371-c.tm_yday)%7;E!=4&&(E!=3||!Ce(c.tm_year))&&(d=1)}}else{d=52;var A=(c.tm_wday+7-c.tm_yday-1)%7;(A==4||A==5&&Ce(c.tm_year%400-1))&&d++}return h(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return h(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,A=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(A?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var u in y)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),y[u](a)));o=o.replace(/\0\0/g,"%");var R=kn(o,!1);return R.length>r?0:(Mn(R,e),R.length-1)},In=(e,r,t,n,i)=>jn(e,r,t,n);ur=l.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},ut(),J=l.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},$t(),gt(),Et(),yr=l.UnboundTypeError=Ot(Error,"UnboundTypeError"),It(),Ut();var Hn={s:Jr,t:Kr,b:et,g:rt,m:tt,K:nt,e:it,W:at,d:Qr,ea:ot,R:st,$:ct,da:Wt,ca:Mt,x:jt,Z:xt,y:Yt,j:Bt,M:zt,E:Nt,u:Zt,q:Gt,L:Kt,D:on,w:sn,fa:un,aa:ln,S:cn,ia:Ve,ha:dn,_:yn,N:mn,P:$n,ba:bn,C:wn,Y:Tn,X:An,U:Sn,V:Rn,G:ri,B:Bn,H:ei,p:ti,a:Un,f:zn,n:Yn,k:Xn,J:Kn,v:Jn,I:Qn,A:ii,Q:oi,l:Nn,i:Ln,c:Vn,o:xn,F:Gn,ga:Zn,r:ni,h:qn,z:ai,O:Dn,T:In},F=qr(),B=l._free=e=>(B=l._free=F.la)(e),Xe=l._malloc=e=>(Xe=l._malloc=F.ma)(e),Sr=e=>(Sr=F.oa)(e),$=(e,r)=>($=F.pa)(e,r),le=e=>(le=F.qa)(e),w=()=>(w=F.ra)(),T=e=>(T=F.sa)(e),Rr=e=>(Rr=F.ta)(e),Dr=e=>(Dr=F.ua)(e),Or=(e,r,t)=>(Or=F.va)(e,r,t),Wr=e=>(Wr=F.wa)(e);l.dynCall_viijii=(e,r,t,n,i,a,o)=>(l.dynCall_viijii=F.xa)(e,r,t,n,i,a,o);var kr=l.dynCall_jiiii=(e,r,t,n,i)=>(kr=l.dynCall_jiiii=F.ya)(e,r,t,n,i);l.dynCall_iiiiij=(e,r,t,n,i,a,o)=>(l.dynCall_iiiiij=F.za)(e,r,t,n,i,a,o),l.dynCall_iiiiijj=(e,r,t,n,i,a,o,s,u)=>(l.dynCall_iiiiijj=F.Aa)(e,r,t,n,i,a,o,s,u),l.dynCall_iiiiiijj=(e,r,t,n,i,a,o,s,u,f)=>(l.dynCall_iiiiiijj=F.Ba)(e,r,t,n,i,a,o,s,u,f);function Un(e,r){var t=w();try{return b(e)(r)}catch(n){if(T(t),n!==n+0)throw n;$(1,0)}}function xn(e,r,t,n){var i=w();try{b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function Vn(e,r,t){var n=w();try{b(e)(r,t)}catch(i){if(T(n),i!==i+0)throw i;$(1,0)}}function Yn(e,r,t,n){var i=w();try{return b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function Bn(e,r,t,n,i){var a=w();try{return b(e)(r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}function Ln(e,r){var t=w();try{b(e)(r)}catch(n){if(T(t),n!==n+0)throw n;$(1,0)}}function zn(e,r,t){var n=w();try{return b(e)(r,t)}catch(i){if(T(n),i!==i+0)throw i;$(1,0)}}function Nn(e){var r=w();try{b(e)()}catch(t){if(T(r),t!==t+0)throw t;$(1,0)}}function Xn(e,r,t,n,i){var a=w();try{return b(e)(r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}function Zn(e,r,t,n,i,a){var o=w();try{b(e)(r,t,n,i,a)}catch(s){if(T(o),s!==s+0)throw s;$(1,0)}}function Gn(e,r,t,n,i){var a=w();try{b(e)(r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}function qn(e,r,t,n,i,a,o,s,u,f,v){var p=w();try{b(e)(r,t,n,i,a,o,s,u,f,v)}catch(h){if(T(p),h!==h+0)throw h;$(1,0)}}function Jn(e,r,t,n,i,a,o){var s=w();try{return b(e)(r,t,n,i,a,o)}catch(u){if(T(s),u!==u+0)throw u;$(1,0)}}function Kn(e,r,t,n,i,a){var o=w();try{return b(e)(r,t,n,i,a)}catch(s){if(T(o),s!==s+0)throw s;$(1,0)}}function Qn(e,r,t,n,i,a,o,s){var u=w();try{return b(e)(r,t,n,i,a,o,s)}catch(f){if(T(u),f!==f+0)throw f;$(1,0)}}function ei(e,r,t,n){var i=w();try{return b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function ri(e,r,t,n){var i=w();try{return b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function ti(e){var r=w();try{return b(e)()}catch(t){if(T(r),t!==t+0)throw t;$(1,0)}}function ni(e,r,t,n,i,a,o,s){var u=w();try{b(e)(r,t,n,i,a,o,s)}catch(f){if(T(u),f!==f+0)throw f;$(1,0)}}function ii(e,r,t,n,i,a,o,s,u,f,v,p){var h=w();try{return b(e)(r,t,n,i,a,o,s,u,f,v,p)}catch(g){if(T(h),g!==g+0)throw g;$(1,0)}}function ai(e,r,t,n,i,a,o,s,u,f,v,p,h,g,P,C){var y=w();try{b(e)(r,t,n,i,a,o,s,u,f,v,p,h,g,P,C)}catch(R){if(T(y),R!==R+0)throw R;$(1,0)}}function oi(e,r,t,n,i){var a=w();try{return kr(e,r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}var Ae;te=function e(){Ae||Mr(),Ae||(te=e)};function Mr(){if(z>0||(Ur(),z>0))return;function e(){Ae||(Ae=!0,l.calledRun=!0,!Ke&&(xr(),Ze(l),l.onRuntimeInitialized&&l.onRuntimeInitialized(),Vr()))}l.setStatus?(l.setStatus("Running..."),setTimeout(function(){setTimeout(function(){l.setStatus("")},1),e()},1)):e()}if(l.preInit)for(typeof l.preInit=="function"&&(l.preInit=[l.preInit]);l.preInit.length>0;)l.preInit.pop()();return Mr(),L.ready}})();function si(k){return D.getZXingModuleWithFactory(ce,k)}function ui(k){return D.setZXingModuleOverridesWithFactory(ce,k)}async function li(k,L){return D.readBarcodesFromImageFileWithFactory(ce,k,L)}async function ci(k,L){return D.readBarcodesFromImageDataWithFactory(ce,k,L)}async function fi(k,L){return D.writeBarcodeToImageFileWithFactory(ce,k,L)}exports.barcodeFormats=D.barcodeFormats;exports.binarizers=D.binarizers;exports.characterSets=D.characterSets;exports.contentTypes=D.contentTypes;exports.defaultDecodeHints=D.defaultReaderOptions;exports.defaultEncodeHints=D.defaultWriterOptions;exports.defaultReaderOptions=D.defaultReaderOptions;exports.defaultWriterOptions=D.defaultWriterOptions;exports.eanAddOnSymbols=D.eanAddOnSymbols;exports.purgeZXingModule=D.purgeZXingModule;exports.readOutputEccLevels=D.readOutputEccLevels;exports.textModes=D.textModes;exports.writeInputEccLevels=D.writeInputEccLevels;exports.getZXingModule=si;exports.readBarcodesFromImageData=ci;exports.readBarcodesFromImageFile=li;exports.setZXingModuleOverrides=ui;exports.writeBarcodeToImageFile=fi; diff --git a/node_modules/zxing-wasm/dist/cjs/package.json b/node_modules/zxing-wasm/dist/cjs/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/node_modules/zxing-wasm/dist/cjs/reader/index.d.ts b/node_modules/zxing-wasm/dist/cjs/reader/index.d.ts new file mode 100644 index 0000000..c920d48 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/reader/index.d.ts @@ -0,0 +1,8 @@ +import { type ZXingReaderModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export { purgeZXingModule, type ZXingReaderModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/reader/index.js b/node_modules/zxing-wasm/dist/cjs/reader/index.js new file mode 100644 index 0000000..10cb9b5 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/reader/index.js @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const W=require("../core-D9FNMpWh.cjs");var Fe=(()=>{var H=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(X={}){var l=X,Ze,ce;l.ready=new Promise((e,r)=>{Ze=e,ce=r});var Ge=Object.assign({},l),qe="./this.program",Je=typeof window=="object",fe=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var I="";function Ir(e){return l.locateFile?l.locateFile(e,I):I+e}var Se;(Je||fe)&&(fe?I=self.location.href:typeof document<"u"&&document.currentScript&&(I=document.currentScript.src),H&&(I=H),I.indexOf("blob:")!==0?I=I.substr(0,I.replace(/[?#].*/,"").lastIndexOf("/")+1):I="",fe&&(Se=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),l.print||console.log.bind(console);var Q=l.printErr||console.error.bind(console);Object.assign(l,Ge),Ge=null,l.arguments&&l.arguments,l.thisProgram&&(qe=l.thisProgram),l.quit&&l.quit;var ee;l.wasmBinary&&(ee=l.wasmBinary),typeof WebAssembly!="object"&&de("no native wasm support detected");var ve,Ke=!1,M,O,Z,re,D,m,Qe,er;function rr(){var e=ve.buffer;l.HEAP8=M=new Int8Array(e),l.HEAP16=Z=new Int16Array(e),l.HEAPU8=O=new Uint8Array(e),l.HEAPU16=re=new Uint16Array(e),l.HEAP32=D=new Int32Array(e),l.HEAPU32=m=new Uint32Array(e),l.HEAPF32=Qe=new Float32Array(e),l.HEAPF64=er=new Float64Array(e)}var tr=[],nr=[],ir=[];function Ur(){if(l.preRun)for(typeof l.preRun=="function"&&(l.preRun=[l.preRun]);l.preRun.length;)Yr(l.preRun.shift());Ee(tr)}function xr(){Ee(nr)}function Vr(){if(l.postRun)for(typeof l.postRun=="function"&&(l.postRun=[l.postRun]);l.postRun.length;)Lr(l.postRun.shift());Ee(ir)}function Yr(e){tr.unshift(e)}function Br(e){nr.unshift(e)}function Lr(e){ir.unshift(e)}var L=0,te=null;function zr(e){var r;L++,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,L)}function Nr(e){var r;if(L--,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,L),L==0&&te){var t=te;te=null,t()}}function de(e){var r;(r=l.onAbort)===null||r===void 0||r.call(l,e),e="Aborted("+e+")",Q(e),Ke=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw ce(t),t}var Xr="data:application/octet-stream;base64,",ar=e=>e.startsWith(Xr),G;G="zxing_reader.wasm",ar(G)||(G=Ir(G));function or(e){if(e==G&&ee)return new Uint8Array(ee);if(Se)return Se(e);throw"both async and sync fetching of the wasm failed"}function Zr(e){return!ee&&(Je||fe)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>or(e)):Promise.resolve().then(()=>or(e))}function sr(e,r,t){return Zr(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{Q(`failed to asynchronously prepare wasm: ${n}`),de(n)})}function Gr(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!ar(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(n,function(o){return Q(`wasm streaming compile failed: ${o}`),Q("falling back to ArrayBuffer instantiation"),sr(r,t,n)})}):sr(r,t,n)}function qr(){var e={a:In};function r(n,i){return F=n.exports,ve=F.ia,rr(),_r=F.ma,Br(F.ja),Nr(),F}zr();function t(n){r(n.instance)}if(l.instantiateWasm)try{return l.instantiateWasm(e,r)}catch(n){Q(`Module.instantiateWasm callback failed with error: ${n}`),ce(n)}return Gr(ee,G,e,t).catch(ce),{}}var Ee=e=>{for(;e.length>0;)e.shift()(l)};l.noExitRuntime;var pe=[],he=0,Jr=e=>{var r=new Re(e);return r.get_caught()||(r.set_caught(!0),he--),r.set_rethrown(!1),pe.push(r),Dr(r.excPtr),r.get_exception_ptr()},V=0,Kr=()=>{$(0,0);var e=pe.pop();Rr(e.excPtr),V=0};function Re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){m[this.ptr+4>>2]=r},this.get_type=function(){return m[this.ptr+4>>2]},this.set_destructor=function(r){m[this.ptr+8>>2]=r},this.get_destructor=function(){return m[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,M[this.ptr+12>>0]=r},this.get_caught=function(){return M[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,M[this.ptr+13>>0]=r},this.get_rethrown=function(){return M[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){m[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return m[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Wr(this.get_type());if(r)return m[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Qr=e=>{throw V||(V=e),V},De=e=>{var r=V;if(!r)return le(0),0;var t=new Re(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return le(0),r;for(var i in e){var a=e[i];if(a===0||a===n)break;var o=t.ptr+16;if(Or(a,n,o))return le(a),r}return le(n),r},et=()=>De([]),rt=e=>De([e]),tt=(e,r)=>De([e,r]),nt=()=>{var e=pe.pop();e||de("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(pe.push(e),e.set_rethrown(!0),e.set_caught(!1),he++),V=r,V},it=(e,r,t)=>{var n=new Re(e);throw n.init(r,t),V=e,he++,V},at=()=>he,ge={},Oe=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function We(e){return this.fromWireType(D[e>>2])}var q={},z={},_e={},ur,ye=e=>{throw new ur(e)},N=(e,r,t)=>{e.forEach(function(s){_e[s]=r});function n(s){var u=t(s);u.length!==e.length&&ye("Mismatched type converter count");for(var f=0;f{z.hasOwnProperty(s)?i[u]=z[s]:(a.push(s),q.hasOwnProperty(s)||(q[s]=[]),q[s].push(()=>{i[u]=z[s],++o,o===a.length&&n(i)}))}),a.length===0&&n(i)},ot=e=>{var r=ge[e];delete ge[e];var t=r.rawConstructor,n=r.rawDestructor,i=r.fields,a=i.map(o=>o.getterReturnType).concat(i.map(o=>o.setterArgumentType));N([e],a,o=>{var s={};return i.forEach((u,f)=>{var v=u.fieldName,p=o[f],h=u.getter,g=u.getterContext,b=o[f+i.length],C=u.setter,y=u.setterContext;s[v]={read:R=>p.fromWireType(h(g,R)),write:(R,c)=>{var d=[];C(y,R,b.toWireType(d,c)),Oe(d)}}}),[{name:r.name,fromWireType:u=>{var f={};for(var v in s)f[v]=s[v].read(u);return n(u),f},toWireType:(u,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var p=t();for(v in s)s[v].write(p,f[v]);return u!==null&&u.push(n,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction:n}]})},st=(e,r,t,n,i)=>{},ut=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);lr=e},lr,E=e=>{for(var r="",t=e;O[t];)r+=lr[O[t++]];return r},J,_=e=>{throw new J(e)};function lt(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||_(`type "${n}" must have a positive integer typeid pointer`),z.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;_(`Cannot register type '${n}' twice`)}if(z[e]=r,delete _e[e],q.hasOwnProperty(e)){var i=q[e];delete q[e],i.forEach(a=>a())}}function U(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return lt(e,r,t)}var x=8,ct=(e,r,t,n)=>{r=E(r),U(e,{name:r,fromWireType:function(i){return!!i},toWireType:function(i,a){return a?t:n},argPackAdvance:x,readValueFromPointer:function(i){return this.fromWireType(O[i])},destructorFunction:null})},ft=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),ke=e=>{function r(t){return t.$$.ptrType.registeredClass.name}_(r(e)+" instance already deleted")},Me=!1,cr=e=>{},vt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},fr=e=>{e.count.value-=1;var r=e.count.value===0;r&&vt(e)},vr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=vr(e,r,t.baseClass);return n===null?null:t.downcast(n)},dr={},dt=()=>Object.keys(ae).length,pt=()=>{var e=[];for(var r in ae)ae.hasOwnProperty(r)&&e.push(ae[r]);return e},ne=[],je=()=>{for(;ne.length;){var e=ne.pop();e.$$.deleteScheduled=!1,e.delete()}},ie,ht=e=>{ie=e,ne.length&&ie&&ie(je)},gt=()=>{l.getInheritedInstanceCount=dt,l.getLiveInheritedInstances=pt,l.flushPendingDeletes=je,l.setDelayFunction=ht},ae={},_t=(e,r)=>{for(r===void 0&&_("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},yt=(e,r)=>(r=_t(e,r),ae[r]),me=(e,r)=>{(!r.ptrType||!r.ptr)&&ye("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&ye("Both smartPtrType and smartPtr must be specified"),r.count={value:1},oe(Object.create(e,{$$:{value:r,writable:!0}}))};function mt(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=yt(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function i(){return this.isSmartPointer?me(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):me(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a=this.registeredClass.getActualType(r),o=dr[a];if(!o)return i.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var u=vr(r,this.registeredClass,s.registeredClass);return u===null?i.call(this):this.isSmartPointer?me(s.registeredClass.instancePrototype,{ptrType:s,ptr:u,smartPtrType:this,smartPtr:e}):me(s.registeredClass.instancePrototype,{ptrType:s,ptr:u})}var oe=e=>typeof FinalizationRegistry>"u"?(oe=r=>r,e):(Me=new FinalizationRegistry(r=>{fr(r.$$)}),oe=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var i={$$:t};Me.register(r,i,r)}return r},cr=r=>Me.unregister(r),oe(e)),$t=()=>{Object.assign($e.prototype,{isAliasOf(e){if(!(this instanceof $e)||!(e instanceof $e))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,i=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)i=n.upcast(i),n=n.baseClass;return r===n&&t===i},clone(){if(this.$$.ptr||ke(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=oe(Object.create(Object.getPrototypeOf(this),{$$:{value:ft(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),cr(this),fr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),ne.push(this),ne.length===1&&ie&&ie(je),this.$$.deleteScheduled=!0,this}})};function $e(){}var se=(e,r)=>Object.defineProperty(r,"name",{value:e}),pr=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||_(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},He=(e,r,t)=>{l.hasOwnProperty(e)?((t===void 0||l[e].overloadTable!==void 0&&l[e].overloadTable[t]!==void 0)&&_(`Cannot register public name '${e}' twice`),pr(l,e,e),l.hasOwnProperty(t)&&_(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),l[e].overloadTable[t]=r):(l[e]=r,t!==void 0&&(l[e].numArguments=t))},bt=48,wt=57,Tt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=bt&&r<=wt?`_${e}`:e};function Pt(e,r,t,n,i,a,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=i,this.getActualType=a,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var Ie=(e,r,t)=>{for(;r!==t;)r.upcast||_(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function Ct(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ie(r.$$.ptr,t,this.registeredClass);return n}function At(e,r){var t;if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=Ie(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&_("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var i=r.clone();t=this.rawShare(t,Y.toHandle(()=>i.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:_("Unsupporting sharing policy")}return t}function Ft(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ie(r.$$.ptr,t,this.registeredClass);return n}function hr(e){return this.fromWireType(m[e>>2])}var St=()=>{Object.assign(be.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:x,readValueFromPointer:hr,deleteObject(e){e!==null&&e.delete()},fromWireType:mt})};function be(e,r,t,n,i,a,o,s,u,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=i,this.pointeeType=a,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=f,this.rawDestructor=v,!i&&r.baseClass===void 0?n?(this.toWireType=Ct,this.destructorFunction=null):(this.toWireType=Ft,this.destructorFunction=null):this.toWireType=At}var gr=(e,r,t)=>{l.hasOwnProperty(e)||ye("Replacing nonexistant public symbol"),l[e].overloadTable!==void 0&&t!==void 0?l[e].overloadTable[t]=r:(l[e]=r,l[e].argCount=t)},Et=(e,r,t)=>{var n=l["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},we=[],_r,w=e=>{var r=we[e];return r||(e>=we.length&&(we.length=e+1),we[e]=r=_r.get(e)),r},Rt=(e,r,t)=>{if(e.includes("j"))return Et(e,r,t);var n=w(r).apply(null,t);return n},Dt=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Rt(e,r,t)}},j=(e,r)=>{e=E(e);function t(){return e.includes("j")?Dt(e,r):w(r)}var n=t();return typeof n!="function"&&_(`unknown function pointer with signature ${e}: ${r}`),n},Ot=(e,r)=>{var t=se(r,function(n){this.name=r,this.message=n;var i=new Error(n).stack;i!==void 0&&(this.stack=this.toString()+` +`+i.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},yr,mr=e=>{var r=Er(e),t=E(r);return B(r),t},Te=(e,r)=>{var t=[],n={};function i(a){if(!n[a]&&!z[a]){if(_e[a]){_e[a].forEach(i);return}t.push(a),n[a]=!0}}throw r.forEach(i),new yr(`${e}: `+t.map(mr).join([", "]))},Wt=(e,r,t,n,i,a,o,s,u,f,v,p,h)=>{v=E(v),a=j(i,a),s&&(s=j(o,s)),f&&(f=j(u,f)),h=j(p,h);var g=Tt(v);He(g,function(){Te(`Cannot construct ${v} due to unbound types`,[n])}),N([e,r,t],n?[n]:[],function(b){b=b[0];var C,y;n?(C=b.registeredClass,y=C.instancePrototype):y=$e.prototype;var R=se(v,function(){if(Object.getPrototypeOf(this)!==c)throw new J("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new J(v+" has no accessible constructor");var Hr=d.constructor_body[arguments.length];if(Hr===void 0)throw new J(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return Hr.apply(this,arguments)}),c=Object.create(y,{constructor:{value:R}});R.prototype=c;var d=new Pt(v,R,c,h,C,a,s,f);if(d.baseClass){var A,S;(S=(A=d.baseClass).__derivedClasses)!==null&&S!==void 0||(A.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var K=new be(v,d,!0,!1,!1),Ae=new be(v+"*",d,!1,!1,!1),jr=new be(v+" const*",d,!1,!0,!1);return dr[e]={pointerType:Ae,constPointerType:jr},gr(g,R),[K,Ae,jr]})},Ue=(e,r)=>{for(var t=[],n=0;n>2]);return t};function kt(e){for(var r=1;r{var o=Ue(r,t);i=j(n,i),N([],[e],function(s){s=s[0];var u=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new J(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{Te(`Cannot construct ${s.name} due to unbound types`,o)},N([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=xe(u,f,null,i,a),[])),[]})},$r=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},jt=(e,r,t,n,i,a,o,s,u)=>{var f=Ue(t,n);r=E(r),r=$r(r),a=j(i,a),N([],[e],function(v){v=v[0];var p=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function h(){Te(`Cannot call ${p} due to unbound types`,f)}var g=v.registeredClass.instancePrototype,b=g[r];return b===void 0||b.overloadTable===void 0&&b.className!==v.name&&b.argCount===t-2?(h.argCount=t-2,h.className=v.name,g[r]=h):(pr(g,r,p),g[r].overloadTable[t-2]=h),N([],f,function(C){var y=xe(p,C,v,a,o);return g[r].overloadTable===void 0?(y.argCount=t-2,g[r]=y):g[r].overloadTable[t-2]=y,[]}),[]})};function Ht(){Object.assign(br.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function br(){this.allocated=[void 0],this.freelist=[]}var k=new br,Ve=e=>{e>=k.reserved&&--k.get(e).refcount===0&&k.free(e)},It=()=>{for(var e=0,r=k.reserved;r{k.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),k.reserved=k.allocated.length,l.count_emval_handles=It},Y={toValue:e=>(e||_("Cannot use deleted val. handle = "+e),k.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return k.allocate({refcount:1,value:e})}}},xt=(e,r)=>{r=E(r),U(e,{name:r,fromWireType:t=>{var n=Y.toValue(t);return Ve(t),n},toWireType:(t,n)=>Y.toHandle(n),argPackAdvance:x,readValueFromPointer:We,destructorFunction:null})},Vt=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(M[n>>0])}:function(n){return this.fromWireType(O[n>>0])};case 2:return t?function(n){return this.fromWireType(Z[n>>1])}:function(n){return this.fromWireType(re[n>>1])};case 4:return t?function(n){return this.fromWireType(D[n>>2])}:function(n){return this.fromWireType(m[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Yt=(e,r,t,n)=>{r=E(r);function i(){}i.values={},U(e,{name:r,constructor:i,fromWireType:function(a){return this.constructor.values[a]},toWireType:(a,o)=>o.value,argPackAdvance:x,readValueFromPointer:Vt(r,t,n),destructorFunction:null}),He(r,i)},Ye=(e,r)=>{var t=z[e];return t===void 0&&_(r+" has unknown type "+mr(e)),t},Bt=(e,r,t)=>{var n=Ye(e,"enum");r=E(r);var i=n.constructor,a=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:se(`${n.name}_${r}`,function(){})}});i.values[t]=a,i[r]=a},Be=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},Lt=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(Qe[t>>2])};case 8:return function(t){return this.fromWireType(er[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},zt=(e,r,t)=>{r=E(r),U(e,{name:r,fromWireType:n=>n,toWireType:(n,i)=>i,argPackAdvance:x,readValueFromPointer:Lt(r,t),destructorFunction:null})},Nt=(e,r,t,n,i,a,o)=>{var s=Ue(r,t);e=E(e),e=$r(e),i=j(n,i),He(e,function(){Te(`Cannot call ${e} due to unbound types`,s)},r-1),N([],s,function(u){var f=[u[0],null].concat(u.slice(1));return gr(e,xe(e,f,null,i,a),r-1),[]})},Xt=(e,r,t)=>{switch(r){case 1:return t?n=>M[n>>0]:n=>O[n>>0];case 2:return t?n=>Z[n>>1]:n=>re[n>>1];case 4:return t?n=>D[n>>2]:n=>m[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Zt=(e,r,t,n,i)=>{r=E(r);var a=v=>v;if(n===0){var o=32-8*t;a=v=>v<>>o}var s=r.includes("unsigned"),u=(v,p)=>{},f;s?f=function(v,p){return u(p,this.name),p>>>0}:f=function(v,p){return u(p,this.name),p},U(e,{name:r,fromWireType:a,toWireType:f,argPackAdvance:x,readValueFromPointer:Xt(r,t,n!==0),destructorFunction:null})},Gt=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],i=n[r];function a(o){var s=m[o>>2],u=m[o+4>>2];return new i(M.buffer,u,s)}t=E(t),U(e,{name:t,fromWireType:a,argPackAdvance:x,readValueFromPointer:a},{ignoreDuplicateRegistrations:!0})},wr=(e,r,t,n)=>{if(!(n>0))return 0;for(var i=t,a=t+n-1,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-i},qt=(e,r,t)=>wr(e,O,r,t),Tr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Pr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Jt=(e,r,t)=>{for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;if(i-r>16&&e.buffer&&Pr)return Pr.decode(e.subarray(r,i));for(var a="";r>10,56320|f&1023)}}return a},Le=(e,r)=>e?Jt(O,e,r):"",Kt=(e,r)=>{r=E(r);var t=r==="std::string";U(e,{name:r,fromWireType(n){var i=m[n>>2],a=n+4,o;if(t)for(var s=a,u=0;u<=i;++u){var f=a+u;if(u==i||O[f]==0){var v=f-s,p=Le(s,v);o===void 0?o=p:(o+="\0",o+=p),s=f+1}}else{for(var h=new Array(i),u=0;u>2]=a,t&&o)qt(i,u,a+1);else if(o)for(var f=0;f255&&(B(u),_("String has UTF-16 code units that do not fit in 8 bits")),O[u+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,i=n+r/2;!(n>=i)&&re[n];)++n;if(t=n<<1,t-e>32&&Cr)return Cr.decode(O.subarray(e,t));for(var a="",o=0;!(o>=r/2);++o){var s=Z[e+o*2>>1];if(s==0)break;a+=String.fromCharCode(s)}return a},en=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var i=r,a=t>1]=s,r+=2}return Z[r>>1]=0,r-i},rn=e=>e.length*2,tn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var i=D[e+t*4>>2];if(i==0)break;if(++t,i>=65536){var a=i-65536;n+=String.fromCharCode(55296|a>>10,56320|a&1023)}else n+=String.fromCharCode(i)}return n},nn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var i=r,a=i+t-4,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(D[r>>2]=s,r+=4,r+4>a)break}return D[r>>2]=0,r-i},an=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},on=(e,r,t)=>{t=E(t);var n,i,a,o,s;r===2?(n=Qt,i=en,o=rn,a=()=>re,s=1):r===4&&(n=tn,i=nn,o=an,a=()=>m,s=2),U(e,{name:t,fromWireType:u=>{for(var f=m[u>>2],v=a(),p,h=u+4,g=0;g<=f;++g){var b=u+4+g*r;if(g==f||v[b>>s]==0){var C=b-h,y=n(h,C);p===void 0?p=y:(p+="\0",p+=y),h=b+r}}return B(u),p},toWireType:(u,f)=>{typeof f!="string"&&_(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),p=Xe(4+v+r);return m[p>>2]=v>>s,i(f,p+4,v+r),u!==null&&u.push(B,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction(u){B(u)}})},sn=(e,r,t,n,i,a)=>{ge[e]={name:E(r),rawConstructor:j(t,n),rawDestructor:j(i,a),fields:[]}},un=(e,r,t,n,i,a,o,s,u,f)=>{ge[e].fields.push({fieldName:E(r),getterReturnType:t,getter:j(n,i),getterContext:a,setterArgumentType:o,setter:j(s,u),setterContext:f})},ln=(e,r)=>{r=E(r),U(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},ze=[],cn=(e,r,t,n)=>(e=ze[e],r=Y.toValue(r),e(null,r,t,n)),fn={},vn=e=>{var r=fn[e];return r===void 0?E(e):r},Ar=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},dn=e=>e===0?Y.toHandle(Ar()):(e=vn(e),Y.toHandle(Ar()[e])),pn=e=>{var r=ze.length;return ze.push(e),r},hn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},gn=Reflect.construct,_n=(e,r,t)=>{var n=[],i=e.toWireType(n,t);return n.length&&(m[r>>2]=Y.toHandle(n)),i},yn=(e,r,t)=>{var n=hn(e,r),i=n.shift();e--;var a=new Array(e),o=(u,f,v,p)=>{for(var h=0,g=0;gu.name).join(", ")}) => ${i.name}>`;return pn(se(s,o))},mn=e=>{e>4&&(k.get(e).refcount+=1)},$n=e=>{var r=Y.toValue(e);Oe(r),Ve(e)},bn=(e,r)=>{e=Ye(e,"_emval_take_value");var t=e.readValueFromPointer(r);return Y.toHandle(t)},wn=()=>{de("")},Tn=(e,r,t)=>O.copyWithin(e,r,r+t),Pn=()=>2147483648,Cn=e=>{var r=ve.buffer,t=(e-r.byteLength+65535)/65536;try{return ve.grow(t),rr(),1}catch{}},An=e=>{var r=O.length;e>>>=0;var t=Pn();if(e>t)return!1;for(var n=(u,f)=>u+(f-u%f)%f,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var o=Math.min(t,n(Math.max(e,a),65536)),s=Cn(o);if(s)return!0}return!1},Ne={},Fn=()=>qe||"./this.program",ue=()=>{if(!ue.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:Fn()};for(var t in Ne)Ne[t]===void 0?delete r[t]:r[t]=Ne[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);ue.strings=n}return ue.strings},Sn=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);M[r>>0]=0},En=(e,r)=>{var t=0;return ue().forEach((n,i)=>{var a=r+t;m[e+i*4>>2]=a,Sn(n,a),t+=n.length+1}),0},Rn=(e,r)=>{var t=ue();m[e>>2]=t.length;var n=0;return t.forEach(i=>n+=i.length+1),m[r>>2]=n,0},Dn=e=>e,Pe=e=>e%4===0&&(e%100!==0||e%400===0),On=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Fr=[31,29,31,30,31,30,31,31,30,31,30,31],Sr=[31,28,31,30,31,30,31,31,30,31,30,31],Wn=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=Pe(t.getFullYear()),i=t.getMonth(),a=(n?Fr:Sr)[i];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),i<11?t.setMonth(i+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function kn(e,r,t){var n=t>0?t:Tr(e)+1,i=new Array(n),a=wr(e,i,0,i.length);return r&&(i.length=a),i}var Mn=(e,r)=>{M.set(e,r)},jn=(e,r,t,n)=>{var i=m[n+40>>2],a={tm_sec:D[n>>2],tm_min:D[n+4>>2],tm_hour:D[n+8>>2],tm_mday:D[n+12>>2],tm_mon:D[n+16>>2],tm_year:D[n+20>>2],tm_wday:D[n+24>>2],tm_yday:D[n+28>>2],tm_isdst:D[n+32>>2],tm_gmtoff:D[n+36>>2],tm_zone:i?Le(i):""},o=Le(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function p(c,d,A){for(var S=typeof c=="number"?c.toString():c||"";S.length0?1:0}var S;return(S=A(c.getFullYear()-d.getFullYear()))===0&&(S=A(c.getMonth()-d.getMonth()))===0&&(S=A(c.getDate()-d.getDate())),S}function b(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function C(c){var d=Wn(new Date(c.tm_year+1900,0,1),c.tm_yday),A=new Date(d.getFullYear(),0,4),S=new Date(d.getFullYear()+1,0,4),K=b(A),Ae=b(S);return g(K,d)<=0?g(Ae,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var y={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return h(d/100|0,2)},"%d":c=>h(c.tm_mday,2),"%e":c=>p(c.tm_mday,2," "),"%g":c=>C(c).toString().substring(2),"%G":c=>C(c),"%H":c=>h(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),h(d,2)},"%j":c=>h(c.tm_mday+On(Pe(c.tm_year+1900)?Fr:Sr,c.tm_mon-1),3),"%m":c=>h(c.tm_mon+1,2),"%M":c=>h(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>h(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return h(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var S=(c.tm_wday+371-c.tm_yday)%7;S!=4&&(S!=3||!Pe(c.tm_year))&&(d=1)}}else{d=52;var A=(c.tm_wday+7-c.tm_yday-1)%7;(A==4||A==5&&Pe(c.tm_year%400-1))&&d++}return h(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return h(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,A=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(A?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var u in y)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),y[u](a)));o=o.replace(/\0\0/g,"%");var R=kn(o,!1);return R.length>r?0:(Mn(R,e),R.length-1)},Hn=(e,r,t,n,i)=>jn(e,r,t,n);ur=l.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},ut(),J=l.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},$t(),gt(),St(),yr=l.UnboundTypeError=Ot(Error,"UnboundTypeError"),Ht(),Ut();var In={s:Jr,u:Kr,b:et,g:rt,q:tt,J:nt,f:it,V:at,d:Qr,da:ot,Q:st,_:ct,ca:Wt,ba:Mt,w:jt,Y:xt,x:Yt,h:Bt,L:zt,M:Nt,t:Zt,o:Gt,K:Kt,C:on,A:sn,ea:un,$:ln,R:cn,ha:Ve,fa:dn,Z:yn,N:mn,O:$n,aa:bn,B:wn,X:Tn,W:An,T:En,U:Rn,E:ei,D:Bn,F:Qn,n:ri,a:Un,e:zn,m:Yn,k:Xn,H:Jn,v:Gn,G:Kn,z:ni,P:ai,l:Nn,j:Ln,c:Vn,p:xn,I:qn,r:ti,i:Zn,y:ii,ga:Dn,S:Hn},F=qr(),B=l._free=e=>(B=l._free=F.ka)(e),Xe=l._malloc=e=>(Xe=l._malloc=F.la)(e),Er=e=>(Er=F.na)(e),$=(e,r)=>($=F.oa)(e,r),le=e=>(le=F.pa)(e),T=()=>(T=F.qa)(),P=e=>(P=F.ra)(e),Rr=e=>(Rr=F.sa)(e),Dr=e=>(Dr=F.ta)(e),Or=(e,r,t)=>(Or=F.ua)(e,r,t),Wr=e=>(Wr=F.va)(e);l.dynCall_viijii=(e,r,t,n,i,a,o)=>(l.dynCall_viijii=F.wa)(e,r,t,n,i,a,o);var kr=l.dynCall_jiiii=(e,r,t,n,i)=>(kr=l.dynCall_jiiii=F.xa)(e,r,t,n,i);l.dynCall_iiiiij=(e,r,t,n,i,a,o)=>(l.dynCall_iiiiij=F.ya)(e,r,t,n,i,a,o),l.dynCall_iiiiijj=(e,r,t,n,i,a,o,s,u)=>(l.dynCall_iiiiijj=F.za)(e,r,t,n,i,a,o,s,u),l.dynCall_iiiiiijj=(e,r,t,n,i,a,o,s,u,f)=>(l.dynCall_iiiiiijj=F.Aa)(e,r,t,n,i,a,o,s,u,f);function Un(e,r){var t=T();try{return w(e)(r)}catch(n){if(P(t),n!==n+0)throw n;$(1,0)}}function xn(e,r,t,n){var i=T();try{w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function Vn(e,r,t){var n=T();try{w(e)(r,t)}catch(i){if(P(n),i!==i+0)throw i;$(1,0)}}function Yn(e,r,t,n){var i=T();try{return w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function Bn(e,r,t,n,i){var a=T();try{return w(e)(r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}function Ln(e,r){var t=T();try{w(e)(r)}catch(n){if(P(t),n!==n+0)throw n;$(1,0)}}function zn(e,r,t){var n=T();try{return w(e)(r,t)}catch(i){if(P(n),i!==i+0)throw i;$(1,0)}}function Nn(e){var r=T();try{w(e)()}catch(t){if(P(r),t!==t+0)throw t;$(1,0)}}function Xn(e,r,t,n,i){var a=T();try{return w(e)(r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}function Zn(e,r,t,n,i,a,o,s,u,f,v){var p=T();try{w(e)(r,t,n,i,a,o,s,u,f,v)}catch(h){if(P(p),h!==h+0)throw h;$(1,0)}}function Gn(e,r,t,n,i,a,o){var s=T();try{return w(e)(r,t,n,i,a,o)}catch(u){if(P(s),u!==u+0)throw u;$(1,0)}}function qn(e,r,t,n,i){var a=T();try{w(e)(r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}function Jn(e,r,t,n,i,a){var o=T();try{return w(e)(r,t,n,i,a)}catch(s){if(P(o),s!==s+0)throw s;$(1,0)}}function Kn(e,r,t,n,i,a,o,s){var u=T();try{return w(e)(r,t,n,i,a,o,s)}catch(f){if(P(u),f!==f+0)throw f;$(1,0)}}function Qn(e,r,t,n){var i=T();try{return w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function ei(e,r,t,n){var i=T();try{return w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function ri(e){var r=T();try{return w(e)()}catch(t){if(P(r),t!==t+0)throw t;$(1,0)}}function ti(e,r,t,n,i,a,o,s){var u=T();try{w(e)(r,t,n,i,a,o,s)}catch(f){if(P(u),f!==f+0)throw f;$(1,0)}}function ni(e,r,t,n,i,a,o,s,u,f,v,p){var h=T();try{return w(e)(r,t,n,i,a,o,s,u,f,v,p)}catch(g){if(P(h),g!==g+0)throw g;$(1,0)}}function ii(e,r,t,n,i,a,o,s,u,f,v,p,h,g,b,C){var y=T();try{w(e)(r,t,n,i,a,o,s,u,f,v,p,h,g,b,C)}catch(R){if(P(y),R!==R+0)throw R;$(1,0)}}function ai(e,r,t,n,i){var a=T();try{return kr(e,r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}var Ce;te=function e(){Ce||Mr(),Ce||(te=e)};function Mr(){if(L>0||(Ur(),L>0))return;function e(){Ce||(Ce=!0,l.calledRun=!0,!Ke&&(xr(),Ze(l),l.onRuntimeInitialized&&l.onRuntimeInitialized(),Vr()))}l.setStatus?(l.setStatus("Running..."),setTimeout(function(){setTimeout(function(){l.setStatus("")},1),e()},1)):e()}if(l.preInit)for(typeof l.preInit=="function"&&(l.preInit=[l.preInit]);l.preInit.length>0;)l.preInit.pop()();return Mr(),X.ready}})();function oi(H){return W.getZXingModuleWithFactory(Fe,H)}function si(H){return W.setZXingModuleOverridesWithFactory(Fe,H)}async function ui(H,X){return W.readBarcodesFromImageFileWithFactory(Fe,H,X)}async function li(H,X){return W.readBarcodesFromImageDataWithFactory(Fe,H,X)}exports.barcodeFormats=W.barcodeFormats;exports.binarizers=W.binarizers;exports.characterSets=W.characterSets;exports.contentTypes=W.contentTypes;exports.defaultDecodeHints=W.defaultReaderOptions;exports.defaultReaderOptions=W.defaultReaderOptions;exports.eanAddOnSymbols=W.eanAddOnSymbols;exports.purgeZXingModule=W.purgeZXingModule;exports.readOutputEccLevels=W.readOutputEccLevels;exports.textModes=W.textModes;exports.getZXingModule=oi;exports.readBarcodesFromImageData=li;exports.readBarcodesFromImageFile=ui;exports.setZXingModuleOverrides=si; diff --git a/node_modules/zxing-wasm/dist/cjs/writer/index.d.ts b/node_modules/zxing-wasm/dist/cjs/writer/index.d.ts new file mode 100644 index 0000000..19b6103 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/writer/index.d.ts @@ -0,0 +1,13 @@ +/** + * The writer part API of this package is subject to change a lot. + * Please track the status of [this issue](https://github.com/zxing-cpp/zxing-cpp/issues/332). + * + * @packageDocumentation + */ +import { type ZXingWriterModule, type ZXingModuleOverrides } from "../core.js"; +import type { WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingWriterModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/writer/index.js b/node_modules/zxing-wasm/dist/cjs/writer/index.js new file mode 100644 index 0000000..ce3f869 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/writer/index.js @@ -0,0 +1,2 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../core-D9FNMpWh.cjs");var yr=(()=>{var U=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(J={}){var u=J,mr,Q;u.ready=new Promise((r,e)=>{mr=r,Q=e});var br=Object.assign({},u),wr=typeof window=="object",Y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var R="";function Yr(r){return u.locateFile?u.locateFile(r,R):R+r}var sr;(wr||Y)&&(Y?R=self.location.href:typeof document<"u"&&document.currentScript&&(R=document.currentScript.src),U&&(R=U),R.indexOf("blob:")!==0?R=R.substr(0,R.replace(/[?#].*/,"").lastIndexOf("/")+1):R="",Y&&(sr=r=>{var e=new XMLHttpRequest;return e.open("GET",r,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),u.print||console.log.bind(console);var Z=u.printErr||console.error.bind(console);Object.assign(u,br),br=null,u.arguments&&u.arguments,u.thisProgram&&u.thisProgram,u.quit&&u.quit;var L;u.wasmBinary&&(L=u.wasmBinary),typeof WebAssembly!="object"&&ur("no native wasm support detected");var rr,Tr=!1,M,y,H,N,O,h,$r,Ar;function Er(){var r=rr.buffer;u.HEAP8=M=new Int8Array(r),u.HEAP16=H=new Int16Array(r),u.HEAPU8=y=new Uint8Array(r),u.HEAPU16=N=new Uint16Array(r),u.HEAP32=O=new Int32Array(r),u.HEAPU32=h=new Uint32Array(r),u.HEAPF32=$r=new Float32Array(r),u.HEAPF64=Ar=new Float64Array(r)}var Cr=[],Rr=[],Fr=[];function re(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)ne(u.preRun.shift());fr(Cr)}function ee(){fr(Rr)}function te(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)ie(u.postRun.shift());fr(Fr)}function ne(r){Cr.unshift(r)}function ae(r){Rr.unshift(r)}function ie(r){Fr.unshift(r)}var j=0,q=null;function oe(r){var e;j++,(e=u.monitorRunDependencies)===null||e===void 0||e.call(u,j)}function se(r){var e;if(j--,(e=u.monitorRunDependencies)===null||e===void 0||e.call(u,j),j==0&&q){var t=q;q=null,t()}}function ur(r){var e;(e=u.onAbort)===null||e===void 0||e.call(u,r),r="Aborted("+r+")",Z(r),Tr=!0,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw Q(t),t}var ue="data:application/octet-stream;base64,",Pr=r=>r.startsWith(ue),V;V="zxing_writer.wasm",Pr(V)||(V=Yr(V));function Wr(r){if(r==V&&L)return new Uint8Array(L);if(sr)return sr(r);throw"both async and sync fetching of the wasm failed"}function fe(r){return!L&&(wr||Y)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+r+"'";return e.arrayBuffer()}).catch(()=>Wr(r)):Promise.resolve().then(()=>Wr(r))}function kr(r,e,t){return fe(r).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(t,n=>{Z(`failed to asynchronously prepare wasm: ${n}`),ur(n)})}function ce(r,e,t,n){return!r&&typeof WebAssembly.instantiateStreaming=="function"&&!Pr(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(o){return Z(`wasm streaming compile failed: ${o}`),Z("falling back to ArrayBuffer instantiation"),kr(e,t,n)})}):kr(e,t,n)}function le(){var r={a:Ft};function e(n,a){return g=n.exports,rr=g.R,Er(),Br=g.V,ae(g.S),se(),g}oe();function t(n){e(n.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(r,e)}catch(n){Z(`Module.instantiateWasm callback failed with error: ${n}`),Q(n)}return ce(L,V,r,t).catch(Q),{}}var fr=r=>{for(;r.length>0;)r.shift()(u)};u.noExitRuntime;var Sr=[],ve=r=>{var e=new cr(r);return e.get_caught()||e.set_caught(!0),e.set_rethrown(!1),Sr.push(e),Kr(e.excPtr),e.get_exception_ptr()},I=0,de=()=>{T(0,0);var r=Sr.pop();Gr(r.excPtr),I=0};function cr(r){this.excPtr=r,this.ptr=r-24,this.set_type=function(e){h[this.ptr+4>>2]=e},this.get_type=function(){return h[this.ptr+4>>2]},this.set_destructor=function(e){h[this.ptr+8>>2]=e},this.get_destructor=function(){return h[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,M[this.ptr+12>>0]=e},this.get_caught=function(){return M[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,M[this.ptr+13>>0]=e},this.get_rethrown=function(){return M[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){h[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return h[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=Jr(this.get_type());if(e)return h[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var he=r=>{throw I||(I=r),I},lr=r=>{var e=I;if(!e)return K(0),0;var t=new cr(e);t.set_adjusted_ptr(e);var n=t.get_type();if(!n)return K(0),e;for(var a in r){var i=r[a];if(i===0||i===n)break;var o=t.ptr+16;if(zr(i,n,o))return K(i),e}return K(n),e},_e=()=>lr([]),pe=r=>lr([r]),ge=(r,e)=>lr([r,e]),ye=(r,e,t)=>{var n=new cr(r);throw n.init(e,t),I=r,I},er={},vr=r=>{for(;r.length;){var e=r.pop(),t=r.pop();t(e)}};function dr(r){return this.fromWireType(O[r>>2])}var B={},D={},tr={},Ur,Mr=r=>{throw new Ur(r)},Or=(r,e,t)=>{r.forEach(function(s){tr[s]=e});function n(s){var f=t(s);f.length!==r.length&&Mr("Mismatched type converter count");for(var c=0;c{D.hasOwnProperty(s)?a[f]=D[s]:(i.push(s),B.hasOwnProperty(s)||(B[s]=[]),B[s].push(()=>{a[f]=D[s],++o,o===i.length&&n(a)}))}),i.length===0&&n(a)},me=r=>{var e=er[r];delete er[r];var t=e.rawConstructor,n=e.rawDestructor,a=e.fields,i=a.map(o=>o.getterReturnType).concat(a.map(o=>o.setterArgumentType));Or([r],i,o=>{var s={};return a.forEach((f,c)=>{var l=f.fieldName,v=o[c],_=f.getter,d=f.getterContext,k=o[c+a.length],C=f.setter,m=f.setterContext;s[l]={read:z=>v.fromWireType(_(d,z)),write:(z,gr)=>{var or=[];C(m,z,k.toWireType(or,gr)),vr(or)}}}),[{name:e.name,fromWireType:f=>{var c={};for(var l in s)c[l]=s[l].read(f);return n(f),c},toWireType:(f,c)=>{for(var l in s)if(!(l in c))throw new TypeError(`Missing field: "${l}"`);var v=t();for(l in s)s[l].write(v,c[l]);return f!==null&&f.push(n,v),v},argPackAdvance:P,readValueFromPointer:dr,destructorFunction:n}]})},be=(r,e,t,n,a)=>{},we=()=>{for(var r=new Array(256),e=0;e<256;++e)r[e]=String.fromCharCode(e);jr=r},jr,p=r=>{for(var e="",t=r;y[t];)e+=jr[y[t++]];return e},Ir,b=r=>{throw new Ir(r)};function Te(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(r||b(`type "${n}" must have a positive integer typeid pointer`),D.hasOwnProperty(r)){if(t.ignoreDuplicateRegistrations)return;b(`Cannot register type '${n}' twice`)}if(D[r]=e,delete tr[r],B.hasOwnProperty(r)){var a=B[r];delete B[r],a.forEach(i=>i())}}function F(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Te(r,e,t)}var P=8,$e=(r,e,t,n)=>{e=p(e),F(r,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:P,readValueFromPointer:function(a){return this.fromWireType(y[a])},destructorFunction:null})};function Ae(){Object.assign(Dr.prototype,{get(r){return this.allocated[r]},has(r){return this.allocated[r]!==void 0},allocate(r){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=r,e},free(r){this.allocated[r]=void 0,this.freelist.push(r)}})}function Dr(){this.allocated=[void 0],this.freelist=[]}var $=new Dr,hr=r=>{r>=$.reserved&&--$.get(r).refcount===0&&$.free(r)},Ee=()=>{for(var r=0,e=$.reserved;e<$.allocated.length;++e)$.allocated[e]!==void 0&&++r;return r},Ce=()=>{$.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),$.reserved=$.allocated.length,u.count_emval_handles=Ee},x={toValue:r=>(r||b("Cannot use deleted val. handle = "+r),$.get(r).value),toHandle:r=>{switch(r){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return $.allocate({refcount:1,value:r})}}},Re=(r,e)=>{e=p(e),F(r,{name:e,fromWireType:t=>{var n=x.toValue(t);return hr(t),n},toWireType:(t,n)=>x.toHandle(n),argPackAdvance:P,readValueFromPointer:dr,destructorFunction:null})},Fe=(r,e,t)=>{if(r[e].overloadTable===void 0){var n=r[e];r[e]=function(){return r[e].overloadTable.hasOwnProperty(arguments.length)||b(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${r[e].overloadTable})!`),r[e].overloadTable[arguments.length].apply(this,arguments)},r[e].overloadTable=[],r[e].overloadTable[n.argCount]=n}},xr=(r,e,t)=>{u.hasOwnProperty(r)?((t===void 0||u[r].overloadTable!==void 0&&u[r].overloadTable[t]!==void 0)&&b(`Cannot register public name '${r}' twice`),Fe(u,r,r),u.hasOwnProperty(t)&&b(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),u[r].overloadTable[t]=e):(u[r]=e,t!==void 0&&(u[r].numArguments=t))},Pe=(r,e,t)=>{switch(e){case 1:return t?function(n){return this.fromWireType(M[n>>0])}:function(n){return this.fromWireType(y[n>>0])};case 2:return t?function(n){return this.fromWireType(H[n>>1])}:function(n){return this.fromWireType(N[n>>1])};case 4:return t?function(n){return this.fromWireType(O[n>>2])}:function(n){return this.fromWireType(h[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},We=(r,e,t,n)=>{e=p(e);function a(){}a.values={},F(r,{name:e,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,o)=>o.value,argPackAdvance:P,readValueFromPointer:Pe(e,t,n),destructorFunction:null}),xr(e,a)},nr=(r,e)=>Object.defineProperty(e,"name",{value:r}),Hr=r=>{var e=qr(r),t=p(e);return W(e),t},Vr=(r,e)=>{var t=D[r];return t===void 0&&b(e+" has unknown type "+Hr(r)),t},ke=(r,e,t)=>{var n=Vr(r,"enum");e=p(e);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:nr(`${n.name}_${e}`,function(){})}});a.values[t]=i,a[e]=i},Se=(r,e)=>{switch(e){case 4:return function(t){return this.fromWireType($r[t>>2])};case 8:return function(t){return this.fromWireType(Ar[t>>3])};default:throw new TypeError(`invalid float width (${e}): ${r}`)}},Ue=(r,e,t)=>{e=p(e),F(r,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:P,readValueFromPointer:Se(e,t),destructorFunction:null})};function Me(r){for(var e=1;e{for(var t=[],n=0;n>2]);return t},Ie=(r,e,t)=>{u.hasOwnProperty(r)||Mr("Replacing nonexistant public symbol"),u[r].overloadTable!==void 0&&t!==void 0?u[r].overloadTable[t]=e:(u[r]=e,u[r].argCount=t)},De=(r,e,t)=>{var n=u["dynCall_"+r];return t&&t.length?n.apply(null,[e].concat(t)):n.call(null,e)},ar=[],Br,w=r=>{var e=ar[r];return e||(r>=ar.length&&(ar.length=r+1),ar[r]=e=Br.get(r)),e},xe=(r,e,t)=>{if(r.includes("j"))return De(r,e,t);var n=w(e).apply(null,t);return n},He=(r,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),xe(r,e,t)}},G=(r,e)=>{r=p(r);function t(){return r.includes("j")?He(r,e):w(e)}var n=t();return typeof n!="function"&&b(`unknown function pointer with signature ${r}: ${e}`),n},Ve=(r,e)=>{var t=nr(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(r.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Xr,Be=(r,e)=>{var t=[],n={};function a(i){if(!n[i]&&!D[i]){if(tr[i]){tr[i].forEach(a);return}t.push(i),n[i]=!0}}throw e.forEach(a),new Xr(`${r}: `+t.map(Hr).join([", "]))},Xe=r=>{r=r.trim();const e=r.indexOf("(");return e!==-1?r.substr(0,e):r},Ze=(r,e,t,n,a,i,o)=>{var s=je(e,t);r=p(r),r=Xe(r),a=G(n,a),xr(r,function(){Be(`Cannot call ${r} due to unbound types`,s)},e-1),Or([],s,function(f){var c=[f[0],null].concat(f.slice(1));return Ie(r,Oe(r,c,null,a,i),e-1),[]})},Le=(r,e,t)=>{switch(e){case 1:return t?n=>M[n>>0]:n=>y[n>>0];case 2:return t?n=>H[n>>1]:n=>N[n>>1];case 4:return t?n=>O[n>>2]:n=>h[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},Ne=(r,e,t,n,a)=>{e=p(e);var i=l=>l;if(n===0){var o=32-8*t;i=l=>l<>>o}var s=e.includes("unsigned"),f=(l,v)=>{},c;s?c=function(l,v){return f(v,this.name),v>>>0}:c=function(l,v){return f(v,this.name),v},F(r,{name:e,fromWireType:i,toWireType:c,argPackAdvance:P,readValueFromPointer:Le(e,t,n!==0),destructorFunction:null})},qe=(r,e,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function i(o){var s=h[o>>2],f=h[o+4>>2];return new a(M.buffer,f,s)}t=p(t),F(r,{name:t,fromWireType:i,argPackAdvance:P,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})};function Ge(r){return this.fromWireType(h[r>>2])}var Ke=(r,e,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,o=0;o=55296&&s<=57343){var f=r.charCodeAt(++o);s=65536+((s&1023)<<10)|f&1023}if(s<=127){if(t>=i)break;e[t++]=s}else if(s<=2047){if(t+1>=i)break;e[t++]=192|s>>6,e[t++]=128|s&63}else if(s<=65535){if(t+2>=i)break;e[t++]=224|s>>12,e[t++]=128|s>>6&63,e[t++]=128|s&63}else{if(t+3>=i)break;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|s&63}}return e[t]=0,t-a},ze=(r,e,t)=>Ke(r,y,e,t),Je=r=>{for(var e=0,t=0;t=55296&&n<=57343?(e+=4,++t):e+=3}return e},Zr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Qe=(r,e,t)=>{for(var n=e+t,a=e;r[a]&&!(a>=n);)++a;if(a-e>16&&r.buffer&&Zr)return Zr.decode(r.subarray(e,a));for(var i="";e>10,56320|c&1023)}}return i},Ye=(r,e)=>r?Qe(y,r,e):"",rt=(r,e)=>{e=p(e);var t=e==="std::string";F(r,{name:e,fromWireType(n){var a=h[n>>2],i=n+4,o;if(t)for(var s=i,f=0;f<=a;++f){var c=i+f;if(f==a||y[c]==0){var l=c-s,v=Ye(s,l);o===void 0?o=v:(o+="\0",o+=v),s=c+1}}else{for(var _=new Array(a),f=0;f>2]=i,t&&o)ze(a,f,i+1);else if(o)for(var c=0;c255&&(W(f),b("String has UTF-16 code units that do not fit in 8 bits")),y[f+c]=l}else for(var c=0;c{for(var t=r,n=t>>1,a=n+e/2;!(n>=a)&&N[n];)++n;if(t=n<<1,t-r>32&&Lr)return Lr.decode(y.subarray(r,t));for(var i="",o=0;!(o>=e/2);++o){var s=H[r+o*2>>1];if(s==0)break;i+=String.fromCharCode(s)}return i},tt=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=e,i=t>1]=s,e+=2}return H[e>>1]=0,e-a},nt=r=>r.length*2,at=(r,e)=>{for(var t=0,n="";!(t>=e/4);){var a=O[r+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},it=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=e,i=a+t-4,o=0;o=55296&&s<=57343){var f=r.charCodeAt(++o);s=65536+((s&1023)<<10)|f&1023}if(O[e>>2]=s,e+=4,e+4>i)break}return O[e>>2]=0,e-a},ot=r=>{for(var e=0,t=0;t=55296&&n<=57343&&++t,e+=4}return e},st=(r,e,t)=>{t=p(t);var n,a,i,o,s;e===2?(n=et,a=tt,o=nt,i=()=>N,s=1):e===4&&(n=at,a=it,o=ot,i=()=>h,s=2),F(r,{name:t,fromWireType:f=>{for(var c=h[f>>2],l=i(),v,_=f+4,d=0;d<=c;++d){var k=f+4+d*e;if(d==c||l[k>>s]==0){var C=k-_,m=n(_,C);v===void 0?v=m:(v+="\0",v+=m),_=k+e}}return W(f),v},toWireType:(f,c)=>{typeof c!="string"&&b(`Cannot pass non-string to C++ string type ${t}`);var l=o(c),v=pr(4+l+e);return h[v>>2]=l>>s,a(c,v+4,l+e),f!==null&&f.push(W,v),v},argPackAdvance:P,readValueFromPointer:dr,destructorFunction(f){W(f)}})},ut=(r,e,t,n,a,i)=>{er[r]={name:p(e),rawConstructor:G(t,n),rawDestructor:G(a,i),fields:[]}},ft=(r,e,t,n,a,i,o,s,f,c)=>{er[r].fields.push({fieldName:p(e),getterReturnType:t,getter:G(n,a),getterContext:i,setterArgumentType:o,setter:G(s,f),setterContext:c})},ct=(r,e)=>{e=p(e),F(r,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},_r=[],lt=(r,e,t,n)=>(r=_r[r],e=x.toValue(e),r(null,e,t,n)),vt={},dt=r=>{var e=vt[r];return e===void 0?p(r):e},Nr=()=>{if(typeof globalThis=="object")return globalThis;function r(e){e.$$$embind_global$$$=e;var t=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return t||delete e.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&r(global)?$$$embind_global$$$=global:typeof self=="object"&&r(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},ht=r=>r===0?x.toHandle(Nr()):(r=dt(r),x.toHandle(Nr()[r])),_t=r=>{var e=_r.length;return _r.push(r),e},pt=(r,e)=>{for(var t=new Array(r),n=0;n>2],"parameter "+n);return t},gt=Reflect.construct,yt=(r,e,t)=>{var n=[],a=r.toWireType(n,t);return n.length&&(h[e>>2]=x.toHandle(n)),a},mt=(r,e,t)=>{var n=pt(r,e),a=n.shift();r--;var i=new Array(r),o=(f,c,l,v)=>{for(var _=0,d=0;df.name).join(", ")}) => ${a.name}>`;return _t(nr(s,o))},bt=r=>{r>4&&($.get(r).refcount+=1)},wt=r=>{var e=x.toValue(r);vr(e),hr(r)},Tt=()=>{ur("")},$t=(r,e,t)=>y.copyWithin(r,e,e+t),At=()=>2147483648,Et=r=>{var e=rr.buffer,t=(r-e.byteLength+65535)/65536;try{return rr.grow(t),Er(),1}catch{}},Ct=r=>{var e=y.length;r>>>=0;var t=At();if(r>t)return!1;for(var n=(f,c)=>f+(c-f%c)%c,a=1;a<=4;a*=2){var i=e*(1+.2/a);i=Math.min(i,r+100663296);var o=Math.min(t,n(Math.max(r,i),65536)),s=Et(o);if(s)return!0}return!1},Rt=r=>r;Ur=u.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},we(),Ir=u.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ae(),Ce(),Xr=u.UnboundTypeError=Ve(Error,"UnboundTypeError");var Ft={r:ve,q:de,g:_e,d:pe,k:ge,a:ye,i:he,M:me,C:be,H:$e,G:Re,K:We,b:ke,v:Ue,L:Ze,h:Ne,e:qe,u:rt,p:st,w:ut,N:ft,I:ct,z:lt,P:hr,B:ht,A:mt,x:bt,Q:wt,s:Tt,F:$t,E:Ct,y:Mt,c:Pt,l:Ot,n:Ut,o:jt,f:Wt,t:xt,m:Dt,D:St,J:kt,j:It,O:Rt},g=le(),pr=u._malloc=r=>(pr=u._malloc=g.T)(r),W=u._free=r=>(W=u._free=g.U)(r),qr=r=>(qr=g.W)(r),T=(r,e)=>(T=g.X)(r,e),K=r=>(K=g.Y)(r),A=()=>(A=g.Z)(),E=r=>(E=g._)(r),Gr=r=>(Gr=g.$)(r),Kr=r=>(Kr=g.aa)(r),zr=(r,e,t)=>(zr=g.ba)(r,e,t),Jr=r=>(Jr=g.ca)(r);function Pt(r,e){var t=A();try{return w(r)(e)}catch(n){if(E(t),n!==n+0)throw n;T(1,0)}}function Wt(r,e){var t=A();try{w(r)(e)}catch(n){if(E(t),n!==n+0)throw n;T(1,0)}}function kt(r,e,t,n,a,i){var o=A();try{w(r)(e,t,n,a,i)}catch(s){if(E(o),s!==s+0)throw s;T(1,0)}}function St(r,e,t,n,a){var i=A();try{w(r)(e,t,n,a)}catch(o){if(E(i),o!==o+0)throw o;T(1,0)}}function Ut(r,e,t,n){var a=A();try{return w(r)(e,t,n)}catch(i){if(E(a),i!==i+0)throw i;T(1,0)}}function Mt(r,e,t,n,a){var i=A();try{return w(r)(e,t,n,a)}catch(o){if(E(i),o!==o+0)throw o;T(1,0)}}function Ot(r,e,t){var n=A();try{return w(r)(e,t)}catch(a){if(E(n),a!==a+0)throw a;T(1,0)}}function jt(r){var e=A();try{w(r)()}catch(t){if(E(e),t!==t+0)throw t;T(1,0)}}function It(r,e,t,n,a,i,o,s,f,c,l){var v=A();try{w(r)(e,t,n,a,i,o,s,f,c,l)}catch(_){if(E(v),_!==_+0)throw _;T(1,0)}}function Dt(r,e,t,n){var a=A();try{w(r)(e,t,n)}catch(i){if(E(a),i!==i+0)throw i;T(1,0)}}function xt(r,e,t){var n=A();try{w(r)(e,t)}catch(a){if(E(n),a!==a+0)throw a;T(1,0)}}var ir;q=function r(){ir||Qr(),ir||(q=r)};function Qr(){if(j>0||(re(),j>0))return;function r(){ir||(ir=!0,u.calledRun=!0,!Tr&&(ee(),mr(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),te()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),r()},1)):r()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Qr(),J.ready}})();function Vt(U){return S.getZXingModuleWithFactory(yr,U)}function Bt(U){return S.setZXingModuleOverridesWithFactory(yr,U)}async function Xt(U,J){return S.writeBarcodeToImageFileWithFactory(yr,U,J)}exports.barcodeFormats=S.barcodeFormats;exports.characterSets=S.characterSets;exports.defaultEncodeHints=S.defaultWriterOptions;exports.defaultWriterOptions=S.defaultWriterOptions;exports.purgeZXingModule=S.purgeZXingModule;exports.writeInputEccLevels=S.writeInputEccLevels;exports.getZXingModule=Vt;exports.setZXingModuleOverrides=Bt;exports.writeBarcodeToImageFile=Xt; diff --git a/node_modules/zxing-wasm/dist/es/bindings/barcodeFormat.d.ts b/node_modules/zxing-wasm/dist/es/bindings/barcodeFormat.d.ts new file mode 100644 index 0000000..4d682b6 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/barcodeFormat.d.ts @@ -0,0 +1,21 @@ +export declare const barcodeFormats: readonly ["Aztec", "Codabar", "Code128", "Code39", "Code93", "DataBar", "DataBarExpanded", "DataMatrix", "DXFilmEdge", "EAN-13", "EAN-8", "ITF", "Linear-Codes", "Matrix-Codes", "MaxiCode", "MicroQRCode", "None", "PDF417", "QRCode", "rMQRCode", "UPC-A", "UPC-E"]; +/** + * @internal + */ +export type BarcodeFormat = (typeof barcodeFormats)[number]; +/** + * Barcode formats that can be used in {@link ReaderOptions.formats | `ReaderOptions.formats`} to read barcodes. + */ +export type ReadInputBarcodeFormat = Exclude; +/** + * Barcode formats that can be used in {@link WriterOptions.format | `WriterOptions.format`} to write barcodes. + */ +export type WriteInputBarcodeFormat = Exclude; +/** + * Barcode formats that may be returned in {@link ReadResult.format} in read functions. + */ +export type ReadOutputBarcodeFormat = Exclude; +export declare function formatsToString(formats: BarcodeFormat[]): string; +export declare function formatsFromString(formatString: string): BarcodeFormat[]; +export declare function formatFromString(format: string): BarcodeFormat; +export declare function normalizeFormatString(format: string): string; diff --git a/node_modules/zxing-wasm/dist/es/bindings/binarizer.d.ts b/node_modules/zxing-wasm/dist/es/bindings/binarizer.d.ts new file mode 100644 index 0000000..52ee7e9 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/binarizer.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const binarizers: readonly ["LocalAverage", "GlobalHistogram", "FixedThreshold", "BoolCast"]; +export type Binarizer = (typeof binarizers)[number]; +/** + * @internal + */ +export type ZXingBinarizer = Record; +export declare function binarizerToZXingEnum(zxingModule: ZXingModule, binarizer: Binarizer): ZXingEnum; +export declare function zxingEnumToBinarizer(zxingEnum: ZXingEnum): Binarizer; diff --git a/node_modules/zxing-wasm/dist/es/bindings/characterSet.d.ts b/node_modules/zxing-wasm/dist/es/bindings/characterSet.d.ts new file mode 100644 index 0000000..35ecb14 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/characterSet.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule, ZXingModuleType } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const characterSets: readonly ["Unknown", "ASCII", "ISO8859_1", "ISO8859_2", "ISO8859_3", "ISO8859_4", "ISO8859_5", "ISO8859_6", "ISO8859_7", "ISO8859_8", "ISO8859_9", "ISO8859_10", "ISO8859_11", "ISO8859_13", "ISO8859_14", "ISO8859_15", "ISO8859_16", "Cp437", "Cp1250", "Cp1251", "Cp1252", "Cp1256", "Shift_JIS", "Big5", "GB2312", "GB18030", "EUC_JP", "EUC_KR", "UTF16BE", "UTF8", "UTF16LE", "UTF32BE", "UTF32LE", "BINARY"]; +export type CharacterSet = (typeof characterSets)[number]; +/** + * @internal + */ +export type ZXingCharacterSet = Record; +export declare function characterSetToZXingEnum(zxingModule: ZXingModule, characterSet: CharacterSet): ZXingEnum; +export declare function zxingEnumToCharacterSet(zxingEnum: ZXingEnum): CharacterSet; diff --git a/node_modules/zxing-wasm/dist/es/bindings/contentType.d.ts b/node_modules/zxing-wasm/dist/es/bindings/contentType.d.ts new file mode 100644 index 0000000..9fe9007 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/contentType.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const contentTypes: readonly ["Text", "Binary", "Mixed", "GS1", "ISO15434", "UnknownECI"]; +export type ContentType = (typeof contentTypes)[number]; +/** + * @internal + */ +export type ZXingContentType = Record; +export declare function contentTypeToZXingEnum(zxingModule: ZXingModule, contentType: ContentType): ZXingEnum; +export declare function zxingEnumToContentType(zxingEnum: ZXingEnum): ContentType; diff --git a/node_modules/zxing-wasm/dist/es/bindings/eanAddOnSymbol.d.ts b/node_modules/zxing-wasm/dist/es/bindings/eanAddOnSymbol.d.ts new file mode 100644 index 0000000..fb45fd7 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/eanAddOnSymbol.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const eanAddOnSymbols: readonly ["Ignore", "Read", "Require"]; +export type EanAddOnSymbol = (typeof eanAddOnSymbols)[number]; +/** + * @internal + */ +export type ZXingEanAddOnSymbol = Record; +export declare function eanAddOnSymbolToZXingEnum(zxingModule: ZXingModule, eanAddOnSymbol: EanAddOnSymbol): ZXingEnum; +export declare function zxingEnumToEanAddOnSymbol(zxingEnum: ZXingEnum): EanAddOnSymbol; diff --git a/node_modules/zxing-wasm/dist/es/bindings/eccLevel.d.ts b/node_modules/zxing-wasm/dist/es/bindings/eccLevel.d.ts new file mode 100644 index 0000000..bbfb1bc --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/eccLevel.d.ts @@ -0,0 +1,4 @@ +export declare const writeInputEccLevels: readonly [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]; +export type WriteInputEccLevel = (typeof writeInputEccLevels)[number]; +export declare const readOutputEccLevels: readonly ["L", "M", "Q", "H"]; +export type ReadOutputEccLevel = (typeof readOutputEccLevels)[number]; diff --git a/node_modules/zxing-wasm/dist/es/bindings/enum.d.ts b/node_modules/zxing-wasm/dist/es/bindings/enum.d.ts new file mode 100644 index 0000000..7d42d60 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/enum.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export interface ZXingEnum { + value: number; +} diff --git a/node_modules/zxing-wasm/dist/es/bindings/exposedReaderBindings.d.ts b/node_modules/zxing-wasm/dist/es/bindings/exposedReaderBindings.d.ts new file mode 100644 index 0000000..cc29207 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/exposedReaderBindings.d.ts @@ -0,0 +1,17 @@ +import { type ReaderOptions } from "./index.js"; +export declare const defaultReaderOptions: Required; +export { barcodeFormats, type BarcodeFormat, type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat, binarizers, type ZXingBinarizer, type Binarizer, characterSets, type ZXingCharacterSet, type CharacterSet, contentTypes, type ZXingContentType, type ContentType, type ZXingReaderOptions, type ReaderOptions, eanAddOnSymbols, type ZXingEanAddOnSymbol, type EanAddOnSymbol, readOutputEccLevels, type ReadOutputEccLevel, type ZXingEnum, type ZXingPoint, type ZXingPosition, type Point, type Position, type ZXingReadResult, type ReadResult, textModes, type ZXingTextMode, type TextMode, type ZXingVector, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultReaderOptions` + */ +defaultReaderOptions as defaultDecodeHints, }; +export { +/** + * @deprecated renamed as `ZXingReaderOptions` + */ +type ZXingReaderOptions as ZXingDecodeHints, +/** + * @deprecated renamed as `ReaderOptions` + */ +type ReaderOptions as DecodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/es/bindings/exposedWriterBindings.d.ts b/node_modules/zxing-wasm/dist/es/bindings/exposedWriterBindings.d.ts new file mode 100644 index 0000000..9254a66 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/exposedWriterBindings.d.ts @@ -0,0 +1,17 @@ +import { type WriterOptions } from "./index.js"; +export declare const defaultWriterOptions: Required; +export { barcodeFormats, type BarcodeFormat, type WriteInputBarcodeFormat, characterSets, type ZXingCharacterSet, type CharacterSet, writeInputEccLevels, type WriteInputEccLevel, type ZXingWriterOptions, type WriterOptions, type ZXingEnum, type ZXingWriteResult, type WriteResult, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultWriterOptions` + */ +defaultWriterOptions as defaultEncodeHints, }; +export { +/** + * @deprecated renamed as `ZXingWriterOptions` + */ +type ZXingWriterOptions as ZXingEncodeHints, +/** + * @deprecated renamed as `WriterOptions` + */ +type WriterOptions as EncodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/es/bindings/index.d.ts b/node_modules/zxing-wasm/dist/es/bindings/index.d.ts new file mode 100644 index 0000000..0081c44 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/index.d.ts @@ -0,0 +1,14 @@ +export * from "./barcodeFormat.js"; +export * from "./binarizer.js"; +export * from "./characterSet.js"; +export * from "./contentType.js"; +export * from "./readerOptions.js"; +export * from "./eanAddOnSymbol.js"; +export * from "./eccLevel.js"; +export * from "./writerOptions.js"; +export * from "./enum.js"; +export * from "./position.js"; +export * from "./readResult.js"; +export * from "./textMode.js"; +export * from "./vector.js"; +export * from "./writeResult.js"; diff --git a/node_modules/zxing-wasm/dist/es/bindings/position.d.ts b/node_modules/zxing-wasm/dist/es/bindings/position.d.ts new file mode 100644 index 0000000..2cbe76c --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/position.d.ts @@ -0,0 +1,55 @@ +/** + * @internal + */ +export interface ZXingPoint { + x: number; + y: number; +} +/** + * @internal + */ +export interface ZXingPosition { + topLeft: ZXingPoint; + topRight: ZXingPoint; + bottomLeft: ZXingPoint; + bottomRight: ZXingPoint; +} +/** + * X, Y coordinates to describe a point. + * + * @property x X coordinate. + * @property y Y coordinate. + * + * @see {@link Position | `Position`} + */ +export interface Point extends ZXingPoint { +} +/** + * Position of the decoded barcode. + */ +export interface Position { + /** + * Top-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topLeft: Point; + /** + * Top-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topRight: Point; + /** + * Bottom-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomLeft: Point; + /** + * Bottom-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomRight: Point; +} diff --git a/node_modules/zxing-wasm/dist/es/bindings/readResult.d.ts b/node_modules/zxing-wasm/dist/es/bindings/readResult.d.ts new file mode 100644 index 0000000..fdee88d --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/readResult.d.ts @@ -0,0 +1,123 @@ +import { ReadOutputBarcodeFormat } from "./barcodeFormat.js"; +import { ReadOutputEccLevel } from "./eccLevel.js"; +import { ContentType } from "./contentType.js"; +import { ZXingPosition, Position } from "./position.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReadResult { + /** + * Whether the barcode is valid. + */ + isValid: boolean; + /** + * Error message (if any). + * + * @see {@link ReaderOptions.returnErrors | `ReaderOptions.returnErrors`} + */ + error: string; + format: string; + /** + * Raw / Standard content without any modifications like character set conversions. + */ + bytes: Uint8Array; + /** + * Raw / Standard content following the ECI protocol. + */ + bytesECI: Uint8Array; + /** + * The {@link ReadResult.bytes | `ReadResult.bytes`} content rendered to unicode / utf8 text + * accoring to specified {@link ReaderOptions.textMode | `ReaderOptions.textMode`}. + */ + text: string; + eccLevel: string; + contentType: ZXingEnum; + /** + * Whether or not an ECI tag was found. + */ + hasECI: boolean; + position: ZXingPosition; + /** + * Orientation of the barcode in degree. + */ + orientation: number; + /** + * Whether the symbol is mirrored (currently only supported by QRCode and DataMatrix). + */ + isMirrored: boolean; + /** + * Whether the symbol is inverted / has reveresed reflectance. + * + * @see {@link ReaderOptions.tryInvert | `ReaderOptions.tryInvert`} + */ + isInverted: boolean; + /** + * Symbology identifier `"]cm"` where `"c"` is the symbology code character, `"m"` the modifier. + */ + symbologyIdentifier: string; + /** + * Number of symbols in a structured append sequence. + * + * If this is not part of a structured append sequence, the returned value is `-1`. + * If it is a structured append symbol but the total number of symbols is unknown, the + * returned value is `0` (see PDF417 if optional "Segment Count" not given). + */ + sequenceSize: number; + /** + * The 0-based index of this symbol in a structured append sequence. + */ + sequenceIndex: number; + /** + * ID to check if a set of symbols belongs to the same structured append sequence. + * + * If the symbology does not support this feature, the returned value is empty (see MaxiCode). + * For QR Code, this is the parity integer converted to a string. + * For PDF417 and DataMatrix, this is the `"fileId"`. + */ + sequenceId: string; + /** + * Set if this is the reader initialisation / programming symbol. + */ + readerInit: boolean; + /** + * Number of lines have been detected with this code (applies only to linear symbologies). + */ + lineCount: number; + /** + * QRCode / DataMatrix / Aztec version or size. + * + * This property will be removed in the future. + * + * @deprecated + */ + version: string; +} +export interface ReadResult extends Omit { + /** + * Format of the barcode, should be one of {@link ReadOutputBarcodeFormat | `ReadOutputBarcodeFormat`}. + * + * Possible values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"None"`, + * `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + */ + format: ReadOutputBarcodeFormat; + /** + * Error correction level of the symbol (empty string if not applicable). + * + * This property may be renamed to `ecLevel` in the future. + */ + eccLevel: ReadOutputEccLevel; + /** + * A hint to the type of the content found. + */ + contentType: ContentType; + /** + * Position of the detected barcode. + */ + position: Position; +} +export declare function zxingReadResultToReadResult(zxingReadResult: ZXingReadResult): ReadResult; diff --git a/node_modules/zxing-wasm/dist/es/bindings/readerOptions.d.ts b/node_modules/zxing-wasm/dist/es/bindings/readerOptions.d.ts new file mode 100644 index 0000000..93eda5b --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/readerOptions.d.ts @@ -0,0 +1,204 @@ +import { ZXingModule } from "../core.js"; +import { ReadInputBarcodeFormat } from "./barcodeFormat.js"; +import { Binarizer } from "./binarizer.js"; +import { CharacterSet } from "./characterSet.js"; +import { EanAddOnSymbol } from "./eanAddOnSymbol.js"; +import { TextMode } from "./textMode.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReaderOptions { + formats: string; + /** + * Spend more time to try to find a barcode. Optimize for accuracy, not speed. + * + * @defaultValue `true` + */ + tryHarder: boolean; + /** + * Try detecting code in 90, 180 and 270 degree rotated images. + * + * @defaultValue `true` + */ + tryRotate: boolean; + /** + * Try detecting inverted (reversed reflectance) codes if the format allows for those. + * + * @defaultValue `true` + */ + tryInvert: boolean; + /** + * Try detecting code in downscaled images (depending on image size). + * + * @defaultValue `true` + * @see {@link downscaleFactor | `downscaleFactor`} {@link downscaleThreshold | `downscaleThreshold`} + */ + tryDownscale: boolean; + binarizer: ZXingEnum; + /** + * Set to `true` if the input contains nothing but a single perfectly aligned barcode (usually generated images). + * + * @defaultValue `false` + */ + isPure: boolean; + /** + * Image size ( min(width, height) ) threshold at which to start downscaled scanning + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `500` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleFactor | `downscaleFactor`} + */ + downscaleThreshold: number; + /** + * Scale factor to use during downscaling, meaningful values are `2`, `3` and `4`. + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `3` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleThreshold | `downscaleThreshold`} + */ + downscaleFactor: number; + /** + * The number of scan lines in a linear barcode that have to be equal to accept the result. + * + * @defaultValue `2` + */ + minLineCount: number; + /** + * The maximum number of symbols / barcodes to detect / look for in the image. + * The upper limit of this number is 255. + * + * @defaultValue `255` + */ + maxNumberOfSymbols: number; + /** + * If `true`, the Code-39 reader will try to read extended mode. + * + * @defaultValue `false` + */ + tryCode39ExtendedMode: boolean; + /** + * Assume Code-39 codes employ a check digit and validate it. + * + * @defaultValue `false` + */ + validateCode39CheckSum: boolean; + /** + * Assume ITF codes employ a GS1 check digit and validate it. + * + * @defaultValue `false` + */ + validateITFCheckSum: boolean; + /** + * If `true`, return the start and end chars in a Codabar barcode instead of stripping them. + * + * @defaultValue `false` + */ + returnCodabarStartEnd: boolean; + /** + * If `true`, return the barcodes with errors as well (e.g. checksum errors). + * + * @defaultValue `false` + */ + returnErrors: boolean; + eanAddOnSymbol: ZXingEnum; + textMode: ZXingEnum; + characterSet: ZXingEnum; +} +/** + * Reader options for reading barcodes. + */ +export interface ReaderOptions extends Partial> { + /** + * A set of {@link ReadInputBarcodeFormat | `ReadInputBarcodeFormat`}s that should be searched for. + * An empty list `[]` indicates all supported formats. + * + * Supported values in this list are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, `"Linear-Codes"`, `"Matrix-Codes"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `[]` + */ + formats?: ReadInputBarcodeFormat[]; + /** + * Algorithm to use for the grayscale to binary transformation. + * The difference is how to get to a threshold value T + * which results in a bit value R = L <= T. + * + * - `"LocalAverage"` + * + * T = average of neighboring pixels for matrix and GlobalHistogram for linear + * + * - `"GlobalHistogram"` + * + * T = valley between the 2 largest peaks in the histogram (per line in linear case) + * + * - `"FixedThreshold"` + * + * T = 127 + * + * - `"BoolCast"` + * + * T = 0, fastest possible + * + * @defaultValue `"LocalAverage"` + */ + binarizer?: Binarizer; + /** + * Specify whether to ignore, read or require EAN-2 / 5 add-on symbols while scanning EAN / UPC codes. + * + * - `"Ignore"` + * + * Ignore any Add-On symbol during read / scan + * + * - `"Read"` + * + * Read EAN-2 / EAN-5 Add-On symbol if found + * + * - `"Require"` + * + * Require EAN-2 / EAN-5 Add-On symbol to be present + * + * @defaultValue `"Read"` + */ + eanAddOnSymbol?: EanAddOnSymbol; + /** + * Specifies the `TextMode` that controls the result of {@link ReadResult.text | `ReadResult.text`}. + * + * - `"Plain"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to unicode based on ECI info or guessed character set + * + * - `"ECI"` + * + * Standard content following the ECI protocol with every character set ECI segment transcoded to unicode + * + * - `"HRI"` + * + * Human Readable Interpretation (dependent on the ContentType) + * + * - `"Hex"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to ASCII string of HEX values + * + * - `"Escaped"` + * + * Escape non-graphical characters in angle brackets (e.g. ASCII `29` will be transcoded to `""`) + * + * @defaultValue `"Plain"` + */ + textMode?: TextMode; + /** + * Character set to use (when applicable). + * If this is set to `"Unknown"`, auto-detecting will be used. + * + * @defaultValue `"Unknown"` + */ + characterSet?: CharacterSet; +} +export declare const defaultReaderOptions: Required; +export declare function readerOptionsToZXingReaderOptions(zxingModule: ZXingModule, readerOptions: Required): ZXingReaderOptions; diff --git a/node_modules/zxing-wasm/dist/es/bindings/textMode.d.ts b/node_modules/zxing-wasm/dist/es/bindings/textMode.d.ts new file mode 100644 index 0000000..5be28ff --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/textMode.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const textModes: readonly ["Plain", "ECI", "HRI", "Hex", "Escaped"]; +export type TextMode = (typeof textModes)[number]; +/** + * @internal + */ +export type ZXingTextMode = Record; +export declare function textModeToZXingEnum(zxingModule: ZXingModule, textMode: TextMode): ZXingEnum; +export declare function zxingEnumToTextMode(zxingEnum: ZXingEnum): TextMode; diff --git a/node_modules/zxing-wasm/dist/es/bindings/vector.d.ts b/node_modules/zxing-wasm/dist/es/bindings/vector.d.ts new file mode 100644 index 0000000..034bd5a --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/vector.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface ZXingVector { + size: () => number; + get: (i: number) => T | undefined; +} diff --git a/node_modules/zxing-wasm/dist/es/bindings/writeResult.d.ts b/node_modules/zxing-wasm/dist/es/bindings/writeResult.d.ts new file mode 100644 index 0000000..ac46b1f --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/writeResult.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export interface ZXingWriteResult { + image: Uint8Array; + /** + * Encoding error. + * If there's no error, this will be an empty string `""`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + error: string; + delete: () => void; +} +export interface WriteResult extends Omit { + /** + * The encoded barcode as an image blob. + * If some error happens, this will be `null`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + image: Blob | null; +} +export declare function zxingWriteResultToWriteResult(zxingWriteResult: ZXingWriteResult): WriteResult; diff --git a/node_modules/zxing-wasm/dist/es/bindings/writerOptions.d.ts b/node_modules/zxing-wasm/dist/es/bindings/writerOptions.d.ts new file mode 100644 index 0000000..120e2ae --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/writerOptions.d.ts @@ -0,0 +1,64 @@ +import { ZXingModule } from "../core.js"; +import { WriteInputBarcodeFormat } from "./barcodeFormat.js"; +import { CharacterSet } from "./characterSet.js"; +import { WriteInputEccLevel } from "./eccLevel.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingWriterOptions { + /** + * Width of the barcode. + * + * @defaultValue `200` + */ + width: number; + /** + * Height of the barcode. + * + * @defaultValue `200` + */ + height: number; + format: string; + characterSet: ZXingEnum; + eccLevel: number; + /** + * The minimum number of quiet zone pixels. + * + * @defaultValue `10` + */ + margin: number; +} +/** + * Writer options for writing barcodes. + */ +export interface WriterOptions extends Partial> { + /** + * The format of the barcode to write. + * + * Supported values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataMatrix"`, `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"PDF417"`, `"QRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `"QRCode"` + */ + format?: WriteInputBarcodeFormat; + /** + * Character set to use for encoding the text. + * Used for Aztec, PDF417, and QRCode only. + * + * @defaultValue `"UTF8"` + */ + characterSet?: CharacterSet; + /** + * Error correction level of the symbol. + * Used for Aztec, PDF417, and QRCode only. + * `-1` means auto. + * + * @defaultValue `-1` + */ + eccLevel?: WriteInputEccLevel; +} +export declare const defaultWriterOptions: Required; +export declare function writerOptionsToZXingWriterOptions(zxingModule: ZXingModule, writerOptions: Required): ZXingWriterOptions; diff --git a/node_modules/zxing-wasm/dist/es/core-gSM15mHH.js b/node_modules/zxing-wasm/dist/es/core-gSM15mHH.js new file mode 100644 index 0000000..2e897d9 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/core-gSM15mHH.js @@ -0,0 +1,286 @@ +const C = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function T(e) { + return e.join("|"); +} +function p(e) { + const t = I(e); + let r = 0, o = C.length - 1; + for (; r <= o; ) { + const n = Math.floor((r + o) / 2), a = C[n], s = I(a); + if (s === t) + return a; + s < t ? r = n + 1 : o = n - 1; + } + return "None"; +} +function I(e) { + return e.toLowerCase().replace(/_-\[\]/g, ""); +} +const v = [ + "LocalAverage", + "GlobalHistogram", + "FixedThreshold", + "BoolCast" +]; +function b(e, t) { + return e.Binarizer[t]; +} +const P = [ + "Unknown", + "ASCII", + "ISO8859_1", + "ISO8859_2", + "ISO8859_3", + "ISO8859_4", + "ISO8859_5", + "ISO8859_6", + "ISO8859_7", + "ISO8859_8", + "ISO8859_9", + "ISO8859_10", + "ISO8859_11", + "ISO8859_13", + "ISO8859_14", + "ISO8859_15", + "ISO8859_16", + "Cp437", + "Cp1250", + "Cp1251", + "Cp1252", + "Cp1256", + "Shift_JIS", + "Big5", + "GB2312", + "GB18030", + "EUC_JP", + "EUC_KR", + "UTF16BE", + "UTF8", + "UTF16LE", + "UTF32BE", + "UTF32LE", + "BINARY" +]; +function O(e, t) { + return e.CharacterSet[t]; +} +const w = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function F(e) { + return w[e.value]; +} +const L = ["Ignore", "Read", "Require"]; +function _(e, t) { + return e.EanAddOnSymbol[t]; +} +const M = ["Plain", "ECI", "HRI", "Hex", "Escaped"]; +function R(e, t) { + return e.TextMode[t]; +} +const d = { + formats: [], + tryHarder: !0, + tryRotate: !0, + tryInvert: !0, + tryDownscale: !0, + binarizer: "LocalAverage", + isPure: !1, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: !1, + validateCode39CheckSum: !1, + validateITFCheckSum: !1, + returnCodabarStartEnd: !1, + returnErrors: !1, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function y(e, t) { + return { + ...t, + formats: T(t.formats), + binarizer: b(e, t.binarizer), + eanAddOnSymbol: _( + e, + t.eanAddOnSymbol + ), + textMode: R(e, t.textMode), + characterSet: O( + e, + t.characterSet + ) + }; +} +const x = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8], W = ["L", "M", "Q", "H"], S = { + width: 200, + height: 200, + format: "QRCode", + characterSet: "UTF8", + eccLevel: -1, + margin: 10 +}; +function B(e, t) { + return { + ...t, + characterSet: O( + e, + t.characterSet + ) + }; +} +function E(e) { + return { + ...e, + format: p(e.format), + eccLevel: e.eccLevel, + contentType: F(e.contentType) + }; +} +function A(e) { + const { image: t, error: r } = e; + return t ? { + image: new Blob([new Uint8Array(t)], { + type: "image/png" + }), + error: "" + } : { + image: null, + error: r + }; +} +const U = { + locateFile: (e, t) => { + const r = e.match(/_(.+?)\.wasm$/); + return r ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${r[1]}/${e}` : t + e; + } +}; +let m = /* @__PURE__ */ new WeakMap(); +function h(e, t) { + var a; + const r = m.get(e); + if (r != null && r.modulePromise && (t === void 0 || Object.is(t, r.moduleOverrides))) + return r.modulePromise; + const o = (a = t != null ? t : r == null ? void 0 : r.moduleOverrides) != null ? a : U, n = e({ + ...o + }); + return m.set(e, { + moduleOverrides: o, + modulePromise: n + }), n; +} +function X() { + m = /* @__PURE__ */ new WeakMap(); +} +function Z(e, t) { + m.set(e, { + moduleOverrides: t + }); +} +async function z(e, t, r = d) { + const o = { + ...d, + ...r + }, n = await h(e), { size: a } = t, s = new Uint8Array(await t.arrayBuffer()), u = n._malloc(a); + n.HEAPU8.set(s, u); + const l = n.readBarcodesFromImage( + u, + a, + y(n, o) + ); + n._free(u); + const i = []; + for (let c = 0; c < l.size(); ++c) + i.push( + E(l.get(c)) + ); + return i; +} +async function D(e, t, r = d) { + const o = { + ...d, + ...r + }, n = await h(e), { + data: a, + width: s, + height: u, + data: { byteLength: l } + } = t, i = n._malloc(l); + n.HEAPU8.set(a, i); + const c = n.readBarcodesFromPixmap( + i, + s, + u, + y(n, o) + ); + n._free(i); + const g = []; + for (let f = 0; f < c.size(); ++f) + g.push( + E(c.get(f)) + ); + return g; +} +async function H(e, t, r = S) { + const o = { + ...S, + ...r + }, n = await h(e), a = n.writeBarcodeToImage( + t, + B(n, o) + ); + return A(a); +} +const k = { + ...d, + formats: [...d.formats] +}, N = { ...S }; +export { + D as a, + C as b, + v as c, + k as d, + P as e, + w as f, + h as g, + L as h, + W as i, + N as j, + x as k, + X as p, + z as r, + Z as s, + M as t, + H as w +}; diff --git a/node_modules/zxing-wasm/dist/es/core.d.ts b/node_modules/zxing-wasm/dist/es/core.d.ts new file mode 100644 index 0000000..93cb462 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/core.d.ts @@ -0,0 +1,41 @@ +/// +import { type ZXingReaderOptions, type ReaderOptions, type ZXingWriterOptions, type WriterOptions, type ZXingReadResult, type ReadResult, type ZXingWriteResult, type ZXingBinarizer, type ZXingCharacterSet, type ZXingContentType, type ZXingEanAddOnSymbol, type ZXingTextMode, type ZXingVector } from "./bindings/index.js"; +export type ZXingModuleType = "reader" | "writer" | "full"; +interface ZXingBaseModule extends EmscriptenModule { + CharacterSet: ZXingCharacterSet; +} +/** + * @internal + */ +export interface ZXingReaderModule extends ZXingBaseModule { + Binarizer: ZXingBinarizer; + ContentType: ZXingContentType; + EanAddOnSymbol: ZXingEanAddOnSymbol; + TextMode: ZXingTextMode; + readBarcodesFromImage(bufferPtr: number, bufferLength: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; + readBarcodesFromPixmap(bufferPtr: number, imgWidth: number, imgHeight: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; +} +/** + * @internal + */ +export interface ZXingWriterModule extends ZXingBaseModule { + writeBarcodeToImage(text: string, zxingWriterOptions: ZXingWriterOptions): ZXingWriteResult; +} +/** + * @internal + */ +export interface ZXingFullModule extends ZXingReaderModule, ZXingWriterModule { +} +export type ZXingModule = T extends "reader" ? ZXingReaderModule : T extends "writer" ? ZXingWriterModule : T extends "full" ? ZXingFullModule : ZXingReaderModule | ZXingWriterModule | ZXingFullModule; +export type ZXingReaderModuleFactory = EmscriptenModuleFactory; +export type ZXingWriterModuleFactory = EmscriptenModuleFactory; +export type ZXingFullModuleFactory = EmscriptenModuleFactory; +export type ZXingModuleFactory = T extends "reader" ? ZXingReaderModuleFactory : T extends "writer" ? ZXingWriterModuleFactory : T extends "full" ? ZXingFullModuleFactory : ZXingReaderModuleFactory | ZXingWriterModuleFactory | ZXingFullModuleFactory; +export type ZXingModuleOverrides = Partial; +export declare function getZXingModuleWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides?: ZXingModuleOverrides): Promise>; +export declare function purgeZXingModule(): void; +export declare function setZXingModuleOverridesWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageDataWithFactory(zxingModuleFactory: ZXingModuleFactory, imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, text: string, writerOptions?: WriterOptions): Promise; +export {}; diff --git a/node_modules/zxing-wasm/dist/es/full/index.d.ts b/node_modules/zxing-wasm/dist/es/full/index.d.ts new file mode 100644 index 0000000..619c27e --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/full/index.d.ts @@ -0,0 +1,10 @@ +import { type ZXingFullModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions, WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingFullModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/es/full/index.js b/node_modules/zxing-wasm/dist/es/full/index.js new file mode 100644 index 0000000..5afbd5d --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/full/index.js @@ -0,0 +1,1746 @@ +import { g as oi, s as si, r as ui, a as li, w as ci } from "../core-gSM15mHH.js"; +import { b as bi, c as wi, e as Ti, f as Pi, d as Ci, j as Ai, d as Fi, j as Ei, h as Si, p as Ri, i as Di, t as Wi, k as ki } from "../core-gSM15mHH.js"; +var le = (() => { + var k = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(B = {}) { + var l = B, Xe, ce; + l.ready = new Promise((e, r) => { + Xe = e, ce = r; + }); + var Ge = Object.assign({}, l), Ze = "./this.program", qe = typeof window == "object", fe = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var H = ""; + function Hr(e) { + return l.locateFile ? l.locateFile(e, H) : H + e; + } + var Fe; + (qe || fe) && (fe ? H = self.location.href : typeof document < "u" && document.currentScript && (H = document.currentScript.src), k && (H = k), H.indexOf("blob:") !== 0 ? H = H.substr(0, H.replace(/[?#].*/, "").lastIndexOf("/") + 1) : H = "", fe && (Fe = (e) => { + var r = new XMLHttpRequest(); + return r.open("GET", e, !1), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response); + })), l.print || console.log.bind(console); + var K = l.printErr || console.error.bind(console); + Object.assign(l, Ge), Ge = null, l.arguments && l.arguments, l.thisProgram && (Ze = l.thisProgram), l.quit && l.quit; + var Q; + l.wasmBinary && (Q = l.wasmBinary), typeof WebAssembly != "object" && de("no native wasm support detected"); + var ve, Je = !1, j, W, X, ee, D, m, Ke, Qe; + function er() { + var e = ve.buffer; + l.HEAP8 = j = new Int8Array(e), l.HEAP16 = X = new Int16Array(e), l.HEAPU8 = W = new Uint8Array(e), l.HEAPU16 = ee = new Uint16Array(e), l.HEAP32 = D = new Int32Array(e), l.HEAPU32 = m = new Uint32Array(e), l.HEAPF32 = Ke = new Float32Array(e), l.HEAPF64 = Qe = new Float64Array(e); + } + var rr = [], tr = [], nr = []; + function Ir() { + if (l.preRun) + for (typeof l.preRun == "function" && (l.preRun = [l.preRun]); l.preRun.length; ) + Vr(l.preRun.shift()); + Ee(rr); + } + function Ur() { + Ee(tr); + } + function xr() { + if (l.postRun) + for (typeof l.postRun == "function" && (l.postRun = [l.postRun]); l.postRun.length; ) + Br(l.postRun.shift()); + Ee(nr); + } + function Vr(e) { + rr.unshift(e); + } + function Yr(e) { + tr.unshift(e); + } + function Br(e) { + nr.unshift(e); + } + var L = 0, re = null; + function Lr(e) { + var r; + L++, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, L); + } + function Nr(e) { + var r; + if (L--, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, L), L == 0 && re) { + var t = re; + re = null, t(); + } + } + function de(e) { + var r; + (r = l.onAbort) === null || r === void 0 || r.call(l, e), e = "Aborted(" + e + ")", K(e), Je = !0, e += ". Build with -sASSERTIONS for more info."; + var t = new WebAssembly.RuntimeError(e); + throw ce(t), t; + } + var zr = "data:application/octet-stream;base64,", ir = (e) => e.startsWith(zr), G; + G = "zxing_full.wasm", ir(G) || (G = Hr(G)); + function ar(e) { + if (e == G && Q) + return new Uint8Array(Q); + if (Fe) + return Fe(e); + throw "both async and sync fetching of the wasm failed"; + } + function Xr(e) { + return !Q && (qe || fe) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((r) => { + if (!r.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return r.arrayBuffer(); + }).catch(() => ar(e)) : Promise.resolve().then(() => ar(e)); + } + function or(e, r, t) { + return Xr(e).then((n) => WebAssembly.instantiate(n, r)).then((n) => n).then(t, (n) => { + K(`failed to asynchronously prepare wasm: ${n}`), de(n); + }); + } + function Gr(e, r, t, n) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !ir(r) && typeof fetch == "function" ? fetch(r, { + credentials: "same-origin" + }).then((i) => { + var a = WebAssembly.instantiateStreaming(i, t); + return a.then(n, function(o) { + return K(`wasm streaming compile failed: ${o}`), K("falling back to ArrayBuffer instantiation"), or(r, t, n); + }); + }) : or(r, t, n); + } + function Zr() { + var e = { + a: Hn + }; + function r(n, i) { + return F = n.exports, ve = F.ja, er(), _r = F.na, Yr(F.ka), Nr(), F; + } + Lr(); + function t(n) { + r(n.instance); + } + if (l.instantiateWasm) + try { + return l.instantiateWasm(e, r); + } catch (n) { + K(`Module.instantiateWasm callback failed with error: ${n}`), ce(n); + } + return Gr(Q, G, e, t).catch(ce), {}; + } + var Ee = (e) => { + for (; e.length > 0; ) + e.shift()(l); + }; + l.noExitRuntime; + var he = [], pe = 0, qr = (e) => { + var r = new Se(e); + return r.get_caught() || (r.set_caught(!0), pe--), r.set_rethrown(!1), he.push(r), Rr(r.excPtr), r.get_exception_ptr(); + }, x = 0, Jr = () => { + $(0, 0); + var e = he.pop(); + Sr(e.excPtr), x = 0; + }; + function Se(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(r) { + m[this.ptr + 4 >> 2] = r; + }, this.get_type = function() { + return m[this.ptr + 4 >> 2]; + }, this.set_destructor = function(r) { + m[this.ptr + 8 >> 2] = r; + }, this.get_destructor = function() { + return m[this.ptr + 8 >> 2]; + }, this.set_caught = function(r) { + r = r ? 1 : 0, j[this.ptr + 12 >> 0] = r; + }, this.get_caught = function() { + return j[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(r) { + r = r ? 1 : 0, j[this.ptr + 13 >> 0] = r; + }, this.get_rethrown = function() { + return j[this.ptr + 13 >> 0] != 0; + }, this.init = function(r, t) { + this.set_adjusted_ptr(0), this.set_type(r), this.set_destructor(t); + }, this.set_adjusted_ptr = function(r) { + m[this.ptr + 16 >> 2] = r; + }, this.get_adjusted_ptr = function() { + return m[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var r = Wr(this.get_type()); + if (r) + return m[this.excPtr >> 2]; + var t = this.get_adjusted_ptr(); + return t !== 0 ? t : this.excPtr; + }; + } + var Kr = (e) => { + throw x || (x = e), x; + }, Re = (e) => { + var r = x; + if (!r) + return ue(0), 0; + var t = new Se(r); + t.set_adjusted_ptr(r); + var n = t.get_type(); + if (!n) + return ue(0), r; + for (var i in e) { + var a = e[i]; + if (a === 0 || a === n) + break; + var o = t.ptr + 16; + if (Dr(a, n, o)) + return ue(a), r; + } + return ue(n), r; + }, Qr = () => Re([]), et = (e) => Re([e]), rt = (e, r) => Re([e, r]), tt = () => { + var e = he.pop(); + e || de("no exception to throw"); + var r = e.excPtr; + throw e.get_rethrown() || (he.push(e), e.set_rethrown(!0), e.set_caught(!1), pe++), x = r, x; + }, nt = (e, r, t) => { + var n = new Se(e); + throw n.init(r, t), x = e, pe++, x; + }, it = () => pe, _e = {}, De = (e) => { + for (; e.length; ) { + var r = e.pop(), t = e.pop(); + t(r); + } + }; + function We(e) { + return this.fromWireType(D[e >> 2]); + } + var Z = {}, N = {}, ge = {}, sr, ye = (e) => { + throw new sr(e); + }, z = (e, r, t) => { + e.forEach(function(s) { + ge[s] = r; + }); + function n(s) { + var u = t(s); + u.length !== e.length && ye("Mismatched type converter count"); + for (var f = 0; f < e.length; ++f) + I(e[f], u[f]); + } + var i = new Array(r.length), a = [], o = 0; + r.forEach((s, u) => { + N.hasOwnProperty(s) ? i[u] = N[s] : (a.push(s), Z.hasOwnProperty(s) || (Z[s] = []), Z[s].push(() => { + i[u] = N[s], ++o, o === a.length && n(i); + })); + }), a.length === 0 && n(i); + }, at = (e) => { + var r = _e[e]; + delete _e[e]; + var t = r.rawConstructor, n = r.rawDestructor, i = r.fields, a = i.map((o) => o.getterReturnType).concat(i.map((o) => o.setterArgumentType)); + z([e], a, (o) => { + var s = {}; + return i.forEach((u, f) => { + var v = u.fieldName, h = o[f], p = u.getter, _ = u.getterContext, P = o[f + i.length], C = u.setter, y = u.setterContext; + s[v] = { + read: (R) => h.fromWireType(p(_, R)), + write: (R, c) => { + var d = []; + C(y, R, P.toWireType(d, c)), De(d); + } + }; + }), [{ + name: r.name, + fromWireType: (u) => { + var f = {}; + for (var v in s) + f[v] = s[v].read(u); + return n(u), f; + }, + toWireType: (u, f) => { + for (var v in s) + if (!(v in f)) + throw new TypeError(`Missing field: "${v}"`); + var h = t(); + for (v in s) + s[v].write(h, f[v]); + return u !== null && u.push(n, h), h; + }, + argPackAdvance: U, + readValueFromPointer: We, + destructorFunction: n + }]; + }); + }, ot = (e, r, t, n, i) => { + }, st = () => { + for (var e = new Array(256), r = 0; r < 256; ++r) + e[r] = String.fromCharCode(r); + ur = e; + }, ur, S = (e) => { + for (var r = "", t = e; W[t]; ) + r += ur[W[t++]]; + return r; + }, q, g = (e) => { + throw new q(e); + }; + function ut(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = r.name; + if (e || g(`type "${n}" must have a positive integer typeid pointer`), N.hasOwnProperty(e)) { + if (t.ignoreDuplicateRegistrations) + return; + g(`Cannot register type '${n}' twice`); + } + if (N[e] = r, delete ge[e], Z.hasOwnProperty(e)) { + var i = Z[e]; + delete Z[e], i.forEach((a) => a()); + } + } + function I(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in r)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return ut(e, r, t); + } + var U = 8, lt = (e, r, t, n) => { + r = S(r), I(e, { + name: r, + fromWireType: function(i) { + return !!i; + }, + toWireType: function(i, a) { + return a ? t : n; + }, + argPackAdvance: U, + readValueFromPointer: function(i) { + return this.fromWireType(W[i]); + }, + destructorFunction: null + }); + }, ct = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), ke = (e) => { + function r(t) { + return t.$$.ptrType.registeredClass.name; + } + g(r(e) + " instance already deleted"); + }, Oe = !1, lr = (e) => { + }, ft = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, cr = (e) => { + e.count.value -= 1; + var r = e.count.value === 0; + r && ft(e); + }, fr = (e, r, t) => { + if (r === t) + return e; + if (t.baseClass === void 0) + return null; + var n = fr(e, r, t.baseClass); + return n === null ? null : t.downcast(n); + }, vr = {}, vt = () => Object.keys(ie).length, dt = () => { + var e = []; + for (var r in ie) + ie.hasOwnProperty(r) && e.push(ie[r]); + return e; + }, te = [], je = () => { + for (; te.length; ) { + var e = te.pop(); + e.$$.deleteScheduled = !1, e.delete(); + } + }, ne, ht = (e) => { + ne = e, te.length && ne && ne(je); + }, pt = () => { + l.getInheritedInstanceCount = vt, l.getLiveInheritedInstances = dt, l.flushPendingDeletes = je, l.setDelayFunction = ht; + }, ie = {}, _t = (e, r) => { + for (r === void 0 && g("ptr should not be undefined"); e.baseClass; ) + r = e.upcast(r), e = e.baseClass; + return r; + }, gt = (e, r) => (r = _t(e, r), ie[r]), me = (e, r) => { + (!r.ptrType || !r.ptr) && ye("makeClassHandle requires ptr and ptrType"); + var t = !!r.smartPtrType, n = !!r.smartPtr; + return t !== n && ye("Both smartPtrType and smartPtr must be specified"), r.count = { + value: 1 + }, ae(Object.create(e, { + $$: { + value: r, + writable: !0 + } + })); + }; + function yt(e) { + var r = this.getPointee(e); + if (!r) + return this.destructor(e), null; + var t = gt(this.registeredClass, r); + if (t !== void 0) { + if (t.$$.count.value === 0) + return t.$$.ptr = r, t.$$.smartPtr = e, t.clone(); + var n = t.clone(); + return this.destructor(e), n; + } + function i() { + return this.isSmartPointer ? me(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: r, + smartPtrType: this, + smartPtr: e + }) : me(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var a = this.registeredClass.getActualType(r), o = vr[a]; + if (!o) + return i.call(this); + var s; + this.isConst ? s = o.constPointerType : s = o.pointerType; + var u = fr(r, this.registeredClass, s.registeredClass); + return u === null ? i.call(this) : this.isSmartPointer ? me(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u, + smartPtrType: this, + smartPtr: e + }) : me(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u + }); + } + var ae = (e) => typeof FinalizationRegistry > "u" ? (ae = (r) => r, e) : (Oe = new FinalizationRegistry((r) => { + cr(r.$$); + }), ae = (r) => { + var t = r.$$, n = !!t.smartPtr; + if (n) { + var i = { + $$: t + }; + Oe.register(r, i, r); + } + return r; + }, lr = (r) => Oe.unregister(r), ae(e)), mt = () => { + Object.assign($e.prototype, { + isAliasOf(e) { + if (!(this instanceof $e) || !(e instanceof $e)) + return !1; + var r = this.$$.ptrType.registeredClass, t = this.$$.ptr; + e.$$ = e.$$; + for (var n = e.$$.ptrType.registeredClass, i = e.$$.ptr; r.baseClass; ) + t = r.upcast(t), r = r.baseClass; + for (; n.baseClass; ) + i = n.upcast(i), n = n.baseClass; + return r === n && t === i; + }, + clone() { + if (this.$$.ptr || ke(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ae(Object.create(Object.getPrototypeOf(this), { + $$: { + value: ct(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e; + }, + delete() { + this.$$.ptr || ke(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), lr(this), cr(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || ke(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), te.push(this), te.length === 1 && ne && ne(je), this.$$.deleteScheduled = !0, this; + } + }); + }; + function $e() { + } + var oe = (e, r) => Object.defineProperty(r, "name", { + value: e + }), dr = (e, r, t) => { + if (e[r].overloadTable === void 0) { + var n = e[r]; + e[r] = function() { + return e[r].overloadTable.hasOwnProperty(arguments.length) || g(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`), e[r].overloadTable[arguments.length].apply(this, arguments); + }, e[r].overloadTable = [], e[r].overloadTable[n.argCount] = n; + } + }, Me = (e, r, t) => { + l.hasOwnProperty(e) ? ((t === void 0 || l[e].overloadTable !== void 0 && l[e].overloadTable[t] !== void 0) && g(`Cannot register public name '${e}' twice`), dr(l, e, e), l.hasOwnProperty(t) && g(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`), l[e].overloadTable[t] = r) : (l[e] = r, t !== void 0 && (l[e].numArguments = t)); + }, $t = 48, bt = 57, wt = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var r = e.charCodeAt(0); + return r >= $t && r <= bt ? `_${e}` : e; + }; + function Tt(e, r, t, n, i, a, o, s) { + this.name = e, this.constructor = r, this.instancePrototype = t, this.rawDestructor = n, this.baseClass = i, this.getActualType = a, this.upcast = o, this.downcast = s, this.pureVirtualFunctions = []; + } + var He = (e, r, t) => { + for (; r !== t; ) + r.upcast || g(`Expected null or instance of ${t.name}, got an instance of ${r.name}`), e = r.upcast(e), r = r.baseClass; + return e; + }; + function Pt(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function Ct(e, r) { + var t; + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), this.isSmartPointer ? (t = this.rawConstructor(), e !== null && e.push(this.rawDestructor, t), t) : 0; + (!r || !r.$$) && g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + var n = r.$$.ptrType.registeredClass; + if (t = He(r.$$.ptr, n, this.registeredClass), this.isSmartPointer) + switch (r.$$.smartPtr === void 0 && g("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + r.$$.smartPtrType === this ? t = r.$$.smartPtr : g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + t = r.$$.smartPtr; + break; + case 2: + if (r.$$.smartPtrType === this) + t = r.$$.smartPtr; + else { + var i = r.clone(); + t = this.rawShare(t, V.toHandle(() => i.delete())), e !== null && e.push(this.rawDestructor, t); + } + break; + default: + g("Unsupporting sharing policy"); + } + return t; + } + function At(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function hr(e) { + return this.fromWireType(m[e >> 2]); + } + var Ft = () => { + Object.assign(be.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var r; + (r = this.rawDestructor) === null || r === void 0 || r.call(this, e); + }, + argPackAdvance: U, + readValueFromPointer: hr, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: yt + }); + }; + function be(e, r, t, n, i, a, o, s, u, f, v) { + this.name = e, this.registeredClass = r, this.isReference = t, this.isConst = n, this.isSmartPointer = i, this.pointeeType = a, this.sharingPolicy = o, this.rawGetPointee = s, this.rawConstructor = u, this.rawShare = f, this.rawDestructor = v, !i && r.baseClass === void 0 ? n ? (this.toWireType = Pt, this.destructorFunction = null) : (this.toWireType = At, this.destructorFunction = null) : this.toWireType = Ct; + } + var pr = (e, r, t) => { + l.hasOwnProperty(e) || ye("Replacing nonexistant public symbol"), l[e].overloadTable !== void 0 && t !== void 0 ? l[e].overloadTable[t] = r : (l[e] = r, l[e].argCount = t); + }, Et = (e, r, t) => { + var n = l["dynCall_" + e]; + return t && t.length ? n.apply(null, [r].concat(t)) : n.call(null, r); + }, we = [], _r, b = (e) => { + var r = we[e]; + return r || (e >= we.length && (we.length = e + 1), we[e] = r = _r.get(e)), r; + }, St = (e, r, t) => { + if (e.includes("j")) + return Et(e, r, t); + var n = b(r).apply(null, t); + return n; + }, Rt = (e, r) => { + var t = []; + return function() { + return t.length = 0, Object.assign(t, arguments), St(e, r, t); + }; + }, M = (e, r) => { + e = S(e); + function t() { + return e.includes("j") ? Rt(e, r) : b(r); + } + var n = t(); + return typeof n != "function" && g(`unknown function pointer with signature ${e}: ${r}`), n; + }, Dt = (e, r) => { + var t = oe(r, function(n) { + this.name = r, this.message = n; + var i = new Error(n).stack; + i !== void 0 && (this.stack = this.toString() + ` +` + i.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return t.prototype = Object.create(e.prototype), t.prototype.constructor = t, t.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, t; + }, gr, yr = (e) => { + var r = Er(e), t = S(r); + return Y(r), t; + }, Te = (e, r) => { + var t = [], n = {}; + function i(a) { + if (!n[a] && !N[a]) { + if (ge[a]) { + ge[a].forEach(i); + return; + } + t.push(a), n[a] = !0; + } + } + throw r.forEach(i), new gr(`${e}: ` + t.map(yr).join([", "])); + }, Wt = (e, r, t, n, i, a, o, s, u, f, v, h, p) => { + v = S(v), a = M(i, a), s && (s = M(o, s)), f && (f = M(u, f)), p = M(h, p); + var _ = wt(v); + Me(_, function() { + Te(`Cannot construct ${v} due to unbound types`, [n]); + }), z([e, r, t], n ? [n] : [], function(P) { + P = P[0]; + var C, y; + n ? (C = P.registeredClass, y = C.instancePrototype) : y = $e.prototype; + var R = oe(v, function() { + if (Object.getPrototypeOf(this) !== c) + throw new q("Use 'new' to construct " + v); + if (d.constructor_body === void 0) + throw new q(v + " has no accessible constructor"); + var Mr = d.constructor_body[arguments.length]; + if (Mr === void 0) + throw new q(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`); + return Mr.apply(this, arguments); + }), c = Object.create(y, { + constructor: { + value: R + } + }); + R.prototype = c; + var d = new Tt(v, R, c, p, C, a, s, f); + if (d.baseClass) { + var A, E; + (E = (A = d.baseClass).__derivedClasses) !== null && E !== void 0 || (A.__derivedClasses = []), d.baseClass.__derivedClasses.push(d); + } + var J = new be(v, d, !0, !1, !1), Ae = new be(v + "*", d, !1, !1, !1), jr = new be(v + " const*", d, !1, !0, !1); + return vr[e] = { + pointerType: Ae, + constPointerType: jr + }, pr(_, R), [J, Ae, jr]; + }); + }, Ie = (e, r) => { + for (var t = [], n = 0; n < e; n++) + t.push(m[r + n * 4 >> 2]); + return t; + }; + function kt(e) { + for (var r = 1; r < e.length; ++r) + if (e[r] !== null && e[r].destructorFunction === void 0) + return !0; + return !1; + } + function Ue(e, r, t, n, i, a) { + var o = r.length; + o < 2 && g("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var s = r[1] !== null && t !== null, u = kt(r), f = r[0].name !== "void", v = o - 2, h = new Array(v), p = [], _ = [], P = function() { + arguments.length !== v && g(`function ${e} called with ${arguments.length} arguments, expected ${v}`), _.length = 0; + var C; + p.length = s ? 2 : 1, p[0] = i, s && (C = r[1].toWireType(_, this), p[1] = C); + for (var y = 0; y < v; ++y) + h[y] = r[y + 2].toWireType(_, arguments[y]), p.push(h[y]); + var R = n.apply(null, p); + function c(d) { + if (u) + De(_); + else + for (var A = s ? 1 : 2; A < r.length; A++) { + var E = A === 1 ? C : h[A - 2]; + r[A].destructorFunction !== null && r[A].destructorFunction(E); + } + if (f) + return r[0].fromWireType(d); + } + return c(R); + }; + return oe(e, P); + } + var Ot = (e, r, t, n, i, a) => { + var o = Ie(r, t); + i = M(n, i), z([], [e], function(s) { + s = s[0]; + var u = `constructor ${s.name}`; + if (s.registeredClass.constructor_body === void 0 && (s.registeredClass.constructor_body = []), s.registeredClass.constructor_body[r - 1] !== void 0) + throw new q(`Cannot register multiple constructors with identical number of parameters (${r - 1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return s.registeredClass.constructor_body[r - 1] = () => { + Te(`Cannot construct ${s.name} due to unbound types`, o); + }, z([], o, (f) => (f.splice(1, 0, null), s.registeredClass.constructor_body[r - 1] = Ue(u, f, null, i, a), [])), []; + }); + }, mr = (e) => { + e = e.trim(); + const r = e.indexOf("("); + return r !== -1 ? e.substr(0, r) : e; + }, jt = (e, r, t, n, i, a, o, s, u) => { + var f = Ie(t, n); + r = S(r), r = mr(r), a = M(i, a), z([], [e], function(v) { + v = v[0]; + var h = `${v.name}.${r}`; + r.startsWith("@@") && (r = Symbol[r.substring(2)]), s && v.registeredClass.pureVirtualFunctions.push(r); + function p() { + Te(`Cannot call ${h} due to unbound types`, f); + } + var _ = v.registeredClass.instancePrototype, P = _[r]; + return P === void 0 || P.overloadTable === void 0 && P.className !== v.name && P.argCount === t - 2 ? (p.argCount = t - 2, p.className = v.name, _[r] = p) : (dr(_, r, h), _[r].overloadTable[t - 2] = p), z([], f, function(C) { + var y = Ue(h, C, v, a, o); + return _[r].overloadTable === void 0 ? (y.argCount = t - 2, _[r] = y) : _[r].overloadTable[t - 2] = y, []; + }), []; + }); + }; + function Mt() { + Object.assign($r.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var r = this.freelist.pop() || this.allocated.length; + return this.allocated[r] = e, r; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function $r() { + this.allocated = [void 0], this.freelist = []; + } + var O = new $r(), xe = (e) => { + e >= O.reserved && --O.get(e).refcount === 0 && O.free(e); + }, Ht = () => { + for (var e = 0, r = O.reserved; r < O.allocated.length; ++r) + O.allocated[r] !== void 0 && ++e; + return e; + }, It = () => { + O.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), O.reserved = O.allocated.length, l.count_emval_handles = Ht; + }, V = { + toValue: (e) => (e || g("Cannot use deleted val. handle = " + e), O.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return O.allocate({ + refcount: 1, + value: e + }); + } + } + }, Ut = (e, r) => { + r = S(r), I(e, { + name: r, + fromWireType: (t) => { + var n = V.toValue(t); + return xe(t), n; + }, + toWireType: (t, n) => V.toHandle(n), + argPackAdvance: U, + readValueFromPointer: We, + destructorFunction: null + }); + }, xt = (e, r, t) => { + switch (r) { + case 1: + return t ? function(n) { + return this.fromWireType(j[n >> 0]); + } : function(n) { + return this.fromWireType(W[n >> 0]); + }; + case 2: + return t ? function(n) { + return this.fromWireType(X[n >> 1]); + } : function(n) { + return this.fromWireType(ee[n >> 1]); + }; + case 4: + return t ? function(n) { + return this.fromWireType(D[n >> 2]); + } : function(n) { + return this.fromWireType(m[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Vt = (e, r, t, n) => { + r = S(r); + function i() { + } + i.values = {}, I(e, { + name: r, + constructor: i, + fromWireType: function(a) { + return this.constructor.values[a]; + }, + toWireType: (a, o) => o.value, + argPackAdvance: U, + readValueFromPointer: xt(r, t, n), + destructorFunction: null + }), Me(r, i); + }, Ve = (e, r) => { + var t = N[e]; + return t === void 0 && g(r + " has unknown type " + yr(e)), t; + }, Yt = (e, r, t) => { + var n = Ve(e, "enum"); + r = S(r); + var i = n.constructor, a = Object.create(n.constructor.prototype, { + value: { + value: t + }, + constructor: { + value: oe(`${n.name}_${r}`, function() { + }) + } + }); + i.values[t] = a, i[r] = a; + }, Ye = (e) => { + if (e === null) + return "null"; + var r = typeof e; + return r === "object" || r === "array" || r === "function" ? e.toString() : "" + e; + }, Bt = (e, r) => { + switch (r) { + case 4: + return function(t) { + return this.fromWireType(Ke[t >> 2]); + }; + case 8: + return function(t) { + return this.fromWireType(Qe[t >> 3]); + }; + default: + throw new TypeError(`invalid float width (${r}): ${e}`); + } + }, Lt = (e, r, t) => { + r = S(r), I(e, { + name: r, + fromWireType: (n) => n, + toWireType: (n, i) => i, + argPackAdvance: U, + readValueFromPointer: Bt(r, t), + destructorFunction: null + }); + }, Nt = (e, r, t, n, i, a, o) => { + var s = Ie(r, t); + e = S(e), e = mr(e), i = M(n, i), Me(e, function() { + Te(`Cannot call ${e} due to unbound types`, s); + }, r - 1), z([], s, function(u) { + var f = [u[0], null].concat(u.slice(1)); + return pr(e, Ue(e, f, null, i, a), r - 1), []; + }); + }, zt = (e, r, t) => { + switch (r) { + case 1: + return t ? (n) => j[n >> 0] : (n) => W[n >> 0]; + case 2: + return t ? (n) => X[n >> 1] : (n) => ee[n >> 1]; + case 4: + return t ? (n) => D[n >> 2] : (n) => m[n >> 2]; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Xt = (e, r, t, n, i) => { + r = S(r); + var a = (v) => v; + if (n === 0) { + var o = 32 - 8 * t; + a = (v) => v << o >>> o; + } + var s = r.includes("unsigned"), u = (v, h) => { + }, f; + s ? f = function(v, h) { + return u(h, this.name), h >>> 0; + } : f = function(v, h) { + return u(h, this.name), h; + }, I(e, { + name: r, + fromWireType: a, + toWireType: f, + argPackAdvance: U, + readValueFromPointer: zt(r, t, n !== 0), + destructorFunction: null + }); + }, Gt = (e, r, t) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], i = n[r]; + function a(o) { + var s = m[o >> 2], u = m[o + 4 >> 2]; + return new i(j.buffer, u, s); + } + t = S(t), I(e, { + name: t, + fromWireType: a, + argPackAdvance: U, + readValueFromPointer: a + }, { + ignoreDuplicateRegistrations: !0 + }); + }, br = (e, r, t, n) => { + if (!(n > 0)) + return 0; + for (var i = t, a = t + n - 1, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (s <= 127) { + if (t >= a) + break; + r[t++] = s; + } else if (s <= 2047) { + if (t + 1 >= a) + break; + r[t++] = 192 | s >> 6, r[t++] = 128 | s & 63; + } else if (s <= 65535) { + if (t + 2 >= a) + break; + r[t++] = 224 | s >> 12, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } else { + if (t + 3 >= a) + break; + r[t++] = 240 | s >> 18, r[t++] = 128 | s >> 12 & 63, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } + } + return r[t] = 0, t - i; + }, Zt = (e, r, t) => br(e, W, r, t), wr = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n <= 127 ? r++ : n <= 2047 ? r += 2 : n >= 55296 && n <= 57343 ? (r += 4, ++t) : r += 3; + } + return r; + }, Tr = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, qt = (e, r, t) => { + for (var n = r + t, i = r; e[i] && !(i >= n); ) + ++i; + if (i - r > 16 && e.buffer && Tr) + return Tr.decode(e.subarray(r, i)); + for (var a = ""; r < i; ) { + var o = e[r++]; + if (!(o & 128)) { + a += String.fromCharCode(o); + continue; + } + var s = e[r++] & 63; + if ((o & 224) == 192) { + a += String.fromCharCode((o & 31) << 6 | s); + continue; + } + var u = e[r++] & 63; + if ((o & 240) == 224 ? o = (o & 15) << 12 | s << 6 | u : o = (o & 7) << 18 | s << 12 | u << 6 | e[r++] & 63, o < 65536) + a += String.fromCharCode(o); + else { + var f = o - 65536; + a += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023); + } + } + return a; + }, Be = (e, r) => e ? qt(W, e, r) : "", Jt = (e, r) => { + r = S(r); + var t = r === "std::string"; + I(e, { + name: r, + fromWireType(n) { + var i = m[n >> 2], a = n + 4, o; + if (t) + for (var s = a, u = 0; u <= i; ++u) { + var f = a + u; + if (u == i || W[f] == 0) { + var v = f - s, h = Be(s, v); + o === void 0 ? o = h : (o += "\0", o += h), s = f + 1; + } + } + else { + for (var p = new Array(i), u = 0; u < i; ++u) + p[u] = String.fromCharCode(W[a + u]); + o = p.join(""); + } + return Y(n), o; + }, + toWireType(n, i) { + i instanceof ArrayBuffer && (i = new Uint8Array(i)); + var a, o = typeof i == "string"; + o || i instanceof Uint8Array || i instanceof Uint8ClampedArray || i instanceof Int8Array || g("Cannot pass non-string to std::string"), t && o ? a = wr(i) : a = i.length; + var s = ze(4 + a + 1), u = s + 4; + if (m[s >> 2] = a, t && o) + Zt(i, u, a + 1); + else if (o) + for (var f = 0; f < a; ++f) { + var v = i.charCodeAt(f); + v > 255 && (Y(u), g("String has UTF-16 code units that do not fit in 8 bits")), W[u + f] = v; + } + else + for (var f = 0; f < a; ++f) + W[u + f] = i[f]; + return n !== null && n.push(Y, s), s; + }, + argPackAdvance: U, + readValueFromPointer: hr, + destructorFunction(n) { + Y(n); + } + }); + }, Pr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, Kt = (e, r) => { + for (var t = e, n = t >> 1, i = n + r / 2; !(n >= i) && ee[n]; ) + ++n; + if (t = n << 1, t - e > 32 && Pr) + return Pr.decode(W.subarray(e, t)); + for (var a = "", o = 0; !(o >= r / 2); ++o) { + var s = X[e + o * 2 >> 1]; + if (s == 0) + break; + a += String.fromCharCode(s); + } + return a; + }, Qt = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 2) + return 0; + t -= 2; + for (var i = r, a = t < e.length * 2 ? t / 2 : e.length, o = 0; o < a; ++o) { + var s = e.charCodeAt(o); + X[r >> 1] = s, r += 2; + } + return X[r >> 1] = 0, r - i; + }, en = (e) => e.length * 2, rn = (e, r) => { + for (var t = 0, n = ""; !(t >= r / 4); ) { + var i = D[e + t * 4 >> 2]; + if (i == 0) + break; + if (++t, i >= 65536) { + var a = i - 65536; + n += String.fromCharCode(55296 | a >> 10, 56320 | a & 1023); + } else + n += String.fromCharCode(i); + } + return n; + }, tn = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 4) + return 0; + for (var i = r, a = i + t - 4, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (D[r >> 2] = s, r += 4, r + 4 > a) + break; + } + return D[r >> 2] = 0, r - i; + }, nn = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n >= 55296 && n <= 57343 && ++t, r += 4; + } + return r; + }, an = (e, r, t) => { + t = S(t); + var n, i, a, o, s; + r === 2 ? (n = Kt, i = Qt, o = en, a = () => ee, s = 1) : r === 4 && (n = rn, i = tn, o = nn, a = () => m, s = 2), I(e, { + name: t, + fromWireType: (u) => { + for (var f = m[u >> 2], v = a(), h, p = u + 4, _ = 0; _ <= f; ++_) { + var P = u + 4 + _ * r; + if (_ == f || v[P >> s] == 0) { + var C = P - p, y = n(p, C); + h === void 0 ? h = y : (h += "\0", h += y), p = P + r; + } + } + return Y(u), h; + }, + toWireType: (u, f) => { + typeof f != "string" && g(`Cannot pass non-string to C++ string type ${t}`); + var v = o(f), h = ze(4 + v + r); + return m[h >> 2] = v >> s, i(f, h + 4, v + r), u !== null && u.push(Y, h), h; + }, + argPackAdvance: U, + readValueFromPointer: We, + destructorFunction(u) { + Y(u); + } + }); + }, on = (e, r, t, n, i, a) => { + _e[e] = { + name: S(r), + rawConstructor: M(t, n), + rawDestructor: M(i, a), + fields: [] + }; + }, sn = (e, r, t, n, i, a, o, s, u, f) => { + _e[e].fields.push({ + fieldName: S(r), + getterReturnType: t, + getter: M(n, i), + getterContext: a, + setterArgumentType: o, + setter: M(s, u), + setterContext: f + }); + }, un = (e, r) => { + r = S(r), I(e, { + isVoid: !0, + name: r, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (t, n) => { + } + }); + }, Le = [], ln = (e, r, t, n) => (e = Le[e], r = V.toValue(r), e(null, r, t, n)), cn = {}, fn = (e) => { + var r = cn[e]; + return r === void 0 ? S(e) : r; + }, Cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(r) { + r.$$$embind_global$$$ = r; + var t = typeof $$$embind_global$$$ == "object" && r.$$$embind_global$$$ == r; + return t || delete r.$$$embind_global$$$, t; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, vn = (e) => e === 0 ? V.toHandle(Cr()) : (e = fn(e), V.toHandle(Cr()[e])), dn = (e) => { + var r = Le.length; + return Le.push(e), r; + }, hn = (e, r) => { + for (var t = new Array(e), n = 0; n < e; ++n) + t[n] = Ve(m[r + n * 4 >> 2], "parameter " + n); + return t; + }, pn = Reflect.construct, _n = (e, r, t) => { + var n = [], i = e.toWireType(n, t); + return n.length && (m[r >> 2] = V.toHandle(n)), i; + }, gn = (e, r, t) => { + var n = hn(e, r), i = n.shift(); + e--; + var a = new Array(e), o = (u, f, v, h) => { + for (var p = 0, _ = 0; _ < e; ++_) + a[_] = n[_].readValueFromPointer(h + p), p += n[_].argPackAdvance; + for (var P = t === 1 ? pn(f, a) : f.apply(u, a), _ = 0; _ < e; ++_) { + var C, y; + (C = (y = n[_]).deleteObject) === null || C === void 0 || C.call(y, a[_]); + } + return _n(i, v, P); + }, s = `methodCaller<(${n.map((u) => u.name).join(", ")}) => ${i.name}>`; + return dn(oe(s, o)); + }, yn = (e) => { + e > 4 && (O.get(e).refcount += 1); + }, mn = (e) => { + var r = V.toValue(e); + De(r), xe(e); + }, $n = (e, r) => { + e = Ve(e, "_emval_take_value"); + var t = e.readValueFromPointer(r); + return V.toHandle(t); + }, bn = () => { + de(""); + }, wn = (e, r, t) => W.copyWithin(e, r, r + t), Tn = () => 2147483648, Pn = (e) => { + var r = ve.buffer, t = (e - r.byteLength + 65535) / 65536; + try { + return ve.grow(t), er(), 1; + } catch { + } + }, Cn = (e) => { + var r = W.length; + e >>>= 0; + var t = Tn(); + if (e > t) + return !1; + for (var n = (u, f) => u + (f - u % f) % f, i = 1; i <= 4; i *= 2) { + var a = r * (1 + 0.2 / i); + a = Math.min(a, e + 100663296); + var o = Math.min(t, n(Math.max(e, a), 65536)), s = Pn(o); + if (s) + return !0; + } + return !1; + }, Ne = {}, An = () => Ze || "./this.program", se = () => { + if (!se.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", r = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: An() + }; + for (var t in Ne) + Ne[t] === void 0 ? delete r[t] : r[t] = Ne[t]; + var n = []; + for (var t in r) + n.push(`${t}=${r[t]}`); + se.strings = n; + } + return se.strings; + }, Fn = (e, r) => { + for (var t = 0; t < e.length; ++t) + j[r++ >> 0] = e.charCodeAt(t); + j[r >> 0] = 0; + }, En = (e, r) => { + var t = 0; + return se().forEach((n, i) => { + var a = r + t; + m[e + i * 4 >> 2] = a, Fn(n, a), t += n.length + 1; + }), 0; + }, Sn = (e, r) => { + var t = se(); + m[e >> 2] = t.length; + var n = 0; + return t.forEach((i) => n += i.length + 1), m[r >> 2] = n, 0; + }, Rn = (e) => e, Pe = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Dn = (e, r) => { + for (var t = 0, n = 0; n <= r; t += e[n++]) + ; + return t; + }, Ar = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Fr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Wn = (e, r) => { + for (var t = new Date(e.getTime()); r > 0; ) { + var n = Pe(t.getFullYear()), i = t.getMonth(), a = (n ? Ar : Fr)[i]; + if (r > a - t.getDate()) + r -= a - t.getDate() + 1, t.setDate(1), i < 11 ? t.setMonth(i + 1) : (t.setMonth(0), t.setFullYear(t.getFullYear() + 1)); + else + return t.setDate(t.getDate() + r), t; + } + return t; + }; + function kn(e, r, t) { + var n = t > 0 ? t : wr(e) + 1, i = new Array(n), a = br(e, i, 0, i.length); + return r && (i.length = a), i; + } + var On = (e, r) => { + j.set(e, r); + }, jn = (e, r, t, n) => { + var i = m[n + 40 >> 2], a = { + tm_sec: D[n >> 2], + tm_min: D[n + 4 >> 2], + tm_hour: D[n + 8 >> 2], + tm_mday: D[n + 12 >> 2], + tm_mon: D[n + 16 >> 2], + tm_year: D[n + 20 >> 2], + tm_wday: D[n + 24 >> 2], + tm_yday: D[n + 28 >> 2], + tm_isdst: D[n + 32 >> 2], + tm_gmtoff: D[n + 36 >> 2], + tm_zone: i ? Be(i) : "" + }, o = Be(t), s = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var u in s) + o = o.replace(new RegExp(u, "g"), s[u]); + var f = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], v = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function h(c, d, A) { + for (var E = typeof c == "number" ? c.toString() : c || ""; E.length < d; ) + E = A[0] + E; + return E; + } + function p(c, d) { + return h(c, d, "0"); + } + function _(c, d) { + function A(J) { + return J < 0 ? -1 : J > 0 ? 1 : 0; + } + var E; + return (E = A(c.getFullYear() - d.getFullYear())) === 0 && (E = A(c.getMonth() - d.getMonth())) === 0 && (E = A(c.getDate() - d.getDate())), E; + } + function P(c) { + switch (c.getDay()) { + case 0: + return new Date(c.getFullYear() - 1, 11, 29); + case 1: + return c; + case 2: + return new Date(c.getFullYear(), 0, 3); + case 3: + return new Date(c.getFullYear(), 0, 2); + case 4: + return new Date(c.getFullYear(), 0, 1); + case 5: + return new Date(c.getFullYear() - 1, 11, 31); + case 6: + return new Date(c.getFullYear() - 1, 11, 30); + } + } + function C(c) { + var d = Wn(new Date(c.tm_year + 1900, 0, 1), c.tm_yday), A = new Date(d.getFullYear(), 0, 4), E = new Date(d.getFullYear() + 1, 0, 4), J = P(A), Ae = P(E); + return _(J, d) <= 0 ? _(Ae, d) <= 0 ? d.getFullYear() + 1 : d.getFullYear() : d.getFullYear() - 1; + } + var y = { + "%a": (c) => f[c.tm_wday].substring(0, 3), + "%A": (c) => f[c.tm_wday], + "%b": (c) => v[c.tm_mon].substring(0, 3), + "%B": (c) => v[c.tm_mon], + "%C": (c) => { + var d = c.tm_year + 1900; + return p(d / 100 | 0, 2); + }, + "%d": (c) => p(c.tm_mday, 2), + "%e": (c) => h(c.tm_mday, 2, " "), + "%g": (c) => C(c).toString().substring(2), + "%G": (c) => C(c), + "%H": (c) => p(c.tm_hour, 2), + "%I": (c) => { + var d = c.tm_hour; + return d == 0 ? d = 12 : d > 12 && (d -= 12), p(d, 2); + }, + "%j": (c) => p(c.tm_mday + Dn(Pe(c.tm_year + 1900) ? Ar : Fr, c.tm_mon - 1), 3), + "%m": (c) => p(c.tm_mon + 1, 2), + "%M": (c) => p(c.tm_min, 2), + "%n": () => ` +`, + "%p": (c) => c.tm_hour >= 0 && c.tm_hour < 12 ? "AM" : "PM", + "%S": (c) => p(c.tm_sec, 2), + "%t": () => " ", + "%u": (c) => c.tm_wday || 7, + "%U": (c) => { + var d = c.tm_yday + 7 - c.tm_wday; + return p(Math.floor(d / 7), 2); + }, + "%V": (c) => { + var d = Math.floor((c.tm_yday + 7 - (c.tm_wday + 6) % 7) / 7); + if ((c.tm_wday + 371 - c.tm_yday - 2) % 7 <= 2 && d++, d) { + if (d == 53) { + var E = (c.tm_wday + 371 - c.tm_yday) % 7; + E != 4 && (E != 3 || !Pe(c.tm_year)) && (d = 1); + } + } else { + d = 52; + var A = (c.tm_wday + 7 - c.tm_yday - 1) % 7; + (A == 4 || A == 5 && Pe(c.tm_year % 400 - 1)) && d++; + } + return p(d, 2); + }, + "%w": (c) => c.tm_wday, + "%W": (c) => { + var d = c.tm_yday + 7 - (c.tm_wday + 6) % 7; + return p(Math.floor(d / 7), 2); + }, + "%y": (c) => (c.tm_year + 1900).toString().substring(2), + "%Y": (c) => c.tm_year + 1900, + "%z": (c) => { + var d = c.tm_gmtoff, A = d >= 0; + return d = Math.abs(d) / 60, d = d / 60 * 100 + d % 60, (A ? "+" : "-") + ("0000" + d).slice(-4); + }, + "%Z": (c) => c.tm_zone, + "%%": () => "%" + }; + o = o.replace(/%%/g, "\0\0"); + for (var u in y) + o.includes(u) && (o = o.replace(new RegExp(u, "g"), y[u](a))); + o = o.replace(/\0\0/g, "%"); + var R = kn(o, !1); + return R.length > r ? 0 : (On(R, e), R.length - 1); + }, Mn = (e, r, t, n, i) => jn(e, r, t, n); + sr = l.InternalError = class extends Error { + constructor(r) { + super(r), this.name = "InternalError"; + } + }, st(), q = l.BindingError = class extends Error { + constructor(r) { + super(r), this.name = "BindingError"; + } + }, mt(), pt(), Ft(), gr = l.UnboundTypeError = Dt(Error, "UnboundTypeError"), Mt(), It(); + var Hn = { + s: qr, + t: Jr, + b: Qr, + g: et, + m: rt, + K: tt, + e: nt, + W: it, + d: Kr, + ea: at, + R: ot, + $: lt, + da: Wt, + ca: Ot, + x: jt, + Z: Ut, + y: Vt, + j: Yt, + M: Lt, + E: Nt, + u: Xt, + q: Gt, + L: Jt, + D: an, + w: on, + fa: sn, + aa: un, + S: ln, + ia: xe, + ha: vn, + _: gn, + N: yn, + P: mn, + ba: $n, + C: bn, + Y: wn, + X: Cn, + U: En, + V: Sn, + G: ei, + B: Yn, + H: Qn, + p: ri, + a: In, + f: Ln, + n: Vn, + k: zn, + J: Jn, + v: qn, + I: Kn, + A: ni, + Q: ai, + l: Nn, + i: Bn, + c: xn, + o: Un, + F: Gn, + ga: Xn, + r: ti, + h: Zn, + z: ii, + O: Rn, + T: Mn + }, F = Zr(), Y = l._free = (e) => (Y = l._free = F.la)(e), ze = l._malloc = (e) => (ze = l._malloc = F.ma)(e), Er = (e) => (Er = F.oa)(e), $ = (e, r) => ($ = F.pa)(e, r), ue = (e) => (ue = F.qa)(e), w = () => (w = F.ra)(), T = (e) => (T = F.sa)(e), Sr = (e) => (Sr = F.ta)(e), Rr = (e) => (Rr = F.ua)(e), Dr = (e, r, t) => (Dr = F.va)(e, r, t), Wr = (e) => (Wr = F.wa)(e); + l.dynCall_viijii = (e, r, t, n, i, a, o) => (l.dynCall_viijii = F.xa)(e, r, t, n, i, a, o); + var kr = l.dynCall_jiiii = (e, r, t, n, i) => (kr = l.dynCall_jiiii = F.ya)(e, r, t, n, i); + l.dynCall_iiiiij = (e, r, t, n, i, a, o) => (l.dynCall_iiiiij = F.za)(e, r, t, n, i, a, o), l.dynCall_iiiiijj = (e, r, t, n, i, a, o, s, u) => (l.dynCall_iiiiijj = F.Aa)(e, r, t, n, i, a, o, s, u), l.dynCall_iiiiiijj = (e, r, t, n, i, a, o, s, u, f) => (l.dynCall_iiiiiijj = F.Ba)(e, r, t, n, i, a, o, s, u, f); + function In(e, r) { + var t = w(); + try { + return b(e)(r); + } catch (n) { + if (T(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function Un(e, r, t, n) { + var i = w(); + try { + b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function xn(e, r, t) { + var n = w(); + try { + b(e)(r, t); + } catch (i) { + if (T(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Vn(e, r, t, n) { + var i = w(); + try { + return b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function Yn(e, r, t, n, i) { + var a = w(); + try { + return b(e)(r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Bn(e, r) { + var t = w(); + try { + b(e)(r); + } catch (n) { + if (T(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function Ln(e, r, t) { + var n = w(); + try { + return b(e)(r, t); + } catch (i) { + if (T(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Nn(e) { + var r = w(); + try { + b(e)(); + } catch (t) { + if (T(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function zn(e, r, t, n, i) { + var a = w(); + try { + return b(e)(r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Xn(e, r, t, n, i, a) { + var o = w(); + try { + b(e)(r, t, n, i, a); + } catch (s) { + if (T(o), s !== s + 0) + throw s; + $(1, 0); + } + } + function Gn(e, r, t, n, i) { + var a = w(); + try { + b(e)(r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Zn(e, r, t, n, i, a, o, s, u, f, v) { + var h = w(); + try { + b(e)(r, t, n, i, a, o, s, u, f, v); + } catch (p) { + if (T(h), p !== p + 0) + throw p; + $(1, 0); + } + } + function qn(e, r, t, n, i, a, o) { + var s = w(); + try { + return b(e)(r, t, n, i, a, o); + } catch (u) { + if (T(s), u !== u + 0) + throw u; + $(1, 0); + } + } + function Jn(e, r, t, n, i, a) { + var o = w(); + try { + return b(e)(r, t, n, i, a); + } catch (s) { + if (T(o), s !== s + 0) + throw s; + $(1, 0); + } + } + function Kn(e, r, t, n, i, a, o, s) { + var u = w(); + try { + return b(e)(r, t, n, i, a, o, s); + } catch (f) { + if (T(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function Qn(e, r, t, n) { + var i = w(); + try { + return b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function ei(e, r, t, n) { + var i = w(); + try { + return b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function ri(e) { + var r = w(); + try { + return b(e)(); + } catch (t) { + if (T(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function ti(e, r, t, n, i, a, o, s) { + var u = w(); + try { + b(e)(r, t, n, i, a, o, s); + } catch (f) { + if (T(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function ni(e, r, t, n, i, a, o, s, u, f, v, h) { + var p = w(); + try { + return b(e)(r, t, n, i, a, o, s, u, f, v, h); + } catch (_) { + if (T(p), _ !== _ + 0) + throw _; + $(1, 0); + } + } + function ii(e, r, t, n, i, a, o, s, u, f, v, h, p, _, P, C) { + var y = w(); + try { + b(e)(r, t, n, i, a, o, s, u, f, v, h, p, _, P, C); + } catch (R) { + if (T(y), R !== R + 0) + throw R; + $(1, 0); + } + } + function ai(e, r, t, n, i) { + var a = w(); + try { + return kr(e, r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + var Ce; + re = function e() { + Ce || Or(), Ce || (re = e); + }; + function Or() { + if (L > 0 || (Ir(), L > 0)) + return; + function e() { + Ce || (Ce = !0, l.calledRun = !0, !Je && (Ur(), Xe(l), l.onRuntimeInitialized && l.onRuntimeInitialized(), xr())); + } + l.setStatus ? (l.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + l.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (l.preInit) + for (typeof l.preInit == "function" && (l.preInit = [l.preInit]); l.preInit.length > 0; ) + l.preInit.pop()(); + return Or(), B.ready; + }; +})(); +function hi(k) { + return oi( + le, + k + ); +} +function pi(k) { + return si( + le, + k + ); +} +async function _i(k, B) { + return ui( + le, + k, + B + ); +} +async function gi(k, B) { + return li( + le, + k, + B + ); +} +async function yi(k, B) { + return ci( + le, + k, + B + ); +} +export { + bi as barcodeFormats, + wi as binarizers, + Ti as characterSets, + Pi as contentTypes, + Ci as defaultDecodeHints, + Ai as defaultEncodeHints, + Fi as defaultReaderOptions, + Ei as defaultWriterOptions, + Si as eanAddOnSymbols, + hi as getZXingModule, + Ri as purgeZXingModule, + gi as readBarcodesFromImageData, + _i as readBarcodesFromImageFile, + Di as readOutputEccLevels, + pi as setZXingModuleOverrides, + Wi as textModes, + yi as writeBarcodeToImageFile, + ki as writeInputEccLevels +}; diff --git a/node_modules/zxing-wasm/dist/es/reader/index.d.ts b/node_modules/zxing-wasm/dist/es/reader/index.d.ts new file mode 100644 index 0000000..c920d48 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/reader/index.d.ts @@ -0,0 +1,8 @@ +import { type ZXingReaderModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export { purgeZXingModule, type ZXingReaderModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/es/reader/index.js b/node_modules/zxing-wasm/dist/es/reader/index.js new file mode 100644 index 0000000..6da7cab --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/reader/index.js @@ -0,0 +1,1724 @@ +import { g as ai, s as oi, r as si, a as ui } from "../core-gSM15mHH.js"; +import { b as yi, c as mi, e as $i, f as bi, d as wi, d as Ti, h as Pi, p as Ci, i as Ai, t as Fi } from "../core-gSM15mHH.js"; +var Ae = (() => { + var M = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(z = {}) { + var l = z, Xe, le; + l.ready = new Promise((e, r) => { + Xe = e, le = r; + }); + var Ge = Object.assign({}, l), Ze = "./this.program", qe = typeof window == "object", ce = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var H = ""; + function Hr(e) { + return l.locateFile ? l.locateFile(e, H) : H + e; + } + var Fe; + (qe || ce) && (ce ? H = self.location.href : typeof document < "u" && document.currentScript && (H = document.currentScript.src), M && (H = M), H.indexOf("blob:") !== 0 ? H = H.substr(0, H.replace(/[?#].*/, "").lastIndexOf("/") + 1) : H = "", ce && (Fe = (e) => { + var r = new XMLHttpRequest(); + return r.open("GET", e, !1), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response); + })), l.print || console.log.bind(console); + var K = l.printErr || console.error.bind(console); + Object.assign(l, Ge), Ge = null, l.arguments && l.arguments, l.thisProgram && (Ze = l.thisProgram), l.quit && l.quit; + var Q; + l.wasmBinary && (Q = l.wasmBinary), typeof WebAssembly != "object" && ve("no native wasm support detected"); + var fe, Je = !1, k, O, X, ee, D, m, Ke, Qe; + function er() { + var e = fe.buffer; + l.HEAP8 = k = new Int8Array(e), l.HEAP16 = X = new Int16Array(e), l.HEAPU8 = O = new Uint8Array(e), l.HEAPU16 = ee = new Uint16Array(e), l.HEAP32 = D = new Int32Array(e), l.HEAPU32 = m = new Uint32Array(e), l.HEAPF32 = Ke = new Float32Array(e), l.HEAPF64 = Qe = new Float64Array(e); + } + var rr = [], tr = [], nr = []; + function Ur() { + if (l.preRun) + for (typeof l.preRun == "function" && (l.preRun = [l.preRun]); l.preRun.length; ) + Vr(l.preRun.shift()); + Ee(rr); + } + function Ir() { + Ee(tr); + } + function xr() { + if (l.postRun) + for (typeof l.postRun == "function" && (l.postRun = [l.postRun]); l.postRun.length; ) + Br(l.postRun.shift()); + Ee(nr); + } + function Vr(e) { + rr.unshift(e); + } + function Yr(e) { + tr.unshift(e); + } + function Br(e) { + nr.unshift(e); + } + var B = 0, re = null; + function Lr(e) { + var r; + B++, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, B); + } + function Nr(e) { + var r; + if (B--, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, B), B == 0 && re) { + var t = re; + re = null, t(); + } + } + function ve(e) { + var r; + (r = l.onAbort) === null || r === void 0 || r.call(l, e), e = "Aborted(" + e + ")", K(e), Je = !0, e += ". Build with -sASSERTIONS for more info."; + var t = new WebAssembly.RuntimeError(e); + throw le(t), t; + } + var zr = "data:application/octet-stream;base64,", ir = (e) => e.startsWith(zr), G; + G = "zxing_reader.wasm", ir(G) || (G = Hr(G)); + function ar(e) { + if (e == G && Q) + return new Uint8Array(Q); + if (Fe) + return Fe(e); + throw "both async and sync fetching of the wasm failed"; + } + function Xr(e) { + return !Q && (qe || ce) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((r) => { + if (!r.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return r.arrayBuffer(); + }).catch(() => ar(e)) : Promise.resolve().then(() => ar(e)); + } + function or(e, r, t) { + return Xr(e).then((n) => WebAssembly.instantiate(n, r)).then((n) => n).then(t, (n) => { + K(`failed to asynchronously prepare wasm: ${n}`), ve(n); + }); + } + function Gr(e, r, t, n) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !ir(r) && typeof fetch == "function" ? fetch(r, { + credentials: "same-origin" + }).then((i) => { + var a = WebAssembly.instantiateStreaming(i, t); + return a.then(n, function(o) { + return K(`wasm streaming compile failed: ${o}`), K("falling back to ArrayBuffer instantiation"), or(r, t, n); + }); + }) : or(r, t, n); + } + function Zr() { + var e = { + a: Hn + }; + function r(n, i) { + return F = n.exports, fe = F.ia, er(), _r = F.ma, Yr(F.ja), Nr(), F; + } + Lr(); + function t(n) { + r(n.instance); + } + if (l.instantiateWasm) + try { + return l.instantiateWasm(e, r); + } catch (n) { + K(`Module.instantiateWasm callback failed with error: ${n}`), le(n); + } + return Gr(Q, G, e, t).catch(le), {}; + } + var Ee = (e) => { + for (; e.length > 0; ) + e.shift()(l); + }; + l.noExitRuntime; + var de = [], he = 0, qr = (e) => { + var r = new Se(e); + return r.get_caught() || (r.set_caught(!0), he--), r.set_rethrown(!1), de.push(r), Rr(r.excPtr), r.get_exception_ptr(); + }, x = 0, Jr = () => { + $(0, 0); + var e = de.pop(); + Sr(e.excPtr), x = 0; + }; + function Se(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(r) { + m[this.ptr + 4 >> 2] = r; + }, this.get_type = function() { + return m[this.ptr + 4 >> 2]; + }, this.set_destructor = function(r) { + m[this.ptr + 8 >> 2] = r; + }, this.get_destructor = function() { + return m[this.ptr + 8 >> 2]; + }, this.set_caught = function(r) { + r = r ? 1 : 0, k[this.ptr + 12 >> 0] = r; + }, this.get_caught = function() { + return k[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(r) { + r = r ? 1 : 0, k[this.ptr + 13 >> 0] = r; + }, this.get_rethrown = function() { + return k[this.ptr + 13 >> 0] != 0; + }, this.init = function(r, t) { + this.set_adjusted_ptr(0), this.set_type(r), this.set_destructor(t); + }, this.set_adjusted_ptr = function(r) { + m[this.ptr + 16 >> 2] = r; + }, this.get_adjusted_ptr = function() { + return m[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var r = Or(this.get_type()); + if (r) + return m[this.excPtr >> 2]; + var t = this.get_adjusted_ptr(); + return t !== 0 ? t : this.excPtr; + }; + } + var Kr = (e) => { + throw x || (x = e), x; + }, Re = (e) => { + var r = x; + if (!r) + return ue(0), 0; + var t = new Se(r); + t.set_adjusted_ptr(r); + var n = t.get_type(); + if (!n) + return ue(0), r; + for (var i in e) { + var a = e[i]; + if (a === 0 || a === n) + break; + var o = t.ptr + 16; + if (Dr(a, n, o)) + return ue(a), r; + } + return ue(n), r; + }, Qr = () => Re([]), et = (e) => Re([e]), rt = (e, r) => Re([e, r]), tt = () => { + var e = de.pop(); + e || ve("no exception to throw"); + var r = e.excPtr; + throw e.get_rethrown() || (de.push(e), e.set_rethrown(!0), e.set_caught(!1), he++), x = r, x; + }, nt = (e, r, t) => { + var n = new Se(e); + throw n.init(r, t), x = e, he++, x; + }, it = () => he, pe = {}, De = (e) => { + for (; e.length; ) { + var r = e.pop(), t = e.pop(); + t(r); + } + }; + function Oe(e) { + return this.fromWireType(D[e >> 2]); + } + var Z = {}, L = {}, _e = {}, sr, ge = (e) => { + throw new sr(e); + }, N = (e, r, t) => { + e.forEach(function(s) { + _e[s] = r; + }); + function n(s) { + var u = t(s); + u.length !== e.length && ge("Mismatched type converter count"); + for (var f = 0; f < e.length; ++f) + U(e[f], u[f]); + } + var i = new Array(r.length), a = [], o = 0; + r.forEach((s, u) => { + L.hasOwnProperty(s) ? i[u] = L[s] : (a.push(s), Z.hasOwnProperty(s) || (Z[s] = []), Z[s].push(() => { + i[u] = L[s], ++o, o === a.length && n(i); + })); + }), a.length === 0 && n(i); + }, at = (e) => { + var r = pe[e]; + delete pe[e]; + var t = r.rawConstructor, n = r.rawDestructor, i = r.fields, a = i.map((o) => o.getterReturnType).concat(i.map((o) => o.setterArgumentType)); + N([e], a, (o) => { + var s = {}; + return i.forEach((u, f) => { + var v = u.fieldName, h = o[f], p = u.getter, _ = u.getterContext, b = o[f + i.length], C = u.setter, y = u.setterContext; + s[v] = { + read: (R) => h.fromWireType(p(_, R)), + write: (R, c) => { + var d = []; + C(y, R, b.toWireType(d, c)), De(d); + } + }; + }), [{ + name: r.name, + fromWireType: (u) => { + var f = {}; + for (var v in s) + f[v] = s[v].read(u); + return n(u), f; + }, + toWireType: (u, f) => { + for (var v in s) + if (!(v in f)) + throw new TypeError(`Missing field: "${v}"`); + var h = t(); + for (v in s) + s[v].write(h, f[v]); + return u !== null && u.push(n, h), h; + }, + argPackAdvance: I, + readValueFromPointer: Oe, + destructorFunction: n + }]; + }); + }, ot = (e, r, t, n, i) => { + }, st = () => { + for (var e = new Array(256), r = 0; r < 256; ++r) + e[r] = String.fromCharCode(r); + ur = e; + }, ur, S = (e) => { + for (var r = "", t = e; O[t]; ) + r += ur[O[t++]]; + return r; + }, q, g = (e) => { + throw new q(e); + }; + function ut(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = r.name; + if (e || g(`type "${n}" must have a positive integer typeid pointer`), L.hasOwnProperty(e)) { + if (t.ignoreDuplicateRegistrations) + return; + g(`Cannot register type '${n}' twice`); + } + if (L[e] = r, delete _e[e], Z.hasOwnProperty(e)) { + var i = Z[e]; + delete Z[e], i.forEach((a) => a()); + } + } + function U(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in r)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return ut(e, r, t); + } + var I = 8, lt = (e, r, t, n) => { + r = S(r), U(e, { + name: r, + fromWireType: function(i) { + return !!i; + }, + toWireType: function(i, a) { + return a ? t : n; + }, + argPackAdvance: I, + readValueFromPointer: function(i) { + return this.fromWireType(O[i]); + }, + destructorFunction: null + }); + }, ct = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), We = (e) => { + function r(t) { + return t.$$.ptrType.registeredClass.name; + } + g(r(e) + " instance already deleted"); + }, ke = !1, lr = (e) => { + }, ft = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, cr = (e) => { + e.count.value -= 1; + var r = e.count.value === 0; + r && ft(e); + }, fr = (e, r, t) => { + if (r === t) + return e; + if (t.baseClass === void 0) + return null; + var n = fr(e, r, t.baseClass); + return n === null ? null : t.downcast(n); + }, vr = {}, vt = () => Object.keys(ie).length, dt = () => { + var e = []; + for (var r in ie) + ie.hasOwnProperty(r) && e.push(ie[r]); + return e; + }, te = [], je = () => { + for (; te.length; ) { + var e = te.pop(); + e.$$.deleteScheduled = !1, e.delete(); + } + }, ne, ht = (e) => { + ne = e, te.length && ne && ne(je); + }, pt = () => { + l.getInheritedInstanceCount = vt, l.getLiveInheritedInstances = dt, l.flushPendingDeletes = je, l.setDelayFunction = ht; + }, ie = {}, _t = (e, r) => { + for (r === void 0 && g("ptr should not be undefined"); e.baseClass; ) + r = e.upcast(r), e = e.baseClass; + return r; + }, gt = (e, r) => (r = _t(e, r), ie[r]), ye = (e, r) => { + (!r.ptrType || !r.ptr) && ge("makeClassHandle requires ptr and ptrType"); + var t = !!r.smartPtrType, n = !!r.smartPtr; + return t !== n && ge("Both smartPtrType and smartPtr must be specified"), r.count = { + value: 1 + }, ae(Object.create(e, { + $$: { + value: r, + writable: !0 + } + })); + }; + function yt(e) { + var r = this.getPointee(e); + if (!r) + return this.destructor(e), null; + var t = gt(this.registeredClass, r); + if (t !== void 0) { + if (t.$$.count.value === 0) + return t.$$.ptr = r, t.$$.smartPtr = e, t.clone(); + var n = t.clone(); + return this.destructor(e), n; + } + function i() { + return this.isSmartPointer ? ye(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: r, + smartPtrType: this, + smartPtr: e + }) : ye(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var a = this.registeredClass.getActualType(r), o = vr[a]; + if (!o) + return i.call(this); + var s; + this.isConst ? s = o.constPointerType : s = o.pointerType; + var u = fr(r, this.registeredClass, s.registeredClass); + return u === null ? i.call(this) : this.isSmartPointer ? ye(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u, + smartPtrType: this, + smartPtr: e + }) : ye(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u + }); + } + var ae = (e) => typeof FinalizationRegistry > "u" ? (ae = (r) => r, e) : (ke = new FinalizationRegistry((r) => { + cr(r.$$); + }), ae = (r) => { + var t = r.$$, n = !!t.smartPtr; + if (n) { + var i = { + $$: t + }; + ke.register(r, i, r); + } + return r; + }, lr = (r) => ke.unregister(r), ae(e)), mt = () => { + Object.assign(me.prototype, { + isAliasOf(e) { + if (!(this instanceof me) || !(e instanceof me)) + return !1; + var r = this.$$.ptrType.registeredClass, t = this.$$.ptr; + e.$$ = e.$$; + for (var n = e.$$.ptrType.registeredClass, i = e.$$.ptr; r.baseClass; ) + t = r.upcast(t), r = r.baseClass; + for (; n.baseClass; ) + i = n.upcast(i), n = n.baseClass; + return r === n && t === i; + }, + clone() { + if (this.$$.ptr || We(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ae(Object.create(Object.getPrototypeOf(this), { + $$: { + value: ct(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e; + }, + delete() { + this.$$.ptr || We(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), lr(this), cr(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || We(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), te.push(this), te.length === 1 && ne && ne(je), this.$$.deleteScheduled = !0, this; + } + }); + }; + function me() { + } + var oe = (e, r) => Object.defineProperty(r, "name", { + value: e + }), dr = (e, r, t) => { + if (e[r].overloadTable === void 0) { + var n = e[r]; + e[r] = function() { + return e[r].overloadTable.hasOwnProperty(arguments.length) || g(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`), e[r].overloadTable[arguments.length].apply(this, arguments); + }, e[r].overloadTable = [], e[r].overloadTable[n.argCount] = n; + } + }, Me = (e, r, t) => { + l.hasOwnProperty(e) ? ((t === void 0 || l[e].overloadTable !== void 0 && l[e].overloadTable[t] !== void 0) && g(`Cannot register public name '${e}' twice`), dr(l, e, e), l.hasOwnProperty(t) && g(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`), l[e].overloadTable[t] = r) : (l[e] = r, t !== void 0 && (l[e].numArguments = t)); + }, $t = 48, bt = 57, wt = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var r = e.charCodeAt(0); + return r >= $t && r <= bt ? `_${e}` : e; + }; + function Tt(e, r, t, n, i, a, o, s) { + this.name = e, this.constructor = r, this.instancePrototype = t, this.rawDestructor = n, this.baseClass = i, this.getActualType = a, this.upcast = o, this.downcast = s, this.pureVirtualFunctions = []; + } + var He = (e, r, t) => { + for (; r !== t; ) + r.upcast || g(`Expected null or instance of ${t.name}, got an instance of ${r.name}`), e = r.upcast(e), r = r.baseClass; + return e; + }; + function Pt(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function Ct(e, r) { + var t; + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), this.isSmartPointer ? (t = this.rawConstructor(), e !== null && e.push(this.rawDestructor, t), t) : 0; + (!r || !r.$$) && g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + var n = r.$$.ptrType.registeredClass; + if (t = He(r.$$.ptr, n, this.registeredClass), this.isSmartPointer) + switch (r.$$.smartPtr === void 0 && g("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + r.$$.smartPtrType === this ? t = r.$$.smartPtr : g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + t = r.$$.smartPtr; + break; + case 2: + if (r.$$.smartPtrType === this) + t = r.$$.smartPtr; + else { + var i = r.clone(); + t = this.rawShare(t, V.toHandle(() => i.delete())), e !== null && e.push(this.rawDestructor, t); + } + break; + default: + g("Unsupporting sharing policy"); + } + return t; + } + function At(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function hr(e) { + return this.fromWireType(m[e >> 2]); + } + var Ft = () => { + Object.assign($e.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var r; + (r = this.rawDestructor) === null || r === void 0 || r.call(this, e); + }, + argPackAdvance: I, + readValueFromPointer: hr, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: yt + }); + }; + function $e(e, r, t, n, i, a, o, s, u, f, v) { + this.name = e, this.registeredClass = r, this.isReference = t, this.isConst = n, this.isSmartPointer = i, this.pointeeType = a, this.sharingPolicy = o, this.rawGetPointee = s, this.rawConstructor = u, this.rawShare = f, this.rawDestructor = v, !i && r.baseClass === void 0 ? n ? (this.toWireType = Pt, this.destructorFunction = null) : (this.toWireType = At, this.destructorFunction = null) : this.toWireType = Ct; + } + var pr = (e, r, t) => { + l.hasOwnProperty(e) || ge("Replacing nonexistant public symbol"), l[e].overloadTable !== void 0 && t !== void 0 ? l[e].overloadTable[t] = r : (l[e] = r, l[e].argCount = t); + }, Et = (e, r, t) => { + var n = l["dynCall_" + e]; + return t && t.length ? n.apply(null, [r].concat(t)) : n.call(null, r); + }, be = [], _r, w = (e) => { + var r = be[e]; + return r || (e >= be.length && (be.length = e + 1), be[e] = r = _r.get(e)), r; + }, St = (e, r, t) => { + if (e.includes("j")) + return Et(e, r, t); + var n = w(r).apply(null, t); + return n; + }, Rt = (e, r) => { + var t = []; + return function() { + return t.length = 0, Object.assign(t, arguments), St(e, r, t); + }; + }, j = (e, r) => { + e = S(e); + function t() { + return e.includes("j") ? Rt(e, r) : w(r); + } + var n = t(); + return typeof n != "function" && g(`unknown function pointer with signature ${e}: ${r}`), n; + }, Dt = (e, r) => { + var t = oe(r, function(n) { + this.name = r, this.message = n; + var i = new Error(n).stack; + i !== void 0 && (this.stack = this.toString() + ` +` + i.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return t.prototype = Object.create(e.prototype), t.prototype.constructor = t, t.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, t; + }, gr, yr = (e) => { + var r = Er(e), t = S(r); + return Y(r), t; + }, we = (e, r) => { + var t = [], n = {}; + function i(a) { + if (!n[a] && !L[a]) { + if (_e[a]) { + _e[a].forEach(i); + return; + } + t.push(a), n[a] = !0; + } + } + throw r.forEach(i), new gr(`${e}: ` + t.map(yr).join([", "])); + }, Ot = (e, r, t, n, i, a, o, s, u, f, v, h, p) => { + v = S(v), a = j(i, a), s && (s = j(o, s)), f && (f = j(u, f)), p = j(h, p); + var _ = wt(v); + Me(_, function() { + we(`Cannot construct ${v} due to unbound types`, [n]); + }), N([e, r, t], n ? [n] : [], function(b) { + b = b[0]; + var C, y; + n ? (C = b.registeredClass, y = C.instancePrototype) : y = me.prototype; + var R = oe(v, function() { + if (Object.getPrototypeOf(this) !== c) + throw new q("Use 'new' to construct " + v); + if (d.constructor_body === void 0) + throw new q(v + " has no accessible constructor"); + var Mr = d.constructor_body[arguments.length]; + if (Mr === void 0) + throw new q(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`); + return Mr.apply(this, arguments); + }), c = Object.create(y, { + constructor: { + value: R + } + }); + R.prototype = c; + var d = new Tt(v, R, c, p, C, a, s, f); + if (d.baseClass) { + var A, E; + (E = (A = d.baseClass).__derivedClasses) !== null && E !== void 0 || (A.__derivedClasses = []), d.baseClass.__derivedClasses.push(d); + } + var J = new $e(v, d, !0, !1, !1), Ce = new $e(v + "*", d, !1, !1, !1), jr = new $e(v + " const*", d, !1, !0, !1); + return vr[e] = { + pointerType: Ce, + constPointerType: jr + }, pr(_, R), [J, Ce, jr]; + }); + }, Ue = (e, r) => { + for (var t = [], n = 0; n < e; n++) + t.push(m[r + n * 4 >> 2]); + return t; + }; + function Wt(e) { + for (var r = 1; r < e.length; ++r) + if (e[r] !== null && e[r].destructorFunction === void 0) + return !0; + return !1; + } + function Ie(e, r, t, n, i, a) { + var o = r.length; + o < 2 && g("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var s = r[1] !== null && t !== null, u = Wt(r), f = r[0].name !== "void", v = o - 2, h = new Array(v), p = [], _ = [], b = function() { + arguments.length !== v && g(`function ${e} called with ${arguments.length} arguments, expected ${v}`), _.length = 0; + var C; + p.length = s ? 2 : 1, p[0] = i, s && (C = r[1].toWireType(_, this), p[1] = C); + for (var y = 0; y < v; ++y) + h[y] = r[y + 2].toWireType(_, arguments[y]), p.push(h[y]); + var R = n.apply(null, p); + function c(d) { + if (u) + De(_); + else + for (var A = s ? 1 : 2; A < r.length; A++) { + var E = A === 1 ? C : h[A - 2]; + r[A].destructorFunction !== null && r[A].destructorFunction(E); + } + if (f) + return r[0].fromWireType(d); + } + return c(R); + }; + return oe(e, b); + } + var kt = (e, r, t, n, i, a) => { + var o = Ue(r, t); + i = j(n, i), N([], [e], function(s) { + s = s[0]; + var u = `constructor ${s.name}`; + if (s.registeredClass.constructor_body === void 0 && (s.registeredClass.constructor_body = []), s.registeredClass.constructor_body[r - 1] !== void 0) + throw new q(`Cannot register multiple constructors with identical number of parameters (${r - 1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return s.registeredClass.constructor_body[r - 1] = () => { + we(`Cannot construct ${s.name} due to unbound types`, o); + }, N([], o, (f) => (f.splice(1, 0, null), s.registeredClass.constructor_body[r - 1] = Ie(u, f, null, i, a), [])), []; + }); + }, mr = (e) => { + e = e.trim(); + const r = e.indexOf("("); + return r !== -1 ? e.substr(0, r) : e; + }, jt = (e, r, t, n, i, a, o, s, u) => { + var f = Ue(t, n); + r = S(r), r = mr(r), a = j(i, a), N([], [e], function(v) { + v = v[0]; + var h = `${v.name}.${r}`; + r.startsWith("@@") && (r = Symbol[r.substring(2)]), s && v.registeredClass.pureVirtualFunctions.push(r); + function p() { + we(`Cannot call ${h} due to unbound types`, f); + } + var _ = v.registeredClass.instancePrototype, b = _[r]; + return b === void 0 || b.overloadTable === void 0 && b.className !== v.name && b.argCount === t - 2 ? (p.argCount = t - 2, p.className = v.name, _[r] = p) : (dr(_, r, h), _[r].overloadTable[t - 2] = p), N([], f, function(C) { + var y = Ie(h, C, v, a, o); + return _[r].overloadTable === void 0 ? (y.argCount = t - 2, _[r] = y) : _[r].overloadTable[t - 2] = y, []; + }), []; + }); + }; + function Mt() { + Object.assign($r.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var r = this.freelist.pop() || this.allocated.length; + return this.allocated[r] = e, r; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function $r() { + this.allocated = [void 0], this.freelist = []; + } + var W = new $r(), xe = (e) => { + e >= W.reserved && --W.get(e).refcount === 0 && W.free(e); + }, Ht = () => { + for (var e = 0, r = W.reserved; r < W.allocated.length; ++r) + W.allocated[r] !== void 0 && ++e; + return e; + }, Ut = () => { + W.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), W.reserved = W.allocated.length, l.count_emval_handles = Ht; + }, V = { + toValue: (e) => (e || g("Cannot use deleted val. handle = " + e), W.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return W.allocate({ + refcount: 1, + value: e + }); + } + } + }, It = (e, r) => { + r = S(r), U(e, { + name: r, + fromWireType: (t) => { + var n = V.toValue(t); + return xe(t), n; + }, + toWireType: (t, n) => V.toHandle(n), + argPackAdvance: I, + readValueFromPointer: Oe, + destructorFunction: null + }); + }, xt = (e, r, t) => { + switch (r) { + case 1: + return t ? function(n) { + return this.fromWireType(k[n >> 0]); + } : function(n) { + return this.fromWireType(O[n >> 0]); + }; + case 2: + return t ? function(n) { + return this.fromWireType(X[n >> 1]); + } : function(n) { + return this.fromWireType(ee[n >> 1]); + }; + case 4: + return t ? function(n) { + return this.fromWireType(D[n >> 2]); + } : function(n) { + return this.fromWireType(m[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Vt = (e, r, t, n) => { + r = S(r); + function i() { + } + i.values = {}, U(e, { + name: r, + constructor: i, + fromWireType: function(a) { + return this.constructor.values[a]; + }, + toWireType: (a, o) => o.value, + argPackAdvance: I, + readValueFromPointer: xt(r, t, n), + destructorFunction: null + }), Me(r, i); + }, Ve = (e, r) => { + var t = L[e]; + return t === void 0 && g(r + " has unknown type " + yr(e)), t; + }, Yt = (e, r, t) => { + var n = Ve(e, "enum"); + r = S(r); + var i = n.constructor, a = Object.create(n.constructor.prototype, { + value: { + value: t + }, + constructor: { + value: oe(`${n.name}_${r}`, function() { + }) + } + }); + i.values[t] = a, i[r] = a; + }, Ye = (e) => { + if (e === null) + return "null"; + var r = typeof e; + return r === "object" || r === "array" || r === "function" ? e.toString() : "" + e; + }, Bt = (e, r) => { + switch (r) { + case 4: + return function(t) { + return this.fromWireType(Ke[t >> 2]); + }; + case 8: + return function(t) { + return this.fromWireType(Qe[t >> 3]); + }; + default: + throw new TypeError(`invalid float width (${r}): ${e}`); + } + }, Lt = (e, r, t) => { + r = S(r), U(e, { + name: r, + fromWireType: (n) => n, + toWireType: (n, i) => i, + argPackAdvance: I, + readValueFromPointer: Bt(r, t), + destructorFunction: null + }); + }, Nt = (e, r, t, n, i, a, o) => { + var s = Ue(r, t); + e = S(e), e = mr(e), i = j(n, i), Me(e, function() { + we(`Cannot call ${e} due to unbound types`, s); + }, r - 1), N([], s, function(u) { + var f = [u[0], null].concat(u.slice(1)); + return pr(e, Ie(e, f, null, i, a), r - 1), []; + }); + }, zt = (e, r, t) => { + switch (r) { + case 1: + return t ? (n) => k[n >> 0] : (n) => O[n >> 0]; + case 2: + return t ? (n) => X[n >> 1] : (n) => ee[n >> 1]; + case 4: + return t ? (n) => D[n >> 2] : (n) => m[n >> 2]; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Xt = (e, r, t, n, i) => { + r = S(r); + var a = (v) => v; + if (n === 0) { + var o = 32 - 8 * t; + a = (v) => v << o >>> o; + } + var s = r.includes("unsigned"), u = (v, h) => { + }, f; + s ? f = function(v, h) { + return u(h, this.name), h >>> 0; + } : f = function(v, h) { + return u(h, this.name), h; + }, U(e, { + name: r, + fromWireType: a, + toWireType: f, + argPackAdvance: I, + readValueFromPointer: zt(r, t, n !== 0), + destructorFunction: null + }); + }, Gt = (e, r, t) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], i = n[r]; + function a(o) { + var s = m[o >> 2], u = m[o + 4 >> 2]; + return new i(k.buffer, u, s); + } + t = S(t), U(e, { + name: t, + fromWireType: a, + argPackAdvance: I, + readValueFromPointer: a + }, { + ignoreDuplicateRegistrations: !0 + }); + }, br = (e, r, t, n) => { + if (!(n > 0)) + return 0; + for (var i = t, a = t + n - 1, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (s <= 127) { + if (t >= a) + break; + r[t++] = s; + } else if (s <= 2047) { + if (t + 1 >= a) + break; + r[t++] = 192 | s >> 6, r[t++] = 128 | s & 63; + } else if (s <= 65535) { + if (t + 2 >= a) + break; + r[t++] = 224 | s >> 12, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } else { + if (t + 3 >= a) + break; + r[t++] = 240 | s >> 18, r[t++] = 128 | s >> 12 & 63, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } + } + return r[t] = 0, t - i; + }, Zt = (e, r, t) => br(e, O, r, t), wr = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n <= 127 ? r++ : n <= 2047 ? r += 2 : n >= 55296 && n <= 57343 ? (r += 4, ++t) : r += 3; + } + return r; + }, Tr = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, qt = (e, r, t) => { + for (var n = r + t, i = r; e[i] && !(i >= n); ) + ++i; + if (i - r > 16 && e.buffer && Tr) + return Tr.decode(e.subarray(r, i)); + for (var a = ""; r < i; ) { + var o = e[r++]; + if (!(o & 128)) { + a += String.fromCharCode(o); + continue; + } + var s = e[r++] & 63; + if ((o & 224) == 192) { + a += String.fromCharCode((o & 31) << 6 | s); + continue; + } + var u = e[r++] & 63; + if ((o & 240) == 224 ? o = (o & 15) << 12 | s << 6 | u : o = (o & 7) << 18 | s << 12 | u << 6 | e[r++] & 63, o < 65536) + a += String.fromCharCode(o); + else { + var f = o - 65536; + a += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023); + } + } + return a; + }, Be = (e, r) => e ? qt(O, e, r) : "", Jt = (e, r) => { + r = S(r); + var t = r === "std::string"; + U(e, { + name: r, + fromWireType(n) { + var i = m[n >> 2], a = n + 4, o; + if (t) + for (var s = a, u = 0; u <= i; ++u) { + var f = a + u; + if (u == i || O[f] == 0) { + var v = f - s, h = Be(s, v); + o === void 0 ? o = h : (o += "\0", o += h), s = f + 1; + } + } + else { + for (var p = new Array(i), u = 0; u < i; ++u) + p[u] = String.fromCharCode(O[a + u]); + o = p.join(""); + } + return Y(n), o; + }, + toWireType(n, i) { + i instanceof ArrayBuffer && (i = new Uint8Array(i)); + var a, o = typeof i == "string"; + o || i instanceof Uint8Array || i instanceof Uint8ClampedArray || i instanceof Int8Array || g("Cannot pass non-string to std::string"), t && o ? a = wr(i) : a = i.length; + var s = ze(4 + a + 1), u = s + 4; + if (m[s >> 2] = a, t && o) + Zt(i, u, a + 1); + else if (o) + for (var f = 0; f < a; ++f) { + var v = i.charCodeAt(f); + v > 255 && (Y(u), g("String has UTF-16 code units that do not fit in 8 bits")), O[u + f] = v; + } + else + for (var f = 0; f < a; ++f) + O[u + f] = i[f]; + return n !== null && n.push(Y, s), s; + }, + argPackAdvance: I, + readValueFromPointer: hr, + destructorFunction(n) { + Y(n); + } + }); + }, Pr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, Kt = (e, r) => { + for (var t = e, n = t >> 1, i = n + r / 2; !(n >= i) && ee[n]; ) + ++n; + if (t = n << 1, t - e > 32 && Pr) + return Pr.decode(O.subarray(e, t)); + for (var a = "", o = 0; !(o >= r / 2); ++o) { + var s = X[e + o * 2 >> 1]; + if (s == 0) + break; + a += String.fromCharCode(s); + } + return a; + }, Qt = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 2) + return 0; + t -= 2; + for (var i = r, a = t < e.length * 2 ? t / 2 : e.length, o = 0; o < a; ++o) { + var s = e.charCodeAt(o); + X[r >> 1] = s, r += 2; + } + return X[r >> 1] = 0, r - i; + }, en = (e) => e.length * 2, rn = (e, r) => { + for (var t = 0, n = ""; !(t >= r / 4); ) { + var i = D[e + t * 4 >> 2]; + if (i == 0) + break; + if (++t, i >= 65536) { + var a = i - 65536; + n += String.fromCharCode(55296 | a >> 10, 56320 | a & 1023); + } else + n += String.fromCharCode(i); + } + return n; + }, tn = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 4) + return 0; + for (var i = r, a = i + t - 4, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (D[r >> 2] = s, r += 4, r + 4 > a) + break; + } + return D[r >> 2] = 0, r - i; + }, nn = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n >= 55296 && n <= 57343 && ++t, r += 4; + } + return r; + }, an = (e, r, t) => { + t = S(t); + var n, i, a, o, s; + r === 2 ? (n = Kt, i = Qt, o = en, a = () => ee, s = 1) : r === 4 && (n = rn, i = tn, o = nn, a = () => m, s = 2), U(e, { + name: t, + fromWireType: (u) => { + for (var f = m[u >> 2], v = a(), h, p = u + 4, _ = 0; _ <= f; ++_) { + var b = u + 4 + _ * r; + if (_ == f || v[b >> s] == 0) { + var C = b - p, y = n(p, C); + h === void 0 ? h = y : (h += "\0", h += y), p = b + r; + } + } + return Y(u), h; + }, + toWireType: (u, f) => { + typeof f != "string" && g(`Cannot pass non-string to C++ string type ${t}`); + var v = o(f), h = ze(4 + v + r); + return m[h >> 2] = v >> s, i(f, h + 4, v + r), u !== null && u.push(Y, h), h; + }, + argPackAdvance: I, + readValueFromPointer: Oe, + destructorFunction(u) { + Y(u); + } + }); + }, on = (e, r, t, n, i, a) => { + pe[e] = { + name: S(r), + rawConstructor: j(t, n), + rawDestructor: j(i, a), + fields: [] + }; + }, sn = (e, r, t, n, i, a, o, s, u, f) => { + pe[e].fields.push({ + fieldName: S(r), + getterReturnType: t, + getter: j(n, i), + getterContext: a, + setterArgumentType: o, + setter: j(s, u), + setterContext: f + }); + }, un = (e, r) => { + r = S(r), U(e, { + isVoid: !0, + name: r, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (t, n) => { + } + }); + }, Le = [], ln = (e, r, t, n) => (e = Le[e], r = V.toValue(r), e(null, r, t, n)), cn = {}, fn = (e) => { + var r = cn[e]; + return r === void 0 ? S(e) : r; + }, Cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(r) { + r.$$$embind_global$$$ = r; + var t = typeof $$$embind_global$$$ == "object" && r.$$$embind_global$$$ == r; + return t || delete r.$$$embind_global$$$, t; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, vn = (e) => e === 0 ? V.toHandle(Cr()) : (e = fn(e), V.toHandle(Cr()[e])), dn = (e) => { + var r = Le.length; + return Le.push(e), r; + }, hn = (e, r) => { + for (var t = new Array(e), n = 0; n < e; ++n) + t[n] = Ve(m[r + n * 4 >> 2], "parameter " + n); + return t; + }, pn = Reflect.construct, _n = (e, r, t) => { + var n = [], i = e.toWireType(n, t); + return n.length && (m[r >> 2] = V.toHandle(n)), i; + }, gn = (e, r, t) => { + var n = hn(e, r), i = n.shift(); + e--; + var a = new Array(e), o = (u, f, v, h) => { + for (var p = 0, _ = 0; _ < e; ++_) + a[_] = n[_].readValueFromPointer(h + p), p += n[_].argPackAdvance; + for (var b = t === 1 ? pn(f, a) : f.apply(u, a), _ = 0; _ < e; ++_) { + var C, y; + (C = (y = n[_]).deleteObject) === null || C === void 0 || C.call(y, a[_]); + } + return _n(i, v, b); + }, s = `methodCaller<(${n.map((u) => u.name).join(", ")}) => ${i.name}>`; + return dn(oe(s, o)); + }, yn = (e) => { + e > 4 && (W.get(e).refcount += 1); + }, mn = (e) => { + var r = V.toValue(e); + De(r), xe(e); + }, $n = (e, r) => { + e = Ve(e, "_emval_take_value"); + var t = e.readValueFromPointer(r); + return V.toHandle(t); + }, bn = () => { + ve(""); + }, wn = (e, r, t) => O.copyWithin(e, r, r + t), Tn = () => 2147483648, Pn = (e) => { + var r = fe.buffer, t = (e - r.byteLength + 65535) / 65536; + try { + return fe.grow(t), er(), 1; + } catch { + } + }, Cn = (e) => { + var r = O.length; + e >>>= 0; + var t = Tn(); + if (e > t) + return !1; + for (var n = (u, f) => u + (f - u % f) % f, i = 1; i <= 4; i *= 2) { + var a = r * (1 + 0.2 / i); + a = Math.min(a, e + 100663296); + var o = Math.min(t, n(Math.max(e, a), 65536)), s = Pn(o); + if (s) + return !0; + } + return !1; + }, Ne = {}, An = () => Ze || "./this.program", se = () => { + if (!se.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", r = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: An() + }; + for (var t in Ne) + Ne[t] === void 0 ? delete r[t] : r[t] = Ne[t]; + var n = []; + for (var t in r) + n.push(`${t}=${r[t]}`); + se.strings = n; + } + return se.strings; + }, Fn = (e, r) => { + for (var t = 0; t < e.length; ++t) + k[r++ >> 0] = e.charCodeAt(t); + k[r >> 0] = 0; + }, En = (e, r) => { + var t = 0; + return se().forEach((n, i) => { + var a = r + t; + m[e + i * 4 >> 2] = a, Fn(n, a), t += n.length + 1; + }), 0; + }, Sn = (e, r) => { + var t = se(); + m[e >> 2] = t.length; + var n = 0; + return t.forEach((i) => n += i.length + 1), m[r >> 2] = n, 0; + }, Rn = (e) => e, Te = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Dn = (e, r) => { + for (var t = 0, n = 0; n <= r; t += e[n++]) + ; + return t; + }, Ar = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Fr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], On = (e, r) => { + for (var t = new Date(e.getTime()); r > 0; ) { + var n = Te(t.getFullYear()), i = t.getMonth(), a = (n ? Ar : Fr)[i]; + if (r > a - t.getDate()) + r -= a - t.getDate() + 1, t.setDate(1), i < 11 ? t.setMonth(i + 1) : (t.setMonth(0), t.setFullYear(t.getFullYear() + 1)); + else + return t.setDate(t.getDate() + r), t; + } + return t; + }; + function Wn(e, r, t) { + var n = t > 0 ? t : wr(e) + 1, i = new Array(n), a = br(e, i, 0, i.length); + return r && (i.length = a), i; + } + var kn = (e, r) => { + k.set(e, r); + }, jn = (e, r, t, n) => { + var i = m[n + 40 >> 2], a = { + tm_sec: D[n >> 2], + tm_min: D[n + 4 >> 2], + tm_hour: D[n + 8 >> 2], + tm_mday: D[n + 12 >> 2], + tm_mon: D[n + 16 >> 2], + tm_year: D[n + 20 >> 2], + tm_wday: D[n + 24 >> 2], + tm_yday: D[n + 28 >> 2], + tm_isdst: D[n + 32 >> 2], + tm_gmtoff: D[n + 36 >> 2], + tm_zone: i ? Be(i) : "" + }, o = Be(t), s = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var u in s) + o = o.replace(new RegExp(u, "g"), s[u]); + var f = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], v = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function h(c, d, A) { + for (var E = typeof c == "number" ? c.toString() : c || ""; E.length < d; ) + E = A[0] + E; + return E; + } + function p(c, d) { + return h(c, d, "0"); + } + function _(c, d) { + function A(J) { + return J < 0 ? -1 : J > 0 ? 1 : 0; + } + var E; + return (E = A(c.getFullYear() - d.getFullYear())) === 0 && (E = A(c.getMonth() - d.getMonth())) === 0 && (E = A(c.getDate() - d.getDate())), E; + } + function b(c) { + switch (c.getDay()) { + case 0: + return new Date(c.getFullYear() - 1, 11, 29); + case 1: + return c; + case 2: + return new Date(c.getFullYear(), 0, 3); + case 3: + return new Date(c.getFullYear(), 0, 2); + case 4: + return new Date(c.getFullYear(), 0, 1); + case 5: + return new Date(c.getFullYear() - 1, 11, 31); + case 6: + return new Date(c.getFullYear() - 1, 11, 30); + } + } + function C(c) { + var d = On(new Date(c.tm_year + 1900, 0, 1), c.tm_yday), A = new Date(d.getFullYear(), 0, 4), E = new Date(d.getFullYear() + 1, 0, 4), J = b(A), Ce = b(E); + return _(J, d) <= 0 ? _(Ce, d) <= 0 ? d.getFullYear() + 1 : d.getFullYear() : d.getFullYear() - 1; + } + var y = { + "%a": (c) => f[c.tm_wday].substring(0, 3), + "%A": (c) => f[c.tm_wday], + "%b": (c) => v[c.tm_mon].substring(0, 3), + "%B": (c) => v[c.tm_mon], + "%C": (c) => { + var d = c.tm_year + 1900; + return p(d / 100 | 0, 2); + }, + "%d": (c) => p(c.tm_mday, 2), + "%e": (c) => h(c.tm_mday, 2, " "), + "%g": (c) => C(c).toString().substring(2), + "%G": (c) => C(c), + "%H": (c) => p(c.tm_hour, 2), + "%I": (c) => { + var d = c.tm_hour; + return d == 0 ? d = 12 : d > 12 && (d -= 12), p(d, 2); + }, + "%j": (c) => p(c.tm_mday + Dn(Te(c.tm_year + 1900) ? Ar : Fr, c.tm_mon - 1), 3), + "%m": (c) => p(c.tm_mon + 1, 2), + "%M": (c) => p(c.tm_min, 2), + "%n": () => ` +`, + "%p": (c) => c.tm_hour >= 0 && c.tm_hour < 12 ? "AM" : "PM", + "%S": (c) => p(c.tm_sec, 2), + "%t": () => " ", + "%u": (c) => c.tm_wday || 7, + "%U": (c) => { + var d = c.tm_yday + 7 - c.tm_wday; + return p(Math.floor(d / 7), 2); + }, + "%V": (c) => { + var d = Math.floor((c.tm_yday + 7 - (c.tm_wday + 6) % 7) / 7); + if ((c.tm_wday + 371 - c.tm_yday - 2) % 7 <= 2 && d++, d) { + if (d == 53) { + var E = (c.tm_wday + 371 - c.tm_yday) % 7; + E != 4 && (E != 3 || !Te(c.tm_year)) && (d = 1); + } + } else { + d = 52; + var A = (c.tm_wday + 7 - c.tm_yday - 1) % 7; + (A == 4 || A == 5 && Te(c.tm_year % 400 - 1)) && d++; + } + return p(d, 2); + }, + "%w": (c) => c.tm_wday, + "%W": (c) => { + var d = c.tm_yday + 7 - (c.tm_wday + 6) % 7; + return p(Math.floor(d / 7), 2); + }, + "%y": (c) => (c.tm_year + 1900).toString().substring(2), + "%Y": (c) => c.tm_year + 1900, + "%z": (c) => { + var d = c.tm_gmtoff, A = d >= 0; + return d = Math.abs(d) / 60, d = d / 60 * 100 + d % 60, (A ? "+" : "-") + ("0000" + d).slice(-4); + }, + "%Z": (c) => c.tm_zone, + "%%": () => "%" + }; + o = o.replace(/%%/g, "\0\0"); + for (var u in y) + o.includes(u) && (o = o.replace(new RegExp(u, "g"), y[u](a))); + o = o.replace(/\0\0/g, "%"); + var R = Wn(o, !1); + return R.length > r ? 0 : (kn(R, e), R.length - 1); + }, Mn = (e, r, t, n, i) => jn(e, r, t, n); + sr = l.InternalError = class extends Error { + constructor(r) { + super(r), this.name = "InternalError"; + } + }, st(), q = l.BindingError = class extends Error { + constructor(r) { + super(r), this.name = "BindingError"; + } + }, mt(), pt(), Ft(), gr = l.UnboundTypeError = Dt(Error, "UnboundTypeError"), Mt(), Ut(); + var Hn = { + s: qr, + u: Jr, + b: Qr, + g: et, + q: rt, + J: tt, + f: nt, + V: it, + d: Kr, + da: at, + Q: ot, + _: lt, + ca: Ot, + ba: kt, + w: jt, + Y: It, + x: Vt, + h: Yt, + L: Lt, + M: Nt, + t: Xt, + o: Gt, + K: Jt, + C: an, + A: on, + ea: sn, + $: un, + R: ln, + ha: xe, + fa: vn, + Z: gn, + N: yn, + O: mn, + aa: $n, + B: bn, + X: wn, + W: Cn, + T: En, + U: Sn, + E: Qn, + D: Yn, + F: Kn, + n: ei, + a: Un, + e: Ln, + m: Vn, + k: zn, + H: qn, + v: Gn, + G: Jn, + z: ti, + P: ii, + l: Nn, + j: Bn, + c: xn, + p: In, + I: Zn, + r: ri, + i: Xn, + y: ni, + ga: Rn, + S: Mn + }, F = Zr(), Y = l._free = (e) => (Y = l._free = F.ka)(e), ze = l._malloc = (e) => (ze = l._malloc = F.la)(e), Er = (e) => (Er = F.na)(e), $ = (e, r) => ($ = F.oa)(e, r), ue = (e) => (ue = F.pa)(e), T = () => (T = F.qa)(), P = (e) => (P = F.ra)(e), Sr = (e) => (Sr = F.sa)(e), Rr = (e) => (Rr = F.ta)(e), Dr = (e, r, t) => (Dr = F.ua)(e, r, t), Or = (e) => (Or = F.va)(e); + l.dynCall_viijii = (e, r, t, n, i, a, o) => (l.dynCall_viijii = F.wa)(e, r, t, n, i, a, o); + var Wr = l.dynCall_jiiii = (e, r, t, n, i) => (Wr = l.dynCall_jiiii = F.xa)(e, r, t, n, i); + l.dynCall_iiiiij = (e, r, t, n, i, a, o) => (l.dynCall_iiiiij = F.ya)(e, r, t, n, i, a, o), l.dynCall_iiiiijj = (e, r, t, n, i, a, o, s, u) => (l.dynCall_iiiiijj = F.za)(e, r, t, n, i, a, o, s, u), l.dynCall_iiiiiijj = (e, r, t, n, i, a, o, s, u, f) => (l.dynCall_iiiiiijj = F.Aa)(e, r, t, n, i, a, o, s, u, f); + function Un(e, r) { + var t = T(); + try { + return w(e)(r); + } catch (n) { + if (P(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function In(e, r, t, n) { + var i = T(); + try { + w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function xn(e, r, t) { + var n = T(); + try { + w(e)(r, t); + } catch (i) { + if (P(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Vn(e, r, t, n) { + var i = T(); + try { + return w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function Yn(e, r, t, n, i) { + var a = T(); + try { + return w(e)(r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Bn(e, r) { + var t = T(); + try { + w(e)(r); + } catch (n) { + if (P(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function Ln(e, r, t) { + var n = T(); + try { + return w(e)(r, t); + } catch (i) { + if (P(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Nn(e) { + var r = T(); + try { + w(e)(); + } catch (t) { + if (P(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function zn(e, r, t, n, i) { + var a = T(); + try { + return w(e)(r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Xn(e, r, t, n, i, a, o, s, u, f, v) { + var h = T(); + try { + w(e)(r, t, n, i, a, o, s, u, f, v); + } catch (p) { + if (P(h), p !== p + 0) + throw p; + $(1, 0); + } + } + function Gn(e, r, t, n, i, a, o) { + var s = T(); + try { + return w(e)(r, t, n, i, a, o); + } catch (u) { + if (P(s), u !== u + 0) + throw u; + $(1, 0); + } + } + function Zn(e, r, t, n, i) { + var a = T(); + try { + w(e)(r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function qn(e, r, t, n, i, a) { + var o = T(); + try { + return w(e)(r, t, n, i, a); + } catch (s) { + if (P(o), s !== s + 0) + throw s; + $(1, 0); + } + } + function Jn(e, r, t, n, i, a, o, s) { + var u = T(); + try { + return w(e)(r, t, n, i, a, o, s); + } catch (f) { + if (P(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function Kn(e, r, t, n) { + var i = T(); + try { + return w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function Qn(e, r, t, n) { + var i = T(); + try { + return w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function ei(e) { + var r = T(); + try { + return w(e)(); + } catch (t) { + if (P(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function ri(e, r, t, n, i, a, o, s) { + var u = T(); + try { + w(e)(r, t, n, i, a, o, s); + } catch (f) { + if (P(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function ti(e, r, t, n, i, a, o, s, u, f, v, h) { + var p = T(); + try { + return w(e)(r, t, n, i, a, o, s, u, f, v, h); + } catch (_) { + if (P(p), _ !== _ + 0) + throw _; + $(1, 0); + } + } + function ni(e, r, t, n, i, a, o, s, u, f, v, h, p, _, b, C) { + var y = T(); + try { + w(e)(r, t, n, i, a, o, s, u, f, v, h, p, _, b, C); + } catch (R) { + if (P(y), R !== R + 0) + throw R; + $(1, 0); + } + } + function ii(e, r, t, n, i) { + var a = T(); + try { + return Wr(e, r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + var Pe; + re = function e() { + Pe || kr(), Pe || (re = e); + }; + function kr() { + if (B > 0 || (Ur(), B > 0)) + return; + function e() { + Pe || (Pe = !0, l.calledRun = !0, !Je && (Ir(), Xe(l), l.onRuntimeInitialized && l.onRuntimeInitialized(), xr())); + } + l.setStatus ? (l.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + l.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (l.preInit) + for (typeof l.preInit == "function" && (l.preInit = [l.preInit]); l.preInit.length > 0; ) + l.preInit.pop()(); + return kr(), z.ready; + }; +})(); +function vi(M) { + return ai( + Ae, + M + ); +} +function di(M) { + return oi( + Ae, + M + ); +} +async function hi(M, z) { + return si( + Ae, + M, + z + ); +} +async function pi(M, z) { + return ui( + Ae, + M, + z + ); +} +export { + yi as barcodeFormats, + mi as binarizers, + $i as characterSets, + bi as contentTypes, + wi as defaultDecodeHints, + Ti as defaultReaderOptions, + Pi as eanAddOnSymbols, + vi as getZXingModule, + Ci as purgeZXingModule, + pi as readBarcodesFromImageData, + hi as readBarcodesFromImageFile, + Ai as readOutputEccLevels, + di as setZXingModuleOverrides, + Fi as textModes +}; diff --git a/node_modules/zxing-wasm/dist/es/writer/index.d.ts b/node_modules/zxing-wasm/dist/es/writer/index.d.ts new file mode 100644 index 0000000..19b6103 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/writer/index.d.ts @@ -0,0 +1,13 @@ +/** + * The writer part API of this package is subject to change a lot. + * Please track the status of [this issue](https://github.com/zxing-cpp/zxing-cpp/issues/332). + * + * @packageDocumentation + */ +import { type ZXingWriterModule, type ZXingModuleOverrides } from "../core.js"; +import type { WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingWriterModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/es/writer/index.js b/node_modules/zxing-wasm/dist/es/writer/index.js new file mode 100644 index 0000000..b33a31e --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/writer/index.js @@ -0,0 +1,1096 @@ +import { g as Ht, s as Vt, w as Bt } from "../core-gSM15mHH.js"; +import { b as Jt, e as Qt, j as Yt, j as rn, p as en, k as tn } from "../core-gSM15mHH.js"; +var gr = (() => { + var S = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(z = {}) { + var u = z, yr, J; + u.ready = new Promise((r, e) => { + yr = r, J = e; + }); + var mr = Object.assign({}, u), br = typeof window == "object", Q = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var R = ""; + function Qr(r) { + return u.locateFile ? u.locateFile(r, R) : R + r; + } + var or; + (br || Q) && (Q ? R = self.location.href : typeof document < "u" && document.currentScript && (R = document.currentScript.src), S && (R = S), R.indexOf("blob:") !== 0 ? R = R.substr(0, R.replace(/[?#].*/, "").lastIndexOf("/") + 1) : R = "", Q && (or = (r) => { + var e = new XMLHttpRequest(); + return e.open("GET", r, !1), e.responseType = "arraybuffer", e.send(null), new Uint8Array(e.response); + })), u.print || console.log.bind(console); + var N = u.printErr || console.error.bind(console); + Object.assign(u, mr), mr = null, u.arguments && u.arguments, u.thisProgram && u.thisProgram, u.quit && u.quit; + var X; + u.wasmBinary && (X = u.wasmBinary), typeof WebAssembly != "object" && sr("no native wasm support detected"); + var Y, wr = !1, U, y, O, L, j, _, Tr, $r; + function Ar() { + var r = Y.buffer; + u.HEAP8 = U = new Int8Array(r), u.HEAP16 = O = new Int16Array(r), u.HEAPU8 = y = new Uint8Array(r), u.HEAPU16 = L = new Uint16Array(r), u.HEAP32 = j = new Int32Array(r), u.HEAPU32 = _ = new Uint32Array(r), u.HEAPF32 = Tr = new Float32Array(r), u.HEAPF64 = $r = new Float64Array(r); + } + var Er = [], Cr = [], Rr = []; + function Yr() { + if (u.preRun) + for (typeof u.preRun == "function" && (u.preRun = [u.preRun]); u.preRun.length; ) + te(u.preRun.shift()); + ur(Er); + } + function re() { + ur(Cr); + } + function ee() { + if (u.postRun) + for (typeof u.postRun == "function" && (u.postRun = [u.postRun]); u.postRun.length; ) + ae(u.postRun.shift()); + ur(Rr); + } + function te(r) { + Er.unshift(r); + } + function ne(r) { + Cr.unshift(r); + } + function ae(r) { + Rr.unshift(r); + } + var x = 0, Z = null; + function ie(r) { + var e; + x++, (e = u.monitorRunDependencies) === null || e === void 0 || e.call(u, x); + } + function oe(r) { + var e; + if (x--, (e = u.monitorRunDependencies) === null || e === void 0 || e.call(u, x), x == 0 && Z) { + var t = Z; + Z = null, t(); + } + } + function sr(r) { + var e; + (e = u.onAbort) === null || e === void 0 || e.call(u, r), r = "Aborted(" + r + ")", N(r), wr = !0, r += ". Build with -sASSERTIONS for more info."; + var t = new WebAssembly.RuntimeError(r); + throw J(t), t; + } + var se = "data:application/octet-stream;base64,", Fr = (r) => r.startsWith(se), H; + H = "zxing_writer.wasm", Fr(H) || (H = Qr(H)); + function Pr(r) { + if (r == H && X) + return new Uint8Array(X); + if (or) + return or(r); + throw "both async and sync fetching of the wasm failed"; + } + function ue(r) { + return !X && (br || Q) && typeof fetch == "function" ? fetch(r, { + credentials: "same-origin" + }).then((e) => { + if (!e.ok) + throw "failed to load wasm binary file at '" + r + "'"; + return e.arrayBuffer(); + }).catch(() => Pr(r)) : Promise.resolve().then(() => Pr(r)); + } + function Wr(r, e, t) { + return ue(r).then((n) => WebAssembly.instantiate(n, e)).then((n) => n).then(t, (n) => { + N(`failed to asynchronously prepare wasm: ${n}`), sr(n); + }); + } + function fe(r, e, t, n) { + return !r && typeof WebAssembly.instantiateStreaming == "function" && !Fr(e) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((a) => { + var i = WebAssembly.instantiateStreaming(a, t); + return i.then(n, function(o) { + return N(`wasm streaming compile failed: ${o}`), N("falling back to ArrayBuffer instantiation"), Wr(e, t, n); + }); + }) : Wr(e, t, n); + } + function ce() { + var r = { + a: Rt + }; + function e(n, a) { + return g = n.exports, Y = g.R, Ar(), Vr = g.V, ne(g.S), oe(), g; + } + ie(); + function t(n) { + e(n.instance); + } + if (u.instantiateWasm) + try { + return u.instantiateWasm(r, e); + } catch (n) { + N(`Module.instantiateWasm callback failed with error: ${n}`), J(n); + } + return fe(X, H, r, t).catch(J), {}; + } + var ur = (r) => { + for (; r.length > 0; ) + r.shift()(u); + }; + u.noExitRuntime; + var kr = [], le = (r) => { + var e = new fr(r); + return e.get_caught() || e.set_caught(!0), e.set_rethrown(!1), kr.push(e), Gr(e.excPtr), e.get_exception_ptr(); + }, M = 0, ve = () => { + T(0, 0); + var r = kr.pop(); + qr(r.excPtr), M = 0; + }; + function fr(r) { + this.excPtr = r, this.ptr = r - 24, this.set_type = function(e) { + _[this.ptr + 4 >> 2] = e; + }, this.get_type = function() { + return _[this.ptr + 4 >> 2]; + }, this.set_destructor = function(e) { + _[this.ptr + 8 >> 2] = e; + }, this.get_destructor = function() { + return _[this.ptr + 8 >> 2]; + }, this.set_caught = function(e) { + e = e ? 1 : 0, U[this.ptr + 12 >> 0] = e; + }, this.get_caught = function() { + return U[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(e) { + e = e ? 1 : 0, U[this.ptr + 13 >> 0] = e; + }, this.get_rethrown = function() { + return U[this.ptr + 13 >> 0] != 0; + }, this.init = function(e, t) { + this.set_adjusted_ptr(0), this.set_type(e), this.set_destructor(t); + }, this.set_adjusted_ptr = function(e) { + _[this.ptr + 16 >> 2] = e; + }, this.get_adjusted_ptr = function() { + return _[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var e = zr(this.get_type()); + if (e) + return _[this.excPtr >> 2]; + var t = this.get_adjusted_ptr(); + return t !== 0 ? t : this.excPtr; + }; + } + var de = (r) => { + throw M || (M = r), M; + }, cr = (r) => { + var e = M; + if (!e) + return G(0), 0; + var t = new fr(e); + t.set_adjusted_ptr(e); + var n = t.get_type(); + if (!n) + return G(0), e; + for (var a in r) { + var i = r[a]; + if (i === 0 || i === n) + break; + var o = t.ptr + 16; + if (Kr(i, n, o)) + return G(i), e; + } + return G(n), e; + }, _e = () => cr([]), he = (r) => cr([r]), pe = (r, e) => cr([r, e]), ge = (r, e, t) => { + var n = new fr(r); + throw n.init(e, t), M = r, M; + }, rr = {}, lr = (r) => { + for (; r.length; ) { + var e = r.pop(), t = r.pop(); + t(e); + } + }; + function vr(r) { + return this.fromWireType(j[r >> 2]); + } + var V = {}, D = {}, er = {}, Sr, Ur = (r) => { + throw new Sr(r); + }, jr = (r, e, t) => { + r.forEach(function(s) { + er[s] = e; + }); + function n(s) { + var f = t(s); + f.length !== r.length && Ur("Mismatched type converter count"); + for (var c = 0; c < r.length; ++c) + F(r[c], f[c]); + } + var a = new Array(e.length), i = [], o = 0; + e.forEach((s, f) => { + D.hasOwnProperty(s) ? a[f] = D[s] : (i.push(s), V.hasOwnProperty(s) || (V[s] = []), V[s].push(() => { + a[f] = D[s], ++o, o === i.length && n(a); + })); + }), i.length === 0 && n(a); + }, ye = (r) => { + var e = rr[r]; + delete rr[r]; + var t = e.rawConstructor, n = e.rawDestructor, a = e.fields, i = a.map((o) => o.getterReturnType).concat(a.map((o) => o.setterArgumentType)); + jr([r], i, (o) => { + var s = {}; + return a.forEach((f, c) => { + var l = f.fieldName, v = o[c], h = f.getter, d = f.getterContext, k = o[c + a.length], C = f.setter, m = f.setterContext; + s[l] = { + read: (K) => v.fromWireType(h(d, K)), + write: (K, pr) => { + var ir = []; + C(m, K, k.toWireType(ir, pr)), lr(ir); + } + }; + }), [{ + name: e.name, + fromWireType: (f) => { + var c = {}; + for (var l in s) + c[l] = s[l].read(f); + return n(f), c; + }, + toWireType: (f, c) => { + for (var l in s) + if (!(l in c)) + throw new TypeError(`Missing field: "${l}"`); + var v = t(); + for (l in s) + s[l].write(v, c[l]); + return f !== null && f.push(n, v), v; + }, + argPackAdvance: P, + readValueFromPointer: vr, + destructorFunction: n + }]; + }); + }, me = (r, e, t, n, a) => { + }, be = () => { + for (var r = new Array(256), e = 0; e < 256; ++e) + r[e] = String.fromCharCode(e); + xr = r; + }, xr, p = (r) => { + for (var e = "", t = r; y[t]; ) + e += xr[y[t++]]; + return e; + }, Mr, b = (r) => { + throw new Mr(r); + }; + function we(r, e) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = e.name; + if (r || b(`type "${n}" must have a positive integer typeid pointer`), D.hasOwnProperty(r)) { + if (t.ignoreDuplicateRegistrations) + return; + b(`Cannot register type '${n}' twice`); + } + if (D[r] = e, delete er[r], V.hasOwnProperty(r)) { + var a = V[r]; + delete V[r], a.forEach((i) => i()); + } + } + function F(r, e) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in e)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return we(r, e, t); + } + var P = 8, Te = (r, e, t, n) => { + e = p(e), F(r, { + name: e, + fromWireType: function(a) { + return !!a; + }, + toWireType: function(a, i) { + return i ? t : n; + }, + argPackAdvance: P, + readValueFromPointer: function(a) { + return this.fromWireType(y[a]); + }, + destructorFunction: null + }); + }; + function $e() { + Object.assign(Dr.prototype, { + get(r) { + return this.allocated[r]; + }, + has(r) { + return this.allocated[r] !== void 0; + }, + allocate(r) { + var e = this.freelist.pop() || this.allocated.length; + return this.allocated[e] = r, e; + }, + free(r) { + this.allocated[r] = void 0, this.freelist.push(r); + } + }); + } + function Dr() { + this.allocated = [void 0], this.freelist = []; + } + var $ = new Dr(), dr = (r) => { + r >= $.reserved && --$.get(r).refcount === 0 && $.free(r); + }, Ae = () => { + for (var r = 0, e = $.reserved; e < $.allocated.length; ++e) + $.allocated[e] !== void 0 && ++r; + return r; + }, Ee = () => { + $.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), $.reserved = $.allocated.length, u.count_emval_handles = Ae; + }, I = { + toValue: (r) => (r || b("Cannot use deleted val. handle = " + r), $.get(r).value), + toHandle: (r) => { + switch (r) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return $.allocate({ + refcount: 1, + value: r + }); + } + } + }, Ce = (r, e) => { + e = p(e), F(r, { + name: e, + fromWireType: (t) => { + var n = I.toValue(t); + return dr(t), n; + }, + toWireType: (t, n) => I.toHandle(n), + argPackAdvance: P, + readValueFromPointer: vr, + destructorFunction: null + }); + }, Re = (r, e, t) => { + if (r[e].overloadTable === void 0) { + var n = r[e]; + r[e] = function() { + return r[e].overloadTable.hasOwnProperty(arguments.length) || b(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${r[e].overloadTable})!`), r[e].overloadTable[arguments.length].apply(this, arguments); + }, r[e].overloadTable = [], r[e].overloadTable[n.argCount] = n; + } + }, Ir = (r, e, t) => { + u.hasOwnProperty(r) ? ((t === void 0 || u[r].overloadTable !== void 0 && u[r].overloadTable[t] !== void 0) && b(`Cannot register public name '${r}' twice`), Re(u, r, r), u.hasOwnProperty(t) && b(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`), u[r].overloadTable[t] = e) : (u[r] = e, t !== void 0 && (u[r].numArguments = t)); + }, Fe = (r, e, t) => { + switch (e) { + case 1: + return t ? function(n) { + return this.fromWireType(U[n >> 0]); + } : function(n) { + return this.fromWireType(y[n >> 0]); + }; + case 2: + return t ? function(n) { + return this.fromWireType(O[n >> 1]); + } : function(n) { + return this.fromWireType(L[n >> 1]); + }; + case 4: + return t ? function(n) { + return this.fromWireType(j[n >> 2]); + } : function(n) { + return this.fromWireType(_[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${e}): ${r}`); + } + }, Pe = (r, e, t, n) => { + e = p(e); + function a() { + } + a.values = {}, F(r, { + name: e, + constructor: a, + fromWireType: function(i) { + return this.constructor.values[i]; + }, + toWireType: (i, o) => o.value, + argPackAdvance: P, + readValueFromPointer: Fe(e, t, n), + destructorFunction: null + }), Ir(e, a); + }, tr = (r, e) => Object.defineProperty(e, "name", { + value: r + }), Or = (r) => { + var e = Zr(r), t = p(e); + return W(e), t; + }, Hr = (r, e) => { + var t = D[r]; + return t === void 0 && b(e + " has unknown type " + Or(r)), t; + }, We = (r, e, t) => { + var n = Hr(r, "enum"); + e = p(e); + var a = n.constructor, i = Object.create(n.constructor.prototype, { + value: { + value: t + }, + constructor: { + value: tr(`${n.name}_${e}`, function() { + }) + } + }); + a.values[t] = i, a[e] = i; + }, ke = (r, e) => { + switch (e) { + case 4: + return function(t) { + return this.fromWireType(Tr[t >> 2]); + }; + case 8: + return function(t) { + return this.fromWireType($r[t >> 3]); + }; + default: + throw new TypeError(`invalid float width (${e}): ${r}`); + } + }, Se = (r, e, t) => { + e = p(e), F(r, { + name: e, + fromWireType: (n) => n, + toWireType: (n, a) => a, + argPackAdvance: P, + readValueFromPointer: ke(e, t), + destructorFunction: null + }); + }; + function Ue(r) { + for (var e = 1; e < r.length; ++e) + if (r[e] !== null && r[e].destructorFunction === void 0) + return !0; + return !1; + } + function je(r, e, t, n, a, i) { + var o = e.length; + o < 2 && b("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var s = e[1] !== null && t !== null, f = Ue(e), c = e[0].name !== "void", l = o - 2, v = new Array(l), h = [], d = [], k = function() { + arguments.length !== l && b(`function ${r} called with ${arguments.length} arguments, expected ${l}`), d.length = 0; + var C; + h.length = s ? 2 : 1, h[0] = a, s && (C = e[1].toWireType(d, this), h[1] = C); + for (var m = 0; m < l; ++m) + v[m] = e[m + 2].toWireType(d, arguments[m]), h.push(v[m]); + var K = n.apply(null, h); + function pr(ir) { + if (f) + lr(d); + else + for (var B = s ? 1 : 2; B < e.length; B++) { + var Ot = B === 1 ? C : v[B - 2]; + e[B].destructorFunction !== null && e[B].destructorFunction(Ot); + } + if (c) + return e[0].fromWireType(ir); + } + return pr(K); + }; + return tr(r, k); + } + var xe = (r, e) => { + for (var t = [], n = 0; n < r; n++) + t.push(_[e + n * 4 >> 2]); + return t; + }, Me = (r, e, t) => { + u.hasOwnProperty(r) || Ur("Replacing nonexistant public symbol"), u[r].overloadTable !== void 0 && t !== void 0 ? u[r].overloadTable[t] = e : (u[r] = e, u[r].argCount = t); + }, De = (r, e, t) => { + var n = u["dynCall_" + r]; + return t && t.length ? n.apply(null, [e].concat(t)) : n.call(null, e); + }, nr = [], Vr, w = (r) => { + var e = nr[r]; + return e || (r >= nr.length && (nr.length = r + 1), nr[r] = e = Vr.get(r)), e; + }, Ie = (r, e, t) => { + if (r.includes("j")) + return De(r, e, t); + var n = w(e).apply(null, t); + return n; + }, Oe = (r, e) => { + var t = []; + return function() { + return t.length = 0, Object.assign(t, arguments), Ie(r, e, t); + }; + }, q = (r, e) => { + r = p(r); + function t() { + return r.includes("j") ? Oe(r, e) : w(e); + } + var n = t(); + return typeof n != "function" && b(`unknown function pointer with signature ${r}: ${e}`), n; + }, He = (r, e) => { + var t = tr(e, function(n) { + this.name = e, this.message = n; + var a = new Error(n).stack; + a !== void 0 && (this.stack = this.toString() + ` +` + a.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return t.prototype = Object.create(r.prototype), t.prototype.constructor = t, t.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, t; + }, Br, Ve = (r, e) => { + var t = [], n = {}; + function a(i) { + if (!n[i] && !D[i]) { + if (er[i]) { + er[i].forEach(a); + return; + } + t.push(i), n[i] = !0; + } + } + throw e.forEach(a), new Br(`${r}: ` + t.map(Or).join([", "])); + }, Be = (r) => { + r = r.trim(); + const e = r.indexOf("("); + return e !== -1 ? r.substr(0, e) : r; + }, Ne = (r, e, t, n, a, i, o) => { + var s = xe(e, t); + r = p(r), r = Be(r), a = q(n, a), Ir(r, function() { + Ve(`Cannot call ${r} due to unbound types`, s); + }, e - 1), jr([], s, function(f) { + var c = [f[0], null].concat(f.slice(1)); + return Me(r, je(r, c, null, a, i), e - 1), []; + }); + }, Xe = (r, e, t) => { + switch (e) { + case 1: + return t ? (n) => U[n >> 0] : (n) => y[n >> 0]; + case 2: + return t ? (n) => O[n >> 1] : (n) => L[n >> 1]; + case 4: + return t ? (n) => j[n >> 2] : (n) => _[n >> 2]; + default: + throw new TypeError(`invalid integer width (${e}): ${r}`); + } + }, Le = (r, e, t, n, a) => { + e = p(e); + var i = (l) => l; + if (n === 0) { + var o = 32 - 8 * t; + i = (l) => l << o >>> o; + } + var s = e.includes("unsigned"), f = (l, v) => { + }, c; + s ? c = function(l, v) { + return f(v, this.name), v >>> 0; + } : c = function(l, v) { + return f(v, this.name), v; + }, F(r, { + name: e, + fromWireType: i, + toWireType: c, + argPackAdvance: P, + readValueFromPointer: Xe(e, t, n !== 0), + destructorFunction: null + }); + }, Ze = (r, e, t) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], a = n[e]; + function i(o) { + var s = _[o >> 2], f = _[o + 4 >> 2]; + return new a(U.buffer, f, s); + } + t = p(t), F(r, { + name: t, + fromWireType: i, + argPackAdvance: P, + readValueFromPointer: i + }, { + ignoreDuplicateRegistrations: !0 + }); + }; + function qe(r) { + return this.fromWireType(_[r >> 2]); + } + var Ge = (r, e, t, n) => { + if (!(n > 0)) + return 0; + for (var a = t, i = t + n - 1, o = 0; o < r.length; ++o) { + var s = r.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var f = r.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | f & 1023; + } + if (s <= 127) { + if (t >= i) + break; + e[t++] = s; + } else if (s <= 2047) { + if (t + 1 >= i) + break; + e[t++] = 192 | s >> 6, e[t++] = 128 | s & 63; + } else if (s <= 65535) { + if (t + 2 >= i) + break; + e[t++] = 224 | s >> 12, e[t++] = 128 | s >> 6 & 63, e[t++] = 128 | s & 63; + } else { + if (t + 3 >= i) + break; + e[t++] = 240 | s >> 18, e[t++] = 128 | s >> 12 & 63, e[t++] = 128 | s >> 6 & 63, e[t++] = 128 | s & 63; + } + } + return e[t] = 0, t - a; + }, Ke = (r, e, t) => Ge(r, y, e, t), ze = (r) => { + for (var e = 0, t = 0; t < r.length; ++t) { + var n = r.charCodeAt(t); + n <= 127 ? e++ : n <= 2047 ? e += 2 : n >= 55296 && n <= 57343 ? (e += 4, ++t) : e += 3; + } + return e; + }, Nr = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, Je = (r, e, t) => { + for (var n = e + t, a = e; r[a] && !(a >= n); ) + ++a; + if (a - e > 16 && r.buffer && Nr) + return Nr.decode(r.subarray(e, a)); + for (var i = ""; e < a; ) { + var o = r[e++]; + if (!(o & 128)) { + i += String.fromCharCode(o); + continue; + } + var s = r[e++] & 63; + if ((o & 224) == 192) { + i += String.fromCharCode((o & 31) << 6 | s); + continue; + } + var f = r[e++] & 63; + if ((o & 240) == 224 ? o = (o & 15) << 12 | s << 6 | f : o = (o & 7) << 18 | s << 12 | f << 6 | r[e++] & 63, o < 65536) + i += String.fromCharCode(o); + else { + var c = o - 65536; + i += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); + } + } + return i; + }, Qe = (r, e) => r ? Je(y, r, e) : "", Ye = (r, e) => { + e = p(e); + var t = e === "std::string"; + F(r, { + name: e, + fromWireType(n) { + var a = _[n >> 2], i = n + 4, o; + if (t) + for (var s = i, f = 0; f <= a; ++f) { + var c = i + f; + if (f == a || y[c] == 0) { + var l = c - s, v = Qe(s, l); + o === void 0 ? o = v : (o += "\0", o += v), s = c + 1; + } + } + else { + for (var h = new Array(a), f = 0; f < a; ++f) + h[f] = String.fromCharCode(y[i + f]); + o = h.join(""); + } + return W(n), o; + }, + toWireType(n, a) { + a instanceof ArrayBuffer && (a = new Uint8Array(a)); + var i, o = typeof a == "string"; + o || a instanceof Uint8Array || a instanceof Uint8ClampedArray || a instanceof Int8Array || b("Cannot pass non-string to std::string"), t && o ? i = ze(a) : i = a.length; + var s = hr(4 + i + 1), f = s + 4; + if (_[s >> 2] = i, t && o) + Ke(a, f, i + 1); + else if (o) + for (var c = 0; c < i; ++c) { + var l = a.charCodeAt(c); + l > 255 && (W(f), b("String has UTF-16 code units that do not fit in 8 bits")), y[f + c] = l; + } + else + for (var c = 0; c < i; ++c) + y[f + c] = a[c]; + return n !== null && n.push(W, s), s; + }, + argPackAdvance: P, + readValueFromPointer: qe, + destructorFunction(n) { + W(n); + } + }); + }, Xr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, rt = (r, e) => { + for (var t = r, n = t >> 1, a = n + e / 2; !(n >= a) && L[n]; ) + ++n; + if (t = n << 1, t - r > 32 && Xr) + return Xr.decode(y.subarray(r, t)); + for (var i = "", o = 0; !(o >= e / 2); ++o) { + var s = O[r + o * 2 >> 1]; + if (s == 0) + break; + i += String.fromCharCode(s); + } + return i; + }, et = (r, e, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 2) + return 0; + t -= 2; + for (var a = e, i = t < r.length * 2 ? t / 2 : r.length, o = 0; o < i; ++o) { + var s = r.charCodeAt(o); + O[e >> 1] = s, e += 2; + } + return O[e >> 1] = 0, e - a; + }, tt = (r) => r.length * 2, nt = (r, e) => { + for (var t = 0, n = ""; !(t >= e / 4); ) { + var a = j[r + t * 4 >> 2]; + if (a == 0) + break; + if (++t, a >= 65536) { + var i = a - 65536; + n += String.fromCharCode(55296 | i >> 10, 56320 | i & 1023); + } else + n += String.fromCharCode(a); + } + return n; + }, at = (r, e, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 4) + return 0; + for (var a = e, i = a + t - 4, o = 0; o < r.length; ++o) { + var s = r.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var f = r.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | f & 1023; + } + if (j[e >> 2] = s, e += 4, e + 4 > i) + break; + } + return j[e >> 2] = 0, e - a; + }, it = (r) => { + for (var e = 0, t = 0; t < r.length; ++t) { + var n = r.charCodeAt(t); + n >= 55296 && n <= 57343 && ++t, e += 4; + } + return e; + }, ot = (r, e, t) => { + t = p(t); + var n, a, i, o, s; + e === 2 ? (n = rt, a = et, o = tt, i = () => L, s = 1) : e === 4 && (n = nt, a = at, o = it, i = () => _, s = 2), F(r, { + name: t, + fromWireType: (f) => { + for (var c = _[f >> 2], l = i(), v, h = f + 4, d = 0; d <= c; ++d) { + var k = f + 4 + d * e; + if (d == c || l[k >> s] == 0) { + var C = k - h, m = n(h, C); + v === void 0 ? v = m : (v += "\0", v += m), h = k + e; + } + } + return W(f), v; + }, + toWireType: (f, c) => { + typeof c != "string" && b(`Cannot pass non-string to C++ string type ${t}`); + var l = o(c), v = hr(4 + l + e); + return _[v >> 2] = l >> s, a(c, v + 4, l + e), f !== null && f.push(W, v), v; + }, + argPackAdvance: P, + readValueFromPointer: vr, + destructorFunction(f) { + W(f); + } + }); + }, st = (r, e, t, n, a, i) => { + rr[r] = { + name: p(e), + rawConstructor: q(t, n), + rawDestructor: q(a, i), + fields: [] + }; + }, ut = (r, e, t, n, a, i, o, s, f, c) => { + rr[r].fields.push({ + fieldName: p(e), + getterReturnType: t, + getter: q(n, a), + getterContext: i, + setterArgumentType: o, + setter: q(s, f), + setterContext: c + }); + }, ft = (r, e) => { + e = p(e), F(r, { + isVoid: !0, + name: e, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (t, n) => { + } + }); + }, _r = [], ct = (r, e, t, n) => (r = _r[r], e = I.toValue(e), r(null, e, t, n)), lt = {}, vt = (r) => { + var e = lt[r]; + return e === void 0 ? p(r) : e; + }, Lr = () => { + if (typeof globalThis == "object") + return globalThis; + function r(e) { + e.$$$embind_global$$$ = e; + var t = typeof $$$embind_global$$$ == "object" && e.$$$embind_global$$$ == e; + return t || delete e.$$$embind_global$$$, t; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && r(global) ? $$$embind_global$$$ = global : typeof self == "object" && r(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, dt = (r) => r === 0 ? I.toHandle(Lr()) : (r = vt(r), I.toHandle(Lr()[r])), _t = (r) => { + var e = _r.length; + return _r.push(r), e; + }, ht = (r, e) => { + for (var t = new Array(r), n = 0; n < r; ++n) + t[n] = Hr(_[e + n * 4 >> 2], "parameter " + n); + return t; + }, pt = Reflect.construct, gt = (r, e, t) => { + var n = [], a = r.toWireType(n, t); + return n.length && (_[e >> 2] = I.toHandle(n)), a; + }, yt = (r, e, t) => { + var n = ht(r, e), a = n.shift(); + r--; + var i = new Array(r), o = (f, c, l, v) => { + for (var h = 0, d = 0; d < r; ++d) + i[d] = n[d].readValueFromPointer(v + h), h += n[d].argPackAdvance; + for (var k = t === 1 ? pt(c, i) : c.apply(f, i), d = 0; d < r; ++d) { + var C, m; + (C = (m = n[d]).deleteObject) === null || C === void 0 || C.call(m, i[d]); + } + return gt(a, l, k); + }, s = `methodCaller<(${n.map((f) => f.name).join(", ")}) => ${a.name}>`; + return _t(tr(s, o)); + }, mt = (r) => { + r > 4 && ($.get(r).refcount += 1); + }, bt = (r) => { + var e = I.toValue(r); + lr(e), dr(r); + }, wt = () => { + sr(""); + }, Tt = (r, e, t) => y.copyWithin(r, e, e + t), $t = () => 2147483648, At = (r) => { + var e = Y.buffer, t = (r - e.byteLength + 65535) / 65536; + try { + return Y.grow(t), Ar(), 1; + } catch { + } + }, Et = (r) => { + var e = y.length; + r >>>= 0; + var t = $t(); + if (r > t) + return !1; + for (var n = (f, c) => f + (c - f % c) % c, a = 1; a <= 4; a *= 2) { + var i = e * (1 + 0.2 / a); + i = Math.min(i, r + 100663296); + var o = Math.min(t, n(Math.max(r, i), 65536)), s = At(o); + if (s) + return !0; + } + return !1; + }, Ct = (r) => r; + Sr = u.InternalError = class extends Error { + constructor(e) { + super(e), this.name = "InternalError"; + } + }, be(), Mr = u.BindingError = class extends Error { + constructor(e) { + super(e), this.name = "BindingError"; + } + }, $e(), Ee(), Br = u.UnboundTypeError = He(Error, "UnboundTypeError"); + var Rt = { + r: le, + q: ve, + g: _e, + d: he, + k: pe, + a: ge, + i: de, + M: ye, + C: me, + H: Te, + G: Ce, + K: Pe, + b: We, + v: Se, + L: Ne, + h: Le, + e: Ze, + u: Ye, + p: ot, + w: st, + N: ut, + I: ft, + z: ct, + P: dr, + B: dt, + A: yt, + x: mt, + Q: bt, + s: wt, + F: Tt, + E: Et, + y: Ut, + c: Ft, + l: jt, + n: St, + o: xt, + f: Pt, + t: It, + m: Dt, + D: kt, + J: Wt, + j: Mt, + O: Ct + }, g = ce(), hr = u._malloc = (r) => (hr = u._malloc = g.T)(r), W = u._free = (r) => (W = u._free = g.U)(r), Zr = (r) => (Zr = g.W)(r), T = (r, e) => (T = g.X)(r, e), G = (r) => (G = g.Y)(r), A = () => (A = g.Z)(), E = (r) => (E = g._)(r), qr = (r) => (qr = g.$)(r), Gr = (r) => (Gr = g.aa)(r), Kr = (r, e, t) => (Kr = g.ba)(r, e, t), zr = (r) => (zr = g.ca)(r); + function Ft(r, e) { + var t = A(); + try { + return w(r)(e); + } catch (n) { + if (E(t), n !== n + 0) + throw n; + T(1, 0); + } + } + function Pt(r, e) { + var t = A(); + try { + w(r)(e); + } catch (n) { + if (E(t), n !== n + 0) + throw n; + T(1, 0); + } + } + function Wt(r, e, t, n, a, i) { + var o = A(); + try { + w(r)(e, t, n, a, i); + } catch (s) { + if (E(o), s !== s + 0) + throw s; + T(1, 0); + } + } + function kt(r, e, t, n, a) { + var i = A(); + try { + w(r)(e, t, n, a); + } catch (o) { + if (E(i), o !== o + 0) + throw o; + T(1, 0); + } + } + function St(r, e, t, n) { + var a = A(); + try { + return w(r)(e, t, n); + } catch (i) { + if (E(a), i !== i + 0) + throw i; + T(1, 0); + } + } + function Ut(r, e, t, n, a) { + var i = A(); + try { + return w(r)(e, t, n, a); + } catch (o) { + if (E(i), o !== o + 0) + throw o; + T(1, 0); + } + } + function jt(r, e, t) { + var n = A(); + try { + return w(r)(e, t); + } catch (a) { + if (E(n), a !== a + 0) + throw a; + T(1, 0); + } + } + function xt(r) { + var e = A(); + try { + w(r)(); + } catch (t) { + if (E(e), t !== t + 0) + throw t; + T(1, 0); + } + } + function Mt(r, e, t, n, a, i, o, s, f, c, l) { + var v = A(); + try { + w(r)(e, t, n, a, i, o, s, f, c, l); + } catch (h) { + if (E(v), h !== h + 0) + throw h; + T(1, 0); + } + } + function Dt(r, e, t, n) { + var a = A(); + try { + w(r)(e, t, n); + } catch (i) { + if (E(a), i !== i + 0) + throw i; + T(1, 0); + } + } + function It(r, e, t) { + var n = A(); + try { + w(r)(e, t); + } catch (a) { + if (E(n), a !== a + 0) + throw a; + T(1, 0); + } + } + var ar; + Z = function r() { + ar || Jr(), ar || (Z = r); + }; + function Jr() { + if (x > 0 || (Yr(), x > 0)) + return; + function r() { + ar || (ar = !0, u.calledRun = !0, !wr && (re(), yr(u), u.onRuntimeInitialized && u.onRuntimeInitialized(), ee())); + } + u.setStatus ? (u.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + u.setStatus(""); + }, 1), r(); + }, 1)) : r(); + } + if (u.preInit) + for (typeof u.preInit == "function" && (u.preInit = [u.preInit]); u.preInit.length > 0; ) + u.preInit.pop()(); + return Jr(), z.ready; + }; +})(); +function Zt(S) { + return Ht( + gr, + S + ); +} +function qt(S) { + return Vt( + gr, + S + ); +} +async function Gt(S, z) { + return Bt( + gr, + S, + z + ); +} +export { + Jt as barcodeFormats, + Qt as characterSets, + Yt as defaultEncodeHints, + rn as defaultWriterOptions, + Zt as getZXingModule, + en as purgeZXingModule, + qt as setZXingModuleOverrides, + Gt as writeBarcodeToImageFile, + tn as writeInputEccLevels +}; diff --git a/node_modules/zxing-wasm/dist/full/zxing_full.wasm b/node_modules/zxing-wasm/dist/full/zxing_full.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0f1e57d473bb0e488012f1e461f75a13e9dc33f8 GIT binary patch literal 1230430 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 z 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%0A}74Ge6AetH*EF*}r9pC_h!(7jan`ARo*%YUD;& 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%0DUJ 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
  • pU}_f7xXLo4gHS(w3Z^j(Ld;4 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 z

    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 literal 0 HcmV?d00001 diff --git a/node_modules/zxing-wasm/dist/iife/full/index.js b/node_modules/zxing-wasm/dist/iife/full/index.js new file mode 100644 index 0000000..38e060f --- /dev/null +++ b/node_modules/zxing-wasm/dist/iife/full/index.js @@ -0,0 +1,3 @@ +var ZXingWASM=function(O){"use strict";var le=(()=>{var h=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var u=p,U,$;u.ready=new Promise((e,r)=>{U=e,$=r});var j=Object.assign({},u),z="./this.program",Q=typeof window=="object",N=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var k="";function J(e){return u.locateFile?u.locateFile(e,k):k+e}var ne;(Q||N)&&(N?k=self.location.href:typeof document<"u"&&document.currentScript&&(k=document.currentScript.src),h&&(k=h),k.indexOf("blob:")!==0?k=k.substr(0,k.replace(/[?#].*/,"").lastIndexOf("/")+1):k="",N&&(ne=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),u.print||console.log.bind(console);var X=u.printErr||console.error.bind(console);Object.assign(u,j),j=null,u.arguments&&u.arguments,u.thisProgram&&(z=u.thisProgram),u.quit&&u.quit;var ce;u.wasmBinary&&(ce=u.wasmBinary),typeof WebAssembly!="object"&&Te("no native wasm support detected");var we,fr=!1,x,H,ae,fe,M,w,vr,dr;function hr(){var e=we.buffer;u.HEAP8=x=new Int8Array(e),u.HEAP16=ae=new Int16Array(e),u.HEAPU8=H=new Uint8Array(e),u.HEAPU16=fe=new Uint16Array(e),u.HEAP32=M=new Int32Array(e),u.HEAPU32=w=new Uint32Array(e),u.HEAPF32=vr=new Float32Array(e),u.HEAPF64=dr=new Float64Array(e)}var pr=[],gr=[],_r=[];function wt(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)Pt(u.preRun.shift());He(pr)}function Tt(){He(gr)}function Ct(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)At(u.postRun.shift());He(_r)}function Pt(e){pr.unshift(e)}function St(e){gr.unshift(e)}function At(e){_r.unshift(e)}var K=0,ve=null;function Et(e){var r;K++,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K)}function Ft(e){var r;if(K--,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K),K==0&&ve){var t=ve;ve=null,t()}}function Te(e){var r;(r=u.onAbort)===null||r===void 0||r.call(u,e),e="Aborted("+e+")",X(e),fr=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw $(t),t}var Rt="data:application/octet-stream;base64,",mr=e=>e.startsWith(Rt),ie;ie="zxing_full.wasm",mr(ie)||(ie=J(ie));function yr(e){if(e==ie&&ce)return new Uint8Array(ce);if(ne)return ne(e);throw"both async and sync fetching of the wasm failed"}function Ot(e){return!ce&&(Q||N)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>yr(e)):Promise.resolve().then(()=>yr(e))}function br(e,r,t){return Ot(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{X(`failed to asynchronously prepare wasm: ${n}`),Te(n)})}function Dt(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!mr(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(o){return X(`wasm streaming compile failed: ${o}`),X("falling back to ArrayBuffer instantiation"),br(r,t,n)})}):br(r,t,n)}function Wt(){var e={a:$a};function r(n,a){return R=n.exports,we=R.ja,hr(),Rr=R.na,St(R.ka),Ft(),R}Et();function t(n){r(n.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(e,r)}catch(n){X(`Module.instantiateWasm callback failed with error: ${n}`),$(n)}return Dt(ce,ie,e,t).catch($),{}}var He=e=>{for(;e.length>0;)e.shift()(u)};u.noExitRuntime;var Ce=[],Pe=0,It=e=>{var r=new Be(e);return r.get_caught()||(r.set_caught(!0),Pe--),r.set_rethrown(!1),Ce.push(r),Yr(r.excPtr),r.get_exception_ptr()},Z=0,kt=()=>{T(0,0);var e=Ce.pop();Vr(e.excPtr),Z=0};function Be(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){w[this.ptr+4>>2]=r},this.get_type=function(){return w[this.ptr+4>>2]},this.set_destructor=function(r){w[this.ptr+8>>2]=r},this.get_destructor=function(){return w[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,x[this.ptr+12>>0]=r},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,x[this.ptr+13>>0]=r},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){w[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return w[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Nr(this.get_type());if(r)return w[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Mt=e=>{throw Z||(Z=e),Z},xe=e=>{var r=Z;if(!r)return ye(0),0;var t=new Be(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return ye(0),r;for(var a in e){var i=e[a];if(i===0||i===n)break;var o=t.ptr+16;if(zr(i,n,o))return ye(i),r}return ye(n),r},Ut=()=>xe([]),jt=e=>xe([e]),Ht=(e,r)=>xe([e,r]),Bt=()=>{var e=Ce.pop();e||Te("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(Ce.push(e),e.set_rethrown(!0),e.set_caught(!1),Pe++),Z=r,Z},xt=(e,r,t)=>{var n=new Be(e);throw n.init(r,t),Z=e,Pe++,Z},Lt=()=>Pe,Se={},Le=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function Ve(e){return this.fromWireType(M[e>>2])}var oe={},ee={},Ae={},$r,Ee=e=>{throw new $r(e)},re=(e,r,t)=>{e.forEach(function(s){Ae[s]=r});function n(s){var l=t(s);l.length!==e.length&&Ee("Mismatched type converter count");for(var f=0;f{ee.hasOwnProperty(s)?a[l]=ee[s]:(i.push(s),oe.hasOwnProperty(s)||(oe[s]=[]),oe[s].push(()=>{a[l]=ee[s],++o,o===i.length&&n(a)}))}),i.length===0&&n(a)},Vt=e=>{var r=Se[e];delete Se[e];var t=r.rawConstructor,n=r.rawDestructor,a=r.fields,i=a.map(o=>o.getterReturnType).concat(a.map(o=>o.setterArgumentType));re([e],i,o=>{var s={};return a.forEach((l,f)=>{var v=l.fieldName,g=o[f],_=l.getter,m=l.getterContext,A=o[f+a.length],E=l.setter,b=l.setterContext;s[v]={read:I=>g.fromWireType(_(m,I)),write:(I,c)=>{var d=[];E(b,I,A.toWireType(d,c)),Le(d)}}}),[{name:r.name,fromWireType:l=>{var f={};for(var v in s)f[v]=s[v].read(l);return n(l),f},toWireType:(l,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var g=t();for(v in s)s[v].write(g,f[v]);return l!==null&&l.push(n,g),g},argPackAdvance:Y,readValueFromPointer:Ve,destructorFunction:n}]})},Yt=(e,r,t,n,a)=>{},zt=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);wr=e},wr,W=e=>{for(var r="",t=e;H[t];)r+=wr[H[t++]];return r},se,y=e=>{throw new se(e)};function Nt(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||y(`type "${n}" must have a positive integer typeid pointer`),ee.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;y(`Cannot register type '${n}' twice`)}if(ee[e]=r,delete Ae[e],oe.hasOwnProperty(e)){var a=oe[e];delete oe[e],a.forEach(i=>i())}}function V(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Nt(e,r,t)}var Y=8,Xt=(e,r,t,n)=>{r=W(r),V(e,{name:r,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:Y,readValueFromPointer:function(a){return this.fromWireType(H[a])},destructorFunction:null})},Zt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Ye=e=>{function r(t){return t.$$.ptrType.registeredClass.name}y(r(e)+" instance already deleted")},ze=!1,Tr=e=>{},Gt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Cr=e=>{e.count.value-=1;var r=e.count.value===0;r&&Gt(e)},Pr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=Pr(e,r,t.baseClass);return n===null?null:t.downcast(n)},Sr={},qt=()=>Object.keys(pe).length,Qt=()=>{var e=[];for(var r in pe)pe.hasOwnProperty(r)&&e.push(pe[r]);return e},de=[],Ne=()=>{for(;de.length;){var e=de.pop();e.$$.deleteScheduled=!1,e.delete()}},he,Jt=e=>{he=e,de.length&&he&&he(Ne)},Kt=()=>{u.getInheritedInstanceCount=qt,u.getLiveInheritedInstances=Qt,u.flushPendingDeletes=Ne,u.setDelayFunction=Jt},pe={},en=(e,r)=>{for(r===void 0&&y("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},rn=(e,r)=>(r=en(e,r),pe[r]),Fe=(e,r)=>{(!r.ptrType||!r.ptr)&&Ee("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&Ee("Both smartPtrType and smartPtr must be specified"),r.count={value:1},ge(Object.create(e,{$$:{value:r,writable:!0}}))};function tn(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=rn(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function a(){return this.isSmartPointer?Fe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):Fe(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i=this.registeredClass.getActualType(r),o=Sr[i];if(!o)return a.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var l=Pr(r,this.registeredClass,s.registeredClass);return l===null?a.call(this):this.isSmartPointer?Fe(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):Fe(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}var ge=e=>typeof FinalizationRegistry>"u"?(ge=r=>r,e):(ze=new FinalizationRegistry(r=>{Cr(r.$$)}),ge=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var a={$$:t};ze.register(r,a,r)}return r},Tr=r=>ze.unregister(r),ge(e)),nn=()=>{Object.assign(Re.prototype,{isAliasOf(e){if(!(this instanceof Re)||!(e instanceof Re))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,a=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return r===n&&t===a},clone(){if(this.$$.ptr||Ye(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=ge(Object.create(Object.getPrototypeOf(this),{$$:{value:Zt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),Tr(this),Cr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),de.push(this),de.length===1&&he&&he(Ne),this.$$.deleteScheduled=!0,this}})};function Re(){}var _e=(e,r)=>Object.defineProperty(r,"name",{value:e}),Ar=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||y(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},Xe=(e,r,t)=>{u.hasOwnProperty(e)?((t===void 0||u[e].overloadTable!==void 0&&u[e].overloadTable[t]!==void 0)&&y(`Cannot register public name '${e}' twice`),Ar(u,e,e),u.hasOwnProperty(t)&&y(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),u[e].overloadTable[t]=r):(u[e]=r,t!==void 0&&(u[e].numArguments=t))},an=48,on=57,sn=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=an&&r<=on?`_${e}`:e};function un(e,r,t,n,a,i,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=a,this.getActualType=i,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var Ze=(e,r,t)=>{for(;r!==t;)r.upcast||y(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function ln(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Ke(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ze(r.$$.ptr,t,this.registeredClass);return n}function cn(e,r){var t;if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&y(`Cannot pass "${Ke(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=Ze(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&y("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var a=r.clone();t=this.rawShare(t,G.toHandle(()=>a.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:y("Unsupporting sharing policy")}return t}function fn(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Ke(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ze(r.$$.ptr,t,this.registeredClass);return n}function Er(e){return this.fromWireType(w[e>>2])}var vn=()=>{Object.assign(Oe.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:Y,readValueFromPointer:Er,deleteObject(e){e!==null&&e.delete()},fromWireType:tn})};function Oe(e,r,t,n,a,i,o,s,l,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=a,this.pointeeType=i,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=v,!a&&r.baseClass===void 0?n?(this.toWireType=ln,this.destructorFunction=null):(this.toWireType=fn,this.destructorFunction=null):this.toWireType=cn}var Fr=(e,r,t)=>{u.hasOwnProperty(e)||Ee("Replacing nonexistant public symbol"),u[e].overloadTable!==void 0&&t!==void 0?u[e].overloadTable[t]=r:(u[e]=r,u[e].argCount=t)},dn=(e,r,t)=>{var n=u["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},De=[],Rr,C=e=>{var r=De[e];return r||(e>=De.length&&(De.length=e+1),De[e]=r=Rr.get(e)),r},hn=(e,r,t)=>{if(e.includes("j"))return dn(e,r,t);var n=C(r).apply(null,t);return n},pn=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),hn(e,r,t)}},L=(e,r)=>{e=W(e);function t(){return e.includes("j")?pn(e,r):C(r)}var n=t();return typeof n!="function"&&y(`unknown function pointer with signature ${e}: ${r}`),n},gn=(e,r)=>{var t=_e(r,function(n){this.name=r,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Or,Dr=e=>{var r=Lr(e),t=W(r);return q(r),t},We=(e,r)=>{var t=[],n={};function a(i){if(!n[i]&&!ee[i]){if(Ae[i]){Ae[i].forEach(a);return}t.push(i),n[i]=!0}}throw r.forEach(a),new Or(`${e}: `+t.map(Dr).join([", "]))},_n=(e,r,t,n,a,i,o,s,l,f,v,g,_)=>{v=W(v),i=L(a,i),s&&(s=L(o,s)),f&&(f=L(l,f)),_=L(g,_);var m=sn(v);Xe(m,function(){We(`Cannot construct ${v} due to unbound types`,[n])}),re([e,r,t],n?[n]:[],function(A){A=A[0];var E,b;n?(E=A.registeredClass,b=E.instancePrototype):b=Re.prototype;var I=_e(v,function(){if(Object.getPrototypeOf(this)!==c)throw new se("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new se(v+" has no accessible constructor");var qr=d.constructor_body[arguments.length];if(qr===void 0)throw new se(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return qr.apply(this,arguments)}),c=Object.create(b,{constructor:{value:I}});I.prototype=c;var d=new un(v,I,c,_,E,i,s,f);if(d.baseClass){var F,D;(D=(F=d.baseClass).__derivedClasses)!==null&&D!==void 0||(F.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var ue=new Oe(v,d,!0,!1,!1),Me=new Oe(v+"*",d,!1,!1,!1),Gr=new Oe(v+" const*",d,!1,!0,!1);return Sr[e]={pointerType:Me,constPointerType:Gr},Fr(m,I),[ue,Me,Gr]})},Ge=(e,r)=>{for(var t=[],n=0;n>2]);return t};function mn(e){for(var r=1;r{var o=Ge(r,t);a=L(n,a),re([],[e],function(s){s=s[0];var l=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new se(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{We(`Cannot construct ${s.name} due to unbound types`,o)},re([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=qe(l,f,null,a,i),[])),[]})},Wr=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},bn=(e,r,t,n,a,i,o,s,l)=>{var f=Ge(t,n);r=W(r),r=Wr(r),i=L(a,i),re([],[e],function(v){v=v[0];var g=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function _(){We(`Cannot call ${g} due to unbound types`,f)}var m=v.registeredClass.instancePrototype,A=m[r];return A===void 0||A.overloadTable===void 0&&A.className!==v.name&&A.argCount===t-2?(_.argCount=t-2,_.className=v.name,m[r]=_):(Ar(m,r,g),m[r].overloadTable[t-2]=_),re([],f,function(E){var b=qe(g,E,v,i,o);return m[r].overloadTable===void 0?(b.argCount=t-2,m[r]=b):m[r].overloadTable[t-2]=b,[]}),[]})};function $n(){Object.assign(Ir.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Ir(){this.allocated=[void 0],this.freelist=[]}var B=new Ir,Qe=e=>{e>=B.reserved&&--B.get(e).refcount===0&&B.free(e)},wn=()=>{for(var e=0,r=B.reserved;r{B.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),B.reserved=B.allocated.length,u.count_emval_handles=wn},G={toValue:e=>(e||y("Cannot use deleted val. handle = "+e),B.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return B.allocate({refcount:1,value:e})}}},Cn=(e,r)=>{r=W(r),V(e,{name:r,fromWireType:t=>{var n=G.toValue(t);return Qe(t),n},toWireType:(t,n)=>G.toHandle(n),argPackAdvance:Y,readValueFromPointer:Ve,destructorFunction:null})},Pn=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(x[n>>0])}:function(n){return this.fromWireType(H[n>>0])};case 2:return t?function(n){return this.fromWireType(ae[n>>1])}:function(n){return this.fromWireType(fe[n>>1])};case 4:return t?function(n){return this.fromWireType(M[n>>2])}:function(n){return this.fromWireType(w[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Sn=(e,r,t,n)=>{r=W(r);function a(){}a.values={},V(e,{name:r,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,o)=>o.value,argPackAdvance:Y,readValueFromPointer:Pn(r,t,n),destructorFunction:null}),Xe(r,a)},Je=(e,r)=>{var t=ee[e];return t===void 0&&y(r+" has unknown type "+Dr(e)),t},An=(e,r,t)=>{var n=Je(e,"enum");r=W(r);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:_e(`${n.name}_${r}`,function(){})}});a.values[t]=i,a[r]=i},Ke=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},En=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(vr[t>>2])};case 8:return function(t){return this.fromWireType(dr[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},Fn=(e,r,t)=>{r=W(r),V(e,{name:r,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:Y,readValueFromPointer:En(r,t),destructorFunction:null})},Rn=(e,r,t,n,a,i,o)=>{var s=Ge(r,t);e=W(e),e=Wr(e),a=L(n,a),Xe(e,function(){We(`Cannot call ${e} due to unbound types`,s)},r-1),re([],s,function(l){var f=[l[0],null].concat(l.slice(1));return Fr(e,qe(e,f,null,a,i),r-1),[]})},On=(e,r,t)=>{switch(r){case 1:return t?n=>x[n>>0]:n=>H[n>>0];case 2:return t?n=>ae[n>>1]:n=>fe[n>>1];case 4:return t?n=>M[n>>2]:n=>w[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Dn=(e,r,t,n,a)=>{r=W(r);var i=v=>v;if(n===0){var o=32-8*t;i=v=>v<>>o}var s=r.includes("unsigned"),l=(v,g)=>{},f;s?f=function(v,g){return l(g,this.name),g>>>0}:f=function(v,g){return l(g,this.name),g},V(e,{name:r,fromWireType:i,toWireType:f,argPackAdvance:Y,readValueFromPointer:On(r,t,n!==0),destructorFunction:null})},Wn=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[r];function i(o){var s=w[o>>2],l=w[o+4>>2];return new a(x.buffer,l,s)}t=W(t),V(e,{name:t,fromWireType:i,argPackAdvance:Y,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},kr=(e,r,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-a},In=(e,r,t)=>kr(e,H,r,t),Mr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Ur=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,kn=(e,r,t)=>{for(var n=r+t,a=r;e[a]&&!(a>=n);)++a;if(a-r>16&&e.buffer&&Ur)return Ur.decode(e.subarray(r,a));for(var i="";r>10,56320|f&1023)}}return i},er=(e,r)=>e?kn(H,e,r):"",Mn=(e,r)=>{r=W(r);var t=r==="std::string";V(e,{name:r,fromWireType(n){var a=w[n>>2],i=n+4,o;if(t)for(var s=i,l=0;l<=a;++l){var f=i+l;if(l==a||H[f]==0){var v=f-s,g=er(s,v);o===void 0?o=g:(o+="\0",o+=g),s=f+1}}else{for(var _=new Array(a),l=0;l>2]=i,t&&o)In(a,l,i+1);else if(o)for(var f=0;f255&&(q(l),y("String has UTF-16 code units that do not fit in 8 bits")),H[l+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,a=n+r/2;!(n>=a)&&fe[n];)++n;if(t=n<<1,t-e>32&&jr)return jr.decode(H.subarray(e,t));for(var i="",o=0;!(o>=r/2);++o){var s=ae[e+o*2>>1];if(s==0)break;i+=String.fromCharCode(s)}return i},jn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=r,i=t>1]=s,r+=2}return ae[r>>1]=0,r-a},Hn=e=>e.length*2,Bn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var a=M[e+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},xn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=r,i=a+t-4,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(M[r>>2]=s,r+=4,r+4>i)break}return M[r>>2]=0,r-a},Ln=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},Vn=(e,r,t)=>{t=W(t);var n,a,i,o,s;r===2?(n=Un,a=jn,o=Hn,i=()=>fe,s=1):r===4&&(n=Bn,a=xn,o=Ln,i=()=>w,s=2),V(e,{name:t,fromWireType:l=>{for(var f=w[l>>2],v=i(),g,_=l+4,m=0;m<=f;++m){var A=l+4+m*r;if(m==f||v[A>>s]==0){var E=A-_,b=n(_,E);g===void 0?g=b:(g+="\0",g+=b),_=A+r}}return q(l),g},toWireType:(l,f)=>{typeof f!="string"&&y(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),g=nr(4+v+r);return w[g>>2]=v>>s,a(f,g+4,v+r),l!==null&&l.push(q,g),g},argPackAdvance:Y,readValueFromPointer:Ve,destructorFunction(l){q(l)}})},Yn=(e,r,t,n,a,i)=>{Se[e]={name:W(r),rawConstructor:L(t,n),rawDestructor:L(a,i),fields:[]}},zn=(e,r,t,n,a,i,o,s,l,f)=>{Se[e].fields.push({fieldName:W(r),getterReturnType:t,getter:L(n,a),getterContext:i,setterArgumentType:o,setter:L(s,l),setterContext:f})},Nn=(e,r)=>{r=W(r),V(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},rr=[],Xn=(e,r,t,n)=>(e=rr[e],r=G.toValue(r),e(null,r,t,n)),Zn={},Gn=e=>{var r=Zn[e];return r===void 0?W(e):r},Hr=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},qn=e=>e===0?G.toHandle(Hr()):(e=Gn(e),G.toHandle(Hr()[e])),Qn=e=>{var r=rr.length;return rr.push(e),r},Jn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},Kn=Reflect.construct,ea=(e,r,t)=>{var n=[],a=e.toWireType(n,t);return n.length&&(w[r>>2]=G.toHandle(n)),a},ra=(e,r,t)=>{var n=Jn(e,r),a=n.shift();e--;var i=new Array(e),o=(l,f,v,g)=>{for(var _=0,m=0;ml.name).join(", ")}) => ${a.name}>`;return Qn(_e(s,o))},ta=e=>{e>4&&(B.get(e).refcount+=1)},na=e=>{var r=G.toValue(e);Le(r),Qe(e)},aa=(e,r)=>{e=Je(e,"_emval_take_value");var t=e.readValueFromPointer(r);return G.toHandle(t)},ia=()=>{Te("")},oa=(e,r,t)=>H.copyWithin(e,r,r+t),sa=()=>2147483648,ua=e=>{var r=we.buffer,t=(e-r.byteLength+65535)/65536;try{return we.grow(t),hr(),1}catch{}},la=e=>{var r=H.length;e>>>=0;var t=sa();if(e>t)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var i=r*(1+.2/a);i=Math.min(i,e+100663296);var o=Math.min(t,n(Math.max(e,i),65536)),s=ua(o);if(s)return!0}return!1},tr={},ca=()=>z||"./this.program",me=()=>{if(!me.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:ca()};for(var t in tr)tr[t]===void 0?delete r[t]:r[t]=tr[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);me.strings=n}return me.strings},fa=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);x[r>>0]=0},va=(e,r)=>{var t=0;return me().forEach((n,a)=>{var i=r+t;w[e+a*4>>2]=i,fa(n,i),t+=n.length+1}),0},da=(e,r)=>{var t=me();w[e>>2]=t.length;var n=0;return t.forEach(a=>n+=a.length+1),w[r>>2]=n,0},ha=e=>e,Ie=e=>e%4===0&&(e%100!==0||e%400===0),pa=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Br=[31,29,31,30,31,30,31,31,30,31,30,31],xr=[31,28,31,30,31,30,31,31,30,31,30,31],ga=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=Ie(t.getFullYear()),a=t.getMonth(),i=(n?Br:xr)[a];if(r>i-t.getDate())r-=i-t.getDate()+1,t.setDate(1),a<11?t.setMonth(a+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function _a(e,r,t){var n=t>0?t:Mr(e)+1,a=new Array(n),i=kr(e,a,0,a.length);return r&&(a.length=i),a}var ma=(e,r)=>{x.set(e,r)},ya=(e,r,t,n)=>{var a=w[n+40>>2],i={tm_sec:M[n>>2],tm_min:M[n+4>>2],tm_hour:M[n+8>>2],tm_mday:M[n+12>>2],tm_mon:M[n+16>>2],tm_year:M[n+20>>2],tm_wday:M[n+24>>2],tm_yday:M[n+28>>2],tm_isdst:M[n+32>>2],tm_gmtoff:M[n+36>>2],tm_zone:a?er(a):""},o=er(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in s)o=o.replace(new RegExp(l,"g"),s[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function g(c,d,F){for(var D=typeof c=="number"?c.toString():c||"";D.length0?1:0}var D;return(D=F(c.getFullYear()-d.getFullYear()))===0&&(D=F(c.getMonth()-d.getMonth()))===0&&(D=F(c.getDate()-d.getDate())),D}function A(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function E(c){var d=ga(new Date(c.tm_year+1900,0,1),c.tm_yday),F=new Date(d.getFullYear(),0,4),D=new Date(d.getFullYear()+1,0,4),ue=A(F),Me=A(D);return m(ue,d)<=0?m(Me,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var b={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return _(d/100|0,2)},"%d":c=>_(c.tm_mday,2),"%e":c=>g(c.tm_mday,2," "),"%g":c=>E(c).toString().substring(2),"%G":c=>E(c),"%H":c=>_(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),_(d,2)},"%j":c=>_(c.tm_mday+pa(Ie(c.tm_year+1900)?Br:xr,c.tm_mon-1),3),"%m":c=>_(c.tm_mon+1,2),"%M":c=>_(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>_(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return _(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var D=(c.tm_wday+371-c.tm_yday)%7;D!=4&&(D!=3||!Ie(c.tm_year))&&(d=1)}}else{d=52;var F=(c.tm_wday+7-c.tm_yday-1)%7;(F==4||F==5&&Ie(c.tm_year%400-1))&&d++}return _(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return _(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,F=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(F?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var l in b)o.includes(l)&&(o=o.replace(new RegExp(l,"g"),b[l](i)));o=o.replace(/\0\0/g,"%");var I=_a(o,!1);return I.length>r?0:(ma(I,e),I.length-1)},ba=(e,r,t,n,a)=>ya(e,r,t,n);$r=u.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},zt(),se=u.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},nn(),Kt(),vn(),Or=u.UnboundTypeError=gn(Error,"UnboundTypeError"),$n(),Tn();var $a={s:It,t:kt,b:Ut,g:jt,m:Ht,K:Bt,e:xt,W:Lt,d:Mt,ea:Vt,R:Yt,$:Xt,da:_n,ca:yn,x:bn,Z:Cn,y:Sn,j:An,M:Fn,E:Rn,u:Dn,q:Wn,L:Mn,D:Vn,w:Yn,fa:zn,aa:Nn,S:Xn,ia:Qe,ha:qn,_:ra,N:ta,P:na,ba:aa,C:ia,Y:oa,X:la,U:va,V:da,G:ja,B:Sa,H:Ua,p:Ha,a:wa,f:Ea,n:Pa,k:Ra,J:ka,v:Ia,I:Ma,A:xa,Q:Va,l:Fa,i:Aa,c:Ca,o:Ta,F:Da,ga:Oa,r:Ba,h:Wa,z:La,O:ha,T:ba},R=Wt(),q=u._free=e=>(q=u._free=R.la)(e),nr=u._malloc=e=>(nr=u._malloc=R.ma)(e),Lr=e=>(Lr=R.oa)(e),T=(e,r)=>(T=R.pa)(e,r),ye=e=>(ye=R.qa)(e),P=()=>(P=R.ra)(),S=e=>(S=R.sa)(e),Vr=e=>(Vr=R.ta)(e),Yr=e=>(Yr=R.ua)(e),zr=(e,r,t)=>(zr=R.va)(e,r,t),Nr=e=>(Nr=R.wa)(e);u.dynCall_viijii=(e,r,t,n,a,i,o)=>(u.dynCall_viijii=R.xa)(e,r,t,n,a,i,o);var Xr=u.dynCall_jiiii=(e,r,t,n,a)=>(Xr=u.dynCall_jiiii=R.ya)(e,r,t,n,a);u.dynCall_iiiiij=(e,r,t,n,a,i,o)=>(u.dynCall_iiiiij=R.za)(e,r,t,n,a,i,o),u.dynCall_iiiiijj=(e,r,t,n,a,i,o,s,l)=>(u.dynCall_iiiiijj=R.Aa)(e,r,t,n,a,i,o,s,l),u.dynCall_iiiiiijj=(e,r,t,n,a,i,o,s,l,f)=>(u.dynCall_iiiiiijj=R.Ba)(e,r,t,n,a,i,o,s,l,f);function wa(e,r){var t=P();try{return C(e)(r)}catch(n){if(S(t),n!==n+0)throw n;T(1,0)}}function Ta(e,r,t,n){var a=P();try{C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function Ca(e,r,t){var n=P();try{C(e)(r,t)}catch(a){if(S(n),a!==a+0)throw a;T(1,0)}}function Pa(e,r,t,n){var a=P();try{return C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function Sa(e,r,t,n,a){var i=P();try{return C(e)(r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}function Aa(e,r){var t=P();try{C(e)(r)}catch(n){if(S(t),n!==n+0)throw n;T(1,0)}}function Ea(e,r,t){var n=P();try{return C(e)(r,t)}catch(a){if(S(n),a!==a+0)throw a;T(1,0)}}function Fa(e){var r=P();try{C(e)()}catch(t){if(S(r),t!==t+0)throw t;T(1,0)}}function Ra(e,r,t,n,a){var i=P();try{return C(e)(r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}function Oa(e,r,t,n,a,i){var o=P();try{C(e)(r,t,n,a,i)}catch(s){if(S(o),s!==s+0)throw s;T(1,0)}}function Da(e,r,t,n,a){var i=P();try{C(e)(r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}function Wa(e,r,t,n,a,i,o,s,l,f,v){var g=P();try{C(e)(r,t,n,a,i,o,s,l,f,v)}catch(_){if(S(g),_!==_+0)throw _;T(1,0)}}function Ia(e,r,t,n,a,i,o){var s=P();try{return C(e)(r,t,n,a,i,o)}catch(l){if(S(s),l!==l+0)throw l;T(1,0)}}function ka(e,r,t,n,a,i){var o=P();try{return C(e)(r,t,n,a,i)}catch(s){if(S(o),s!==s+0)throw s;T(1,0)}}function Ma(e,r,t,n,a,i,o,s){var l=P();try{return C(e)(r,t,n,a,i,o,s)}catch(f){if(S(l),f!==f+0)throw f;T(1,0)}}function Ua(e,r,t,n){var a=P();try{return C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function ja(e,r,t,n){var a=P();try{return C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function Ha(e){var r=P();try{return C(e)()}catch(t){if(S(r),t!==t+0)throw t;T(1,0)}}function Ba(e,r,t,n,a,i,o,s){var l=P();try{C(e)(r,t,n,a,i,o,s)}catch(f){if(S(l),f!==f+0)throw f;T(1,0)}}function xa(e,r,t,n,a,i,o,s,l,f,v,g){var _=P();try{return C(e)(r,t,n,a,i,o,s,l,f,v,g)}catch(m){if(S(_),m!==m+0)throw m;T(1,0)}}function La(e,r,t,n,a,i,o,s,l,f,v,g,_,m,A,E){var b=P();try{C(e)(r,t,n,a,i,o,s,l,f,v,g,_,m,A,E)}catch(I){if(S(b),I!==I+0)throw I;T(1,0)}}function Va(e,r,t,n,a){var i=P();try{return Xr(e,r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}var ke;ve=function e(){ke||Zr(),ke||(ve=e)};function Zr(){if(K>0||(wt(),K>0))return;function e(){ke||(ke=!0,u.calledRun=!0,!fr&&(Tt(),U(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Ct()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),e()},1)):e()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Zr(),p.ready}})();const Ue=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Qr(h){return h.join("|")}function Jr(h){const p=ar(h);let u=0,U=Ue.length-1;for(;u<=U;){const $=Math.floor((u+U)/2),j=Ue[$],z=ar(j);if(z===p)return j;z{const u=h.match(/_(.+?)\.wasm$/);return u?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${u[1]}/${h}`:p+h}};let be=new WeakMap;function $e(h,p){var j;const u=be.get(h);if(u!=null&&u.modulePromise&&(p===void 0||Object.is(p,u.moduleOverrides)))return u.modulePromise;const U=(j=p!=null?p:u==null?void 0:u.moduleOverrides)!=null?j:ft,$=h({...U});return be.set(h,{moduleOverrides:U,modulePromise:$}),$}function vt(){be=new WeakMap}function dt(h,p){be.set(h,{moduleOverrides:p})}async function ht(h,p,u=te){const U={...te,...u},$=await $e(h),{size:j}=p,z=new Uint8Array(await p.arrayBuffer()),Q=$._malloc(j);$.HEAPU8.set(z,Q);const N=$.readBarcodesFromImage(Q,j,sr($,U));$._free(Q);const k=[];for(let J=0;J{var h=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(m={}){var u=m,j,w;u.ready=new Promise((e,r)=>{j=e,w=r});var H=Object.assign({},u),N="./this.program",J=typeof window=="object",X=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var I="";function Q(e){return u.locateFile?u.locateFile(e,I):I+e}var ne;(J||X)&&(X?I=self.location.href:typeof document<"u"&&document.currentScript&&(I=document.currentScript.src),h&&(I=h),I.indexOf("blob:")!==0?I=I.substr(0,I.replace(/[?#].*/,"").lastIndexOf("/")+1):I="",X&&(ne=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),u.print||console.log.bind(console);var z=u.printErr||console.error.bind(console);Object.assign(u,H),H=null,u.arguments&&u.arguments,u.thisProgram&&(N=u.thisProgram),u.quit&&u.quit;var le;u.wasmBinary&&(le=u.wasmBinary),typeof WebAssembly!="object"&&we("no native wasm support detected");var $e,ur=!1,x,U,ae,ce,W,$,lr,cr;function fr(){var e=$e.buffer;u.HEAP8=x=new Int8Array(e),u.HEAP16=ae=new Int16Array(e),u.HEAPU8=U=new Uint8Array(e),u.HEAPU16=ce=new Uint16Array(e),u.HEAP32=W=new Int32Array(e),u.HEAPU32=$=new Uint32Array(e),u.HEAPF32=lr=new Float32Array(e),u.HEAPF64=cr=new Float64Array(e)}var vr=[],dr=[],hr=[];function pt(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)mt(u.preRun.shift());je(vr)}function _t(){je(dr)}function gt(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)bt(u.postRun.shift());je(hr)}function mt(e){vr.unshift(e)}function yt(e){dr.unshift(e)}function bt(e){hr.unshift(e)}var K=0,fe=null;function $t(e){var r;K++,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K)}function wt(e){var r;if(K--,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K),K==0&&fe){var t=fe;fe=null,t()}}function we(e){var r;(r=u.onAbort)===null||r===void 0||r.call(u,e),e="Aborted("+e+")",z(e),ur=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw w(t),t}var Tt="data:application/octet-stream;base64,",pr=e=>e.startsWith(Tt),ie;ie="zxing_reader.wasm",pr(ie)||(ie=Q(ie));function _r(e){if(e==ie&&le)return new Uint8Array(le);if(ne)return ne(e);throw"both async and sync fetching of the wasm failed"}function Ct(e){return!le&&(J||X)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>_r(e)):Promise.resolve().then(()=>_r(e))}function gr(e,r,t){return Ct(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{z(`failed to asynchronously prepare wasm: ${n}`),we(n)})}function Pt(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!pr(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(o){return z(`wasm streaming compile failed: ${o}`),z("falling back to ArrayBuffer instantiation"),gr(r,t,n)})}):gr(r,t,n)}function St(){var e={a:ha};function r(n,a){return R=n.exports,$e=R.ia,fr(),Ar=R.ma,yt(R.ja),wt(),R}$t();function t(n){r(n.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(e,r)}catch(n){z(`Module.instantiateWasm callback failed with error: ${n}`),w(n)}return Pt(le,ie,e,t).catch(w),{}}var je=e=>{for(;e.length>0;)e.shift()(u)};u.noExitRuntime;var Te=[],Ce=0,At=e=>{var r=new He(e);return r.get_caught()||(r.set_caught(!0),Ce--),r.set_rethrown(!1),Te.push(r),xr(r.excPtr),r.get_exception_ptr()},Z=0,Et=()=>{T(0,0);var e=Te.pop();Br(e.excPtr),Z=0};function He(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){$[this.ptr+4>>2]=r},this.get_type=function(){return $[this.ptr+4>>2]},this.set_destructor=function(r){$[this.ptr+8>>2]=r},this.get_destructor=function(){return $[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,x[this.ptr+12>>0]=r},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,x[this.ptr+13>>0]=r},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){$[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return $[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Yr(this.get_type());if(r)return $[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Ft=e=>{throw Z||(Z=e),Z},Be=e=>{var r=Z;if(!r)return me(0),0;var t=new He(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return me(0),r;for(var a in e){var i=e[a];if(i===0||i===n)break;var o=t.ptr+16;if(Vr(i,n,o))return me(i),r}return me(n),r},Rt=()=>Be([]),Ot=e=>Be([e]),Dt=(e,r)=>Be([e,r]),kt=()=>{var e=Te.pop();e||we("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(Te.push(e),e.set_rethrown(!0),e.set_caught(!1),Ce++),Z=r,Z},It=(e,r,t)=>{var n=new He(e);throw n.init(r,t),Z=e,Ce++,Z},Wt=()=>Ce,Pe={},xe=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function Ve(e){return this.fromWireType(W[e>>2])}var oe={},ee={},Se={},mr,Ae=e=>{throw new mr(e)},re=(e,r,t)=>{e.forEach(function(s){Se[s]=r});function n(s){var l=t(s);l.length!==e.length&&Ae("Mismatched type converter count");for(var f=0;f{ee.hasOwnProperty(s)?a[l]=ee[s]:(i.push(s),oe.hasOwnProperty(s)||(oe[s]=[]),oe[s].push(()=>{a[l]=ee[s],++o,o===i.length&&n(a)}))}),i.length===0&&n(a)},Mt=e=>{var r=Pe[e];delete Pe[e];var t=r.rawConstructor,n=r.rawDestructor,a=r.fields,i=a.map(o=>o.getterReturnType).concat(a.map(o=>o.setterArgumentType));re([e],i,o=>{var s={};return a.forEach((l,f)=>{var v=l.fieldName,p=o[f],_=l.getter,g=l.getterContext,C=o[f+a.length],E=l.setter,b=l.setterContext;s[v]={read:k=>p.fromWireType(_(g,k)),write:(k,c)=>{var d=[];E(b,k,C.toWireType(d,c)),xe(d)}}}),[{name:r.name,fromWireType:l=>{var f={};for(var v in s)f[v]=s[v].read(l);return n(l),f},toWireType:(l,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var p=t();for(v in s)s[v].write(p,f[v]);return l!==null&&l.push(n,p),p},argPackAdvance:L,readValueFromPointer:Ve,destructorFunction:n}]})},Ut=(e,r,t,n,a)=>{},jt=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);yr=e},yr,D=e=>{for(var r="",t=e;U[t];)r+=yr[U[t++]];return r},se,y=e=>{throw new se(e)};function Ht(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||y(`type "${n}" must have a positive integer typeid pointer`),ee.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;y(`Cannot register type '${n}' twice`)}if(ee[e]=r,delete Se[e],oe.hasOwnProperty(e)){var a=oe[e];delete oe[e],a.forEach(i=>i())}}function Y(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Ht(e,r,t)}var L=8,Bt=(e,r,t,n)=>{r=D(r),Y(e,{name:r,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:L,readValueFromPointer:function(a){return this.fromWireType(U[a])},destructorFunction:null})},xt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Ye=e=>{function r(t){return t.$$.ptrType.registeredClass.name}y(r(e)+" instance already deleted")},Le=!1,br=e=>{},Vt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},$r=e=>{e.count.value-=1;var r=e.count.value===0;r&&Vt(e)},wr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=wr(e,r,t.baseClass);return n===null?null:t.downcast(n)},Tr={},Yt=()=>Object.keys(he).length,Lt=()=>{var e=[];for(var r in he)he.hasOwnProperty(r)&&e.push(he[r]);return e},ve=[],Ne=()=>{for(;ve.length;){var e=ve.pop();e.$$.deleteScheduled=!1,e.delete()}},de,Nt=e=>{de=e,ve.length&&de&&de(Ne)},Xt=()=>{u.getInheritedInstanceCount=Yt,u.getLiveInheritedInstances=Lt,u.flushPendingDeletes=Ne,u.setDelayFunction=Nt},he={},zt=(e,r)=>{for(r===void 0&&y("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},Zt=(e,r)=>(r=zt(e,r),he[r]),Ee=(e,r)=>{(!r.ptrType||!r.ptr)&&Ae("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&Ae("Both smartPtrType and smartPtr must be specified"),r.count={value:1},pe(Object.create(e,{$$:{value:r,writable:!0}}))};function Gt(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=Zt(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function a(){return this.isSmartPointer?Ee(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):Ee(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i=this.registeredClass.getActualType(r),o=Tr[i];if(!o)return a.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var l=wr(r,this.registeredClass,s.registeredClass);return l===null?a.call(this):this.isSmartPointer?Ee(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):Ee(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}var pe=e=>typeof FinalizationRegistry>"u"?(pe=r=>r,e):(Le=new FinalizationRegistry(r=>{$r(r.$$)}),pe=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var a={$$:t};Le.register(r,a,r)}return r},br=r=>Le.unregister(r),pe(e)),qt=()=>{Object.assign(Fe.prototype,{isAliasOf(e){if(!(this instanceof Fe)||!(e instanceof Fe))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,a=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return r===n&&t===a},clone(){if(this.$$.ptr||Ye(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=pe(Object.create(Object.getPrototypeOf(this),{$$:{value:xt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),br(this),$r(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),ve.push(this),ve.length===1&&de&&de(Ne),this.$$.deleteScheduled=!0,this}})};function Fe(){}var _e=(e,r)=>Object.defineProperty(r,"name",{value:e}),Cr=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||y(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},Xe=(e,r,t)=>{u.hasOwnProperty(e)?((t===void 0||u[e].overloadTable!==void 0&&u[e].overloadTable[t]!==void 0)&&y(`Cannot register public name '${e}' twice`),Cr(u,e,e),u.hasOwnProperty(t)&&y(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),u[e].overloadTable[t]=r):(u[e]=r,t!==void 0&&(u[e].numArguments=t))},Jt=48,Qt=57,Kt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=Jt&&r<=Qt?`_${e}`:e};function en(e,r,t,n,a,i,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=a,this.getActualType=i,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var ze=(e,r,t)=>{for(;r!==t;)r.upcast||y(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function rn(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Qe(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=ze(r.$$.ptr,t,this.registeredClass);return n}function tn(e,r){var t;if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&y(`Cannot pass "${Qe(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=ze(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&y("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var a=r.clone();t=this.rawShare(t,G.toHandle(()=>a.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:y("Unsupporting sharing policy")}return t}function nn(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Qe(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=ze(r.$$.ptr,t,this.registeredClass);return n}function Pr(e){return this.fromWireType($[e>>2])}var an=()=>{Object.assign(Re.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:L,readValueFromPointer:Pr,deleteObject(e){e!==null&&e.delete()},fromWireType:Gt})};function Re(e,r,t,n,a,i,o,s,l,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=a,this.pointeeType=i,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=v,!a&&r.baseClass===void 0?n?(this.toWireType=rn,this.destructorFunction=null):(this.toWireType=nn,this.destructorFunction=null):this.toWireType=tn}var Sr=(e,r,t)=>{u.hasOwnProperty(e)||Ae("Replacing nonexistant public symbol"),u[e].overloadTable!==void 0&&t!==void 0?u[e].overloadTable[t]=r:(u[e]=r,u[e].argCount=t)},on=(e,r,t)=>{var n=u["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},Oe=[],Ar,P=e=>{var r=Oe[e];return r||(e>=Oe.length&&(Oe.length=e+1),Oe[e]=r=Ar.get(e)),r},sn=(e,r,t)=>{if(e.includes("j"))return on(e,r,t);var n=P(r).apply(null,t);return n},un=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),sn(e,r,t)}},V=(e,r)=>{e=D(e);function t(){return e.includes("j")?un(e,r):P(r)}var n=t();return typeof n!="function"&&y(`unknown function pointer with signature ${e}: ${r}`),n},ln=(e,r)=>{var t=_e(r,function(n){this.name=r,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Er,Fr=e=>{var r=Hr(e),t=D(r);return q(r),t},De=(e,r)=>{var t=[],n={};function a(i){if(!n[i]&&!ee[i]){if(Se[i]){Se[i].forEach(a);return}t.push(i),n[i]=!0}}throw r.forEach(a),new Er(`${e}: `+t.map(Fr).join([", "]))},cn=(e,r,t,n,a,i,o,s,l,f,v,p,_)=>{v=D(v),i=V(a,i),s&&(s=V(o,s)),f&&(f=V(l,f)),_=V(p,_);var g=Kt(v);Xe(g,function(){De(`Cannot construct ${v} due to unbound types`,[n])}),re([e,r,t],n?[n]:[],function(C){C=C[0];var E,b;n?(E=C.registeredClass,b=E.instancePrototype):b=Fe.prototype;var k=_e(v,function(){if(Object.getPrototypeOf(this)!==c)throw new se("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new se(v+" has no accessible constructor");var zr=d.constructor_body[arguments.length];if(zr===void 0)throw new se(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return zr.apply(this,arguments)}),c=Object.create(b,{constructor:{value:k}});k.prototype=c;var d=new en(v,k,c,_,E,i,s,f);if(d.baseClass){var F,O;(O=(F=d.baseClass).__derivedClasses)!==null&&O!==void 0||(F.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var ue=new Re(v,d,!0,!1,!1),We=new Re(v+"*",d,!1,!1,!1),Xr=new Re(v+" const*",d,!1,!0,!1);return Tr[e]={pointerType:We,constPointerType:Xr},Sr(g,k),[ue,We,Xr]})},Ze=(e,r)=>{for(var t=[],n=0;n>2]);return t};function fn(e){for(var r=1;r{var o=Ze(r,t);a=V(n,a),re([],[e],function(s){s=s[0];var l=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new se(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{De(`Cannot construct ${s.name} due to unbound types`,o)},re([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=Ge(l,f,null,a,i),[])),[]})},Rr=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},dn=(e,r,t,n,a,i,o,s,l)=>{var f=Ze(t,n);r=D(r),r=Rr(r),i=V(a,i),re([],[e],function(v){v=v[0];var p=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function _(){De(`Cannot call ${p} due to unbound types`,f)}var g=v.registeredClass.instancePrototype,C=g[r];return C===void 0||C.overloadTable===void 0&&C.className!==v.name&&C.argCount===t-2?(_.argCount=t-2,_.className=v.name,g[r]=_):(Cr(g,r,p),g[r].overloadTable[t-2]=_),re([],f,function(E){var b=Ge(p,E,v,i,o);return g[r].overloadTable===void 0?(b.argCount=t-2,g[r]=b):g[r].overloadTable[t-2]=b,[]}),[]})};function hn(){Object.assign(Or.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Or(){this.allocated=[void 0],this.freelist=[]}var B=new Or,qe=e=>{e>=B.reserved&&--B.get(e).refcount===0&&B.free(e)},pn=()=>{for(var e=0,r=B.reserved;r{B.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),B.reserved=B.allocated.length,u.count_emval_handles=pn},G={toValue:e=>(e||y("Cannot use deleted val. handle = "+e),B.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return B.allocate({refcount:1,value:e})}}},gn=(e,r)=>{r=D(r),Y(e,{name:r,fromWireType:t=>{var n=G.toValue(t);return qe(t),n},toWireType:(t,n)=>G.toHandle(n),argPackAdvance:L,readValueFromPointer:Ve,destructorFunction:null})},mn=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(x[n>>0])}:function(n){return this.fromWireType(U[n>>0])};case 2:return t?function(n){return this.fromWireType(ae[n>>1])}:function(n){return this.fromWireType(ce[n>>1])};case 4:return t?function(n){return this.fromWireType(W[n>>2])}:function(n){return this.fromWireType($[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},yn=(e,r,t,n)=>{r=D(r);function a(){}a.values={},Y(e,{name:r,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,o)=>o.value,argPackAdvance:L,readValueFromPointer:mn(r,t,n),destructorFunction:null}),Xe(r,a)},Je=(e,r)=>{var t=ee[e];return t===void 0&&y(r+" has unknown type "+Fr(e)),t},bn=(e,r,t)=>{var n=Je(e,"enum");r=D(r);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:_e(`${n.name}_${r}`,function(){})}});a.values[t]=i,a[r]=i},Qe=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},$n=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(lr[t>>2])};case 8:return function(t){return this.fromWireType(cr[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},wn=(e,r,t)=>{r=D(r),Y(e,{name:r,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:L,readValueFromPointer:$n(r,t),destructorFunction:null})},Tn=(e,r,t,n,a,i,o)=>{var s=Ze(r,t);e=D(e),e=Rr(e),a=V(n,a),Xe(e,function(){De(`Cannot call ${e} due to unbound types`,s)},r-1),re([],s,function(l){var f=[l[0],null].concat(l.slice(1));return Sr(e,Ge(e,f,null,a,i),r-1),[]})},Cn=(e,r,t)=>{switch(r){case 1:return t?n=>x[n>>0]:n=>U[n>>0];case 2:return t?n=>ae[n>>1]:n=>ce[n>>1];case 4:return t?n=>W[n>>2]:n=>$[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Pn=(e,r,t,n,a)=>{r=D(r);var i=v=>v;if(n===0){var o=32-8*t;i=v=>v<>>o}var s=r.includes("unsigned"),l=(v,p)=>{},f;s?f=function(v,p){return l(p,this.name),p>>>0}:f=function(v,p){return l(p,this.name),p},Y(e,{name:r,fromWireType:i,toWireType:f,argPackAdvance:L,readValueFromPointer:Cn(r,t,n!==0),destructorFunction:null})},Sn=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[r];function i(o){var s=$[o>>2],l=$[o+4>>2];return new a(x.buffer,l,s)}t=D(t),Y(e,{name:t,fromWireType:i,argPackAdvance:L,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},Dr=(e,r,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-a},An=(e,r,t)=>Dr(e,U,r,t),kr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Ir=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,En=(e,r,t)=>{for(var n=r+t,a=r;e[a]&&!(a>=n);)++a;if(a-r>16&&e.buffer&&Ir)return Ir.decode(e.subarray(r,a));for(var i="";r>10,56320|f&1023)}}return i},Ke=(e,r)=>e?En(U,e,r):"",Fn=(e,r)=>{r=D(r);var t=r==="std::string";Y(e,{name:r,fromWireType(n){var a=$[n>>2],i=n+4,o;if(t)for(var s=i,l=0;l<=a;++l){var f=i+l;if(l==a||U[f]==0){var v=f-s,p=Ke(s,v);o===void 0?o=p:(o+="\0",o+=p),s=f+1}}else{for(var _=new Array(a),l=0;l>2]=i,t&&o)An(a,l,i+1);else if(o)for(var f=0;f255&&(q(l),y("String has UTF-16 code units that do not fit in 8 bits")),U[l+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,a=n+r/2;!(n>=a)&&ce[n];)++n;if(t=n<<1,t-e>32&&Wr)return Wr.decode(U.subarray(e,t));for(var i="",o=0;!(o>=r/2);++o){var s=ae[e+o*2>>1];if(s==0)break;i+=String.fromCharCode(s)}return i},On=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=r,i=t>1]=s,r+=2}return ae[r>>1]=0,r-a},Dn=e=>e.length*2,kn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var a=W[e+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},In=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=r,i=a+t-4,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(W[r>>2]=s,r+=4,r+4>i)break}return W[r>>2]=0,r-a},Wn=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},Mn=(e,r,t)=>{t=D(t);var n,a,i,o,s;r===2?(n=Rn,a=On,o=Dn,i=()=>ce,s=1):r===4&&(n=kn,a=In,o=Wn,i=()=>$,s=2),Y(e,{name:t,fromWireType:l=>{for(var f=$[l>>2],v=i(),p,_=l+4,g=0;g<=f;++g){var C=l+4+g*r;if(g==f||v[C>>s]==0){var E=C-_,b=n(_,E);p===void 0?p=b:(p+="\0",p+=b),_=C+r}}return q(l),p},toWireType:(l,f)=>{typeof f!="string"&&y(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),p=tr(4+v+r);return $[p>>2]=v>>s,a(f,p+4,v+r),l!==null&&l.push(q,p),p},argPackAdvance:L,readValueFromPointer:Ve,destructorFunction(l){q(l)}})},Un=(e,r,t,n,a,i)=>{Pe[e]={name:D(r),rawConstructor:V(t,n),rawDestructor:V(a,i),fields:[]}},jn=(e,r,t,n,a,i,o,s,l,f)=>{Pe[e].fields.push({fieldName:D(r),getterReturnType:t,getter:V(n,a),getterContext:i,setterArgumentType:o,setter:V(s,l),setterContext:f})},Hn=(e,r)=>{r=D(r),Y(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},er=[],Bn=(e,r,t,n)=>(e=er[e],r=G.toValue(r),e(null,r,t,n)),xn={},Vn=e=>{var r=xn[e];return r===void 0?D(e):r},Mr=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Yn=e=>e===0?G.toHandle(Mr()):(e=Vn(e),G.toHandle(Mr()[e])),Ln=e=>{var r=er.length;return er.push(e),r},Nn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},Xn=Reflect.construct,zn=(e,r,t)=>{var n=[],a=e.toWireType(n,t);return n.length&&($[r>>2]=G.toHandle(n)),a},Zn=(e,r,t)=>{var n=Nn(e,r),a=n.shift();e--;var i=new Array(e),o=(l,f,v,p)=>{for(var _=0,g=0;gl.name).join(", ")}) => ${a.name}>`;return Ln(_e(s,o))},Gn=e=>{e>4&&(B.get(e).refcount+=1)},qn=e=>{var r=G.toValue(e);xe(r),qe(e)},Jn=(e,r)=>{e=Je(e,"_emval_take_value");var t=e.readValueFromPointer(r);return G.toHandle(t)},Qn=()=>{we("")},Kn=(e,r,t)=>U.copyWithin(e,r,r+t),ea=()=>2147483648,ra=e=>{var r=$e.buffer,t=(e-r.byteLength+65535)/65536;try{return $e.grow(t),fr(),1}catch{}},ta=e=>{var r=U.length;e>>>=0;var t=ea();if(e>t)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var i=r*(1+.2/a);i=Math.min(i,e+100663296);var o=Math.min(t,n(Math.max(e,i),65536)),s=ra(o);if(s)return!0}return!1},rr={},na=()=>N||"./this.program",ge=()=>{if(!ge.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:na()};for(var t in rr)rr[t]===void 0?delete r[t]:r[t]=rr[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);ge.strings=n}return ge.strings},aa=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);x[r>>0]=0},ia=(e,r)=>{var t=0;return ge().forEach((n,a)=>{var i=r+t;$[e+a*4>>2]=i,aa(n,i),t+=n.length+1}),0},oa=(e,r)=>{var t=ge();$[e>>2]=t.length;var n=0;return t.forEach(a=>n+=a.length+1),$[r>>2]=n,0},sa=e=>e,ke=e=>e%4===0&&(e%100!==0||e%400===0),ua=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Ur=[31,29,31,30,31,30,31,31,30,31,30,31],jr=[31,28,31,30,31,30,31,31,30,31,30,31],la=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=ke(t.getFullYear()),a=t.getMonth(),i=(n?Ur:jr)[a];if(r>i-t.getDate())r-=i-t.getDate()+1,t.setDate(1),a<11?t.setMonth(a+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function ca(e,r,t){var n=t>0?t:kr(e)+1,a=new Array(n),i=Dr(e,a,0,a.length);return r&&(a.length=i),a}var fa=(e,r)=>{x.set(e,r)},va=(e,r,t,n)=>{var a=$[n+40>>2],i={tm_sec:W[n>>2],tm_min:W[n+4>>2],tm_hour:W[n+8>>2],tm_mday:W[n+12>>2],tm_mon:W[n+16>>2],tm_year:W[n+20>>2],tm_wday:W[n+24>>2],tm_yday:W[n+28>>2],tm_isdst:W[n+32>>2],tm_gmtoff:W[n+36>>2],tm_zone:a?Ke(a):""},o=Ke(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in s)o=o.replace(new RegExp(l,"g"),s[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function p(c,d,F){for(var O=typeof c=="number"?c.toString():c||"";O.length0?1:0}var O;return(O=F(c.getFullYear()-d.getFullYear()))===0&&(O=F(c.getMonth()-d.getMonth()))===0&&(O=F(c.getDate()-d.getDate())),O}function C(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function E(c){var d=la(new Date(c.tm_year+1900,0,1),c.tm_yday),F=new Date(d.getFullYear(),0,4),O=new Date(d.getFullYear()+1,0,4),ue=C(F),We=C(O);return g(ue,d)<=0?g(We,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var b={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return _(d/100|0,2)},"%d":c=>_(c.tm_mday,2),"%e":c=>p(c.tm_mday,2," "),"%g":c=>E(c).toString().substring(2),"%G":c=>E(c),"%H":c=>_(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),_(d,2)},"%j":c=>_(c.tm_mday+ua(ke(c.tm_year+1900)?Ur:jr,c.tm_mon-1),3),"%m":c=>_(c.tm_mon+1,2),"%M":c=>_(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>_(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return _(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var O=(c.tm_wday+371-c.tm_yday)%7;O!=4&&(O!=3||!ke(c.tm_year))&&(d=1)}}else{d=52;var F=(c.tm_wday+7-c.tm_yday-1)%7;(F==4||F==5&&ke(c.tm_year%400-1))&&d++}return _(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return _(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,F=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(F?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var l in b)o.includes(l)&&(o=o.replace(new RegExp(l,"g"),b[l](i)));o=o.replace(/\0\0/g,"%");var k=ca(o,!1);return k.length>r?0:(fa(k,e),k.length-1)},da=(e,r,t,n,a)=>va(e,r,t,n);mr=u.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},jt(),se=u.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},qt(),Xt(),an(),Er=u.UnboundTypeError=ln(Error,"UnboundTypeError"),hn(),_n();var ha={s:At,u:Et,b:Rt,g:Ot,q:Dt,J:kt,f:It,V:Wt,d:Ft,da:Mt,Q:Ut,_:Bt,ca:cn,ba:vn,w:dn,Y:gn,x:yn,h:bn,L:wn,M:Tn,t:Pn,o:Sn,K:Fn,C:Mn,A:Un,ea:jn,$:Hn,R:Bn,ha:qe,fa:Yn,Z:Zn,N:Gn,O:qn,aa:Jn,B:Qn,X:Kn,W:ta,T:ia,U:oa,E:Ra,D:ya,F:Fa,n:Oa,a:pa,e:$a,m:ma,k:Ta,H:Aa,v:Pa,G:Ea,z:ka,P:Wa,l:wa,j:ba,c:ga,p:_a,I:Sa,r:Da,i:Ca,y:Ia,ga:sa,S:da},R=St(),q=u._free=e=>(q=u._free=R.ka)(e),tr=u._malloc=e=>(tr=u._malloc=R.la)(e),Hr=e=>(Hr=R.na)(e),T=(e,r)=>(T=R.oa)(e,r),me=e=>(me=R.pa)(e),S=()=>(S=R.qa)(),A=e=>(A=R.ra)(e),Br=e=>(Br=R.sa)(e),xr=e=>(xr=R.ta)(e),Vr=(e,r,t)=>(Vr=R.ua)(e,r,t),Yr=e=>(Yr=R.va)(e);u.dynCall_viijii=(e,r,t,n,a,i,o)=>(u.dynCall_viijii=R.wa)(e,r,t,n,a,i,o);var Lr=u.dynCall_jiiii=(e,r,t,n,a)=>(Lr=u.dynCall_jiiii=R.xa)(e,r,t,n,a);u.dynCall_iiiiij=(e,r,t,n,a,i,o)=>(u.dynCall_iiiiij=R.ya)(e,r,t,n,a,i,o),u.dynCall_iiiiijj=(e,r,t,n,a,i,o,s,l)=>(u.dynCall_iiiiijj=R.za)(e,r,t,n,a,i,o,s,l),u.dynCall_iiiiiijj=(e,r,t,n,a,i,o,s,l,f)=>(u.dynCall_iiiiiijj=R.Aa)(e,r,t,n,a,i,o,s,l,f);function pa(e,r){var t=S();try{return P(e)(r)}catch(n){if(A(t),n!==n+0)throw n;T(1,0)}}function _a(e,r,t,n){var a=S();try{P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function ga(e,r,t){var n=S();try{P(e)(r,t)}catch(a){if(A(n),a!==a+0)throw a;T(1,0)}}function ma(e,r,t,n){var a=S();try{return P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function ya(e,r,t,n,a){var i=S();try{return P(e)(r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}function ba(e,r){var t=S();try{P(e)(r)}catch(n){if(A(t),n!==n+0)throw n;T(1,0)}}function $a(e,r,t){var n=S();try{return P(e)(r,t)}catch(a){if(A(n),a!==a+0)throw a;T(1,0)}}function wa(e){var r=S();try{P(e)()}catch(t){if(A(r),t!==t+0)throw t;T(1,0)}}function Ta(e,r,t,n,a){var i=S();try{return P(e)(r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}function Ca(e,r,t,n,a,i,o,s,l,f,v){var p=S();try{P(e)(r,t,n,a,i,o,s,l,f,v)}catch(_){if(A(p),_!==_+0)throw _;T(1,0)}}function Pa(e,r,t,n,a,i,o){var s=S();try{return P(e)(r,t,n,a,i,o)}catch(l){if(A(s),l!==l+0)throw l;T(1,0)}}function Sa(e,r,t,n,a){var i=S();try{P(e)(r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}function Aa(e,r,t,n,a,i){var o=S();try{return P(e)(r,t,n,a,i)}catch(s){if(A(o),s!==s+0)throw s;T(1,0)}}function Ea(e,r,t,n,a,i,o,s){var l=S();try{return P(e)(r,t,n,a,i,o,s)}catch(f){if(A(l),f!==f+0)throw f;T(1,0)}}function Fa(e,r,t,n){var a=S();try{return P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function Ra(e,r,t,n){var a=S();try{return P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function Oa(e){var r=S();try{return P(e)()}catch(t){if(A(r),t!==t+0)throw t;T(1,0)}}function Da(e,r,t,n,a,i,o,s){var l=S();try{P(e)(r,t,n,a,i,o,s)}catch(f){if(A(l),f!==f+0)throw f;T(1,0)}}function ka(e,r,t,n,a,i,o,s,l,f,v,p){var _=S();try{return P(e)(r,t,n,a,i,o,s,l,f,v,p)}catch(g){if(A(_),g!==g+0)throw g;T(1,0)}}function Ia(e,r,t,n,a,i,o,s,l,f,v,p,_,g,C,E){var b=S();try{P(e)(r,t,n,a,i,o,s,l,f,v,p,_,g,C,E)}catch(k){if(A(b),k!==k+0)throw k;T(1,0)}}function Wa(e,r,t,n,a){var i=S();try{return Lr(e,r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}var Ie;fe=function e(){Ie||Nr(),Ie||(fe=e)};function Nr(){if(K>0||(pt(),K>0))return;function e(){Ie||(Ie=!0,u.calledRun=!0,!ur&&(_t(),j(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),gt()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),e()},1)):e()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Nr(),m.ready}})();const Me=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Zr(h){return h.join("|")}function Gr(h){const m=nr(h);let u=0,j=Me.length-1;for(;u<=j;){const w=Math.floor((u+j)/2),H=Me[w],N=nr(H);if(N===m)return H;N{const u=h.match(/_(.+?)\.wasm$/);return u?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${u[1]}/${h}`:m+h}};let be=new WeakMap;function Ue(h,m){var H;const u=be.get(h);if(u!=null&&u.modulePromise&&(m===void 0||Object.is(m,u.moduleOverrides)))return u.modulePromise;const j=(H=m!=null?m:u==null?void 0:u.moduleOverrides)!=null?H:ot,w=h({...j});return be.set(h,{moduleOverrides:j,modulePromise:w}),w}function st(){be=new WeakMap}function ut(h,m){be.set(h,{moduleOverrides:m})}async function lt(h,m,u=te){const j={...te,...u},w=await Ue(h),{size:H}=m,N=new Uint8Array(await m.arrayBuffer()),J=w._malloc(H);w.HEAPU8.set(N,J);const X=w.readBarcodesFromImage(J,H,ir(w,j));w._free(J);const I=[];for(let Q=0;Q{var d=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(_={}){var o=_,D,S;o.ready=new Promise((r,e)=>{D=r,S=e});var j=Object.assign({},o),Cr=typeof window=="object",tr=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var W="";function pe(r){return o.locateFile?o.locateFile(r,W):W+r}var vr;(Cr||tr)&&(tr?W=self.location.href:typeof document<"u"&&document.currentScript&&(W=document.currentScript.src),d&&(W=d),W.indexOf("blob:")!==0?W=W.substr(0,W.replace(/[?#].*/,"").lastIndexOf("/")+1):W="",tr&&(vr=r=>{var e=new XMLHttpRequest;return e.open("GET",r,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),o.print||console.log.bind(console);var Q=o.printErr||console.error.bind(console);Object.assign(o,j),j=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit;var G;o.wasmBinary&&(G=o.wasmBinary),typeof WebAssembly!="object"&&dr("no native wasm support detected");var nr,Er=!1,M,b,Z,J,H,p,Rr,Fr;function Pr(){var r=nr.buffer;o.HEAP8=M=new Int8Array(r),o.HEAP16=Z=new Int16Array(r),o.HEAPU8=b=new Uint8Array(r),o.HEAPU16=J=new Uint16Array(r),o.HEAP32=H=new Int32Array(r),o.HEAPU32=p=new Uint32Array(r),o.HEAPF32=Rr=new Float32Array(r),o.HEAPF64=Fr=new Float64Array(r)}var Sr=[],Wr=[],Ir=[];function ge(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)be(o.preRun.shift());_r(Sr)}function me(){_r(Wr)}function ye(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)Te(o.postRun.shift());_r(Ir)}function be(r){Sr.unshift(r)}function we(r){Wr.unshift(r)}function Te(r){Ir.unshift(r)}var B=0,K=null;function Ae(r){var e;B++,(e=o.monitorRunDependencies)===null||e===void 0||e.call(o,B)}function $e(r){var e;if(B--,(e=o.monitorRunDependencies)===null||e===void 0||e.call(o,B),B==0&&K){var t=K;K=null,t()}}function dr(r){var e;(e=o.onAbort)===null||e===void 0||e.call(o,r),r="Aborted("+r+")",Q(r),Er=!0,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw S(t),t}var Ce="data:application/octet-stream;base64,",kr=r=>r.startsWith(Ce),L;L="zxing_writer.wasm",kr(L)||(L=pe(L));function Or(r){if(r==L&&G)return new Uint8Array(G);if(vr)return vr(r);throw"both async and sync fetching of the wasm failed"}function Ee(r){return!G&&(Cr||tr)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+r+"'";return e.arrayBuffer()}).catch(()=>Or(r)):Promise.resolve().then(()=>Or(r))}function Ur(r,e,t){return Ee(r).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(t,n=>{Q(`failed to asynchronously prepare wasm: ${n}`),dr(n)})}function Re(r,e,t,n){return!r&&typeof WebAssembly.instantiateStreaming=="function"&&!kr(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(s){return Q(`wasm streaming compile failed: ${s}`),Q("falling back to ArrayBuffer instantiation"),Ur(e,t,n)})}):Ur(e,t,n)}function Fe(){var r={a:Lt};function e(n,a){return y=n.exports,nr=y.R,Pr(),Nr=y.V,we(y.S),$e(),y}Ae();function t(n){e(n.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(r,e)}catch(n){Q(`Module.instantiateWasm callback failed with error: ${n}`),S(n)}return Re(G,L,r,t).catch(S),{}}var _r=r=>{for(;r.length>0;)r.shift()(o)};o.noExitRuntime;var Mr=[],Pe=r=>{var e=new hr(r);return e.get_caught()||e.set_caught(!0),e.set_rethrown(!1),Mr.push(e),zr(e.excPtr),e.get_exception_ptr()},V=0,Se=()=>{$(0,0);var r=Mr.pop();Yr(r.excPtr),V=0};function hr(r){this.excPtr=r,this.ptr=r-24,this.set_type=function(e){p[this.ptr+4>>2]=e},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(e){p[this.ptr+8>>2]=e},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,M[this.ptr+12>>0]=e},this.get_caught=function(){return M[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,M[this.ptr+13>>0]=e},this.get_rethrown=function(){return M[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){p[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=ee(this.get_type());if(e)return p[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var We=r=>{throw V||(V=r),V},pr=r=>{var e=V;if(!e)return z(0),0;var t=new hr(e);t.set_adjusted_ptr(e);var n=t.get_type();if(!n)return z(0),e;for(var a in r){var i=r[a];if(i===0||i===n)break;var s=t.ptr+16;if(re(i,n,s))return z(i),e}return z(n),e},Ie=()=>pr([]),ke=r=>pr([r]),Oe=(r,e)=>pr([r,e]),Ue=(r,e,t)=>{var n=new hr(r);throw n.init(e,t),V=r,V},ar={},gr=r=>{for(;r.length;){var e=r.pop(),t=r.pop();t(e)}};function mr(r){return this.fromWireType(H[r>>2])}var N={},x={},ir={},Dr,jr=r=>{throw new Dr(r)},Hr=(r,e,t)=>{r.forEach(function(u){ir[u]=e});function n(u){var c=t(u);c.length!==r.length&&jr("Mismatched type converter count");for(var f=0;f{x.hasOwnProperty(u)?a[c]=x[u]:(i.push(u),N.hasOwnProperty(u)||(N[u]=[]),N[u].push(()=>{a[c]=x[u],++s,s===i.length&&n(a)}))}),i.length===0&&n(a)},Me=r=>{var e=ar[r];delete ar[r];var t=e.rawConstructor,n=e.rawDestructor,a=e.fields,i=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));Hr([r],i,s=>{var u={};return a.forEach((c,f)=>{var l=c.fieldName,v=s[f],g=c.getter,h=c.getterContext,U=s[f+a.length],P=c.setter,w=c.setterContext;u[l]={read:rr=>v.fromWireType(g(h,rr)),write:(rr,Tr)=>{var cr=[];P(w,rr,U.toWireType(cr,Tr)),gr(cr)}}}),[{name:e.name,fromWireType:c=>{var f={};for(var l in u)f[l]=u[l].read(c);return n(c),f},toWireType:(c,f)=>{for(var l in u)if(!(l in f))throw new TypeError(`Missing field: "${l}"`);var v=t();for(l in u)u[l].write(v,f[l]);return c!==null&&c.push(n,v),v},argPackAdvance:k,readValueFromPointer:mr,destructorFunction:n}]})},De=(r,e,t,n,a)=>{},je=()=>{for(var r=new Array(256),e=0;e<256;++e)r[e]=String.fromCharCode(e);Br=r},Br,m=r=>{for(var e="",t=r;b[t];)e+=Br[b[t++]];return e},Vr,T=r=>{throw new Vr(r)};function He(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(r||T(`type "${n}" must have a positive integer typeid pointer`),x.hasOwnProperty(r)){if(t.ignoreDuplicateRegistrations)return;T(`Cannot register type '${n}' twice`)}if(x[r]=e,delete ir[r],N.hasOwnProperty(r)){var a=N[r];delete N[r],a.forEach(i=>i())}}function I(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return He(r,e,t)}var k=8,Be=(r,e,t,n)=>{e=m(e),I(r,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:k,readValueFromPointer:function(a){return this.fromWireType(b[a])},destructorFunction:null})};function Ve(){Object.assign(xr.prototype,{get(r){return this.allocated[r]},has(r){return this.allocated[r]!==void 0},allocate(r){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=r,e},free(r){this.allocated[r]=void 0,this.freelist.push(r)}})}function xr(){this.allocated=[void 0],this.freelist=[]}var C=new xr,yr=r=>{r>=C.reserved&&--C.get(r).refcount===0&&C.free(r)},xe=()=>{for(var r=0,e=C.reserved;e{C.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),C.reserved=C.allocated.length,o.count_emval_handles=xe},X={toValue:r=>(r||T("Cannot use deleted val. handle = "+r),C.get(r).value),toHandle:r=>{switch(r){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return C.allocate({refcount:1,value:r})}}},Ze=(r,e)=>{e=m(e),I(r,{name:e,fromWireType:t=>{var n=X.toValue(t);return yr(t),n},toWireType:(t,n)=>X.toHandle(n),argPackAdvance:k,readValueFromPointer:mr,destructorFunction:null})},Le=(r,e,t)=>{if(r[e].overloadTable===void 0){var n=r[e];r[e]=function(){return r[e].overloadTable.hasOwnProperty(arguments.length)||T(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${r[e].overloadTable})!`),r[e].overloadTable[arguments.length].apply(this,arguments)},r[e].overloadTable=[],r[e].overloadTable[n.argCount]=n}},Xr=(r,e,t)=>{o.hasOwnProperty(r)?((t===void 0||o[r].overloadTable!==void 0&&o[r].overloadTable[t]!==void 0)&&T(`Cannot register public name '${r}' twice`),Le(o,r,r),o.hasOwnProperty(t)&&T(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),o[r].overloadTable[t]=e):(o[r]=e,t!==void 0&&(o[r].numArguments=t))},Ne=(r,e,t)=>{switch(e){case 1:return t?function(n){return this.fromWireType(M[n>>0])}:function(n){return this.fromWireType(b[n>>0])};case 2:return t?function(n){return this.fromWireType(Z[n>>1])}:function(n){return this.fromWireType(J[n>>1])};case 4:return t?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(p[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},qe=(r,e,t,n)=>{e=m(e);function a(){}a.values={},I(r,{name:e,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,s)=>s.value,argPackAdvance:k,readValueFromPointer:Ne(e,t,n),destructorFunction:null}),Xr(e,a)},or=(r,e)=>Object.defineProperty(e,"name",{value:r}),Zr=r=>{var e=Kr(r),t=m(e);return O(e),t},Lr=(r,e)=>{var t=x[r];return t===void 0&&T(e+" has unknown type "+Zr(r)),t},Qe=(r,e,t)=>{var n=Lr(r,"enum");e=m(e);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:or(`${n.name}_${e}`,function(){})}});a.values[t]=i,a[e]=i},Ge=(r,e)=>{switch(e){case 4:return function(t){return this.fromWireType(Rr[t>>2])};case 8:return function(t){return this.fromWireType(Fr[t>>3])};default:throw new TypeError(`invalid float width (${e}): ${r}`)}},Je=(r,e,t)=>{e=m(e),I(r,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:k,readValueFromPointer:Ge(e,t),destructorFunction:null})};function Ke(r){for(var e=1;e{for(var t=[],n=0;n>2]);return t},rt=(r,e,t)=>{o.hasOwnProperty(r)||jr("Replacing nonexistant public symbol"),o[r].overloadTable!==void 0&&t!==void 0?o[r].overloadTable[t]=e:(o[r]=e,o[r].argCount=t)},et=(r,e,t)=>{var n=o["dynCall_"+r];return t&&t.length?n.apply(null,[e].concat(t)):n.call(null,e)},sr=[],Nr,A=r=>{var e=sr[r];return e||(r>=sr.length&&(sr.length=r+1),sr[r]=e=Nr.get(r)),e},tt=(r,e,t)=>{if(r.includes("j"))return et(r,e,t);var n=A(e).apply(null,t);return n},nt=(r,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),tt(r,e,t)}},Y=(r,e)=>{r=m(r);function t(){return r.includes("j")?nt(r,e):A(e)}var n=t();return typeof n!="function"&&T(`unknown function pointer with signature ${r}: ${e}`),n},at=(r,e)=>{var t=or(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(r.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},qr,it=(r,e)=>{var t=[],n={};function a(i){if(!n[i]&&!x[i]){if(ir[i]){ir[i].forEach(a);return}t.push(i),n[i]=!0}}throw e.forEach(a),new qr(`${r}: `+t.map(Zr).join([", "]))},ot=r=>{r=r.trim();const e=r.indexOf("(");return e!==-1?r.substr(0,e):r},st=(r,e,t,n,a,i,s)=>{var u=ze(e,t);r=m(r),r=ot(r),a=Y(n,a),Xr(r,function(){it(`Cannot call ${r} due to unbound types`,u)},e-1),Hr([],u,function(c){var f=[c[0],null].concat(c.slice(1));return rt(r,Ye(r,f,null,a,i),e-1),[]})},ut=(r,e,t)=>{switch(e){case 1:return t?n=>M[n>>0]:n=>b[n>>0];case 2:return t?n=>Z[n>>1]:n=>J[n>>1];case 4:return t?n=>H[n>>2]:n=>p[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},ct=(r,e,t,n,a)=>{e=m(e);var i=l=>l;if(n===0){var s=32-8*t;i=l=>l<>>s}var u=e.includes("unsigned"),c=(l,v)=>{},f;u?f=function(l,v){return c(v,this.name),v>>>0}:f=function(l,v){return c(v,this.name),v},I(r,{name:e,fromWireType:i,toWireType:f,argPackAdvance:k,readValueFromPointer:ut(e,t,n!==0),destructorFunction:null})},ft=(r,e,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function i(s){var u=p[s>>2],c=p[s+4>>2];return new a(M.buffer,c,u)}t=m(t),I(r,{name:t,fromWireType:i,argPackAdvance:k,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})};function lt(r){return this.fromWireType(p[r>>2])}var vt=(r,e,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,s=0;s=55296&&u<=57343){var c=r.charCodeAt(++s);u=65536+((u&1023)<<10)|c&1023}if(u<=127){if(t>=i)break;e[t++]=u}else if(u<=2047){if(t+1>=i)break;e[t++]=192|u>>6,e[t++]=128|u&63}else if(u<=65535){if(t+2>=i)break;e[t++]=224|u>>12,e[t++]=128|u>>6&63,e[t++]=128|u&63}else{if(t+3>=i)break;e[t++]=240|u>>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|u&63}}return e[t]=0,t-a},dt=(r,e,t)=>vt(r,b,e,t),_t=r=>{for(var e=0,t=0;t=55296&&n<=57343?(e+=4,++t):e+=3}return e},Qr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,ht=(r,e,t)=>{for(var n=e+t,a=e;r[a]&&!(a>=n);)++a;if(a-e>16&&r.buffer&&Qr)return Qr.decode(r.subarray(e,a));for(var i="";e>10,56320|f&1023)}}return i},pt=(r,e)=>r?ht(b,r,e):"",gt=(r,e)=>{e=m(e);var t=e==="std::string";I(r,{name:e,fromWireType(n){var a=p[n>>2],i=n+4,s;if(t)for(var u=i,c=0;c<=a;++c){var f=i+c;if(c==a||b[f]==0){var l=f-u,v=pt(u,l);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var g=new Array(a),c=0;c>2]=i,t&&s)dt(a,c,i+1);else if(s)for(var f=0;f255&&(O(c),T("String has UTF-16 code units that do not fit in 8 bits")),b[c+f]=l}else for(var f=0;f{for(var t=r,n=t>>1,a=n+e/2;!(n>=a)&&J[n];)++n;if(t=n<<1,t-r>32&&Gr)return Gr.decode(b.subarray(r,t));for(var i="",s=0;!(s>=e/2);++s){var u=Z[r+s*2>>1];if(u==0)break;i+=String.fromCharCode(u)}return i},yt=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=e,i=t>1]=u,e+=2}return Z[e>>1]=0,e-a},bt=r=>r.length*2,wt=(r,e)=>{for(var t=0,n="";!(t>=e/4);){var a=H[r+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},Tt=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=e,i=a+t-4,s=0;s=55296&&u<=57343){var c=r.charCodeAt(++s);u=65536+((u&1023)<<10)|c&1023}if(H[e>>2]=u,e+=4,e+4>i)break}return H[e>>2]=0,e-a},At=r=>{for(var e=0,t=0;t=55296&&n<=57343&&++t,e+=4}return e},$t=(r,e,t)=>{t=m(t);var n,a,i,s,u;e===2?(n=mt,a=yt,s=bt,i=()=>J,u=1):e===4&&(n=wt,a=Tt,s=At,i=()=>p,u=2),I(r,{name:t,fromWireType:c=>{for(var f=p[c>>2],l=i(),v,g=c+4,h=0;h<=f;++h){var U=c+4+h*e;if(h==f||l[U>>u]==0){var P=U-g,w=n(g,P);v===void 0?v=w:(v+="\0",v+=w),g=U+e}}return O(c),v},toWireType:(c,f)=>{typeof f!="string"&&T(`Cannot pass non-string to C++ string type ${t}`);var l=s(f),v=wr(4+l+e);return p[v>>2]=l>>u,a(f,v+4,l+e),c!==null&&c.push(O,v),v},argPackAdvance:k,readValueFromPointer:mr,destructorFunction(c){O(c)}})},Ct=(r,e,t,n,a,i)=>{ar[r]={name:m(e),rawConstructor:Y(t,n),rawDestructor:Y(a,i),fields:[]}},Et=(r,e,t,n,a,i,s,u,c,f)=>{ar[r].fields.push({fieldName:m(e),getterReturnType:t,getter:Y(n,a),getterContext:i,setterArgumentType:s,setter:Y(u,c),setterContext:f})},Rt=(r,e)=>{e=m(e),I(r,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},br=[],Ft=(r,e,t,n)=>(r=br[r],e=X.toValue(e),r(null,e,t,n)),Pt={},St=r=>{var e=Pt[r];return e===void 0?m(r):e},Jr=()=>{if(typeof globalThis=="object")return globalThis;function r(e){e.$$$embind_global$$$=e;var t=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return t||delete e.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&r(global)?$$$embind_global$$$=global:typeof self=="object"&&r(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Wt=r=>r===0?X.toHandle(Jr()):(r=St(r),X.toHandle(Jr()[r])),It=r=>{var e=br.length;return br.push(r),e},kt=(r,e)=>{for(var t=new Array(r),n=0;n>2],"parameter "+n);return t},Ot=Reflect.construct,Ut=(r,e,t)=>{var n=[],a=r.toWireType(n,t);return n.length&&(p[e>>2]=X.toHandle(n)),a},Mt=(r,e,t)=>{var n=kt(r,e),a=n.shift();r--;var i=new Array(r),s=(c,f,l,v)=>{for(var g=0,h=0;hc.name).join(", ")}) => ${a.name}>`;return It(or(u,s))},Dt=r=>{r>4&&(C.get(r).refcount+=1)},jt=r=>{var e=X.toValue(r);gr(e),yr(r)},Ht=()=>{dr("")},Bt=(r,e,t)=>b.copyWithin(r,e,e+t),Vt=()=>2147483648,xt=r=>{var e=nr.buffer,t=(r-e.byteLength+65535)/65536;try{return nr.grow(t),Pr(),1}catch{}},Xt=r=>{var e=b.length;r>>>=0;var t=Vt();if(r>t)return!1;for(var n=(c,f)=>c+(f-c%f)%f,a=1;a<=4;a*=2){var i=e*(1+.2/a);i=Math.min(i,r+100663296);var s=Math.min(t,n(Math.max(r,i),65536)),u=xt(s);if(u)return!0}return!1},Zt=r=>r;Dr=o.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},je(),Vr=o.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ve(),Xe(),qr=o.UnboundTypeError=at(Error,"UnboundTypeError");var Lt={r:Pe,q:Se,g:Ie,d:ke,k:Oe,a:Ue,i:We,M:Me,C:De,H:Be,G:Ze,K:qe,b:Qe,v:Je,L:st,h:ct,e:ft,u:gt,p:$t,w:Ct,N:Et,I:Rt,z:Ft,P:yr,B:Wt,A:Mt,x:Dt,Q:jt,s:Ht,F:Bt,E:Xt,y:Kt,c:Nt,l:Yt,n:Jt,o:zt,f:qt,t:tn,m:en,D:Gt,J:Qt,j:rn,O:Zt},y=Fe(),wr=o._malloc=r=>(wr=o._malloc=y.T)(r),O=o._free=r=>(O=o._free=y.U)(r),Kr=r=>(Kr=y.W)(r),$=(r,e)=>($=y.X)(r,e),z=r=>(z=y.Y)(r),E=()=>(E=y.Z)(),R=r=>(R=y._)(r),Yr=r=>(Yr=y.$)(r),zr=r=>(zr=y.aa)(r),re=(r,e,t)=>(re=y.ba)(r,e,t),ee=r=>(ee=y.ca)(r);function Nt(r,e){var t=E();try{return A(r)(e)}catch(n){if(R(t),n!==n+0)throw n;$(1,0)}}function qt(r,e){var t=E();try{A(r)(e)}catch(n){if(R(t),n!==n+0)throw n;$(1,0)}}function Qt(r,e,t,n,a,i){var s=E();try{A(r)(e,t,n,a,i)}catch(u){if(R(s),u!==u+0)throw u;$(1,0)}}function Gt(r,e,t,n,a){var i=E();try{A(r)(e,t,n,a)}catch(s){if(R(i),s!==s+0)throw s;$(1,0)}}function Jt(r,e,t,n){var a=E();try{return A(r)(e,t,n)}catch(i){if(R(a),i!==i+0)throw i;$(1,0)}}function Kt(r,e,t,n,a){var i=E();try{return A(r)(e,t,n,a)}catch(s){if(R(i),s!==s+0)throw s;$(1,0)}}function Yt(r,e,t){var n=E();try{return A(r)(e,t)}catch(a){if(R(n),a!==a+0)throw a;$(1,0)}}function zt(r){var e=E();try{A(r)()}catch(t){if(R(e),t!==t+0)throw t;$(1,0)}}function rn(r,e,t,n,a,i,s,u,c,f,l){var v=E();try{A(r)(e,t,n,a,i,s,u,c,f,l)}catch(g){if(R(v),g!==g+0)throw g;$(1,0)}}function en(r,e,t,n){var a=E();try{A(r)(e,t,n)}catch(i){if(R(a),i!==i+0)throw i;$(1,0)}}function tn(r,e,t){var n=E();try{A(r)(e,t)}catch(a){if(R(n),a!==a+0)throw a;$(1,0)}}var ur;K=function r(){ur||te(),ur||(K=r)};function te(){if(B>0||(ge(),B>0))return;function r(){ur||(ur=!0,o.calledRun=!0,!Er&&(me(),D(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),ye()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),r()},1)):r()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return te(),_.ready}})();const ne=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"],ae=["Unknown","ASCII","ISO8859_1","ISO8859_2","ISO8859_3","ISO8859_4","ISO8859_5","ISO8859_6","ISO8859_7","ISO8859_8","ISO8859_9","ISO8859_10","ISO8859_11","ISO8859_13","ISO8859_14","ISO8859_15","ISO8859_16","Cp437","Cp1250","Cp1251","Cp1252","Cp1256","Shift_JIS","Big5","GB2312","GB18030","EUC_JP","EUC_KR","UTF16BE","UTF8","UTF16LE","UTF32BE","UTF32LE","BINARY"];function ie(d,_){return d.CharacterSet[_]}const oe=[-1,0,1,2,3,4,5,6,7,8],lr={width:200,height:200,format:"QRCode",characterSet:"UTF8",eccLevel:-1,margin:10};function se(d,_){return{..._,characterSet:ie(d,_.characterSet)}}function ue(d){const{image:_,error:o}=d;return _?{image:new Blob([new Uint8Array(_)],{type:"image/png"}),error:""}:{image:null,error:o}}const ce={locateFile:(d,_)=>{const o=d.match(/_(.+?)\.wasm$/);return o?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${o[1]}/${d}`:_+d}};let er=new WeakMap;function Ar(d,_){var j;const o=er.get(d);if(o!=null&&o.modulePromise&&(_===void 0||Object.is(_,o.moduleOverrides)))return o.modulePromise;const D=(j=_!=null?_:o==null?void 0:o.moduleOverrides)!=null?j:ce,S=d({...D});return er.set(d,{moduleOverrides:D,modulePromise:S}),S}function fe(){er=new WeakMap}function le(d,_){er.set(d,{moduleOverrides:_})}async function ve(d,_,o=lr){const D={...lr,...o},S=await Ar(d),j=S.writeBarcodeToImage(_,se(S,D));return ue(j)}const $r={...lr};function de(d){return Ar(fr,d)}function _e(d){return le(fr,d)}async function he(d,_){return ve(fr,d,_)}return F.barcodeFormats=ne,F.characterSets=ae,F.defaultEncodeHints=$r,F.defaultWriterOptions=$r,F.getZXingModule=de,F.purgeZXingModule=fe,F.setZXingModuleOverrides=_e,F.writeBarcodeToImageFile=he,F.writeInputEccLevels=oe,Object.defineProperty(F,Symbol.toStringTag,{value:"Module"}),F}({}); diff --git a/node_modules/zxing-wasm/dist/reader/zxing_reader.wasm b/node_modules/zxing-wasm/dist/reader/zxing_reader.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b69a9946908c42054bad5da5bf55d4f7bac2dd29 GIT binary patch literal 952016 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

    WIdL@$Nxy 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�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 z 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

      R*We=TwI)fptvX* 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

      H?;-yJ6 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

      s}A>VdkDdSSd^YM|<=Z&WR{R#rzj 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�eTRNPjZhOLL(NbN^b=}@+8}3m7CalC1G~U; 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 literal 0 HcmV?d00001 diff --git a/node_modules/zxing-wasm/package.json b/node_modules/zxing-wasm/package.json new file mode 100644 index 0000000..6c5dbde --- /dev/null +++ b/node_modules/zxing-wasm/package.json @@ -0,0 +1,122 @@ +{ + "name": "zxing-wasm", + "description": "ZXing-C++ WebAssembly as an ES module with types", + "private": false, + "version": "1.1.3", + "type": "module", + "files": [ + "./dist" + ], + "main": "./dist/cjs/full/index.js", + "module": "./dist/es/full/index.js", + "exports": { + ".": { + "import": "./dist/es/full/index.js", + "require": "./dist/cjs/full/index.js", + "default": "./dist/es/full/index.js" + }, + "./full": { + "import": "./dist/es/full/index.js", + "require": "./dist/cjs/full/index.js", + "default": "./dist/es/full/index.js" + }, + "./reader": { + "import": "./dist/es/reader/index.js", + "require": "./dist/cjs/reader/index.js", + "default": "./dist/es/reader/index.js" + }, + "./writer": { + "import": "./dist/es/writer/index.js", + "require": "./dist/cjs/writer/index.js", + "default": "./dist/es/writer/index.js" + }, + "./reader/zxing_reader.wasm": "./dist/reader/zxing_reader.wasm", + "./writer/zxing_writer.wasm": "./dist/writer/zxing_writer.wasm", + "./full/zxing_full.wasm": "./dist/full/zxing_full.wasm" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Sec-ant/zxing-wasm.git" + }, + "homepage": "https://github.com/Sec-ant/zxing-wasm", + "bugs": { + "url": "https://github.com/Sec-ant/zxing-wasm/issues", + "email": "zzwu@zju.edu.cn" + }, + "keywords": [ + "qrcode", + "barcode", + "wasm", + "zxing", + "zxing-cpp", + "esmodule", + "webassembly" + ], + "author": { + "name": "Ze-Zheng Wu" + }, + "license": "MIT", + "copyFiles": [ + { + "from": "./src/reader/*.wasm", + "to": "./dist/reader/" + }, + { + "from": "./src/writer/*.wasm", + "to": "./dist/writer/" + }, + { + "from": "./src/full/*.wasm", + "to": "./dist/full/" + } + ], + "copyFilesSettings": { + "whenFileExists": "overwrite" + }, + "scripts": { + "submodule:init": "git submodule update --init", + "submodule:update": "git submodule update --remote", + "cmake": "emcmake cmake -S src/cpp -B build", + "build:wasm": "cmake --build build -j$(($(nproc) - 1))", + "copy:wasm": "copy-files-from-to", + "docs:dev": "conc \"npm:docs:preview\" \"typedoc --watch --excludeInternal\"", + "docs:build": "typedoc --excludeInternal", + "docs:preview": "vite preview --outDir ./docs", + "dev": "vite", + "lint": "eslint . --ext .ts", + "type-check": "tsc --noEmit --emitDeclarationOnly false", + "format": "prettier . --write", + "clear:dist": "rimraf dist", + "prebuild": "npm run lint && npm run type-check && npm run format && npm run clear:dist", + "build:es": "vite build", + "build:cjs": "tsx ./scripts/build-cjs.ts", + "build:iife": "tsx ./scripts/build-iife.ts", + "build": "conc \"npm:build:es\" \"npm:build:cjs\" \"npm:build:iife\"", + "postbuild:es": "tsc --declarationDir ./dist/es", + "postbuild:cjs": "tsc --declarationDir ./dist/cjs", + "postbuild": "conc \"npm:copy:wasm\" \"npm:docs:build\"", + "build:all": "npm run submodule:init && npm run cmake && npm run build:wasm && npm run build", + "preview": "vite preview", + "prepublishOnly": "npm run build:all", + "ncu": "npx npm-check-updates -u", + "postncu": "npm i" + }, + "devDependencies": { + "@types/node": "^20.10.5", + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "concurrently": "^8.2.2", + "copy-files-from-to": "^3.9.1", + "eslint": "^8.56.0", + "npm-check-updates": "^16.14.12", + "prettier": "^3.1.1", + "rimraf": "^5.0.5", + "tsx": "^4.7.0", + "typedoc": "^0.25.4", + "typescript": "^5.3.3", + "vite": "^5.0.10" + }, + "dependencies": { + "@types/emscripten": "^1.39.10" + } +} diff --git a/package-lock.json b/package-lock.json index 584f079..d4a936c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,8 @@ "packages": { "": { "dependencies": { - "vant": "^4.9.15" + "vant": "^4.9.15", + "vue-qrcode-reader": "^5.6.0" } }, "node_modules/@babel/helper-string-parser": { @@ -60,6 +61,16 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "peer": true }, + "node_modules/@types/dom-webcodecs": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz", + "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==" + }, + "node_modules/@types/emscripten": { + "version": "1.39.13", + "resolved": "https://registry.npmmirror.com/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==" + }, "node_modules/@vant/popperjs": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", @@ -172,6 +183,15 @@ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==" }, + "node_modules/barcode-detector": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/barcode-detector/-/barcode-detector-2.2.2.tgz", + "integrity": "sha512-JcSekql+EV93evfzF9zBr+Y6aRfkR+QFvgyzbwQ0dbymZXoAI9+WgT7H1E429f+3RKNncHz2CW98VQtaaKpmfQ==", + "dependencies": { + "@types/dom-webcodecs": "^0.1.11", + "zxing-wasm": "1.1.3" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", @@ -257,6 +277,11 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", @@ -299,6 +324,38 @@ "optional": true } } + }, + "node_modules/vue-qrcode-reader": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/vue-qrcode-reader/-/vue-qrcode-reader-5.6.0.tgz", + "integrity": "sha512-uvaJqMRgR/1tt7XWAqaRBQf0mo3gudu5fXqZmtoq+87lvmM4dublJ7StO6ssNO3FaJqssG72hPhXWoBoYWJIeg==", + "dependencies": { + "barcode-detector": "2.2.2", + "webrtc-adapter": "8.2.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webrtc-adapter": { + "version": "8.2.3", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-8.2.3.tgz", + "integrity": "sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==", + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/zxing-wasm": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/zxing-wasm/-/zxing-wasm-1.1.3.tgz", + "integrity": "sha512-MYm9k/5YVs4ZOTIFwlRjfFKD0crhefgbnt1+6TEpmKUDFp3E2uwqGSKwQOd2hOIsta/7Usq4hnpNRYTLoljnfA==", + "dependencies": { + "@types/emscripten": "^1.39.10" + } } } } diff --git a/package.json b/package.json index c7f748f..48119cd 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { - "vant": "^4.9.15" + "vant": "^4.9.15", + "vue-qrcode-reader": "^5.6.0" } } diff --git a/pages.json b/pages.json index c4d184c..501ecf0 100644 --- a/pages.json +++ b/pages.json @@ -1,5 +1,12 @@ { "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "登录" + } + + }, { "path": "pages/index/index", "style": { @@ -116,6 +123,42 @@ "bounce": "none" } } + }, + { + "path" : "pages/whiteEmbryo/w-scanCode", + "style" : + { + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } + }, + { + "path" : "pages/whiteEmbryo/w-warehouse", + "style" : + { + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } + }, + { + "path" : "pages/whiteEmbryo/w-list", + "style" : + { + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } } ], "globalStyle": { diff --git a/pages/index/index.vue b/pages/index/index.vue index 4fc0369..c73f3a6 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -26,14 +26,14 @@ const ListData =ref([ path: '../maintenance/m-other', name: '其他要求项维护', }, - { - path: '../lecher/l-quality', - name: '色胚质检项维护', - }, - { - path: '../lecher/l-flaws', - name: '色胚质检瑕疵维护', - }, + // { + // path: '../lecher/l-quality', + // name: '色胚质检项维护', + // }, + // { + // path: '../lecher/l-flaws', + // name: '色胚质检瑕疵维护', + // }, { path: '../whiteEmbryo/w-warehousing', name: '白胚入库', @@ -46,6 +46,19 @@ const ListData =ref([ path: '../whiteEmbryo/w-suppliers', name: '供应商维护', }, + { + path: '../whiteEmbryo/w-scanCode', + name: '扫码入库', + }, + { + path: '../whiteEmbryo/w-warehouse', + name: '仓库维护', + }, + { + path: '../whiteEmbryo/w-list', + name: '白胚列表', + }, + ] as any[]) diff --git a/pages/lecher/l-flaws.vue b/pages/lecher/l-flaws.vue index 8116149..f36f70b 100644 --- a/pages/lecher/l-flaws.vue +++ b/pages/lecher/l-flaws.vue @@ -103,17 +103,17 @@ const submit =()=>{ .a-b{ display:flex; margin-bottom:10px; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0; } } -::v-deep(.van-field){ +::v-deep .van-field { font-size: 16px; } -::v-deep(.van-field__control){ +::v-deep .van-field__control { border-bottom: 1px solid #d7d7d7; } -::v-deep(.van-field__label){ +::v-deep .van-field__label { text-align: end; } .a-c{ @@ -121,7 +121,7 @@ const submit =()=>{ align-items: center; justify-content: space-around; margin:15px; - ::v-deep(.van-button--normal){ + ::v-deep .van-button--normal { padding: 5px; height: 30px; } diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..21132d5 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/pages/whiteEmbryo/scanCode.vue b/pages/whiteEmbryo/scanCode.vue deleted file mode 100644 index 08677f6..0000000 --- a/pages/whiteEmbryo/scanCode.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - diff --git a/pages/whiteEmbryo/w-level.vue b/pages/whiteEmbryo/w-level.vue index 8c34a31..8ddfc0b 100644 --- a/pages/whiteEmbryo/w-level.vue +++ b/pages/whiteEmbryo/w-level.vue @@ -1,23 +1,60 @@ @@ -42,7 +79,7 @@ const submit =()=>{ {{item.id}} 编辑    删除 + style="color: red" @click="delItem(item)">删除 @@ -53,12 +90,11 @@ const submit =()=>{

      新增

      @@ -87,7 +123,7 @@ const submit =()=>{ .grid-item{ border: 1px solid #f2f2f2; text-align: center; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0 5px; } } @@ -103,17 +139,17 @@ const submit =()=>{ .a-b{ display:flex; margin-bottom:10px; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0; } } -::v-deep(.van-field){ +::v-deep .van-field{ font-size: 16px; } -::v-deep(.van-field__control){ +::v-deep .van-field__control{ border-bottom: 1px solid #d7d7d7; } -::v-deep(.van-field__label){ +::v-deep .van-field__label{ text-align: end; } .a-c{ @@ -121,7 +157,7 @@ const submit =()=>{ align-items: center; justify-content: space-around; margin:15px; - ::v-deep(.van-button--normal){ + ::v-deep .van-button--normal{ padding: 5px; height: 30px; } diff --git a/pages/whiteEmbryo/w-list.vue b/pages/whiteEmbryo/w-list.vue new file mode 100644 index 0000000..722fe21 --- /dev/null +++ b/pages/whiteEmbryo/w-list.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/pages/whiteEmbryo/w-scanCode.vue b/pages/whiteEmbryo/w-scanCode.vue new file mode 100644 index 0000000..eb4e547 --- /dev/null +++ b/pages/whiteEmbryo/w-scanCode.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/pages/whiteEmbryo/w-suppliers.vue b/pages/whiteEmbryo/w-suppliers.vue index 7ec982c..28f5fe5 100644 --- a/pages/whiteEmbryo/w-suppliers.vue +++ b/pages/whiteEmbryo/w-suppliers.vue @@ -114,19 +114,19 @@ const submit =()=>{ .a-b{ display:flex; margin-bottom:10px; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0; } } -::v-deep(.van-field){ +::v-deep .van-field{ font-size: 16px; } .bot{ - ::v-deep(.van-field__control){ + ::v-deep .van-field__control { border-bottom: 1px solid #d7d7d7; } } -::v-deep(.van-field__label){ +::v-deep .van-field__label{ text-align: end; } .a-c{ @@ -134,7 +134,7 @@ const submit =()=>{ align-items: center; justify-content: space-around; margin:15px; - ::v-deep(.van-button--normal){ + ::v-deep .van-button--normal{ padding: 5px; height: 30px; } diff --git a/pages/whiteEmbryo/w-warehouse.vue b/pages/whiteEmbryo/w-warehouse.vue new file mode 100644 index 0000000..c34be93 --- /dev/null +++ b/pages/whiteEmbryo/w-warehouse.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/pages/whiteEmbryo/w-warehousing.vue b/pages/whiteEmbryo/w-warehousing.vue index 05305a1..a8227aa 100644 --- a/pages/whiteEmbryo/w-warehousing.vue +++ b/pages/whiteEmbryo/w-warehousing.vue @@ -1,7 +1,6 @@ @@ -96,14 +135,19 @@ const onConfirmDate = (val:any) =>{ - 扫一扫 + 扫一扫 + - @@ -111,9 +155,14 @@ const onConfirmDate = (val:any) =>{ + + +

      总匹数:2 匹

      +

      总匹数:2 匹

      +
      +
      - + diff --git a/uni_modules/cshaptx4869-scancode/package.json b/uni_modules/cshaptx4869-scancode/package.json new file mode 100644 index 0000000..217a703 --- /dev/null +++ b/uni_modules/cshaptx4869-scancode/package.json @@ -0,0 +1,90 @@ +{ + "id": "cshaptx4869-scancode", + "displayName": "H5扫码", + "version": "1.0.4", + "description": "可看做是H5端的 uni.scanCode(OBJECT) 接口", + "keywords": [ + "h5扫码", + "二维码", + "闪光灯", + "摄像头", + "扫一扫" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dependencies": { + "vue-qrcode-reader": "^5.5.3" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "y" + }, + "client": { + "Vue": { + "vue2": "n", + "vue3": "y" + }, + "App": { + "app-vue": "u", + "app-nvue": "u", + "app-uvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "u", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/cshaptx4869-scancode/readme.md b/uni_modules/cshaptx4869-scancode/readme.md new file mode 100644 index 0000000..7acabde --- /dev/null +++ b/uni_modules/cshaptx4869-scancode/readme.md @@ -0,0 +1,82 @@ +# H5扫码 + +## 简介 + +基于 [vue-qrcode-reader](https://github.com/gruhn/vue-qrcode-reader) 库封装的 H5 扫码组件。 + +特性: + +- 支持手电筒 +- 支持摄像头切换 +- 支持一次扫多个二维码,可自行选择识别哪一个 + + + +## **示例** + +安装依赖 + +```bash +npm install vue-qrcode-reader +``` + +使用 + +```vue + + + +``` + diff --git a/unpackage/dist/cache/.vite/deps/_metadata.json b/unpackage/dist/cache/.vite/deps/_metadata.json index 1a5aad1..1578cce 100644 --- a/unpackage/dist/cache/.vite/deps/_metadata.json +++ b/unpackage/dist/cache/.vite/deps/_metadata.json @@ -1,13 +1,19 @@ { - "hash": "5d0f2bdd", + "hash": "2d8d98b4", "configHash": "407aa7e3", - "lockfileHash": "85d8c394", - "browserHash": "76804dc8", + "lockfileHash": "44fc196e", + "browserHash": "5ce248a5", "optimized": { "vant": { "src": "../../../../../node_modules/vant/es/index.mjs", "file": "vant.js", - "fileHash": "4b21b997", + "fileHash": "bcbc483d", + "needsInterop": false + }, + "vue-qrcode-reader": { + "src": "../../../../../node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js", + "file": "vue-qrcode-reader.js", + "fileHash": "51d6bc17", "needsInterop": false } }, diff --git a/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js new file mode 100644 index 0000000..de689a9 --- /dev/null +++ b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js @@ -0,0 +1,3323 @@ +// ../../../../aliyunGit/ckgl/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js +import { defineComponent as jt, ref as we, watch as We, onMounted as vo, onUnmounted as yo, computed as Ut, openBlock as Lt, createElementBlock as Ht, createElementVNode as nt, normalizeStyle as go, withDirectives as wo, vShow as bo, renderSlot as Dr, withModifiers as at } from "vue"; +var Mr = (r, o, i) => { + if (!o.has(r)) + throw TypeError("Cannot " + i); +}; +var br = (r, o, i) => (Mr(r, o, "read from private field"), i ? i.call(r) : o.get(r)); +var Co = (r, o, i) => { + if (o.has(r)) + throw TypeError("Cannot add the same private member more than once"); + o instanceof WeakSet ? o.add(r) : o.set(r, i); +}; +var $o = (r, o, i, c) => (Mr(r, o, "write to private field"), o.set(r, i), i); +var Ar = [ + ["aztec", "Aztec"], + ["code_128", "Code128"], + ["code_39", "Code39"], + ["code_93", "Code93"], + ["codabar", "Codabar"], + ["databar", "DataBar"], + ["databar_expanded", "DataBarExpanded"], + ["data_matrix", "DataMatrix"], + ["dx_film_edge", "DXFilmEdge"], + ["ean_13", "EAN-13"], + ["ean_8", "EAN-8"], + ["itf", "ITF"], + ["maxi_code", "MaxiCode"], + ["micro_qr_code", "MicroQRCode"], + ["pdf417", "PDF417"], + ["qr_code", "QRCode"], + ["rm_qr_code", "rMQRCode"], + ["upc_a", "UPC-A"], + ["upc_e", "UPC-E"], + ["linear_codes", "Linear-Codes"], + ["matrix_codes", "Matrix-Codes"] +]; +var _o = [...Ar, ["unknown"]].map((r) => r[0]); +var it = new Map( + Ar +); +function So(r) { + for (const [o, i] of it) + if (r === i) + return o; + return "unknown"; +} +function Po(r) { + if (xr(r)) + return { + width: r.naturalWidth, + height: r.naturalHeight + }; + if (Rr(r)) + return { + width: r.width.baseVal.value, + height: r.height.baseVal.value + }; + if (kr(r)) + return { + width: r.videoWidth, + height: r.videoHeight + }; + if (Fr(r)) + return { + width: r.width, + height: r.height + }; + if (Wr(r)) + return { + width: r.displayWidth, + height: r.displayHeight + }; + if (Ir(r)) + return { + width: r.width, + height: r.height + }; + if (Ur(r)) + return { + width: r.width, + height: r.height + }; + throw new TypeError( + "The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'." + ); +} +function xr(r) { + try { + return r instanceof HTMLImageElement; + } catch (o) { + return false; + } +} +function Rr(r) { + try { + return r instanceof SVGImageElement; + } catch (o) { + return false; + } +} +function kr(r) { + try { + return r instanceof HTMLVideoElement; + } catch (o) { + return false; + } +} +function Ir(r) { + try { + return r instanceof HTMLCanvasElement; + } catch (o) { + return false; + } +} +function Fr(r) { + try { + return r instanceof ImageBitmap; + } catch (o) { + return false; + } +} +function Ur(r) { + try { + return r instanceof OffscreenCanvas; + } catch (o) { + return false; + } +} +function Wr(r) { + try { + return r instanceof VideoFrame; + } catch (o) { + return false; + } +} +function jr(r) { + try { + return r instanceof Blob; + } catch (o) { + return false; + } +} +function To(r) { + try { + return r instanceof ImageData; + } catch (o) { + return false; + } +} +function Eo(r, o) { + try { + const i = new OffscreenCanvas(r, o); + if (i.getContext("2d") instanceof OffscreenCanvasRenderingContext2D) + return i; + throw void 0; + } catch (i) { + const c = document.createElement("canvas"); + return c.width = r, c.height = o, c; + } +} +async function Lr(r) { + if (xr(r) && !await Ao(r)) + throw new DOMException( + "Failed to load or decode HTMLImageElement.", + "InvalidStateError" + ); + if (Rr(r) && !await xo(r)) + throw new DOMException( + "Failed to load or decode SVGImageElement.", + "InvalidStateError" + ); + if (Wr(r) && Ro(r)) + throw new DOMException("VideoFrame is closed.", "InvalidStateError"); + if (kr(r) && (r.readyState === 0 || r.readyState === 1)) + throw new DOMException("Invalid element or state.", "InvalidStateError"); + if (Fr(r) && Io(r)) + throw new DOMException( + "The image source is detached.", + "InvalidStateError" + ); + const { width: o, height: i } = Po(r); + if (o === 0 || i === 0) + return null; + const c = Eo(o, i).getContext("2d"); + c.drawImage(r, 0, 0); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Oo(r) { + let o; + try { + if (globalThis.createImageBitmap) + o = await createImageBitmap(r); + else if (globalThis.Image) { + o = new Image(); + let i = ""; + try { + i = URL.createObjectURL(r), o.src = i, await o.decode(); + } finally { + URL.revokeObjectURL(i); + } + } else + return r; + } catch (i) { + throw new DOMException( + "Failed to load or decode Blob.", + "InvalidStateError" + ); + } + return await Lr(o); +} +function Do(r) { + const { width: o, height: i } = r; + if (o === 0 || i === 0) + return null; + const c = r.getContext("2d"); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Mo(r) { + if (jr(r)) + return await Oo(r); + if (To(r)) { + if (ko(r)) + throw new DOMException( + "The image data has been detached.", + "InvalidStateError" + ); + return r; + } + return Ir(r) || Ur(r) ? Do(r) : await Lr(r); +} +async function Ao(r) { + try { + return await r.decode(), true; + } catch (o) { + return false; + } +} +async function xo(r) { + var o; + try { + return await ((o = r.decode) == null ? void 0 : o.call(r)), true; + } catch (i) { + return false; + } +} +function Ro(r) { + return r.format === null; +} +function ko(r) { + return r.data.buffer.byteLength === 0; +} +function Io(r) { + return r.width === 0 && r.height === 0; +} +function Cr(r, o) { + return r instanceof DOMException ? new DOMException(`${o}: ${r.message}`, r.name) : r instanceof Error ? new r.constructor(`${o}: ${r.message}`) : new Error(`${o}: ${r}`); +} +var $r = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function Fo(r) { + return r.join("|"); +} +function Uo(r) { + const o = _r(r); + let i = 0, c = $r.length - 1; + for (; i <= c; ) { + const l = Math.floor((i + c) / 2), h = $r[l], v = _r(h); + if (v === o) + return h; + v < o ? i = l + 1 : c = l - 1; + } + return "None"; +} +function _r(r) { + return r.toLowerCase().replace(/_-\[\]/g, ""); +} +function Wo(r, o) { + return r.Binarizer[o]; +} +function jo(r, o) { + return r.CharacterSet[o]; +} +var Lo = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function Ho(r) { + return Lo[r.value]; +} +function Bo(r, o) { + return r.EanAddOnSymbol[o]; +} +function Vo(r, o) { + return r.TextMode[o]; +} +var Ee = { + formats: [], + tryHarder: true, + tryRotate: true, + tryInvert: true, + tryDownscale: true, + binarizer: "LocalAverage", + isPure: false, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: false, + validateCode39CheckSum: false, + validateITFCheckSum: false, + returnCodabarStartEnd: false, + returnErrors: false, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function Hr(r, o) { + return { + ...o, + formats: Fo(o.formats), + binarizer: Wo(r, o.binarizer), + eanAddOnSymbol: Bo( + r, + o.eanAddOnSymbol + ), + textMode: Vo(r, o.textMode), + characterSet: jo( + r, + o.characterSet + ) + }; +} +function Br(r) { + return { + ...r, + format: Uo(r.format), + eccLevel: r.eccLevel, + contentType: Ho(r.contentType) + }; +} +var qo = { + locateFile: (r, o) => { + const i = r.match(/_(.+?)\.wasm$/); + return i ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}` : o + r; + } +}; +var Wt = /* @__PURE__ */ new WeakMap(); +function Bt(r, o) { + var i; + const c = Wt.get(r); + if (c != null && c.modulePromise && o === void 0) + return c.modulePromise; + const l = (i = c == null ? void 0 : c.moduleOverrides) != null ? i : qo, h = r({ + ...l + }); + return Wt.set(r, { + moduleOverrides: l, + modulePromise: h + }), h; +} +function No(r, o) { + Wt.set(r, { + moduleOverrides: o + }); +} +async function zo(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { size: h } = o, v = new Uint8Array(await o.arrayBuffer()), g = l._malloc(h); + l.HEAPU8.set(v, g); + const b = l.readBarcodesFromImage( + g, + h, + Hr(l, c) + ); + l._free(g); + const p = []; + for (let C = 0; C < b.size(); ++C) + p.push( + Br(b.get(C)) + ); + return p; +} +async function Go(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { + data: h, + width: v, + height: g, + data: { byteLength: b } + } = o, p = l._malloc(b); + l.HEAPU8.set(h, p); + const C = l.readBarcodesFromPixmap( + p, + v, + g, + Hr(l, c) + ); + l._free(p); + const S = []; + for (let $ = 0; $ < C.size(); ++$) + S.push( + Br(C.get($)) + ); + return S; +} +({ + ...Ee, + formats: [...Ee.formats] +}); +var lt = (() => { + var r = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(o = {}) { + var i = o, c, l; + i.ready = new Promise((e, t) => { + c = e, l = t; + }); + var h = Object.assign({}, i), v = "./this.program", g = typeof window == "object", b = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var p = ""; + function C(e) { + return i.locateFile ? i.locateFile(e, p) : p + e; + } + var S; + (g || b) && (b ? p = self.location.href : typeof document < "u" && document.currentScript && (p = document.currentScript.src), r && (p = r), p.indexOf("blob:") !== 0 ? p = p.substr(0, p.replace(/[?#].*/, "").lastIndexOf("/") + 1) : p = "", b && (S = (e) => { + var t = new XMLHttpRequest(); + return t.open("GET", e, false), t.responseType = "arraybuffer", t.send(null), new Uint8Array(t.response); + })), i.print || console.log.bind(console); + var $ = i.printErr || console.error.bind(console); + Object.assign(i, h), h = null, i.arguments && i.arguments, i.thisProgram && (v = i.thisProgram), i.quit && i.quit; + var F; + i.wasmBinary && (F = i.wasmBinary), typeof WebAssembly != "object" && Z("no native wasm support detected"); + var U, W = false, R, A, X, k, D, M, le, oe; + function be() { + var e = U.buffer; + i.HEAP8 = R = new Int8Array(e), i.HEAP16 = X = new Int16Array(e), i.HEAPU8 = A = new Uint8Array(e), i.HEAPU16 = k = new Uint16Array(e), i.HEAP32 = D = new Int32Array(e), i.HEAPU32 = M = new Uint32Array(e), i.HEAPF32 = le = new Float32Array(e), i.HEAPF64 = oe = new Float64Array(e); + } + var Ce = [], Oe = [], De = []; + function Le() { + if (i.preRun) + for (typeof i.preRun == "function" && (i.preRun = [i.preRun]); i.preRun.length; ) + ht(i.preRun.shift()); + gt(Ce); + } + function dt() { + gt(Oe); + } + function ft() { + if (i.postRun) + for (typeof i.postRun == "function" && (i.postRun = [i.postRun]); i.postRun.length; ) + Me(i.postRun.shift()); + gt(De); + } + function ht(e) { + Ce.unshift(e); + } + function pt(e) { + Oe.unshift(e); + } + function Me(e) { + De.unshift(e); + } + var te = 0, ve = null; + function mt(e) { + var t; + te++, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te); + } + function de(e) { + var t; + if (te--, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te), te == 0 && ve) { + var n = ve; + ve = null, n(); + } + } + function Z(e) { + var t; + (t = i.onAbort) === null || t === void 0 || t.call(i, e), e = "Aborted(" + e + ")", $(e), W = true, e += ". Build with -sASSERTIONS for more info."; + var n = new WebAssembly.RuntimeError(e); + throw l(n), n; + } + var vt = "data:application/octet-stream;base64,", He = (e) => e.startsWith(vt), fe; + fe = "zxing_reader.wasm", He(fe) || (fe = C(fe)); + function Be(e) { + if (e == fe && F) + return new Uint8Array(F); + if (S) + return S(e); + throw "both async and sync fetching of the wasm failed"; + } + function yt(e) { + return !F && (g || b) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((t) => { + if (!t.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return t.arrayBuffer(); + }).catch(() => Be(e)) : Promise.resolve().then(() => Be(e)); + } + function Ve(e, t, n) { + return yt(e).then((a) => WebAssembly.instantiate(a, t)).then((a) => a).then(n, (a) => { + $(`failed to asynchronously prepare wasm: ${a}`), Z(a); + }); + } + function an(e, t, n, a) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !He(t) && typeof fetch == "function" ? fetch(t, { + credentials: "same-origin" + }).then((s) => { + var u = WebAssembly.instantiateStreaming(s, n); + return u.then(a, function(d) { + return $(`wasm streaming compile failed: ${d}`), $("falling back to ArrayBuffer instantiation"), Ve(t, n, a); + }); + }) : Ve(t, n, a); + } + function on() { + var e = { + a: Ga + }; + function t(a, s) { + return z = a.exports, U = z.ia, be(), Kt = z.ma, pt(z.ja), de(), z; + } + mt(); + function n(a) { + t(a.instance); + } + if (i.instantiateWasm) + try { + return i.instantiateWasm(e, t); + } catch (a) { + $(`Module.instantiateWasm callback failed with error: ${a}`), l(a); + } + return an(F, fe, e, n).catch(l), {}; + } + var gt = (e) => { + for (; e.length > 0; ) + e.shift()(i); + }; + i.noExitRuntime; + var qe = [], Ne = 0, sn = (e) => { + var t = new wt(e); + return t.get_caught() || (t.set_caught(true), Ne--), t.set_rethrown(false), qe.push(t), hr(t.excPtr), t.get_exception_ptr(); + }, ie = 0, cn = () => { + j(0, 0); + var e = qe.pop(); + fr(e.excPtr), ie = 0; + }; + function wt(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(t) { + M[this.ptr + 4 >> 2] = t; + }, this.get_type = function() { + return M[this.ptr + 4 >> 2]; + }, this.set_destructor = function(t) { + M[this.ptr + 8 >> 2] = t; + }, this.get_destructor = function() { + return M[this.ptr + 8 >> 2]; + }, this.set_caught = function(t) { + t = t ? 1 : 0, R[this.ptr + 12 >> 0] = t; + }, this.get_caught = function() { + return R[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(t) { + t = t ? 1 : 0, R[this.ptr + 13 >> 0] = t; + }, this.get_rethrown = function() { + return R[this.ptr + 13 >> 0] != 0; + }, this.init = function(t, n) { + this.set_adjusted_ptr(0), this.set_type(t), this.set_destructor(n); + }, this.set_adjusted_ptr = function(t) { + M[this.ptr + 16 >> 2] = t; + }, this.get_adjusted_ptr = function() { + return M[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var t = mr(this.get_type()); + if (t) + return M[this.excPtr >> 2]; + var n = this.get_adjusted_ptr(); + return n !== 0 ? n : this.excPtr; + }; + } + var un = (e) => { + throw ie || (ie = e), ie; + }, bt = (e) => { + var t = ie; + if (!t) + return Ue(0), 0; + var n = new wt(t); + n.set_adjusted_ptr(t); + var a = n.get_type(); + if (!a) + return Ue(0), t; + for (var s in e) { + var u = e[s]; + if (u === 0 || u === a) + break; + var d = n.ptr + 16; + if (pr(u, a, d)) + return Ue(u), t; + } + return Ue(a), t; + }, ln = () => bt([]), dn = (e) => bt([e]), fn = (e, t) => bt([e, t]), hn = () => { + var e = qe.pop(); + e || Z("no exception to throw"); + var t = e.excPtr; + throw e.get_rethrown() || (qe.push(e), e.set_rethrown(true), e.set_caught(false), Ne++), ie = t, ie; + }, pn = (e, t, n) => { + var a = new wt(e); + throw a.init(t, n), ie = e, Ne++, ie; + }, mn = () => Ne, ze = {}, Ct = (e) => { + for (; e.length; ) { + var t = e.pop(), n = e.pop(); + n(t); + } + }; + function $t(e) { + return this.fromWireType(D[e >> 2]); + } + var $e = {}, ye = {}, Ge = {}, qt, Ye = (e) => { + throw new qt(e); + }, ge = (e, t, n) => { + e.forEach(function(f) { + Ge[f] = t; + }); + function a(f) { + var m = n(f); + m.length !== e.length && Ye("Mismatched type converter count"); + for (var w = 0; w < e.length; ++w) + re(e[w], m[w]); + } + var s = new Array(t.length), u = [], d = 0; + t.forEach((f, m) => { + ye.hasOwnProperty(f) ? s[m] = ye[f] : (u.push(f), $e.hasOwnProperty(f) || ($e[f] = []), $e[f].push(() => { + s[m] = ye[f], ++d, d === u.length && a(s); + })); + }), u.length === 0 && a(s); + }, vn = (e) => { + var t = ze[e]; + delete ze[e]; + var n = t.rawConstructor, a = t.rawDestructor, s = t.fields, u = s.map((d) => d.getterReturnType).concat(s.map((d) => d.setterArgumentType)); + ge([e], u, (d) => { + var f = {}; + return s.forEach((m, w) => { + var _ = m.fieldName, T = d[w], E = m.getter, O = m.getterContext, L = d[w + s.length], q = m.setter, I = m.setterContext; + f[_] = { + read: (J) => T.fromWireType(E(O, J)), + write: (J, y) => { + var P = []; + q(I, J, L.toWireType(P, y)), Ct(P); + } + }; + }), [{ + name: t.name, + fromWireType: (m) => { + var w = {}; + for (var _ in f) + w[_] = f[_].read(m); + return a(m), w; + }, + toWireType: (m, w) => { + for (var _ in f) + if (!(_ in w)) + throw new TypeError(`Missing field: "${_}"`); + var T = n(); + for (_ in f) + f[_].write(T, w[_]); + return m !== null && m.push(a, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: a + }]; + }); + }, yn = (e, t, n, a, s) => { + }, gn = () => { + for (var e = new Array(256), t = 0; t < 256; ++t) + e[t] = String.fromCharCode(t); + Nt = e; + }, Nt, Y = (e) => { + for (var t = "", n = e; A[n]; ) + t += Nt[A[n++]]; + return t; + }, _e, x = (e) => { + throw new _e(e); + }; + function wn(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var a = t.name; + if (e || x(`type "${a}" must have a positive integer typeid pointer`), ye.hasOwnProperty(e)) { + if (n.ignoreDuplicateRegistrations) + return; + x(`Cannot register type '${a}' twice`); + } + if (ye[e] = t, delete Ge[e], $e.hasOwnProperty(e)) { + var s = $e[e]; + delete $e[e], s.forEach((u) => u()); + } + } + function re(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in t)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return wn(e, t, n); + } + var ne = 8, bn = (e, t, n, a) => { + t = Y(t), re(e, { + name: t, + fromWireType: function(s) { + return !!s; + }, + toWireType: function(s, u) { + return u ? n : a; + }, + argPackAdvance: ne, + readValueFromPointer: function(s) { + return this.fromWireType(A[s]); + }, + destructorFunction: null + }); + }, Cn = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), _t = (e) => { + function t(n) { + return n.$$.ptrType.registeredClass.name; + } + x(t(e) + " instance already deleted"); + }, St = false, zt = (e) => { + }, $n = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, Gt = (e) => { + e.count.value -= 1; + var t = e.count.value === 0; + t && $n(e); + }, Yt = (e, t, n) => { + if (t === n) + return e; + if (n.baseClass === void 0) + return null; + var a = Yt(e, t, n.baseClass); + return a === null ? null : n.downcast(a); + }, Jt = {}, _n = () => Object.keys(Re).length, Sn = () => { + var e = []; + for (var t in Re) + Re.hasOwnProperty(t) && e.push(Re[t]); + return e; + }, Ae = [], Pt = () => { + for (; Ae.length; ) { + var e = Ae.pop(); + e.$$.deleteScheduled = false, e.delete(); + } + }, xe, Pn = (e) => { + xe = e, Ae.length && xe && xe(Pt); + }, Tn = () => { + i.getInheritedInstanceCount = _n, i.getLiveInheritedInstances = Sn, i.flushPendingDeletes = Pt, i.setDelayFunction = Pn; + }, Re = {}, En = (e, t) => { + for (t === void 0 && x("ptr should not be undefined"); e.baseClass; ) + t = e.upcast(t), e = e.baseClass; + return t; + }, On = (e, t) => (t = En(e, t), Re[t]), Je = (e, t) => { + (!t.ptrType || !t.ptr) && Ye("makeClassHandle requires ptr and ptrType"); + var n = !!t.smartPtrType, a = !!t.smartPtr; + return n !== a && Ye("Both smartPtrType and smartPtr must be specified"), t.count = { + value: 1 + }, ke(Object.create(e, { + $$: { + value: t, + writable: true + } + })); + }; + function Dn(e) { + var t = this.getPointee(e); + if (!t) + return this.destructor(e), null; + var n = On(this.registeredClass, t); + if (n !== void 0) { + if (n.$$.count.value === 0) + return n.$$.ptr = t, n.$$.smartPtr = e, n.clone(); + var a = n.clone(); + return this.destructor(e), a; + } + function s() { + return this.isSmartPointer ? Je(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: t, + smartPtrType: this, + smartPtr: e + }) : Je(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var u = this.registeredClass.getActualType(t), d = Jt[u]; + if (!d) + return s.call(this); + var f; + this.isConst ? f = d.constPointerType : f = d.pointerType; + var m = Yt(t, this.registeredClass, f.registeredClass); + return m === null ? s.call(this) : this.isSmartPointer ? Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m, + smartPtrType: this, + smartPtr: e + }) : Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m + }); + } + var ke = (e) => typeof FinalizationRegistry > "u" ? (ke = (t) => t, e) : (St = new FinalizationRegistry((t) => { + Gt(t.$$); + }), ke = (t) => { + var n = t.$$, a = !!n.smartPtr; + if (a) { + var s = { + $$: n + }; + St.register(t, s, t); + } + return t; + }, zt = (t) => St.unregister(t), ke(e)), Mn = () => { + Object.assign(Qe.prototype, { + isAliasOf(e) { + if (!(this instanceof Qe) || !(e instanceof Qe)) + return false; + var t = this.$$.ptrType.registeredClass, n = this.$$.ptr; + e.$$ = e.$$; + for (var a = e.$$.ptrType.registeredClass, s = e.$$.ptr; t.baseClass; ) + n = t.upcast(n), t = t.baseClass; + for (; a.baseClass; ) + s = a.upcast(s), a = a.baseClass; + return t === a && n === s; + }, + clone() { + if (this.$$.ptr || _t(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ke(Object.create(Object.getPrototypeOf(this), { + $$: { + value: Cn(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = false, e; + }, + delete() { + this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), zt(this), Gt(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), Ae.push(this), Ae.length === 1 && xe && xe(Pt), this.$$.deleteScheduled = true, this; + } + }); + }; + function Qe() { + } + var Ie = (e, t) => Object.defineProperty(t, "name", { + value: e + }), Qt = (e, t, n) => { + if (e[t].overloadTable === void 0) { + var a = e[t]; + e[t] = function() { + return e[t].overloadTable.hasOwnProperty(arguments.length) || x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`), e[t].overloadTable[arguments.length].apply(this, arguments); + }, e[t].overloadTable = [], e[t].overloadTable[a.argCount] = a; + } + }, Tt = (e, t, n) => { + i.hasOwnProperty(e) ? ((n === void 0 || i[e].overloadTable !== void 0 && i[e].overloadTable[n] !== void 0) && x(`Cannot register public name '${e}' twice`), Qt(i, e, e), i.hasOwnProperty(n) && x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`), i[e].overloadTable[n] = t) : (i[e] = t, n !== void 0 && (i[e].numArguments = n)); + }, An = 48, xn = 57, Rn = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var t = e.charCodeAt(0); + return t >= An && t <= xn ? `_${e}` : e; + }; + function kn(e, t, n, a, s, u, d, f) { + this.name = e, this.constructor = t, this.instancePrototype = n, this.rawDestructor = a, this.baseClass = s, this.getActualType = u, this.upcast = d, this.downcast = f, this.pureVirtualFunctions = []; + } + var Et = (e, t, n) => { + for (; t !== n; ) + t.upcast || x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`), e = t.upcast(e), t = t.baseClass; + return e; + }; + function In(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Fn(e, t) { + var n; + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), this.isSmartPointer ? (n = this.rawConstructor(), e !== null && e.push(this.rawDestructor, n), n) : 0; + (!t || !t.$$) && x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + var a = t.$$.ptrType.registeredClass; + if (n = Et(t.$$.ptr, a, this.registeredClass), this.isSmartPointer) + switch (t.$$.smartPtr === void 0 && x("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + t.$$.smartPtrType === this ? n = t.$$.smartPtr : x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + n = t.$$.smartPtr; + break; + case 2: + if (t.$$.smartPtrType === this) + n = t.$$.smartPtr; + else { + var s = t.clone(); + n = this.rawShare(n, se.toHandle(() => s.delete())), e !== null && e.push(this.rawDestructor, n); + } + break; + default: + x("Unsupporting sharing policy"); + } + return n; + } + function Un(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Xt(e) { + return this.fromWireType(M[e >> 2]); + } + var Wn = () => { + Object.assign(Xe.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var t; + (t = this.rawDestructor) === null || t === void 0 || t.call(this, e); + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: Dn + }); + }; + function Xe(e, t, n, a, s, u, d, f, m, w, _) { + this.name = e, this.registeredClass = t, this.isReference = n, this.isConst = a, this.isSmartPointer = s, this.pointeeType = u, this.sharingPolicy = d, this.rawGetPointee = f, this.rawConstructor = m, this.rawShare = w, this.rawDestructor = _, !s && t.baseClass === void 0 ? a ? (this.toWireType = In, this.destructorFunction = null) : (this.toWireType = Un, this.destructorFunction = null) : this.toWireType = Fn; + } + var Zt = (e, t, n) => { + i.hasOwnProperty(e) || Ye("Replacing nonexistant public symbol"), i[e].overloadTable !== void 0 && n !== void 0 ? i[e].overloadTable[n] = t : (i[e] = t, i[e].argCount = n); + }, jn = (e, t, n) => { + var a = i["dynCall_" + e]; + return n && n.length ? a.apply(null, [t].concat(n)) : a.call(null, t); + }, Ze = [], Kt, H = (e) => { + var t = Ze[e]; + return t || (e >= Ze.length && (Ze.length = e + 1), Ze[e] = t = Kt.get(e)), t; + }, Ln = (e, t, n) => { + if (e.includes("j")) + return jn(e, t, n); + var a = H(t).apply(null, n); + return a; + }, Hn = (e, t) => { + var n = []; + return function() { + return n.length = 0, Object.assign(n, arguments), Ln(e, t, n); + }; + }, ee = (e, t) => { + e = Y(e); + function n() { + return e.includes("j") ? Hn(e, t) : H(t); + } + var a = n(); + return typeof a != "function" && x(`unknown function pointer with signature ${e}: ${t}`), a; + }, Bn = (e, t) => { + var n = Ie(t, function(a) { + this.name = t, this.message = a; + var s = new Error(a).stack; + s !== void 0 && (this.stack = this.toString() + ` +` + s.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return n.prototype = Object.create(e.prototype), n.prototype.constructor = n, n.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, n; + }, er, tr = (e) => { + var t = dr(e), n = Y(t); + return ce(t), n; + }, Ke = (e, t) => { + var n = [], a = {}; + function s(u) { + if (!a[u] && !ye[u]) { + if (Ge[u]) { + Ge[u].forEach(s); + return; + } + n.push(u), a[u] = true; + } + } + throw t.forEach(s), new er(`${e}: ` + n.map(tr).join([", "])); + }, Vn = (e, t, n, a, s, u, d, f, m, w, _, T, E) => { + _ = Y(_), u = ee(s, u), f && (f = ee(d, f)), w && (w = ee(m, w)), E = ee(T, E); + var O = Rn(_); + Tt(O, function() { + Ke(`Cannot construct ${_} due to unbound types`, [a]); + }), ge([e, t, n], a ? [a] : [], function(L) { + L = L[0]; + var q, I; + a ? (q = L.registeredClass, I = q.instancePrototype) : I = Qe.prototype; + var J = Ie(_, function() { + if (Object.getPrototypeOf(this) !== y) + throw new _e("Use 'new' to construct " + _); + if (P.constructor_body === void 0) + throw new _e(_ + " has no accessible constructor"); + var wr = P.constructor_body[arguments.length]; + if (wr === void 0) + throw new _e(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`); + return wr.apply(this, arguments); + }), y = Object.create(I, { + constructor: { + value: J + } + }); + J.prototype = y; + var P = new kn(_, J, y, E, q, u, f, w); + if (P.baseClass) { + var N, G; + (G = (N = P.baseClass).__derivedClasses) !== null && G !== void 0 || (N.__derivedClasses = []), P.baseClass.__derivedClasses.push(P); + } + var Se = new Xe(_, P, true, false, false), rt = new Xe(_ + "*", P, false, false, false), gr = new Xe(_ + " const*", P, false, true, false); + return Jt[e] = { + pointerType: rt, + constPointerType: gr + }, Zt(O, J), [Se, rt, gr]; + }); + }, Ot = (e, t) => { + for (var n = [], a = 0; a < e; a++) + n.push(M[t + a * 4 >> 2]); + return n; + }; + function qn(e) { + for (var t = 1; t < e.length; ++t) + if (e[t] !== null && e[t].destructorFunction === void 0) + return true; + return false; + } + function Dt(e, t, n, a, s, u) { + var d = t.length; + d < 2 && x("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var f = t[1] !== null && n !== null, m = qn(t), w = t[0].name !== "void", _ = d - 2, T = new Array(_), E = [], O = [], L = function() { + arguments.length !== _ && x(`function ${e} called with ${arguments.length} arguments, expected ${_}`), O.length = 0; + var q; + E.length = f ? 2 : 1, E[0] = s, f && (q = t[1].toWireType(O, this), E[1] = q); + for (var I = 0; I < _; ++I) + T[I] = t[I + 2].toWireType(O, arguments[I]), E.push(T[I]); + var J = a.apply(null, E); + function y(P) { + if (m) + Ct(O); + else + for (var N = f ? 1 : 2; N < t.length; N++) { + var G = N === 1 ? q : T[N - 2]; + t[N].destructorFunction !== null && t[N].destructorFunction(G); + } + if (w) + return t[0].fromWireType(P); + } + return y(J); + }; + return Ie(e, L); + } + var Nn = (e, t, n, a, s, u) => { + var d = Ot(t, n); + s = ee(a, s), ge([], [e], function(f) { + f = f[0]; + var m = `constructor ${f.name}`; + if (f.registeredClass.constructor_body === void 0 && (f.registeredClass.constructor_body = []), f.registeredClass.constructor_body[t - 1] !== void 0) + throw new _e(`Cannot register multiple constructors with identical number of parameters (${t - 1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return f.registeredClass.constructor_body[t - 1] = () => { + Ke(`Cannot construct ${f.name} due to unbound types`, d); + }, ge([], d, (w) => (w.splice(1, 0, null), f.registeredClass.constructor_body[t - 1] = Dt(m, w, null, s, u), [])), []; + }); + }, rr = (e) => { + e = e.trim(); + const t = e.indexOf("("); + return t !== -1 ? e.substr(0, t) : e; + }, zn = (e, t, n, a, s, u, d, f, m) => { + var w = Ot(n, a); + t = Y(t), t = rr(t), u = ee(s, u), ge([], [e], function(_) { + _ = _[0]; + var T = `${_.name}.${t}`; + t.startsWith("@@") && (t = Symbol[t.substring(2)]), f && _.registeredClass.pureVirtualFunctions.push(t); + function E() { + Ke(`Cannot call ${T} due to unbound types`, w); + } + var O = _.registeredClass.instancePrototype, L = O[t]; + return L === void 0 || L.overloadTable === void 0 && L.className !== _.name && L.argCount === n - 2 ? (E.argCount = n - 2, E.className = _.name, O[t] = E) : (Qt(O, t, T), O[t].overloadTable[n - 2] = E), ge([], w, function(q) { + var I = Dt(T, q, _, u, d); + return O[t].overloadTable === void 0 ? (I.argCount = n - 2, O[t] = I) : O[t].overloadTable[n - 2] = I, []; + }), []; + }); + }; + function Gn() { + Object.assign(nr.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var t = this.freelist.pop() || this.allocated.length; + return this.allocated[t] = e, t; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function nr() { + this.allocated = [void 0], this.freelist = []; + } + var K = new nr(), Mt = (e) => { + e >= K.reserved && --K.get(e).refcount === 0 && K.free(e); + }, Yn = () => { + for (var e = 0, t = K.reserved; t < K.allocated.length; ++t) + K.allocated[t] !== void 0 && ++e; + return e; + }, Jn = () => { + K.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: true + }, { + value: false + }), K.reserved = K.allocated.length, i.count_emval_handles = Yn; + }, se = { + toValue: (e) => (e || x("Cannot use deleted val. handle = " + e), K.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: + return K.allocate({ + refcount: 1, + value: e + }); + } + } + }, Qn = (e, t) => { + t = Y(t), re(e, { + name: t, + fromWireType: (n) => { + var a = se.toValue(n); + return Mt(n), a; + }, + toWireType: (n, a) => se.toHandle(a), + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: null + }); + }, Xn = (e, t, n) => { + switch (t) { + case 1: + return n ? function(a) { + return this.fromWireType(R[a >> 0]); + } : function(a) { + return this.fromWireType(A[a >> 0]); + }; + case 2: + return n ? function(a) { + return this.fromWireType(X[a >> 1]); + } : function(a) { + return this.fromWireType(k[a >> 1]); + }; + case 4: + return n ? function(a) { + return this.fromWireType(D[a >> 2]); + } : function(a) { + return this.fromWireType(M[a >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, Zn = (e, t, n, a) => { + t = Y(t); + function s() { + } + s.values = {}, re(e, { + name: t, + constructor: s, + fromWireType: function(u) { + return this.constructor.values[u]; + }, + toWireType: (u, d) => d.value, + argPackAdvance: ne, + readValueFromPointer: Xn(t, n, a), + destructorFunction: null + }), Tt(t, s); + }, At = (e, t) => { + var n = ye[e]; + return n === void 0 && x(t + " has unknown type " + tr(e)), n; + }, Kn = (e, t, n) => { + var a = At(e, "enum"); + t = Y(t); + var s = a.constructor, u = Object.create(a.constructor.prototype, { + value: { + value: n + }, + constructor: { + value: Ie(`${a.name}_${t}`, function() { + }) + } + }); + s.values[n] = u, s[t] = u; + }, xt = (e) => { + if (e === null) + return "null"; + var t = typeof e; + return t === "object" || t === "array" || t === "function" ? e.toString() : "" + e; + }, ea = (e, t) => { + switch (t) { + case 4: + return function(n) { + return this.fromWireType(le[n >> 2]); + }; + case 8: + return function(n) { + return this.fromWireType(oe[n >> 3]); + }; + default: + throw new TypeError(`invalid float width (${t}): ${e}`); + } + }, ta = (e, t, n) => { + t = Y(t), re(e, { + name: t, + fromWireType: (a) => a, + toWireType: (a, s) => s, + argPackAdvance: ne, + readValueFromPointer: ea(t, n), + destructorFunction: null + }); + }, ra = (e, t, n, a, s, u, d) => { + var f = Ot(t, n); + e = Y(e), e = rr(e), s = ee(a, s), Tt(e, function() { + Ke(`Cannot call ${e} due to unbound types`, f); + }, t - 1), ge([], f, function(m) { + var w = [m[0], null].concat(m.slice(1)); + return Zt(e, Dt(e, w, null, s, u), t - 1), []; + }); + }, na = (e, t, n) => { + switch (t) { + case 1: + return n ? (a) => R[a >> 0] : (a) => A[a >> 0]; + case 2: + return n ? (a) => X[a >> 1] : (a) => k[a >> 1]; + case 4: + return n ? (a) => D[a >> 2] : (a) => M[a >> 2]; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, aa = (e, t, n, a, s) => { + t = Y(t); + var u = (_) => _; + if (a === 0) { + var d = 32 - 8 * n; + u = (_) => _ << d >>> d; + } + var f = t.includes("unsigned"), m = (_, T) => { + }, w; + f ? w = function(_, T) { + return m(T, this.name), T >>> 0; + } : w = function(_, T) { + return m(T, this.name), T; + }, re(e, { + name: t, + fromWireType: u, + toWireType: w, + argPackAdvance: ne, + readValueFromPointer: na(t, n, a !== 0), + destructorFunction: null + }); + }, oa = (e, t, n) => { + var a = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], s = a[t]; + function u(d) { + var f = M[d >> 2], m = M[d + 4 >> 2]; + return new s(R.buffer, m, f); + } + n = Y(n), re(e, { + name: n, + fromWireType: u, + argPackAdvance: ne, + readValueFromPointer: u + }, { + ignoreDuplicateRegistrations: true + }); + }, ar = (e, t, n, a) => { + if (!(a > 0)) + return 0; + for (var s = n, u = n + a - 1, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (f <= 127) { + if (n >= u) + break; + t[n++] = f; + } else if (f <= 2047) { + if (n + 1 >= u) + break; + t[n++] = 192 | f >> 6, t[n++] = 128 | f & 63; + } else if (f <= 65535) { + if (n + 2 >= u) + break; + t[n++] = 224 | f >> 12, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } else { + if (n + 3 >= u) + break; + t[n++] = 240 | f >> 18, t[n++] = 128 | f >> 12 & 63, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } + } + return t[n] = 0, n - s; + }, ia = (e, t, n) => ar(e, A, t, n), or = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a <= 127 ? t++ : a <= 2047 ? t += 2 : a >= 55296 && a <= 57343 ? (t += 4, ++n) : t += 3; + } + return t; + }, ir = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, sa = (e, t, n) => { + for (var a = t + n, s = t; e[s] && !(s >= a); ) + ++s; + if (s - t > 16 && e.buffer && ir) + return ir.decode(e.subarray(t, s)); + for (var u = ""; t < s; ) { + var d = e[t++]; + if (!(d & 128)) { + u += String.fromCharCode(d); + continue; + } + var f = e[t++] & 63; + if ((d & 224) == 192) { + u += String.fromCharCode((d & 31) << 6 | f); + continue; + } + var m = e[t++] & 63; + if ((d & 240) == 224 ? d = (d & 15) << 12 | f << 6 | m : d = (d & 7) << 18 | f << 12 | m << 6 | e[t++] & 63, d < 65536) + u += String.fromCharCode(d); + else { + var w = d - 65536; + u += String.fromCharCode(55296 | w >> 10, 56320 | w & 1023); + } + } + return u; + }, Rt = (e, t) => e ? sa(A, e, t) : "", ca = (e, t) => { + t = Y(t); + var n = t === "std::string"; + re(e, { + name: t, + fromWireType(a) { + var s = M[a >> 2], u = a + 4, d; + if (n) + for (var f = u, m = 0; m <= s; ++m) { + var w = u + m; + if (m == s || A[w] == 0) { + var _ = w - f, T = Rt(f, _); + d === void 0 ? d = T : (d += "\0", d += T), f = w + 1; + } + } + else { + for (var E = new Array(s), m = 0; m < s; ++m) + E[m] = String.fromCharCode(A[u + m]); + d = E.join(""); + } + return ce(a), d; + }, + toWireType(a, s) { + s instanceof ArrayBuffer && (s = new Uint8Array(s)); + var u, d = typeof s == "string"; + d || s instanceof Uint8Array || s instanceof Uint8ClampedArray || s instanceof Int8Array || x("Cannot pass non-string to std::string"), n && d ? u = or(s) : u = s.length; + var f = Ft(4 + u + 1), m = f + 4; + if (M[f >> 2] = u, n && d) + ia(s, m, u + 1); + else if (d) + for (var w = 0; w < u; ++w) { + var _ = s.charCodeAt(w); + _ > 255 && (ce(m), x("String has UTF-16 code units that do not fit in 8 bits")), A[m + w] = _; + } + else + for (var w = 0; w < u; ++w) + A[m + w] = s[w]; + return a !== null && a.push(ce, f), f; + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + destructorFunction(a) { + ce(a); + } + }); + }, sr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, ua = (e, t) => { + for (var n = e, a = n >> 1, s = a + t / 2; !(a >= s) && k[a]; ) + ++a; + if (n = a << 1, n - e > 32 && sr) + return sr.decode(A.subarray(e, n)); + for (var u = "", d = 0; !(d >= t / 2); ++d) { + var f = X[e + d * 2 >> 1]; + if (f == 0) + break; + u += String.fromCharCode(f); + } + return u; + }, la = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 2) + return 0; + n -= 2; + for (var s = t, u = n < e.length * 2 ? n / 2 : e.length, d = 0; d < u; ++d) { + var f = e.charCodeAt(d); + X[t >> 1] = f, t += 2; + } + return X[t >> 1] = 0, t - s; + }, da = (e) => e.length * 2, fa = (e, t) => { + for (var n = 0, a = ""; !(n >= t / 4); ) { + var s = D[e + n * 4 >> 2]; + if (s == 0) + break; + if (++n, s >= 65536) { + var u = s - 65536; + a += String.fromCharCode(55296 | u >> 10, 56320 | u & 1023); + } else + a += String.fromCharCode(s); + } + return a; + }, ha = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 4) + return 0; + for (var s = t, u = s + n - 4, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (D[t >> 2] = f, t += 4, t + 4 > u) + break; + } + return D[t >> 2] = 0, t - s; + }, pa = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a >= 55296 && a <= 57343 && ++n, t += 4; + } + return t; + }, ma = (e, t, n) => { + n = Y(n); + var a, s, u, d, f; + t === 2 ? (a = ua, s = la, d = da, u = () => k, f = 1) : t === 4 && (a = fa, s = ha, d = pa, u = () => M, f = 2), re(e, { + name: n, + fromWireType: (m) => { + for (var w = M[m >> 2], _ = u(), T, E = m + 4, O = 0; O <= w; ++O) { + var L = m + 4 + O * t; + if (O == w || _[L >> f] == 0) { + var q = L - E, I = a(E, q); + T === void 0 ? T = I : (T += "\0", T += I), E = L + t; + } + } + return ce(m), T; + }, + toWireType: (m, w) => { + typeof w != "string" && x(`Cannot pass non-string to C++ string type ${n}`); + var _ = d(w), T = Ft(4 + _ + t); + return M[T >> 2] = _ >> f, s(w, T + 4, _ + t), m !== null && m.push(ce, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction(m) { + ce(m); + } + }); + }, va = (e, t, n, a, s, u) => { + ze[e] = { + name: Y(t), + rawConstructor: ee(n, a), + rawDestructor: ee(s, u), + fields: [] + }; + }, ya = (e, t, n, a, s, u, d, f, m, w) => { + ze[e].fields.push({ + fieldName: Y(t), + getterReturnType: n, + getter: ee(a, s), + getterContext: u, + setterArgumentType: d, + setter: ee(f, m), + setterContext: w + }); + }, ga = (e, t) => { + t = Y(t), re(e, { + isVoid: true, + name: t, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (n, a) => { + } + }); + }, kt = [], wa = (e, t, n, a) => (e = kt[e], t = se.toValue(t), e(null, t, n, a)), ba = {}, Ca = (e) => { + var t = ba[e]; + return t === void 0 ? Y(e) : t; + }, cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(t) { + t.$$$embind_global$$$ = t; + var n = typeof $$$embind_global$$$ == "object" && t.$$$embind_global$$$ == t; + return n || delete t.$$$embind_global$$$, n; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, $a = (e) => e === 0 ? se.toHandle(cr()) : (e = Ca(e), se.toHandle(cr()[e])), _a = (e) => { + var t = kt.length; + return kt.push(e), t; + }, Sa = (e, t) => { + for (var n = new Array(e), a = 0; a < e; ++a) + n[a] = At(M[t + a * 4 >> 2], "parameter " + a); + return n; + }, Pa = Reflect.construct, Ta = (e, t, n) => { + var a = [], s = e.toWireType(a, n); + return a.length && (M[t >> 2] = se.toHandle(a)), s; + }, Ea = (e, t, n) => { + var a = Sa(e, t), s = a.shift(); + e--; + var u = new Array(e), d = (m, w, _, T) => { + for (var E = 0, O = 0; O < e; ++O) + u[O] = a[O].readValueFromPointer(T + E), E += a[O].argPackAdvance; + for (var L = n === 1 ? Pa(w, u) : w.apply(m, u), O = 0; O < e; ++O) { + var q, I; + (q = (I = a[O]).deleteObject) === null || q === void 0 || q.call(I, u[O]); + } + return Ta(s, _, L); + }, f = `methodCaller<(${a.map((m) => m.name).join(", ")}) => ${s.name}>`; + return _a(Ie(f, d)); + }, Oa = (e) => { + e > 4 && (K.get(e).refcount += 1); + }, Da = (e) => { + var t = se.toValue(e); + Ct(t), Mt(e); + }, Ma = (e, t) => { + e = At(e, "_emval_take_value"); + var n = e.readValueFromPointer(t); + return se.toHandle(n); + }, Aa = () => { + Z(""); + }, xa = (e, t, n) => A.copyWithin(e, t, t + n), Ra = () => 2147483648, ka = (e) => { + var t = U.buffer, n = (e - t.byteLength + 65535) / 65536; + try { + return U.grow(n), be(), 1; + } catch (a) { + } + }, Ia = (e) => { + var t = A.length; + e >>>= 0; + var n = Ra(); + if (e > n) + return false; + for (var a = (m, w) => m + (w - m % w) % w, s = 1; s <= 4; s *= 2) { + var u = t * (1 + 0.2 / s); + u = Math.min(u, e + 100663296); + var d = Math.min(n, a(Math.max(e, u), 65536)), f = ka(d); + if (f) + return true; + } + return false; + }, It = {}, Fa = () => v || "./this.program", Fe = () => { + if (!Fe.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", t = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: Fa() + }; + for (var n in It) + It[n] === void 0 ? delete t[n] : t[n] = It[n]; + var a = []; + for (var n in t) + a.push(`${n}=${t[n]}`); + Fe.strings = a; + } + return Fe.strings; + }, Ua = (e, t) => { + for (var n = 0; n < e.length; ++n) + R[t++ >> 0] = e.charCodeAt(n); + R[t >> 0] = 0; + }, Wa = (e, t) => { + var n = 0; + return Fe().forEach((a, s) => { + var u = t + n; + M[e + s * 4 >> 2] = u, Ua(a, u), n += a.length + 1; + }), 0; + }, ja = (e, t) => { + var n = Fe(); + M[e >> 2] = n.length; + var a = 0; + return n.forEach((s) => a += s.length + 1), M[t >> 2] = a, 0; + }, La = (e) => e, et = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Ha = (e, t) => { + for (var n = 0, a = 0; a <= t; n += e[a++]) + ; + return n; + }, ur = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], lr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Ba = (e, t) => { + for (var n = new Date(e.getTime()); t > 0; ) { + var a = et(n.getFullYear()), s = n.getMonth(), u = (a ? ur : lr)[s]; + if (t > u - n.getDate()) + t -= u - n.getDate() + 1, n.setDate(1), s < 11 ? n.setMonth(s + 1) : (n.setMonth(0), n.setFullYear(n.getFullYear() + 1)); + else + return n.setDate(n.getDate() + t), n; + } + return n; + }; + function Va(e, t, n) { + var a = or(e) + 1, s = new Array(a); + return ar(e, s, 0, s.length), s; + } + var qa = (e, t) => { + R.set(e, t); + }, Na = (e, t, n, a) => { + var s = M[a + 40 >> 2], u = { + tm_sec: D[a >> 2], + tm_min: D[a + 4 >> 2], + tm_hour: D[a + 8 >> 2], + tm_mday: D[a + 12 >> 2], + tm_mon: D[a + 16 >> 2], + tm_year: D[a + 20 >> 2], + tm_wday: D[a + 24 >> 2], + tm_yday: D[a + 28 >> 2], + tm_isdst: D[a + 32 >> 2], + tm_gmtoff: D[a + 36 >> 2], + tm_zone: s ? Rt(s) : "" + }, d = Rt(n), f = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var m in f) + d = d.replace(new RegExp(m, "g"), f[m]); + var w = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], _ = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function T(y, P, N) { + for (var G = typeof y == "number" ? y.toString() : y || ""; G.length < P; ) + G = N[0] + G; + return G; + } + function E(y, P) { + return T(y, P, "0"); + } + function O(y, P) { + function N(Se) { + return Se < 0 ? -1 : Se > 0 ? 1 : 0; + } + var G; + return (G = N(y.getFullYear() - P.getFullYear())) === 0 && (G = N(y.getMonth() - P.getMonth())) === 0 && (G = N(y.getDate() - P.getDate())), G; + } + function L(y) { + switch (y.getDay()) { + case 0: + return new Date(y.getFullYear() - 1, 11, 29); + case 1: + return y; + case 2: + return new Date(y.getFullYear(), 0, 3); + case 3: + return new Date(y.getFullYear(), 0, 2); + case 4: + return new Date(y.getFullYear(), 0, 1); + case 5: + return new Date(y.getFullYear() - 1, 11, 31); + case 6: + return new Date(y.getFullYear() - 1, 11, 30); + } + } + function q(y) { + var P = Ba(new Date(y.tm_year + 1900, 0, 1), y.tm_yday), N = new Date(P.getFullYear(), 0, 4), G = new Date(P.getFullYear() + 1, 0, 4), Se = L(N), rt = L(G); + return O(Se, P) <= 0 ? O(rt, P) <= 0 ? P.getFullYear() + 1 : P.getFullYear() : P.getFullYear() - 1; + } + var I = { + "%a": (y) => w[y.tm_wday].substring(0, 3), + "%A": (y) => w[y.tm_wday], + "%b": (y) => _[y.tm_mon].substring(0, 3), + "%B": (y) => _[y.tm_mon], + "%C": (y) => { + var P = y.tm_year + 1900; + return E(P / 100 | 0, 2); + }, + "%d": (y) => E(y.tm_mday, 2), + "%e": (y) => T(y.tm_mday, 2, " "), + "%g": (y) => q(y).toString().substring(2), + "%G": (y) => q(y), + "%H": (y) => E(y.tm_hour, 2), + "%I": (y) => { + var P = y.tm_hour; + return P == 0 ? P = 12 : P > 12 && (P -= 12), E(P, 2); + }, + "%j": (y) => E(y.tm_mday + Ha(et(y.tm_year + 1900) ? ur : lr, y.tm_mon - 1), 3), + "%m": (y) => E(y.tm_mon + 1, 2), + "%M": (y) => E(y.tm_min, 2), + "%n": () => ` +`, + "%p": (y) => y.tm_hour >= 0 && y.tm_hour < 12 ? "AM" : "PM", + "%S": (y) => E(y.tm_sec, 2), + "%t": () => " ", + "%u": (y) => y.tm_wday || 7, + "%U": (y) => { + var P = y.tm_yday + 7 - y.tm_wday; + return E(Math.floor(P / 7), 2); + }, + "%V": (y) => { + var P = Math.floor((y.tm_yday + 7 - (y.tm_wday + 6) % 7) / 7); + if ((y.tm_wday + 371 - y.tm_yday - 2) % 7 <= 2 && P++, P) { + if (P == 53) { + var N = (y.tm_wday + 371 - y.tm_yday) % 7; + N != 4 && (N != 3 || !et(y.tm_year)) && (P = 1); + } + } else { + P = 52; + var G = (y.tm_wday + 7 - y.tm_yday - 1) % 7; + (G == 4 || G == 5 && et(y.tm_year % 400 - 1)) && P++; + } + return E(P, 2); + }, + "%w": (y) => y.tm_wday, + "%W": (y) => { + var P = y.tm_yday + 7 - (y.tm_wday + 6) % 7; + return E(Math.floor(P / 7), 2); + }, + "%y": (y) => (y.tm_year + 1900).toString().substring(2), + "%Y": (y) => y.tm_year + 1900, + "%z": (y) => { + var P = y.tm_gmtoff, N = P >= 0; + return P = Math.abs(P) / 60, P = P / 60 * 100 + P % 60, (N ? "+" : "-") + ("0000" + P).slice(-4); + }, + "%Z": (y) => y.tm_zone, + "%%": () => "%" + }; + d = d.replace(/%%/g, "\0\0"); + for (var m in I) + d.includes(m) && (d = d.replace(new RegExp(m, "g"), I[m](u))); + d = d.replace(/\0\0/g, "%"); + var J = Va(d); + return J.length > t ? 0 : (qa(J, e), J.length - 1); + }, za = (e, t, n, a, s) => Na(e, t, n, a); + qt = i.InternalError = class extends Error { + constructor(e) { + super(e), this.name = "InternalError"; + } + }, gn(), _e = i.BindingError = class extends Error { + constructor(e) { + super(e), this.name = "BindingError"; + } + }, Mn(), Tn(), Wn(), er = i.UnboundTypeError = Bn(Error, "UnboundTypeError"), Gn(), Jn(); + var Ga = { + s: sn, + u: cn, + b: ln, + g: dn, + q: fn, + J: hn, + f: pn, + V: mn, + d: un, + da: vn, + Q: yn, + _: bn, + ca: Vn, + ba: Nn, + w: zn, + Y: Qn, + x: Zn, + h: Kn, + L: ta, + M: ra, + t: aa, + o: oa, + K: ca, + C: ma, + A: va, + ea: ya, + $: ga, + R: wa, + ha: Mt, + fa: $a, + Z: Ea, + N: Oa, + O: Da, + aa: Ma, + B: Aa, + X: xa, + W: Ia, + T: Wa, + U: ja, + E: uo, + D: Za, + F: co, + n: lo, + a: Ya, + e: eo, + m: Xa, + k: ro, + H: io, + v: ao, + G: so, + z: ho, + P: mo, + l: to, + j: Ka, + c: Qa, + p: Ja, + I: oo, + r: fo, + i: no, + y: po, + ga: La, + S: za + }, z = on(), ce = i._free = (e) => (ce = i._free = z.ka)(e), Ft = i._malloc = (e) => (Ft = i._malloc = z.la)(e), dr = (e) => (dr = z.na)(e), j = (e, t) => (j = z.oa)(e, t), Ue = (e) => (Ue = z.pa)(e), B = () => (B = z.qa)(), V = (e) => (V = z.ra)(e), fr = (e) => (fr = z.sa)(e), hr = (e) => (hr = z.ta)(e), pr = (e, t, n) => (pr = z.ua)(e, t, n), mr = (e) => (mr = z.va)(e); + i.dynCall_viijii = (e, t, n, a, s, u, d) => (i.dynCall_viijii = z.wa)(e, t, n, a, s, u, d); + var vr = i.dynCall_jiiii = (e, t, n, a, s) => (vr = i.dynCall_jiiii = z.xa)(e, t, n, a, s); + i.dynCall_iiiiij = (e, t, n, a, s, u, d) => (i.dynCall_iiiiij = z.ya)(e, t, n, a, s, u, d), i.dynCall_iiiiijj = (e, t, n, a, s, u, d, f, m) => (i.dynCall_iiiiijj = z.za)(e, t, n, a, s, u, d, f, m), i.dynCall_iiiiiijj = (e, t, n, a, s, u, d, f, m, w) => (i.dynCall_iiiiiijj = z.Aa)(e, t, n, a, s, u, d, f, m, w); + function Ya(e, t) { + var n = B(); + try { + return H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function Ja(e, t, n, a) { + var s = B(); + try { + H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Qa(e, t, n) { + var a = B(); + try { + H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function Xa(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Za(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function Ka(e, t) { + var n = B(); + try { + H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function eo(e, t, n) { + var a = B(); + try { + return H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function to(e) { + var t = B(); + try { + H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function ro(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function no(e, t, n, a, s, u, d, f, m, w, _) { + var T = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _); + } catch (E) { + if (V(T), E !== E + 0) + throw E; + j(1, 0); + } + } + function ao(e, t, n, a, s, u, d) { + var f = B(); + try { + return H(e)(t, n, a, s, u, d); + } catch (m) { + if (V(f), m !== m + 0) + throw m; + j(1, 0); + } + } + function oo(e, t, n, a, s) { + var u = B(); + try { + H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function io(e, t, n, a, s, u) { + var d = B(); + try { + return H(e)(t, n, a, s, u); + } catch (f) { + if (V(d), f !== f + 0) + throw f; + j(1, 0); + } + } + function so(e, t, n, a, s, u, d, f) { + var m = B(); + try { + return H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function co(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function uo(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function lo(e) { + var t = B(); + try { + return H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function fo(e, t, n, a, s, u, d, f) { + var m = B(); + try { + H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function ho(e, t, n, a, s, u, d, f, m, w, _, T) { + var E = B(); + try { + return H(e)(t, n, a, s, u, d, f, m, w, _, T); + } catch (O) { + if (V(E), O !== O + 0) + throw O; + j(1, 0); + } + } + function po(e, t, n, a, s, u, d, f, m, w, _, T, E, O, L, q) { + var I = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _, T, E, O, L, q); + } catch (J) { + if (V(I), J !== J + 0) + throw J; + j(1, 0); + } + } + function mo(e, t, n, a, s) { + var u = B(); + try { + return vr(e, t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + var tt; + ve = function e() { + tt || yr(), tt || (ve = e); + }; + function yr() { + if (te > 0 || (Le(), te > 0)) + return; + function e() { + tt || (tt = true, i.calledRun = true, !W && (dt(), c(i), i.onRuntimeInitialized && i.onRuntimeInitialized(), ft())); + } + i.setStatus ? (i.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + i.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (i.preInit) + for (typeof i.preInit == "function" && (i.preInit = [i.preInit]); i.preInit.length > 0; ) + i.preInit.pop()(); + return yr(), o.ready; + }; +})(); +function Yo(r) { + return Bt( + lt, + r + ); +} +function Hi(r) { + return No( + lt, + r + ); +} +async function Jo(r, o) { + return zo( + lt, + r, + o + ); +} +async function Qo(r, o) { + return Go( + lt, + r, + o + ); +} +var je; +var ct = class extends EventTarget { + constructor(o = {}) { + var i; + super(), Co(this, je, void 0); + try { + const c = (i = o == null ? void 0 : o.formats) == null ? void 0 : i.filter( + (l) => l !== "unknown" + ); + if ((c == null ? void 0 : c.length) === 0) + throw new TypeError("Hint option provided, but is empty."); + c == null || c.forEach((l) => { + if (!it.has(l)) + throw new TypeError( + `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.` + ); + }), $o(this, je, c != null ? c : []), Yo().then((l) => { + this.dispatchEvent( + new CustomEvent("load", { + detail: l + }) + ); + }).catch((l) => { + this.dispatchEvent(new CustomEvent("error", { detail: l })); + }); + } catch (c) { + throw Cr( + c, + "Failed to construct 'BarcodeDetector'" + ); + } + } + static async getSupportedFormats() { + return _o.filter((o) => o !== "unknown"); + } + async detect(o) { + try { + const i = await Mo(o); + if (i === null) + return []; + let c; + try { + jr(i) ? c = await Jo(i, { + tryHarder: true, + formats: br(this, je).map((l) => it.get(l)) + }) : c = await Qo(i, { + tryHarder: true, + formats: br(this, je).map((l) => it.get(l)) + }); + } catch (l) { + throw console.error(l), new DOMException( + "Barcode detection service unavailable.", + "NotSupportedError" + ); + } + return c.map((l) => { + const { + topLeft: { x: h, y: v }, + topRight: { x: g, y: b }, + bottomLeft: { x: p, y: C }, + bottomRight: { x: S, y: $ } + } = l.position, F = Math.min(h, g, p, S), U = Math.min(v, b, C, $), W = Math.max(h, g, p, S), R = Math.max(v, b, C, $); + return { + boundingBox: new DOMRectReadOnly( + F, + U, + W - F, + R - U + ), + rawValue: l.text, + format: So(l.format), + cornerPoints: [ + { + x: h, + y: v + }, + { + x: g, + y: b + }, + { + x: S, + y: $ + }, + { + x: p, + y: C + } + ] + }; + }); + } catch (i) { + throw Cr( + i, + "Failed to execute 'detect' on 'BarcodeDetector'" + ); + } + } +}; +je = /* @__PURE__ */ new WeakMap(); +var Vt = (r, o, i = "error") => { + let c, l; + const h = new Promise( + (v, g) => { + c = v, l = g, r.addEventListener(o, c), r.addEventListener(i, l); + } + ); + return h.finally(() => { + r.removeEventListener(o, c), r.removeEventListener(i, l); + }), h; +}; +var Sr = (r) => new Promise((o) => setTimeout(o, r)); +var Xo = class extends Error { + constructor() { + super("can't process cross-origin image"), this.name = "DropImageFetchError"; + } +}; +var Vr = class extends Error { + constructor() { + super("this browser has no Stream API support"), this.name = "StreamApiNotSupportedError"; + } +}; +var Zo = class extends Error { + constructor() { + super( + "camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP." + ), this.name = "InsecureContextError"; + } +}; +var Ko = class extends Error { + constructor() { + super( + "Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)" + ), this.name = "StreamLoadTimeoutError"; + } +}; +var qr; +async function ei(r) { + if (window.BarcodeDetector === void 0) + return console.debug("[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill."), new ct({ formats: r }); + const o = await window.BarcodeDetector.getSupportedFormats(), i = r.filter((c) => !o.includes(c)); + return i.length > 0 ? (console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`), new ct({ formats: r })) : (console.debug("[vue-qrcode-reader] Will use native BarcodeDetector."), new window.BarcodeDetector({ formats: r })); +} +async function Nr(r) { + qr = await ei(r); +} +var ti = async (r, { + detectHandler: o, + locateHandler: i, + minDelay: c, + formats: l +}) => { + console.debug("[vue-qrcode-reader] start scanning"), await Nr(l); + const h = (v) => async (g) => { + if (r.readyState === 0) + console.debug("[vue-qrcode-reader] stop scanning: video element readyState is 0"); + else { + const { lastScanned: b, contentBefore: p, lastScanHadContent: C } = v; + if (g - b < c) + window.requestAnimationFrame(h(v)); + else { + const S = await qr.detect(r), $ = S.some((W) => !p.includes(W.rawValue)); + $ && o(S); + const F = S.length > 0; + F && i(S), !F && C && i(S); + const U = { + lastScanned: g, + lastScanHadContent: F, + // It can happen that a QR code is constantly in view of the camera but + // maybe a scanned frame is a bit blurry and we detect nothing but in the + // next frame we detect the code again. We also want to avoid emitting + // a `detect` event in such a case. So we don't reset `contentBefore`, + // if we detect nothing, only if we detect something new. + contentBefore: $ ? S.map((W) => W.rawValue) : p + }; + window.requestAnimationFrame(h(U)); + } + } + }; + h({ + lastScanned: performance.now(), + contentBefore: [], + lastScanHadContent: false + })(performance.now()); +}; +var ri = async (r) => { + if (r.startsWith("http") && r.includes(location.host) === false) + throw new Xo(); + const o = document.createElement("img"); + return o.src = r, await Vt(o, "load"), o; +}; +var zr = async (r, o = ["qr_code"]) => await new ct({ formats: o }).detect(r); +var ni = async (r, o = ["qr_code"]) => { + const i = new ct({ formats: o }), c = await ri(r); + return await i.detect(c); +}; +var Gr = {}; +var Q = {}; +Object.defineProperty(Q, "__esModule", { + value: true +}); +Q.compactObject = Qr; +Q.deprecated = fi; +var ai = Q.detectBrowser = hi; +Q.disableLog = ui; +Q.disableWarnings = li; +Q.extractVersion = st; +Q.filterStats = pi; +Q.log = di; +Q.walkStats = ut; +Q.wrapPeerConnectionEvent = ci; +function oi(r, o, i) { + return o = ii(o), o in r ? Object.defineProperty(r, o, { value: i, enumerable: true, configurable: true, writable: true }) : r[o] = i, r; +} +function ii(r) { + var o = si(r, "string"); + return pe(o) === "symbol" ? o : String(o); +} +function si(r, o) { + if (pe(r) !== "object" || r === null) + return r; + var i = r[Symbol.toPrimitive]; + if (i !== void 0) { + var c = i.call(r, o || "default"); + if (pe(c) !== "object") + return c; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (o === "string" ? String : Number)(r); +} +function pe(r) { + "@babel/helpers - typeof"; + return pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, pe(r); +} +var Yr = true; +var Jr = true; +function st(r, o, i) { + var c = r.match(o); + return c && c.length >= i && parseInt(c[i], 10); +} +function ci(r, o, i) { + if (r.RTCPeerConnection) { + var c = r.RTCPeerConnection.prototype, l = c.addEventListener; + c.addEventListener = function(v, g) { + if (v !== o) + return l.apply(this, arguments); + var b = function(C) { + var S = i(C); + S && (g.handleEvent ? g.handleEvent(S) : g(S)); + }; + return this._eventMap = this._eventMap || {}, this._eventMap[o] || (this._eventMap[o] = /* @__PURE__ */ new Map()), this._eventMap[o].set(g, b), l.apply(this, [v, b]); + }; + var h = c.removeEventListener; + c.removeEventListener = function(v, g) { + if (v !== o || !this._eventMap || !this._eventMap[o]) + return h.apply(this, arguments); + if (!this._eventMap[o].has(g)) + return h.apply(this, arguments); + var b = this._eventMap[o].get(g); + return this._eventMap[o].delete(g), this._eventMap[o].size === 0 && delete this._eventMap[o], Object.keys(this._eventMap).length === 0 && delete this._eventMap, h.apply(this, [v, b]); + }, Object.defineProperty(c, "on" + o, { + get: function() { + return this["_on" + o]; + }, + set: function(g) { + this["_on" + o] && (this.removeEventListener(o, this["_on" + o]), delete this["_on" + o]), g && this.addEventListener(o, this["_on" + o] = g); + }, + enumerable: true, + configurable: true + }); + } +} +function ui(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Yr = r, r ? "adapter.js logging disabled" : "adapter.js logging enabled"); +} +function li(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Jr = !r, "adapter.js deprecation warnings " + (r ? "disabled" : "enabled")); +} +function di() { + if ((typeof window > "u" ? "undefined" : pe(window)) === "object") { + if (Yr) + return; + typeof console < "u" && typeof console.log == "function" && console.log.apply(console, arguments); + } +} +function fi(r, o) { + Jr && console.warn(r + " is deprecated, please use " + o + " instead."); +} +function hi(r) { + var o = { + browser: null, + version: null + }; + if (typeof r > "u" || !r.navigator || !r.navigator.userAgent) + return o.browser = "Not a browser.", o; + var i = r.navigator; + if (i.mozGetUserMedia) + o.browser = "firefox", o.version = st(i.userAgent, /Firefox\/(\d+)\./, 1); + else if (i.webkitGetUserMedia || r.isSecureContext === false && r.webkitRTCPeerConnection) + o.browser = "chrome", o.version = st(i.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + else if (r.RTCPeerConnection && i.userAgent.match(/AppleWebKit\/(\d+)\./)) + o.browser = "safari", o.version = st(i.userAgent, /AppleWebKit\/(\d+)\./, 1), o.supportsUnifiedPlan = r.RTCRtpTransceiver && "currentDirection" in r.RTCRtpTransceiver.prototype; + else + return o.browser = "Not a supported browser.", o; + return o; +} +function Pr(r) { + return Object.prototype.toString.call(r) === "[object Object]"; +} +function Qr(r) { + return Pr(r) ? Object.keys(r).reduce(function(o, i) { + var c = Pr(r[i]), l = c ? Qr(r[i]) : r[i], h = c && !Object.keys(l).length; + return l === void 0 || h ? o : Object.assign(o, oi({}, i, l)); + }, {}) : r; +} +function ut(r, o, i) { + !o || i.has(o.id) || (i.set(o.id, o), Object.keys(o).forEach(function(c) { + c.endsWith("Id") ? ut(r, r.get(o[c]), i) : c.endsWith("Ids") && o[c].forEach(function(l) { + ut(r, r.get(l), i); + }); + })); +} +function pi(r, o, i) { + var c = i ? "outbound-rtp" : "inbound-rtp", l = /* @__PURE__ */ new Map(); + if (o === null) + return l; + var h = []; + return r.forEach(function(v) { + v.type === "track" && v.trackIdentifier === o.id && h.push(v); + }), h.forEach(function(v) { + r.forEach(function(g) { + g.type === c && g.trackId === v.id && ut(r, g, l); + }); + }), l; +} +Object.defineProperty(Gr, "__esModule", { + value: true +}); +var mi = Gr.shimGetUserMedia = gi; +var vi = yi(Q); +function Xr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Xr = function(l) { + return l ? i : o; + })(r); +} +function yi(r, o) { + if (r && r.__esModule) + return r; + if (r === null || he(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Xr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function he(r) { + "@babel/helpers - typeof"; + return he = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, he(r); +} +var Tr = vi.log; +function gi(r, o) { + var i = r && r.navigator; + if (i.mediaDevices) { + var c = function(p) { + if (he(p) !== "object" || p.mandatory || p.optional) + return p; + var C = {}; + return Object.keys(p).forEach(function(S) { + if (!(S === "require" || S === "advanced" || S === "mediaSource")) { + var $ = he(p[S]) === "object" ? p[S] : { + ideal: p[S] + }; + $.exact !== void 0 && typeof $.exact == "number" && ($.min = $.max = $.exact); + var F = function(R, A) { + return R ? R + A.charAt(0).toUpperCase() + A.slice(1) : A === "deviceId" ? "sourceId" : A; + }; + if ($.ideal !== void 0) { + C.optional = C.optional || []; + var U = {}; + typeof $.ideal == "number" ? (U[F("min", S)] = $.ideal, C.optional.push(U), U = {}, U[F("max", S)] = $.ideal, C.optional.push(U)) : (U[F("", S)] = $.ideal, C.optional.push(U)); + } + $.exact !== void 0 && typeof $.exact != "number" ? (C.mandatory = C.mandatory || {}, C.mandatory[F("", S)] = $.exact) : ["min", "max"].forEach(function(W) { + $[W] !== void 0 && (C.mandatory = C.mandatory || {}, C.mandatory[F(W, S)] = $[W]); + }); + } + }), p.advanced && (C.optional = (C.optional || []).concat(p.advanced)), C; + }, l = function(p, C) { + if (o.version >= 61) + return C(p); + if (p = JSON.parse(JSON.stringify(p)), p && he(p.audio) === "object") { + var S = function(R, A, X) { + A in R && !(X in R) && (R[X] = R[A], delete R[A]); + }; + p = JSON.parse(JSON.stringify(p)), S(p.audio, "autoGainControl", "googAutoGainControl"), S(p.audio, "noiseSuppression", "googNoiseSuppression"), p.audio = c(p.audio); + } + if (p && he(p.video) === "object") { + var $ = p.video.facingMode; + $ = $ && (he($) === "object" ? $ : { + ideal: $ + }); + var F = o.version < 66; + if ($ && ($.exact === "user" || $.exact === "environment" || $.ideal === "user" || $.ideal === "environment") && !(i.mediaDevices.getSupportedConstraints && i.mediaDevices.getSupportedConstraints().facingMode && !F)) { + delete p.video.facingMode; + var U; + if ($.exact === "environment" || $.ideal === "environment" ? U = ["back", "rear"] : ($.exact === "user" || $.ideal === "user") && (U = ["front"]), U) + return i.mediaDevices.enumerateDevices().then(function(W) { + W = W.filter(function(A) { + return A.kind === "videoinput"; + }); + var R = W.find(function(A) { + return U.some(function(X) { + return A.label.toLowerCase().includes(X); + }); + }); + return !R && W.length && U.includes("back") && (R = W[W.length - 1]), R && (p.video.deviceId = $.exact ? { + exact: R.deviceId + } : { + ideal: R.deviceId + }), p.video = c(p.video), Tr("chrome: " + JSON.stringify(p)), C(p); + }); + } + p.video = c(p.video); + } + return Tr("chrome: " + JSON.stringify(p)), C(p); + }, h = function(p) { + return o.version >= 64 ? p : { + name: { + PermissionDeniedError: "NotAllowedError", + PermissionDismissedError: "NotAllowedError", + InvalidStateError: "NotAllowedError", + DevicesNotFoundError: "NotFoundError", + ConstraintNotSatisfiedError: "OverconstrainedError", + TrackStartError: "NotReadableError", + MediaDeviceFailedDueToShutdown: "NotAllowedError", + MediaDeviceKillSwitchOn: "NotAllowedError", + TabCaptureError: "AbortError", + ScreenCaptureError: "AbortError", + DeviceCaptureError: "AbortError" + }[p.name] || p.name, + message: p.message, + constraint: p.constraint || p.constraintName, + toString: function() { + return this.name + (this.message && ": ") + this.message; + } + }; + }, v = function(p, C, S) { + l(p, function($) { + i.webkitGetUserMedia($, C, function(F) { + S && S(h(F)); + }); + }); + }; + if (i.getUserMedia = v.bind(i), i.mediaDevices.getUserMedia) { + var g = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + i.mediaDevices.getUserMedia = function(b) { + return l(b, function(p) { + return g(p).then(function(C) { + if (p.audio && !C.getAudioTracks().length || p.video && !C.getVideoTracks().length) + throw C.getTracks().forEach(function(S) { + S.stop(); + }), new DOMException("", "NotFoundError"); + return C; + }, function(C) { + return Promise.reject(h(C)); + }); + }); + }; + } + } +} +var Zr = {}; +Object.defineProperty(Zr, "__esModule", { + value: true +}); +var wi = Zr.shimGetUserMedia = $i; +var bi = Ci(Q); +function Kr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Kr = function(l) { + return l ? i : o; + })(r); +} +function Ci(r, o) { + if (r && r.__esModule) + return r; + if (r === null || Pe(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Kr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function Pe(r) { + "@babel/helpers - typeof"; + return Pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, Pe(r); +} +function $i(r, o) { + var i = r && r.navigator, c = r && r.MediaStreamTrack; + if (i.getUserMedia = function(b, p, C) { + bi.deprecated("navigator.getUserMedia", "navigator.mediaDevices.getUserMedia"), i.mediaDevices.getUserMedia(b).then(p, C); + }, !(o.version > 55 && "autoGainControl" in i.mediaDevices.getSupportedConstraints())) { + var l = function(p, C, S) { + C in p && !(S in p) && (p[S] = p[C], delete p[C]); + }, h = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + if (i.mediaDevices.getUserMedia = function(b) { + return Pe(b) === "object" && Pe(b.audio) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b.audio, "autoGainControl", "mozAutoGainControl"), l(b.audio, "noiseSuppression", "mozNoiseSuppression")), h(b); + }, c && c.prototype.getSettings) { + var v = c.prototype.getSettings; + c.prototype.getSettings = function() { + var b = v.apply(this, arguments); + return l(b, "mozAutoGainControl", "autoGainControl"), l(b, "mozNoiseSuppression", "noiseSuppression"), b; + }; + } + if (c && c.prototype.applyConstraints) { + var g = c.prototype.applyConstraints; + c.prototype.applyConstraints = function(b) { + return this.kind === "audio" && Pe(b) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b, "autoGainControl", "mozAutoGainControl"), l(b, "noiseSuppression", "mozNoiseSuppression")), g.apply(this, [b]); + }; + } + } +} +var ae = {}; +Object.defineProperty(ae, "__esModule", { + value: true +}); +ae.shimAudioContext = xi; +ae.shimCallbacksAPI = Ei; +ae.shimConstraints = rn; +ae.shimCreateOfferLegacy = Ai; +var _i = ae.shimGetUserMedia = Oi; +ae.shimLocalStreamsAPI = Pi; +ae.shimRTCIceServerUrls = Di; +ae.shimRemoteStreamsAPI = Ti; +ae.shimTrackEventTransceiver = Mi; +var en = Si(Q); +function tn(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (tn = function(l) { + return l ? i : o; + })(r); +} +function Si(r, o) { + if (r && r.__esModule) + return r; + if (r === null || me(r) !== "object" && typeof r != "function") + return { default: r }; + var i = tn(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function me(r) { + "@babel/helpers - typeof"; + return me = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, me(r); +} +function Pi(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + if ("getLocalStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getLocalStreams = function() { + return this._localStreams || (this._localStreams = []), this._localStreams; + }), !("addStream" in r.RTCPeerConnection.prototype)) { + var o = r.RTCPeerConnection.prototype.addTrack; + r.RTCPeerConnection.prototype.addStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []), this._localStreams.includes(c) || this._localStreams.push(c), c.getAudioTracks().forEach(function(h) { + return o.call(l, h, c); + }), c.getVideoTracks().forEach(function(h) { + return o.call(l, h, c); + }); + }, r.RTCPeerConnection.prototype.addTrack = function(c) { + for (var l = this, h = arguments.length, v = new Array(h > 1 ? h - 1 : 0), g = 1; g < h; g++) + v[g - 1] = arguments[g]; + return v && v.forEach(function(b) { + l._localStreams ? l._localStreams.includes(b) || l._localStreams.push(b) : l._localStreams = [b]; + }), o.apply(this, arguments); + }; + } + "removeStream" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.removeStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []); + var h = this._localStreams.indexOf(c); + if (h !== -1) { + this._localStreams.splice(h, 1); + var v = c.getTracks(); + this.getSenders().forEach(function(g) { + v.includes(g.track) && l.removeTrack(g); + }); + } + }); + } +} +function Ti(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection) && ("getRemoteStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getRemoteStreams = function() { + return this._remoteStreams ? this._remoteStreams : []; + }), !("onaddstream" in r.RTCPeerConnection.prototype))) { + Object.defineProperty(r.RTCPeerConnection.prototype, "onaddstream", { + get: function() { + return this._onaddstream; + }, + set: function(c) { + var l = this; + this._onaddstream && (this.removeEventListener("addstream", this._onaddstream), this.removeEventListener("track", this._onaddstreampoly)), this.addEventListener("addstream", this._onaddstream = c), this.addEventListener("track", this._onaddstreampoly = function(h) { + h.streams.forEach(function(v) { + if (l._remoteStreams || (l._remoteStreams = []), !l._remoteStreams.includes(v)) { + l._remoteStreams.push(v); + var g = new Event("addstream"); + g.stream = v, l.dispatchEvent(g); + } + }); + }); + } + }); + var o = r.RTCPeerConnection.prototype.setRemoteDescription; + r.RTCPeerConnection.prototype.setRemoteDescription = function() { + var c = this; + return this._onaddstreampoly || this.addEventListener("track", this._onaddstreampoly = function(l) { + l.streams.forEach(function(h) { + if (c._remoteStreams || (c._remoteStreams = []), !(c._remoteStreams.indexOf(h) >= 0)) { + c._remoteStreams.push(h); + var v = new Event("addstream"); + v.stream = h, c.dispatchEvent(v); + } + }); + }), o.apply(c, arguments); + }; + } +} +function Ei(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + var o = r.RTCPeerConnection.prototype, i = o.createOffer, c = o.createAnswer, l = o.setLocalDescription, h = o.setRemoteDescription, v = o.addIceCandidate; + o.createOffer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = i.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }, o.createAnswer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = c.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }; + var g = function(p, C, S) { + var $ = l.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }; + o.setLocalDescription = g, g = function(p, C, S) { + var $ = h.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.setRemoteDescription = g, g = function(p, C, S) { + var $ = v.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.addIceCandidate = g; + } +} +function Oi(r) { + var o = r && r.navigator; + if (o.mediaDevices && o.mediaDevices.getUserMedia) { + var i = o.mediaDevices, c = i.getUserMedia.bind(i); + o.mediaDevices.getUserMedia = function(l) { + return c(rn(l)); + }; + } + !o.getUserMedia && o.mediaDevices && o.mediaDevices.getUserMedia && (o.getUserMedia = (function(h, v, g) { + o.mediaDevices.getUserMedia(h).then(v, g); + }).bind(o)); +} +function rn(r) { + return r && r.video !== void 0 ? Object.assign({}, r, { + video: en.compactObject(r.video) + }) : r; +} +function Di(r) { + if (r.RTCPeerConnection) { + var o = r.RTCPeerConnection; + r.RTCPeerConnection = function(c, l) { + if (c && c.iceServers) { + for (var h = [], v = 0; v < c.iceServers.length; v++) { + var g = c.iceServers[v]; + g.urls === void 0 && g.url ? (en.deprecated("RTCIceServer.url", "RTCIceServer.urls"), g = JSON.parse(JSON.stringify(g)), g.urls = g.url, delete g.url, h.push(g)) : h.push(c.iceServers[v]); + } + c.iceServers = h; + } + return new o(c, l); + }, r.RTCPeerConnection.prototype = o.prototype, "generateCertificate" in o && Object.defineProperty(r.RTCPeerConnection, "generateCertificate", { + get: function() { + return o.generateCertificate; + } + }); + } +} +function Mi(r) { + me(r) === "object" && r.RTCTrackEvent && "receiver" in r.RTCTrackEvent.prototype && !("transceiver" in r.RTCTrackEvent.prototype) && Object.defineProperty(r.RTCTrackEvent.prototype, "transceiver", { + get: function() { + return { + receiver: this.receiver + }; + } + }); +} +function Ai(r) { + var o = r.RTCPeerConnection.prototype.createOffer; + r.RTCPeerConnection.prototype.createOffer = function(c) { + if (c) { + typeof c.offerToReceiveAudio < "u" && (c.offerToReceiveAudio = !!c.offerToReceiveAudio); + var l = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "audio"; + }); + c.offerToReceiveAudio === false && l ? l.direction === "sendrecv" ? l.setDirection ? l.setDirection("sendonly") : l.direction = "sendonly" : l.direction === "recvonly" && (l.setDirection ? l.setDirection("inactive") : l.direction = "inactive") : c.offerToReceiveAudio === true && !l && this.addTransceiver("audio", { + direction: "recvonly" + }), typeof c.offerToReceiveVideo < "u" && (c.offerToReceiveVideo = !!c.offerToReceiveVideo); + var h = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "video"; + }); + c.offerToReceiveVideo === false && h ? h.direction === "sendrecv" ? h.setDirection ? h.setDirection("sendonly") : h.direction = "sendonly" : h.direction === "recvonly" && (h.setDirection ? h.setDirection("inactive") : h.direction = "inactive") : c.offerToReceiveVideo === true && !h && this.addTransceiver("video", { + direction: "recvonly" + }); + } + return o.apply(this, arguments); + }; +} +function xi(r) { + me(r) !== "object" || r.AudioContext || (r.AudioContext = r.webkitAudioContext); +} +var Ri = (r) => { + let o = false, i; + return (...c) => (o || (i = r(c), o = true), i); +}; +function ue(r, o) { + if (r === false) + throw new Error(o != null ? o : "assertion failure"); +} +function Er(r) { + throw new Error("this code should be unreachable"); +} +var ki = Ri(() => { + const r = ai(window); + switch (r.browser) { + case "chrome": + mi(window, r); + break; + case "firefox": + wi(window, r); + break; + case "safari": + _i(window, r); + break; + default: + throw new Vr(); + } +}); +var Te = Promise.resolve({ type: "stop", data: {} }); +async function Or(r, o, i) { + var g, b, p; + if (console.debug( + "[vue-qrcode-reader] starting camera with constraints: ", + JSON.stringify(o) + ), window.isSecureContext !== true) + throw new Zo(); + if (((g = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : g.getUserMedia) === void 0) + throw new Vr(); + ki(), console.debug("[vue-qrcode-reader] calling getUserMedia"); + const c = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: o + }); + r.srcObject !== void 0 ? r.srcObject = c : r.mozSrcObject !== void 0 ? r.mozSrcObject = c : window.URL.createObjectURL ? r.src = window.URL.createObjectURL(c) : window.webkitURL ? r.src = window.webkitURL.createObjectURL(c) : r.src = c.id, r.play(), console.debug("[vue-qrcode-reader] waiting for video element to load"), await Promise.race([ + Vt(r, "loadeddata"), + // On iOS devices in PWA mode, QrcodeStream works initially, but after + // killing and restarting the PWA, all video elements fail to load camera + // streams and never emit the `loadeddata` event. Looks like this is + // related to a WebKit issue (see #298). No workarounds at the moment. + // To at least detect this situation, we throw an error if the event + // has not been emitted after a 6 second timeout. + Sr(6e3).then(() => { + throw new Ko(); + }) + ]), console.debug("[vue-qrcode-reader] video element loaded"), await Sr(500); + const [l] = c.getVideoTracks(), h = (p = (b = l == null ? void 0 : l.getCapabilities) == null ? void 0 : b.call(l)) != null ? p : {}; + let v = false; + return i && h.torch && (await l.applyConstraints({ advanced: [{ torch: true }] }), v = true), console.debug("[vue-qrcode-reader] camera ready"), { + type: "start", + data: { + videoEl: r, + stream: c, + capabilities: h, + constraints: o, + isTorchOn: v + } + }; +} +async function Ii(r, { + constraints: o, + torch: i, + restart: c = false +}) { + Te = Te.then((h) => { + if (h.type === "start") { + const { + data: { + videoEl: v, + stream: g, + constraints: b, + isTorchOn: p + } + } = h; + return !c && r === v && o === b && i === p ? h : nn(v, g, p).then( + () => Or(r, o, i) + ); + } else if (h.type === "stop" || h.type === "failed") + return Or(r, o, i); + Er(); + }).catch((h) => (console.debug(`[vue-qrcode-reader] starting camera failed with "${h}"`), { type: "failed", error: h })); + const l = await Te; + if (l.type === "stop") + throw new Error("Something went wrong with the camera task queue (start task)."); + if (l.type === "failed") + throw l.error; + if (l.type === "start") + return l.data.capabilities; + Er(); +} +async function nn(r, o, i) { + console.debug("[vue-qrcode-reader] stopping camera"), r.src = "", r.srcObject = null, r.load(), await Vt(r, "error"); + for (const c of o.getTracks()) + i != null || await c.applyConstraints({ advanced: [{ torch: false }] }), o.removeTrack(c), c.stop(); + return { + type: "stop", + data: {} + }; +} +async function ot() { + if (Te = Te.then((o) => { + if (o.type === "stop" || o.type === "failed") + return o; + const { + data: { videoEl: i, stream: c, isTorchOn: l } + } = o; + return nn(i, c, l); + }), (await Te).type === "start") + throw new Error("Something went wrong with the camera task queue (stop task)."); +} +var Fi = jt({ + __name: "QrcodeStream", + props: { + // in this file: don't use `props.constraints` directly. Use `constraintsCached`. + /** + * Passes an object with various camera configuration options. + */ + constraints: { + type: Object, + default() { + return { facingMode: "environment" }; + } + }, + // in this file: don't use `props.formats` directly. Use `formatsCached`. + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: Array, + default: () => ["qr_code"] + }, + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: Boolean, + default: false + }, + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: Boolean, + default: false + }, + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: Function + } + }, + emits: ["detect", "camera-on", "camera-off", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = we(i.constraints), h = we(i.formats); + We( + () => i.constraints, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (l.value = k); + }, + { deep: true } + ), We( + () => i.formats, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (h.value = k); + }, + { deep: true } + ); + const v = we(), g = we(), b = we(), p = we(false), C = we(false); + vo(() => { + C.value = true; + }), yo(() => { + ot(); + }); + const S = Ut(() => ({ + torch: i.torch, + constraints: l.value, + shouldStream: C.value && !i.paused + })); + We( + S, + async (k) => { + const D = b.value; + ue( + D !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined." + ); + const M = v.value; + ue( + M !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined." + ); + const le = M.getContext("2d"); + if (ue(le !== null, "if cavnas is defined, canvas 2d context should also be non-null"), k.shouldStream) { + ot(), p.value = false; + try { + const oe = await Ii(D, k); + C.value ? (p.value = true, c("camera-on", oe)) : await ot(); + } catch (oe) { + c("error", oe); + } + } else + M.width = D.videoWidth, M.height = D.videoHeight, le.drawImage(D, 0, 0, D.videoWidth, D.videoHeight), ot(), p.value = false, c("camera-off"); + }, + { deep: true } + ), We(h, async (k) => { + C.value && await Nr(k); + }); + const $ = Ut(() => S.value.shouldStream && p.value); + We($, (k) => { + if (k) { + ue( + v.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined" + ), F(v.value), ue( + g.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined" + ), F(g.value); + const D = () => i.track === void 0 ? 500 : 40; + ue( + b.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus video element is defined" + ), ti(b.value, { + detectHandler: (M) => c("detect", M), + formats: h.value, + locateHandler: U, + minDelay: D() + }); + } + }); + const F = (k) => { + const D = k.getContext("2d"); + ue(D !== null, "canvas 2d context should always be non-null"), D.clearRect(0, 0, k.width, k.height); + }, U = (k) => { + const D = g.value; + ue( + D !== void 0, + "onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined." + ); + const M = b.value; + if (ue( + M !== void 0, + "onLocate handler should only be called when component is mounted. Thus video element is always defined." + ), k.length === 0 || i.track === void 0) + F(D); + else { + const le = M.offsetWidth, oe = M.offsetHeight, be = M.videoWidth, Ce = M.videoHeight, Oe = Math.max(le / be, oe / Ce), De = be * Oe, Le = Ce * Oe, dt = De / be, ft = Le / Ce, ht = (le - De) / 2, pt = (oe - Le) / 2, Me = ({ x: de, y: Z }) => ({ + x: Math.floor(de * dt), + y: Math.floor(Z * ft) + }), te = ({ x: de, y: Z }) => ({ + x: Math.floor(de + ht), + y: Math.floor(Z + pt) + }), ve = k.map((de) => { + const { boundingBox: Z, cornerPoints: vt } = de, { x: He, y: fe } = te( + Me({ + x: Z.x, + y: Z.y + }) + ), { x: Be, y: yt } = Me({ + x: Z.width, + y: Z.height + }); + return { + ...de, + cornerPoints: vt.map((Ve) => te(Me(Ve))), + boundingBox: DOMRectReadOnly.fromRect({ x: He, y: fe, width: Be, height: yt }) + }; + }); + D.width = M.offsetWidth, D.height = M.offsetHeight; + const mt = D.getContext("2d"); + i.track(ve, mt); + } + }, W = { + width: "100%", + height: "100%", + position: "relative", + // notice that we use z-index only once for the wrapper div. + // If z-index is not defined, elements are stacked in the order they appear in the DOM. + // The first element is at the very bottom and subsequent elements are added on top. + "z-index": "0" + }, R = { + width: "100%", + height: "100%", + position: "absolute", + top: "0", + left: "0" + }, A = { + width: "100%", + height: "100%", + "object-fit": "cover" + }, X = Ut(() => $.value ? A : { + ...A, + visibility: "hidden", + position: "absolute" + }); + return (k, D) => (Lt(), Ht("div", { style: W }, [ + nt("video", { + ref_key: "videoRef", + ref: b, + style: go(X.value), + autoplay: "", + muted: "", + playsinline: "" + }, null, 4), + wo(nt("canvas", { + id: "qrcode-stream-pause-frame", + ref_key: "pauseFrameRef", + ref: v, + style: A + }, null, 512), [ + [bo, !$.value] + ]), + nt("canvas", { + id: "qrcode-stream-tracking-layer", + ref_key: "trackingLayerRef", + ref: g, + style: R + }, null, 512), + nt("div", { style: R }, [ + Dr(k.$slots, "default") + ]) + ])); + } +}); +var Ui = jt({ + __name: "QrcodeCapture", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect"], + setup(r, { emit: o }) { + const i = r, c = o, l = (h) => { + if (!(!(h.target instanceof HTMLInputElement) || !h.target.files)) + for (const v of Array.from(h.target.files)) + zr(v, i.formats).then((g) => { + c("detect", g); + }); + }; + return (h, v) => (Lt(), Ht("input", { + onChange: l, + type: "file", + name: "image", + accept: "image/*", + capture: "environment", + multiple: "" + }, null, 32)); + } +}); +var Wi = jt({ + __name: "QrcodeDropZone", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect", "dragover", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = async (g) => { + try { + const b = await g; + c("detect", b); + } catch (b) { + c("error", b); + } + }, h = (g) => { + c("dragover", g); + }, v = ({ dataTransfer: g }) => { + if (!g) + return; + h(false); + const b = [...Array.from(g.files)], p = g.getData("text/uri-list"); + b.forEach((C) => { + l(zr(C, i.formats)); + }), p !== "" && l(ni(p, i.formats)); + }; + return (g, b) => (Lt(), Ht("div", { + onDrop: at(v, ["prevent", "stop"]), + onDragenter: b[0] || (b[0] = at((p) => h(true), ["prevent", "stop"])), + onDragleave: b[1] || (b[1] = at((p) => h(false), ["prevent", "stop"])), + onDragover: b[2] || (b[2] = at(() => { + }, ["prevent", "stop"])) + }, [ + Dr(g.$slots, "default") + ], 32)); + } +}); +function ji(r) { + r.component("qrcode-stream", Fi), r.component("qrcode-capture", Ui), r.component("qrcode-drop-zone", Wi); +} +var Bi = { install: ji }; +export { + Ui as QrcodeCapture, + Wi as QrcodeDropZone, + Fi as QrcodeStream, + Bi as VueQrcodeReader, + ji as install, + Hi as setZXingModuleOverrides +}; +//# sourceMappingURL=vue-qrcode-reader.js.map diff --git a/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js.map b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js.map new file mode 100644 index 0000000..c52c25d --- /dev/null +++ b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js"], + "sourcesContent": ["import { defineComponent as jt, ref as we, watch as We, onMounted as vo, onUnmounted as yo, computed as Ut, openBlock as Lt, createElementBlock as Ht, createElementVNode as nt, normalizeStyle as go, withDirectives as wo, vShow as bo, renderSlot as Dr, withModifiers as at } from \"vue\";\nvar Mr = (r, o, i) => {\n if (!o.has(r))\n throw TypeError(\"Cannot \" + i);\n}, br = (r, o, i) => (Mr(r, o, \"read from private field\"), i ? i.call(r) : o.get(r)), Co = (r, o, i) => {\n if (o.has(r))\n throw TypeError(\"Cannot add the same private member more than once\");\n o instanceof WeakSet ? o.add(r) : o.set(r, i);\n}, $o = (r, o, i, c) => (Mr(r, o, \"write to private field\"), o.set(r, i), i);\nconst Ar = [\n [\"aztec\", \"Aztec\"],\n [\"code_128\", \"Code128\"],\n [\"code_39\", \"Code39\"],\n [\"code_93\", \"Code93\"],\n [\"codabar\", \"Codabar\"],\n [\"databar\", \"DataBar\"],\n [\"databar_expanded\", \"DataBarExpanded\"],\n [\"data_matrix\", \"DataMatrix\"],\n [\"dx_film_edge\", \"DXFilmEdge\"],\n [\"ean_13\", \"EAN-13\"],\n [\"ean_8\", \"EAN-8\"],\n [\"itf\", \"ITF\"],\n [\"maxi_code\", \"MaxiCode\"],\n [\"micro_qr_code\", \"MicroQRCode\"],\n [\"pdf417\", \"PDF417\"],\n [\"qr_code\", \"QRCode\"],\n [\"rm_qr_code\", \"rMQRCode\"],\n [\"upc_a\", \"UPC-A\"],\n [\"upc_e\", \"UPC-E\"],\n [\"linear_codes\", \"Linear-Codes\"],\n [\"matrix_codes\", \"Matrix-Codes\"]\n], _o = [...Ar, [\"unknown\"]].map((r) => r[0]), it = new Map(\n Ar\n);\nfunction So(r) {\n for (const [o, i] of it)\n if (r === i)\n return o;\n return \"unknown\";\n}\nfunction Po(r) {\n if (xr(r))\n return {\n width: r.naturalWidth,\n height: r.naturalHeight\n };\n if (Rr(r))\n return {\n width: r.width.baseVal.value,\n height: r.height.baseVal.value\n };\n if (kr(r))\n return {\n width: r.videoWidth,\n height: r.videoHeight\n };\n if (Fr(r))\n return {\n width: r.width,\n height: r.height\n };\n if (Wr(r))\n return {\n width: r.displayWidth,\n height: r.displayHeight\n };\n if (Ir(r))\n return {\n width: r.width,\n height: r.height\n };\n if (Ur(r))\n return {\n width: r.width,\n height: r.height\n };\n throw new TypeError(\n \"The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.\"\n );\n}\nfunction xr(r) {\n try {\n return r instanceof HTMLImageElement;\n } catch (o) {\n return !1;\n }\n}\nfunction Rr(r) {\n try {\n return r instanceof SVGImageElement;\n } catch (o) {\n return !1;\n }\n}\nfunction kr(r) {\n try {\n return r instanceof HTMLVideoElement;\n } catch (o) {\n return !1;\n }\n}\nfunction Ir(r) {\n try {\n return r instanceof HTMLCanvasElement;\n } catch (o) {\n return !1;\n }\n}\nfunction Fr(r) {\n try {\n return r instanceof ImageBitmap;\n } catch (o) {\n return !1;\n }\n}\nfunction Ur(r) {\n try {\n return r instanceof OffscreenCanvas;\n } catch (o) {\n return !1;\n }\n}\nfunction Wr(r) {\n try {\n return r instanceof VideoFrame;\n } catch (o) {\n return !1;\n }\n}\nfunction jr(r) {\n try {\n return r instanceof Blob;\n } catch (o) {\n return !1;\n }\n}\nfunction To(r) {\n try {\n return r instanceof ImageData;\n } catch (o) {\n return !1;\n }\n}\nfunction Eo(r, o) {\n try {\n const i = new OffscreenCanvas(r, o);\n if (i.getContext(\"2d\") instanceof OffscreenCanvasRenderingContext2D)\n return i;\n throw void 0;\n } catch (i) {\n const c = document.createElement(\"canvas\");\n return c.width = r, c.height = o, c;\n }\n}\nasync function Lr(r) {\n if (xr(r) && !await Ao(r))\n throw new DOMException(\n \"Failed to load or decode HTMLImageElement.\",\n \"InvalidStateError\"\n );\n if (Rr(r) && !await xo(r))\n throw new DOMException(\n \"Failed to load or decode SVGImageElement.\",\n \"InvalidStateError\"\n );\n if (Wr(r) && Ro(r))\n throw new DOMException(\"VideoFrame is closed.\", \"InvalidStateError\");\n if (kr(r) && (r.readyState === 0 || r.readyState === 1))\n throw new DOMException(\"Invalid element or state.\", \"InvalidStateError\");\n if (Fr(r) && Io(r))\n throw new DOMException(\n \"The image source is detached.\",\n \"InvalidStateError\"\n );\n const { width: o, height: i } = Po(r);\n if (o === 0 || i === 0)\n return null;\n const c = Eo(o, i).getContext(\"2d\");\n c.drawImage(r, 0, 0);\n try {\n return c.getImageData(0, 0, o, i);\n } catch (l) {\n throw new DOMException(\"Source would taint origin.\", \"SecurityError\");\n }\n}\nasync function Oo(r) {\n let o;\n try {\n if (globalThis.createImageBitmap)\n o = await createImageBitmap(r);\n else if (globalThis.Image) {\n o = new Image();\n let i = \"\";\n try {\n i = URL.createObjectURL(r), o.src = i, await o.decode();\n } finally {\n URL.revokeObjectURL(i);\n }\n } else\n return r;\n } catch (i) {\n throw new DOMException(\n \"Failed to load or decode Blob.\",\n \"InvalidStateError\"\n );\n }\n return await Lr(o);\n}\nfunction Do(r) {\n const { width: o, height: i } = r;\n if (o === 0 || i === 0)\n return null;\n const c = r.getContext(\"2d\");\n try {\n return c.getImageData(0, 0, o, i);\n } catch (l) {\n throw new DOMException(\"Source would taint origin.\", \"SecurityError\");\n }\n}\nasync function Mo(r) {\n if (jr(r))\n return await Oo(r);\n if (To(r)) {\n if (ko(r))\n throw new DOMException(\n \"The image data has been detached.\",\n \"InvalidStateError\"\n );\n return r;\n }\n return Ir(r) || Ur(r) ? Do(r) : await Lr(r);\n}\nasync function Ao(r) {\n try {\n return await r.decode(), !0;\n } catch (o) {\n return !1;\n }\n}\nasync function xo(r) {\n var o;\n try {\n return await ((o = r.decode) == null ? void 0 : o.call(r)), !0;\n } catch (i) {\n return !1;\n }\n}\nfunction Ro(r) {\n return r.format === null;\n}\nfunction ko(r) {\n return r.data.buffer.byteLength === 0;\n}\nfunction Io(r) {\n return r.width === 0 && r.height === 0;\n}\nfunction Cr(r, o) {\n return r instanceof DOMException ? new DOMException(`${o}: ${r.message}`, r.name) : r instanceof Error ? new r.constructor(`${o}: ${r.message}`) : new Error(`${o}: ${r}`);\n}\nconst $r = [\n \"Aztec\",\n \"Codabar\",\n \"Code128\",\n \"Code39\",\n \"Code93\",\n \"DataBar\",\n \"DataBarExpanded\",\n \"DataMatrix\",\n \"DXFilmEdge\",\n \"EAN-13\",\n \"EAN-8\",\n \"ITF\",\n \"Linear-Codes\",\n \"Matrix-Codes\",\n \"MaxiCode\",\n \"MicroQRCode\",\n \"None\",\n \"PDF417\",\n \"QRCode\",\n \"rMQRCode\",\n \"UPC-A\",\n \"UPC-E\"\n];\nfunction Fo(r) {\n return r.join(\"|\");\n}\nfunction Uo(r) {\n const o = _r(r);\n let i = 0, c = $r.length - 1;\n for (; i <= c; ) {\n const l = Math.floor((i + c) / 2), h = $r[l], v = _r(h);\n if (v === o)\n return h;\n v < o ? i = l + 1 : c = l - 1;\n }\n return \"None\";\n}\nfunction _r(r) {\n return r.toLowerCase().replace(/_-\\[\\]/g, \"\");\n}\nfunction Wo(r, o) {\n return r.Binarizer[o];\n}\nfunction jo(r, o) {\n return r.CharacterSet[o];\n}\nconst Lo = [\n \"Text\",\n \"Binary\",\n \"Mixed\",\n \"GS1\",\n \"ISO15434\",\n \"UnknownECI\"\n];\nfunction Ho(r) {\n return Lo[r.value];\n}\nfunction Bo(r, o) {\n return r.EanAddOnSymbol[o];\n}\nfunction Vo(r, o) {\n return r.TextMode[o];\n}\nconst Ee = {\n formats: [],\n tryHarder: !0,\n tryRotate: !0,\n tryInvert: !0,\n tryDownscale: !0,\n binarizer: \"LocalAverage\",\n isPure: !1,\n downscaleFactor: 3,\n downscaleThreshold: 500,\n minLineCount: 2,\n maxNumberOfSymbols: 255,\n tryCode39ExtendedMode: !1,\n validateCode39CheckSum: !1,\n validateITFCheckSum: !1,\n returnCodabarStartEnd: !1,\n returnErrors: !1,\n eanAddOnSymbol: \"Read\",\n textMode: \"Plain\",\n characterSet: \"Unknown\"\n};\nfunction Hr(r, o) {\n return {\n ...o,\n formats: Fo(o.formats),\n binarizer: Wo(r, o.binarizer),\n eanAddOnSymbol: Bo(\n r,\n o.eanAddOnSymbol\n ),\n textMode: Vo(r, o.textMode),\n characterSet: jo(\n r,\n o.characterSet\n )\n };\n}\nfunction Br(r) {\n return {\n ...r,\n format: Uo(r.format),\n eccLevel: r.eccLevel,\n contentType: Ho(r.contentType)\n };\n}\nconst qo = {\n locateFile: (r, o) => {\n const i = r.match(/_(.+?)\\.wasm$/);\n return i ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}` : o + r;\n }\n};\nlet Wt = /* @__PURE__ */ new WeakMap();\nfunction Bt(r, o) {\n var i;\n const c = Wt.get(r);\n if (c != null && c.modulePromise && o === void 0)\n return c.modulePromise;\n const l = (i = c == null ? void 0 : c.moduleOverrides) != null ? i : qo, h = r({\n ...l\n });\n return Wt.set(r, {\n moduleOverrides: l,\n modulePromise: h\n }), h;\n}\nfunction No(r, o) {\n Wt.set(r, {\n moduleOverrides: o\n });\n}\nasync function zo(r, o, i = Ee) {\n const c = {\n ...Ee,\n ...i\n }, l = await Bt(r), { size: h } = o, v = new Uint8Array(await o.arrayBuffer()), g = l._malloc(h);\n l.HEAPU8.set(v, g);\n const b = l.readBarcodesFromImage(\n g,\n h,\n Hr(l, c)\n );\n l._free(g);\n const p = [];\n for (let C = 0; C < b.size(); ++C)\n p.push(\n Br(b.get(C))\n );\n return p;\n}\nasync function Go(r, o, i = Ee) {\n const c = {\n ...Ee,\n ...i\n }, l = await Bt(r), {\n data: h,\n width: v,\n height: g,\n data: { byteLength: b }\n } = o, p = l._malloc(b);\n l.HEAPU8.set(h, p);\n const C = l.readBarcodesFromPixmap(\n p,\n v,\n g,\n Hr(l, c)\n );\n l._free(p);\n const S = [];\n for (let $ = 0; $ < C.size(); ++$)\n S.push(\n Br(C.get($))\n );\n return S;\n}\n({\n ...Ee,\n formats: [...Ee.formats]\n});\nvar lt = (() => {\n var r = typeof document < \"u\" && document.currentScript ? document.currentScript.src : void 0;\n return function(o = {}) {\n var i = o, c, l;\n i.ready = new Promise((e, t) => {\n c = e, l = t;\n });\n var h = Object.assign({}, i), v = \"./this.program\", g = typeof window == \"object\", b = typeof importScripts == \"function\";\n typeof process == \"object\" && typeof process.versions == \"object\" && process.versions.node;\n var p = \"\";\n function C(e) {\n return i.locateFile ? i.locateFile(e, p) : p + e;\n }\n var S;\n (g || b) && (b ? p = self.location.href : typeof document < \"u\" && document.currentScript && (p = document.currentScript.src), r && (p = r), p.indexOf(\"blob:\") !== 0 ? p = p.substr(0, p.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1) : p = \"\", b && (S = (e) => {\n var t = new XMLHttpRequest();\n return t.open(\"GET\", e, !1), t.responseType = \"arraybuffer\", t.send(null), new Uint8Array(t.response);\n })), i.print || console.log.bind(console);\n var $ = i.printErr || console.error.bind(console);\n Object.assign(i, h), h = null, i.arguments && i.arguments, i.thisProgram && (v = i.thisProgram), i.quit && i.quit;\n var F;\n i.wasmBinary && (F = i.wasmBinary), typeof WebAssembly != \"object\" && Z(\"no native wasm support detected\");\n var U, W = !1, R, A, X, k, D, M, le, oe;\n function be() {\n var e = U.buffer;\n i.HEAP8 = R = new Int8Array(e), i.HEAP16 = X = new Int16Array(e), i.HEAPU8 = A = new Uint8Array(e), i.HEAPU16 = k = new Uint16Array(e), i.HEAP32 = D = new Int32Array(e), i.HEAPU32 = M = new Uint32Array(e), i.HEAPF32 = le = new Float32Array(e), i.HEAPF64 = oe = new Float64Array(e);\n }\n var Ce = [], Oe = [], De = [];\n function Le() {\n if (i.preRun)\n for (typeof i.preRun == \"function\" && (i.preRun = [i.preRun]); i.preRun.length; )\n ht(i.preRun.shift());\n gt(Ce);\n }\n function dt() {\n gt(Oe);\n }\n function ft() {\n if (i.postRun)\n for (typeof i.postRun == \"function\" && (i.postRun = [i.postRun]); i.postRun.length; )\n Me(i.postRun.shift());\n gt(De);\n }\n function ht(e) {\n Ce.unshift(e);\n }\n function pt(e) {\n Oe.unshift(e);\n }\n function Me(e) {\n De.unshift(e);\n }\n var te = 0, ve = null;\n function mt(e) {\n var t;\n te++, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te);\n }\n function de(e) {\n var t;\n if (te--, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te), te == 0 && ve) {\n var n = ve;\n ve = null, n();\n }\n }\n function Z(e) {\n var t;\n (t = i.onAbort) === null || t === void 0 || t.call(i, e), e = \"Aborted(\" + e + \")\", $(e), W = !0, e += \". Build with -sASSERTIONS for more info.\";\n var n = new WebAssembly.RuntimeError(e);\n throw l(n), n;\n }\n var vt = \"data:application/octet-stream;base64,\", He = (e) => e.startsWith(vt), fe;\n fe = \"zxing_reader.wasm\", He(fe) || (fe = C(fe));\n function Be(e) {\n if (e == fe && F)\n return new Uint8Array(F);\n if (S)\n return S(e);\n throw \"both async and sync fetching of the wasm failed\";\n }\n function yt(e) {\n return !F && (g || b) && typeof fetch == \"function\" ? fetch(e, {\n credentials: \"same-origin\"\n }).then((t) => {\n if (!t.ok)\n throw \"failed to load wasm binary file at '\" + e + \"'\";\n return t.arrayBuffer();\n }).catch(() => Be(e)) : Promise.resolve().then(() => Be(e));\n }\n function Ve(e, t, n) {\n return yt(e).then((a) => WebAssembly.instantiate(a, t)).then((a) => a).then(n, (a) => {\n $(`failed to asynchronously prepare wasm: ${a}`), Z(a);\n });\n }\n function an(e, t, n, a) {\n return !e && typeof WebAssembly.instantiateStreaming == \"function\" && !He(t) && typeof fetch == \"function\" ? fetch(t, {\n credentials: \"same-origin\"\n }).then((s) => {\n var u = WebAssembly.instantiateStreaming(s, n);\n return u.then(a, function(d) {\n return $(`wasm streaming compile failed: ${d}`), $(\"falling back to ArrayBuffer instantiation\"), Ve(t, n, a);\n });\n }) : Ve(t, n, a);\n }\n function on() {\n var e = {\n a: Ga\n };\n function t(a, s) {\n return z = a.exports, U = z.ia, be(), Kt = z.ma, pt(z.ja), de(), z;\n }\n mt();\n function n(a) {\n t(a.instance);\n }\n if (i.instantiateWasm)\n try {\n return i.instantiateWasm(e, t);\n } catch (a) {\n $(`Module.instantiateWasm callback failed with error: ${a}`), l(a);\n }\n return an(F, fe, e, n).catch(l), {};\n }\n var gt = (e) => {\n for (; e.length > 0; )\n e.shift()(i);\n };\n i.noExitRuntime;\n var qe = [], Ne = 0, sn = (e) => {\n var t = new wt(e);\n return t.get_caught() || (t.set_caught(!0), Ne--), t.set_rethrown(!1), qe.push(t), hr(t.excPtr), t.get_exception_ptr();\n }, ie = 0, cn = () => {\n j(0, 0);\n var e = qe.pop();\n fr(e.excPtr), ie = 0;\n };\n function wt(e) {\n this.excPtr = e, this.ptr = e - 24, this.set_type = function(t) {\n M[this.ptr + 4 >> 2] = t;\n }, this.get_type = function() {\n return M[this.ptr + 4 >> 2];\n }, this.set_destructor = function(t) {\n M[this.ptr + 8 >> 2] = t;\n }, this.get_destructor = function() {\n return M[this.ptr + 8 >> 2];\n }, this.set_caught = function(t) {\n t = t ? 1 : 0, R[this.ptr + 12 >> 0] = t;\n }, this.get_caught = function() {\n return R[this.ptr + 12 >> 0] != 0;\n }, this.set_rethrown = function(t) {\n t = t ? 1 : 0, R[this.ptr + 13 >> 0] = t;\n }, this.get_rethrown = function() {\n return R[this.ptr + 13 >> 0] != 0;\n }, this.init = function(t, n) {\n this.set_adjusted_ptr(0), this.set_type(t), this.set_destructor(n);\n }, this.set_adjusted_ptr = function(t) {\n M[this.ptr + 16 >> 2] = t;\n }, this.get_adjusted_ptr = function() {\n return M[this.ptr + 16 >> 2];\n }, this.get_exception_ptr = function() {\n var t = mr(this.get_type());\n if (t)\n return M[this.excPtr >> 2];\n var n = this.get_adjusted_ptr();\n return n !== 0 ? n : this.excPtr;\n };\n }\n var un = (e) => {\n throw ie || (ie = e), ie;\n }, bt = (e) => {\n var t = ie;\n if (!t)\n return Ue(0), 0;\n var n = new wt(t);\n n.set_adjusted_ptr(t);\n var a = n.get_type();\n if (!a)\n return Ue(0), t;\n for (var s in e) {\n var u = e[s];\n if (u === 0 || u === a)\n break;\n var d = n.ptr + 16;\n if (pr(u, a, d))\n return Ue(u), t;\n }\n return Ue(a), t;\n }, ln = () => bt([]), dn = (e) => bt([e]), fn = (e, t) => bt([e, t]), hn = () => {\n var e = qe.pop();\n e || Z(\"no exception to throw\");\n var t = e.excPtr;\n throw e.get_rethrown() || (qe.push(e), e.set_rethrown(!0), e.set_caught(!1), Ne++), ie = t, ie;\n }, pn = (e, t, n) => {\n var a = new wt(e);\n throw a.init(t, n), ie = e, Ne++, ie;\n }, mn = () => Ne, ze = {}, Ct = (e) => {\n for (; e.length; ) {\n var t = e.pop(), n = e.pop();\n n(t);\n }\n };\n function $t(e) {\n return this.fromWireType(D[e >> 2]);\n }\n var $e = {}, ye = {}, Ge = {}, qt, Ye = (e) => {\n throw new qt(e);\n }, ge = (e, t, n) => {\n e.forEach(function(f) {\n Ge[f] = t;\n });\n function a(f) {\n var m = n(f);\n m.length !== e.length && Ye(\"Mismatched type converter count\");\n for (var w = 0; w < e.length; ++w)\n re(e[w], m[w]);\n }\n var s = new Array(t.length), u = [], d = 0;\n t.forEach((f, m) => {\n ye.hasOwnProperty(f) ? s[m] = ye[f] : (u.push(f), $e.hasOwnProperty(f) || ($e[f] = []), $e[f].push(() => {\n s[m] = ye[f], ++d, d === u.length && a(s);\n }));\n }), u.length === 0 && a(s);\n }, vn = (e) => {\n var t = ze[e];\n delete ze[e];\n var n = t.rawConstructor, a = t.rawDestructor, s = t.fields, u = s.map((d) => d.getterReturnType).concat(s.map((d) => d.setterArgumentType));\n ge([e], u, (d) => {\n var f = {};\n return s.forEach((m, w) => {\n var _ = m.fieldName, T = d[w], E = m.getter, O = m.getterContext, L = d[w + s.length], q = m.setter, I = m.setterContext;\n f[_] = {\n read: (J) => T.fromWireType(E(O, J)),\n write: (J, y) => {\n var P = [];\n q(I, J, L.toWireType(P, y)), Ct(P);\n }\n };\n }), [{\n name: t.name,\n fromWireType: (m) => {\n var w = {};\n for (var _ in f)\n w[_] = f[_].read(m);\n return a(m), w;\n },\n toWireType: (m, w) => {\n for (var _ in f)\n if (!(_ in w))\n throw new TypeError(`Missing field: \"${_}\"`);\n var T = n();\n for (_ in f)\n f[_].write(T, w[_]);\n return m !== null && m.push(a, T), T;\n },\n argPackAdvance: ne,\n readValueFromPointer: $t,\n destructorFunction: a\n }];\n });\n }, yn = (e, t, n, a, s) => {\n }, gn = () => {\n for (var e = new Array(256), t = 0; t < 256; ++t)\n e[t] = String.fromCharCode(t);\n Nt = e;\n }, Nt, Y = (e) => {\n for (var t = \"\", n = e; A[n]; )\n t += Nt[A[n++]];\n return t;\n }, _e, x = (e) => {\n throw new _e(e);\n };\n function wn(e, t) {\n let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var a = t.name;\n if (e || x(`type \"${a}\" must have a positive integer typeid pointer`), ye.hasOwnProperty(e)) {\n if (n.ignoreDuplicateRegistrations)\n return;\n x(`Cannot register type '${a}' twice`);\n }\n if (ye[e] = t, delete Ge[e], $e.hasOwnProperty(e)) {\n var s = $e[e];\n delete $e[e], s.forEach((u) => u());\n }\n }\n function re(e, t) {\n let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (!(\"argPackAdvance\" in t))\n throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n return wn(e, t, n);\n }\n var ne = 8, bn = (e, t, n, a) => {\n t = Y(t), re(e, {\n name: t,\n fromWireType: function(s) {\n return !!s;\n },\n toWireType: function(s, u) {\n return u ? n : a;\n },\n argPackAdvance: ne,\n readValueFromPointer: function(s) {\n return this.fromWireType(A[s]);\n },\n destructorFunction: null\n });\n }, Cn = (e) => ({\n count: e.count,\n deleteScheduled: e.deleteScheduled,\n preservePointerOnDelete: e.preservePointerOnDelete,\n ptr: e.ptr,\n ptrType: e.ptrType,\n smartPtr: e.smartPtr,\n smartPtrType: e.smartPtrType\n }), _t = (e) => {\n function t(n) {\n return n.$$.ptrType.registeredClass.name;\n }\n x(t(e) + \" instance already deleted\");\n }, St = !1, zt = (e) => {\n }, $n = (e) => {\n e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr);\n }, Gt = (e) => {\n e.count.value -= 1;\n var t = e.count.value === 0;\n t && $n(e);\n }, Yt = (e, t, n) => {\n if (t === n)\n return e;\n if (n.baseClass === void 0)\n return null;\n var a = Yt(e, t, n.baseClass);\n return a === null ? null : n.downcast(a);\n }, Jt = {}, _n = () => Object.keys(Re).length, Sn = () => {\n var e = [];\n for (var t in Re)\n Re.hasOwnProperty(t) && e.push(Re[t]);\n return e;\n }, Ae = [], Pt = () => {\n for (; Ae.length; ) {\n var e = Ae.pop();\n e.$$.deleteScheduled = !1, e.delete();\n }\n }, xe, Pn = (e) => {\n xe = e, Ae.length && xe && xe(Pt);\n }, Tn = () => {\n i.getInheritedInstanceCount = _n, i.getLiveInheritedInstances = Sn, i.flushPendingDeletes = Pt, i.setDelayFunction = Pn;\n }, Re = {}, En = (e, t) => {\n for (t === void 0 && x(\"ptr should not be undefined\"); e.baseClass; )\n t = e.upcast(t), e = e.baseClass;\n return t;\n }, On = (e, t) => (t = En(e, t), Re[t]), Je = (e, t) => {\n (!t.ptrType || !t.ptr) && Ye(\"makeClassHandle requires ptr and ptrType\");\n var n = !!t.smartPtrType, a = !!t.smartPtr;\n return n !== a && Ye(\"Both smartPtrType and smartPtr must be specified\"), t.count = {\n value: 1\n }, ke(Object.create(e, {\n $$: {\n value: t,\n writable: !0\n }\n }));\n };\n function Dn(e) {\n var t = this.getPointee(e);\n if (!t)\n return this.destructor(e), null;\n var n = On(this.registeredClass, t);\n if (n !== void 0) {\n if (n.$$.count.value === 0)\n return n.$$.ptr = t, n.$$.smartPtr = e, n.clone();\n var a = n.clone();\n return this.destructor(e), a;\n }\n function s() {\n return this.isSmartPointer ? Je(this.registeredClass.instancePrototype, {\n ptrType: this.pointeeType,\n ptr: t,\n smartPtrType: this,\n smartPtr: e\n }) : Je(this.registeredClass.instancePrototype, {\n ptrType: this,\n ptr: e\n });\n }\n var u = this.registeredClass.getActualType(t), d = Jt[u];\n if (!d)\n return s.call(this);\n var f;\n this.isConst ? f = d.constPointerType : f = d.pointerType;\n var m = Yt(t, this.registeredClass, f.registeredClass);\n return m === null ? s.call(this) : this.isSmartPointer ? Je(f.registeredClass.instancePrototype, {\n ptrType: f,\n ptr: m,\n smartPtrType: this,\n smartPtr: e\n }) : Je(f.registeredClass.instancePrototype, {\n ptrType: f,\n ptr: m\n });\n }\n var ke = (e) => typeof FinalizationRegistry > \"u\" ? (ke = (t) => t, e) : (St = new FinalizationRegistry((t) => {\n Gt(t.$$);\n }), ke = (t) => {\n var n = t.$$, a = !!n.smartPtr;\n if (a) {\n var s = {\n $$: n\n };\n St.register(t, s, t);\n }\n return t;\n }, zt = (t) => St.unregister(t), ke(e)), Mn = () => {\n Object.assign(Qe.prototype, {\n isAliasOf(e) {\n if (!(this instanceof Qe) || !(e instanceof Qe))\n return !1;\n var t = this.$$.ptrType.registeredClass, n = this.$$.ptr;\n e.$$ = e.$$;\n for (var a = e.$$.ptrType.registeredClass, s = e.$$.ptr; t.baseClass; )\n n = t.upcast(n), t = t.baseClass;\n for (; a.baseClass; )\n s = a.upcast(s), a = a.baseClass;\n return t === a && n === s;\n },\n clone() {\n if (this.$$.ptr || _t(this), this.$$.preservePointerOnDelete)\n return this.$$.count.value += 1, this;\n var e = ke(Object.create(Object.getPrototypeOf(this), {\n $$: {\n value: Cn(this.$$)\n }\n }));\n return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e;\n },\n delete() {\n this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x(\"Object already scheduled for deletion\"), zt(this), Gt(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0);\n },\n isDeleted() {\n return !this.$$.ptr;\n },\n deleteLater() {\n return this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x(\"Object already scheduled for deletion\"), Ae.push(this), Ae.length === 1 && xe && xe(Pt), this.$$.deleteScheduled = !0, this;\n }\n });\n };\n function Qe() {\n }\n var Ie = (e, t) => Object.defineProperty(t, \"name\", {\n value: e\n }), Qt = (e, t, n) => {\n if (e[t].overloadTable === void 0) {\n var a = e[t];\n e[t] = function() {\n return e[t].overloadTable.hasOwnProperty(arguments.length) || x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`), e[t].overloadTable[arguments.length].apply(this, arguments);\n }, e[t].overloadTable = [], e[t].overloadTable[a.argCount] = a;\n }\n }, Tt = (e, t, n) => {\n i.hasOwnProperty(e) ? ((n === void 0 || i[e].overloadTable !== void 0 && i[e].overloadTable[n] !== void 0) && x(`Cannot register public name '${e}' twice`), Qt(i, e, e), i.hasOwnProperty(n) && x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`), i[e].overloadTable[n] = t) : (i[e] = t, n !== void 0 && (i[e].numArguments = n));\n }, An = 48, xn = 57, Rn = (e) => {\n if (e === void 0)\n return \"_unknown\";\n e = e.replace(/[^a-zA-Z0-9_]/g, \"$\");\n var t = e.charCodeAt(0);\n return t >= An && t <= xn ? `_${e}` : e;\n };\n function kn(e, t, n, a, s, u, d, f) {\n this.name = e, this.constructor = t, this.instancePrototype = n, this.rawDestructor = a, this.baseClass = s, this.getActualType = u, this.upcast = d, this.downcast = f, this.pureVirtualFunctions = [];\n }\n var Et = (e, t, n) => {\n for (; t !== n; )\n t.upcast || x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`), e = t.upcast(e), t = t.baseClass;\n return e;\n };\n function In(e, t) {\n if (t === null)\n return this.isReference && x(`null is not a valid ${this.name}`), 0;\n t.$$ || x(`Cannot pass \"${xt(t)}\" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`);\n var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass);\n return a;\n }\n function Fn(e, t) {\n var n;\n if (t === null)\n return this.isReference && x(`null is not a valid ${this.name}`), this.isSmartPointer ? (n = this.rawConstructor(), e !== null && e.push(this.rawDestructor, n), n) : 0;\n (!t || !t.$$) && x(`Cannot pass \"${xt(t)}\" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`);\n var a = t.$$.ptrType.registeredClass;\n if (n = Et(t.$$.ptr, a, this.registeredClass), this.isSmartPointer)\n switch (t.$$.smartPtr === void 0 && x(\"Passing raw pointer to smart pointer is illegal\"), this.sharingPolicy) {\n case 0:\n t.$$.smartPtrType === this ? n = t.$$.smartPtr : x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`);\n break;\n case 1:\n n = t.$$.smartPtr;\n break;\n case 2:\n if (t.$$.smartPtrType === this)\n n = t.$$.smartPtr;\n else {\n var s = t.clone();\n n = this.rawShare(n, se.toHandle(() => s.delete())), e !== null && e.push(this.rawDestructor, n);\n }\n break;\n default:\n x(\"Unsupporting sharing policy\");\n }\n return n;\n }\n function Un(e, t) {\n if (t === null)\n return this.isReference && x(`null is not a valid ${this.name}`), 0;\n t.$$ || x(`Cannot pass \"${xt(t)}\" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);\n var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass);\n return a;\n }\n function Xt(e) {\n return this.fromWireType(M[e >> 2]);\n }\n var Wn = () => {\n Object.assign(Xe.prototype, {\n getPointee(e) {\n return this.rawGetPointee && (e = this.rawGetPointee(e)), e;\n },\n destructor(e) {\n var t;\n (t = this.rawDestructor) === null || t === void 0 || t.call(this, e);\n },\n argPackAdvance: ne,\n readValueFromPointer: Xt,\n deleteObject(e) {\n e !== null && e.delete();\n },\n fromWireType: Dn\n });\n };\n function Xe(e, t, n, a, s, u, d, f, m, w, _) {\n this.name = e, this.registeredClass = t, this.isReference = n, this.isConst = a, this.isSmartPointer = s, this.pointeeType = u, this.sharingPolicy = d, this.rawGetPointee = f, this.rawConstructor = m, this.rawShare = w, this.rawDestructor = _, !s && t.baseClass === void 0 ? a ? (this.toWireType = In, this.destructorFunction = null) : (this.toWireType = Un, this.destructorFunction = null) : this.toWireType = Fn;\n }\n var Zt = (e, t, n) => {\n i.hasOwnProperty(e) || Ye(\"Replacing nonexistant public symbol\"), i[e].overloadTable !== void 0 && n !== void 0 ? i[e].overloadTable[n] = t : (i[e] = t, i[e].argCount = n);\n }, jn = (e, t, n) => {\n var a = i[\"dynCall_\" + e];\n return n && n.length ? a.apply(null, [t].concat(n)) : a.call(null, t);\n }, Ze = [], Kt, H = (e) => {\n var t = Ze[e];\n return t || (e >= Ze.length && (Ze.length = e + 1), Ze[e] = t = Kt.get(e)), t;\n }, Ln = (e, t, n) => {\n if (e.includes(\"j\"))\n return jn(e, t, n);\n var a = H(t).apply(null, n);\n return a;\n }, Hn = (e, t) => {\n var n = [];\n return function() {\n return n.length = 0, Object.assign(n, arguments), Ln(e, t, n);\n };\n }, ee = (e, t) => {\n e = Y(e);\n function n() {\n return e.includes(\"j\") ? Hn(e, t) : H(t);\n }\n var a = n();\n return typeof a != \"function\" && x(`unknown function pointer with signature ${e}: ${t}`), a;\n }, Bn = (e, t) => {\n var n = Ie(t, function(a) {\n this.name = t, this.message = a;\n var s = new Error(a).stack;\n s !== void 0 && (this.stack = this.toString() + `\n` + s.replace(/^Error(:[^\\n]*)?\\n/, \"\"));\n });\n return n.prototype = Object.create(e.prototype), n.prototype.constructor = n, n.prototype.toString = function() {\n return this.message === void 0 ? this.name : `${this.name}: ${this.message}`;\n }, n;\n }, er, tr = (e) => {\n var t = dr(e), n = Y(t);\n return ce(t), n;\n }, Ke = (e, t) => {\n var n = [], a = {};\n function s(u) {\n if (!a[u] && !ye[u]) {\n if (Ge[u]) {\n Ge[u].forEach(s);\n return;\n }\n n.push(u), a[u] = !0;\n }\n }\n throw t.forEach(s), new er(`${e}: ` + n.map(tr).join([\", \"]));\n }, Vn = (e, t, n, a, s, u, d, f, m, w, _, T, E) => {\n _ = Y(_), u = ee(s, u), f && (f = ee(d, f)), w && (w = ee(m, w)), E = ee(T, E);\n var O = Rn(_);\n Tt(O, function() {\n Ke(`Cannot construct ${_} due to unbound types`, [a]);\n }), ge([e, t, n], a ? [a] : [], function(L) {\n L = L[0];\n var q, I;\n a ? (q = L.registeredClass, I = q.instancePrototype) : I = Qe.prototype;\n var J = Ie(_, function() {\n if (Object.getPrototypeOf(this) !== y)\n throw new _e(\"Use 'new' to construct \" + _);\n if (P.constructor_body === void 0)\n throw new _e(_ + \" has no accessible constructor\");\n var wr = P.constructor_body[arguments.length];\n if (wr === void 0)\n throw new _e(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`);\n return wr.apply(this, arguments);\n }), y = Object.create(I, {\n constructor: {\n value: J\n }\n });\n J.prototype = y;\n var P = new kn(_, J, y, E, q, u, f, w);\n if (P.baseClass) {\n var N, G;\n (G = (N = P.baseClass).__derivedClasses) !== null && G !== void 0 || (N.__derivedClasses = []), P.baseClass.__derivedClasses.push(P);\n }\n var Se = new Xe(_, P, !0, !1, !1), rt = new Xe(_ + \"*\", P, !1, !1, !1), gr = new Xe(_ + \" const*\", P, !1, !0, !1);\n return Jt[e] = {\n pointerType: rt,\n constPointerType: gr\n }, Zt(O, J), [Se, rt, gr];\n });\n }, Ot = (e, t) => {\n for (var n = [], a = 0; a < e; a++)\n n.push(M[t + a * 4 >> 2]);\n return n;\n };\n function qn(e) {\n for (var t = 1; t < e.length; ++t)\n if (e[t] !== null && e[t].destructorFunction === void 0)\n return !0;\n return !1;\n }\n function Dt(e, t, n, a, s, u) {\n var d = t.length;\n d < 2 && x(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n var f = t[1] !== null && n !== null, m = qn(t), w = t[0].name !== \"void\", _ = d - 2, T = new Array(_), E = [], O = [], L = function() {\n arguments.length !== _ && x(`function ${e} called with ${arguments.length} arguments, expected ${_}`), O.length = 0;\n var q;\n E.length = f ? 2 : 1, E[0] = s, f && (q = t[1].toWireType(O, this), E[1] = q);\n for (var I = 0; I < _; ++I)\n T[I] = t[I + 2].toWireType(O, arguments[I]), E.push(T[I]);\n var J = a.apply(null, E);\n function y(P) {\n if (m)\n Ct(O);\n else\n for (var N = f ? 1 : 2; N < t.length; N++) {\n var G = N === 1 ? q : T[N - 2];\n t[N].destructorFunction !== null && t[N].destructorFunction(G);\n }\n if (w)\n return t[0].fromWireType(P);\n }\n return y(J);\n };\n return Ie(e, L);\n }\n var Nn = (e, t, n, a, s, u) => {\n var d = Ot(t, n);\n s = ee(a, s), ge([], [e], function(f) {\n f = f[0];\n var m = `constructor ${f.name}`;\n if (f.registeredClass.constructor_body === void 0 && (f.registeredClass.constructor_body = []), f.registeredClass.constructor_body[t - 1] !== void 0)\n throw new _e(`Cannot register multiple constructors with identical number of parameters (${t - 1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);\n return f.registeredClass.constructor_body[t - 1] = () => {\n Ke(`Cannot construct ${f.name} due to unbound types`, d);\n }, ge([], d, (w) => (w.splice(1, 0, null), f.registeredClass.constructor_body[t - 1] = Dt(m, w, null, s, u), [])), [];\n });\n }, rr = (e) => {\n e = e.trim();\n const t = e.indexOf(\"(\");\n return t !== -1 ? e.substr(0, t) : e;\n }, zn = (e, t, n, a, s, u, d, f, m) => {\n var w = Ot(n, a);\n t = Y(t), t = rr(t), u = ee(s, u), ge([], [e], function(_) {\n _ = _[0];\n var T = `${_.name}.${t}`;\n t.startsWith(\"@@\") && (t = Symbol[t.substring(2)]), f && _.registeredClass.pureVirtualFunctions.push(t);\n function E() {\n Ke(`Cannot call ${T} due to unbound types`, w);\n }\n var O = _.registeredClass.instancePrototype, L = O[t];\n return L === void 0 || L.overloadTable === void 0 && L.className !== _.name && L.argCount === n - 2 ? (E.argCount = n - 2, E.className = _.name, O[t] = E) : (Qt(O, t, T), O[t].overloadTable[n - 2] = E), ge([], w, function(q) {\n var I = Dt(T, q, _, u, d);\n return O[t].overloadTable === void 0 ? (I.argCount = n - 2, O[t] = I) : O[t].overloadTable[n - 2] = I, [];\n }), [];\n });\n };\n function Gn() {\n Object.assign(nr.prototype, {\n get(e) {\n return this.allocated[e];\n },\n has(e) {\n return this.allocated[e] !== void 0;\n },\n allocate(e) {\n var t = this.freelist.pop() || this.allocated.length;\n return this.allocated[t] = e, t;\n },\n free(e) {\n this.allocated[e] = void 0, this.freelist.push(e);\n }\n });\n }\n function nr() {\n this.allocated = [void 0], this.freelist = [];\n }\n var K = new nr(), Mt = (e) => {\n e >= K.reserved && --K.get(e).refcount === 0 && K.free(e);\n }, Yn = () => {\n for (var e = 0, t = K.reserved; t < K.allocated.length; ++t)\n K.allocated[t] !== void 0 && ++e;\n return e;\n }, Jn = () => {\n K.allocated.push({\n value: void 0\n }, {\n value: null\n }, {\n value: !0\n }, {\n value: !1\n }), K.reserved = K.allocated.length, i.count_emval_handles = Yn;\n }, se = {\n toValue: (e) => (e || x(\"Cannot use deleted val. handle = \" + e), K.get(e).value),\n toHandle: (e) => {\n switch (e) {\n case void 0:\n return 1;\n case null:\n return 2;\n case !0:\n return 3;\n case !1:\n return 4;\n default:\n return K.allocate({\n refcount: 1,\n value: e\n });\n }\n }\n }, Qn = (e, t) => {\n t = Y(t), re(e, {\n name: t,\n fromWireType: (n) => {\n var a = se.toValue(n);\n return Mt(n), a;\n },\n toWireType: (n, a) => se.toHandle(a),\n argPackAdvance: ne,\n readValueFromPointer: $t,\n destructorFunction: null\n });\n }, Xn = (e, t, n) => {\n switch (t) {\n case 1:\n return n ? function(a) {\n return this.fromWireType(R[a >> 0]);\n } : function(a) {\n return this.fromWireType(A[a >> 0]);\n };\n case 2:\n return n ? function(a) {\n return this.fromWireType(X[a >> 1]);\n } : function(a) {\n return this.fromWireType(k[a >> 1]);\n };\n case 4:\n return n ? function(a) {\n return this.fromWireType(D[a >> 2]);\n } : function(a) {\n return this.fromWireType(M[a >> 2]);\n };\n default:\n throw new TypeError(`invalid integer width (${t}): ${e}`);\n }\n }, Zn = (e, t, n, a) => {\n t = Y(t);\n function s() {\n }\n s.values = {}, re(e, {\n name: t,\n constructor: s,\n fromWireType: function(u) {\n return this.constructor.values[u];\n },\n toWireType: (u, d) => d.value,\n argPackAdvance: ne,\n readValueFromPointer: Xn(t, n, a),\n destructorFunction: null\n }), Tt(t, s);\n }, At = (e, t) => {\n var n = ye[e];\n return n === void 0 && x(t + \" has unknown type \" + tr(e)), n;\n }, Kn = (e, t, n) => {\n var a = At(e, \"enum\");\n t = Y(t);\n var s = a.constructor, u = Object.create(a.constructor.prototype, {\n value: {\n value: n\n },\n constructor: {\n value: Ie(`${a.name}_${t}`, function() {\n })\n }\n });\n s.values[n] = u, s[t] = u;\n }, xt = (e) => {\n if (e === null)\n return \"null\";\n var t = typeof e;\n return t === \"object\" || t === \"array\" || t === \"function\" ? e.toString() : \"\" + e;\n }, ea = (e, t) => {\n switch (t) {\n case 4:\n return function(n) {\n return this.fromWireType(le[n >> 2]);\n };\n case 8:\n return function(n) {\n return this.fromWireType(oe[n >> 3]);\n };\n default:\n throw new TypeError(`invalid float width (${t}): ${e}`);\n }\n }, ta = (e, t, n) => {\n t = Y(t), re(e, {\n name: t,\n fromWireType: (a) => a,\n toWireType: (a, s) => s,\n argPackAdvance: ne,\n readValueFromPointer: ea(t, n),\n destructorFunction: null\n });\n }, ra = (e, t, n, a, s, u, d) => {\n var f = Ot(t, n);\n e = Y(e), e = rr(e), s = ee(a, s), Tt(e, function() {\n Ke(`Cannot call ${e} due to unbound types`, f);\n }, t - 1), ge([], f, function(m) {\n var w = [m[0], null].concat(m.slice(1));\n return Zt(e, Dt(e, w, null, s, u), t - 1), [];\n });\n }, na = (e, t, n) => {\n switch (t) {\n case 1:\n return n ? (a) => R[a >> 0] : (a) => A[a >> 0];\n case 2:\n return n ? (a) => X[a >> 1] : (a) => k[a >> 1];\n case 4:\n return n ? (a) => D[a >> 2] : (a) => M[a >> 2];\n default:\n throw new TypeError(`invalid integer width (${t}): ${e}`);\n }\n }, aa = (e, t, n, a, s) => {\n t = Y(t);\n var u = (_) => _;\n if (a === 0) {\n var d = 32 - 8 * n;\n u = (_) => _ << d >>> d;\n }\n var f = t.includes(\"unsigned\"), m = (_, T) => {\n }, w;\n f ? w = function(_, T) {\n return m(T, this.name), T >>> 0;\n } : w = function(_, T) {\n return m(T, this.name), T;\n }, re(e, {\n name: t,\n fromWireType: u,\n toWireType: w,\n argPackAdvance: ne,\n readValueFromPointer: na(t, n, a !== 0),\n destructorFunction: null\n });\n }, oa = (e, t, n) => {\n var a = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], s = a[t];\n function u(d) {\n var f = M[d >> 2], m = M[d + 4 >> 2];\n return new s(R.buffer, m, f);\n }\n n = Y(n), re(e, {\n name: n,\n fromWireType: u,\n argPackAdvance: ne,\n readValueFromPointer: u\n }, {\n ignoreDuplicateRegistrations: !0\n });\n }, ar = (e, t, n, a) => {\n if (!(a > 0))\n return 0;\n for (var s = n, u = n + a - 1, d = 0; d < e.length; ++d) {\n var f = e.charCodeAt(d);\n if (f >= 55296 && f <= 57343) {\n var m = e.charCodeAt(++d);\n f = 65536 + ((f & 1023) << 10) | m & 1023;\n }\n if (f <= 127) {\n if (n >= u)\n break;\n t[n++] = f;\n } else if (f <= 2047) {\n if (n + 1 >= u)\n break;\n t[n++] = 192 | f >> 6, t[n++] = 128 | f & 63;\n } else if (f <= 65535) {\n if (n + 2 >= u)\n break;\n t[n++] = 224 | f >> 12, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63;\n } else {\n if (n + 3 >= u)\n break;\n t[n++] = 240 | f >> 18, t[n++] = 128 | f >> 12 & 63, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63;\n }\n }\n return t[n] = 0, n - s;\n }, ia = (e, t, n) => ar(e, A, t, n), or = (e) => {\n for (var t = 0, n = 0; n < e.length; ++n) {\n var a = e.charCodeAt(n);\n a <= 127 ? t++ : a <= 2047 ? t += 2 : a >= 55296 && a <= 57343 ? (t += 4, ++n) : t += 3;\n }\n return t;\n }, ir = typeof TextDecoder < \"u\" ? new TextDecoder(\"utf8\") : void 0, sa = (e, t, n) => {\n for (var a = t + n, s = t; e[s] && !(s >= a); )\n ++s;\n if (s - t > 16 && e.buffer && ir)\n return ir.decode(e.subarray(t, s));\n for (var u = \"\"; t < s; ) {\n var d = e[t++];\n if (!(d & 128)) {\n u += String.fromCharCode(d);\n continue;\n }\n var f = e[t++] & 63;\n if ((d & 224) == 192) {\n u += String.fromCharCode((d & 31) << 6 | f);\n continue;\n }\n var m = e[t++] & 63;\n if ((d & 240) == 224 ? d = (d & 15) << 12 | f << 6 | m : d = (d & 7) << 18 | f << 12 | m << 6 | e[t++] & 63, d < 65536)\n u += String.fromCharCode(d);\n else {\n var w = d - 65536;\n u += String.fromCharCode(55296 | w >> 10, 56320 | w & 1023);\n }\n }\n return u;\n }, Rt = (e, t) => e ? sa(A, e, t) : \"\", ca = (e, t) => {\n t = Y(t);\n var n = t === \"std::string\";\n re(e, {\n name: t,\n fromWireType(a) {\n var s = M[a >> 2], u = a + 4, d;\n if (n)\n for (var f = u, m = 0; m <= s; ++m) {\n var w = u + m;\n if (m == s || A[w] == 0) {\n var _ = w - f, T = Rt(f, _);\n d === void 0 ? d = T : (d += \"\\0\", d += T), f = w + 1;\n }\n }\n else {\n for (var E = new Array(s), m = 0; m < s; ++m)\n E[m] = String.fromCharCode(A[u + m]);\n d = E.join(\"\");\n }\n return ce(a), d;\n },\n toWireType(a, s) {\n s instanceof ArrayBuffer && (s = new Uint8Array(s));\n var u, d = typeof s == \"string\";\n d || s instanceof Uint8Array || s instanceof Uint8ClampedArray || s instanceof Int8Array || x(\"Cannot pass non-string to std::string\"), n && d ? u = or(s) : u = s.length;\n var f = Ft(4 + u + 1), m = f + 4;\n if (M[f >> 2] = u, n && d)\n ia(s, m, u + 1);\n else if (d)\n for (var w = 0; w < u; ++w) {\n var _ = s.charCodeAt(w);\n _ > 255 && (ce(m), x(\"String has UTF-16 code units that do not fit in 8 bits\")), A[m + w] = _;\n }\n else\n for (var w = 0; w < u; ++w)\n A[m + w] = s[w];\n return a !== null && a.push(ce, f), f;\n },\n argPackAdvance: ne,\n readValueFromPointer: Xt,\n destructorFunction(a) {\n ce(a);\n }\n });\n }, sr = typeof TextDecoder < \"u\" ? new TextDecoder(\"utf-16le\") : void 0, ua = (e, t) => {\n for (var n = e, a = n >> 1, s = a + t / 2; !(a >= s) && k[a]; )\n ++a;\n if (n = a << 1, n - e > 32 && sr)\n return sr.decode(A.subarray(e, n));\n for (var u = \"\", d = 0; !(d >= t / 2); ++d) {\n var f = X[e + d * 2 >> 1];\n if (f == 0)\n break;\n u += String.fromCharCode(f);\n }\n return u;\n }, la = (e, t, n) => {\n var a;\n if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 2)\n return 0;\n n -= 2;\n for (var s = t, u = n < e.length * 2 ? n / 2 : e.length, d = 0; d < u; ++d) {\n var f = e.charCodeAt(d);\n X[t >> 1] = f, t += 2;\n }\n return X[t >> 1] = 0, t - s;\n }, da = (e) => e.length * 2, fa = (e, t) => {\n for (var n = 0, a = \"\"; !(n >= t / 4); ) {\n var s = D[e + n * 4 >> 2];\n if (s == 0)\n break;\n if (++n, s >= 65536) {\n var u = s - 65536;\n a += String.fromCharCode(55296 | u >> 10, 56320 | u & 1023);\n } else\n a += String.fromCharCode(s);\n }\n return a;\n }, ha = (e, t, n) => {\n var a;\n if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 4)\n return 0;\n for (var s = t, u = s + n - 4, d = 0; d < e.length; ++d) {\n var f = e.charCodeAt(d);\n if (f >= 55296 && f <= 57343) {\n var m = e.charCodeAt(++d);\n f = 65536 + ((f & 1023) << 10) | m & 1023;\n }\n if (D[t >> 2] = f, t += 4, t + 4 > u)\n break;\n }\n return D[t >> 2] = 0, t - s;\n }, pa = (e) => {\n for (var t = 0, n = 0; n < e.length; ++n) {\n var a = e.charCodeAt(n);\n a >= 55296 && a <= 57343 && ++n, t += 4;\n }\n return t;\n }, ma = (e, t, n) => {\n n = Y(n);\n var a, s, u, d, f;\n t === 2 ? (a = ua, s = la, d = da, u = () => k, f = 1) : t === 4 && (a = fa, s = ha, d = pa, u = () => M, f = 2), re(e, {\n name: n,\n fromWireType: (m) => {\n for (var w = M[m >> 2], _ = u(), T, E = m + 4, O = 0; O <= w; ++O) {\n var L = m + 4 + O * t;\n if (O == w || _[L >> f] == 0) {\n var q = L - E, I = a(E, q);\n T === void 0 ? T = I : (T += \"\\0\", T += I), E = L + t;\n }\n }\n return ce(m), T;\n },\n toWireType: (m, w) => {\n typeof w != \"string\" && x(`Cannot pass non-string to C++ string type ${n}`);\n var _ = d(w), T = Ft(4 + _ + t);\n return M[T >> 2] = _ >> f, s(w, T + 4, _ + t), m !== null && m.push(ce, T), T;\n },\n argPackAdvance: ne,\n readValueFromPointer: $t,\n destructorFunction(m) {\n ce(m);\n }\n });\n }, va = (e, t, n, a, s, u) => {\n ze[e] = {\n name: Y(t),\n rawConstructor: ee(n, a),\n rawDestructor: ee(s, u),\n fields: []\n };\n }, ya = (e, t, n, a, s, u, d, f, m, w) => {\n ze[e].fields.push({\n fieldName: Y(t),\n getterReturnType: n,\n getter: ee(a, s),\n getterContext: u,\n setterArgumentType: d,\n setter: ee(f, m),\n setterContext: w\n });\n }, ga = (e, t) => {\n t = Y(t), re(e, {\n isVoid: !0,\n name: t,\n argPackAdvance: 0,\n fromWireType: () => {\n },\n toWireType: (n, a) => {\n }\n });\n }, kt = [], wa = (e, t, n, a) => (e = kt[e], t = se.toValue(t), e(null, t, n, a)), ba = {}, Ca = (e) => {\n var t = ba[e];\n return t === void 0 ? Y(e) : t;\n }, cr = () => {\n if (typeof globalThis == \"object\")\n return globalThis;\n function e(t) {\n t.$$$embind_global$$$ = t;\n var n = typeof $$$embind_global$$$ == \"object\" && t.$$$embind_global$$$ == t;\n return n || delete t.$$$embind_global$$$, n;\n }\n if (typeof $$$embind_global$$$ == \"object\" || (typeof global == \"object\" && e(global) ? $$$embind_global$$$ = global : typeof self == \"object\" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == \"object\"))\n return $$$embind_global$$$;\n throw Error(\"unable to get global object.\");\n }, $a = (e) => e === 0 ? se.toHandle(cr()) : (e = Ca(e), se.toHandle(cr()[e])), _a = (e) => {\n var t = kt.length;\n return kt.push(e), t;\n }, Sa = (e, t) => {\n for (var n = new Array(e), a = 0; a < e; ++a)\n n[a] = At(M[t + a * 4 >> 2], \"parameter \" + a);\n return n;\n }, Pa = Reflect.construct, Ta = (e, t, n) => {\n var a = [], s = e.toWireType(a, n);\n return a.length && (M[t >> 2] = se.toHandle(a)), s;\n }, Ea = (e, t, n) => {\n var a = Sa(e, t), s = a.shift();\n e--;\n var u = new Array(e), d = (m, w, _, T) => {\n for (var E = 0, O = 0; O < e; ++O)\n u[O] = a[O].readValueFromPointer(T + E), E += a[O].argPackAdvance;\n for (var L = n === 1 ? Pa(w, u) : w.apply(m, u), O = 0; O < e; ++O) {\n var q, I;\n (q = (I = a[O]).deleteObject) === null || q === void 0 || q.call(I, u[O]);\n }\n return Ta(s, _, L);\n }, f = `methodCaller<(${a.map((m) => m.name).join(\", \")}) => ${s.name}>`;\n return _a(Ie(f, d));\n }, Oa = (e) => {\n e > 4 && (K.get(e).refcount += 1);\n }, Da = (e) => {\n var t = se.toValue(e);\n Ct(t), Mt(e);\n }, Ma = (e, t) => {\n e = At(e, \"_emval_take_value\");\n var n = e.readValueFromPointer(t);\n return se.toHandle(n);\n }, Aa = () => {\n Z(\"\");\n }, xa = (e, t, n) => A.copyWithin(e, t, t + n), Ra = () => 2147483648, ka = (e) => {\n var t = U.buffer, n = (e - t.byteLength + 65535) / 65536;\n try {\n return U.grow(n), be(), 1;\n } catch (a) {\n }\n }, Ia = (e) => {\n var t = A.length;\n e >>>= 0;\n var n = Ra();\n if (e > n)\n return !1;\n for (var a = (m, w) => m + (w - m % w) % w, s = 1; s <= 4; s *= 2) {\n var u = t * (1 + 0.2 / s);\n u = Math.min(u, e + 100663296);\n var d = Math.min(n, a(Math.max(e, u), 65536)), f = ka(d);\n if (f)\n return !0;\n }\n return !1;\n }, It = {}, Fa = () => v || \"./this.program\", Fe = () => {\n if (!Fe.strings) {\n var e = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\", t = {\n USER: \"web_user\",\n LOGNAME: \"web_user\",\n PATH: \"/\",\n PWD: \"/\",\n HOME: \"/home/web_user\",\n LANG: e,\n _: Fa()\n };\n for (var n in It)\n It[n] === void 0 ? delete t[n] : t[n] = It[n];\n var a = [];\n for (var n in t)\n a.push(`${n}=${t[n]}`);\n Fe.strings = a;\n }\n return Fe.strings;\n }, Ua = (e, t) => {\n for (var n = 0; n < e.length; ++n)\n R[t++ >> 0] = e.charCodeAt(n);\n R[t >> 0] = 0;\n }, Wa = (e, t) => {\n var n = 0;\n return Fe().forEach((a, s) => {\n var u = t + n;\n M[e + s * 4 >> 2] = u, Ua(a, u), n += a.length + 1;\n }), 0;\n }, ja = (e, t) => {\n var n = Fe();\n M[e >> 2] = n.length;\n var a = 0;\n return n.forEach((s) => a += s.length + 1), M[t >> 2] = a, 0;\n }, La = (e) => e, et = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Ha = (e, t) => {\n for (var n = 0, a = 0; a <= t; n += e[a++])\n ;\n return n;\n }, ur = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], lr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Ba = (e, t) => {\n for (var n = new Date(e.getTime()); t > 0; ) {\n var a = et(n.getFullYear()), s = n.getMonth(), u = (a ? ur : lr)[s];\n if (t > u - n.getDate())\n t -= u - n.getDate() + 1, n.setDate(1), s < 11 ? n.setMonth(s + 1) : (n.setMonth(0), n.setFullYear(n.getFullYear() + 1));\n else\n return n.setDate(n.getDate() + t), n;\n }\n return n;\n };\n function Va(e, t, n) {\n var a = or(e) + 1, s = new Array(a);\n return ar(e, s, 0, s.length), s;\n }\n var qa = (e, t) => {\n R.set(e, t);\n }, Na = (e, t, n, a) => {\n var s = M[a + 40 >> 2], u = {\n tm_sec: D[a >> 2],\n tm_min: D[a + 4 >> 2],\n tm_hour: D[a + 8 >> 2],\n tm_mday: D[a + 12 >> 2],\n tm_mon: D[a + 16 >> 2],\n tm_year: D[a + 20 >> 2],\n tm_wday: D[a + 24 >> 2],\n tm_yday: D[a + 28 >> 2],\n tm_isdst: D[a + 32 >> 2],\n tm_gmtoff: D[a + 36 >> 2],\n tm_zone: s ? Rt(s) : \"\"\n }, d = Rt(n), f = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var m in f)\n d = d.replace(new RegExp(m, \"g\"), f[m]);\n var w = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], _ = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n function T(y, P, N) {\n for (var G = typeof y == \"number\" ? y.toString() : y || \"\"; G.length < P; )\n G = N[0] + G;\n return G;\n }\n function E(y, P) {\n return T(y, P, \"0\");\n }\n function O(y, P) {\n function N(Se) {\n return Se < 0 ? -1 : Se > 0 ? 1 : 0;\n }\n var G;\n return (G = N(y.getFullYear() - P.getFullYear())) === 0 && (G = N(y.getMonth() - P.getMonth())) === 0 && (G = N(y.getDate() - P.getDate())), G;\n }\n function L(y) {\n switch (y.getDay()) {\n case 0:\n return new Date(y.getFullYear() - 1, 11, 29);\n case 1:\n return y;\n case 2:\n return new Date(y.getFullYear(), 0, 3);\n case 3:\n return new Date(y.getFullYear(), 0, 2);\n case 4:\n return new Date(y.getFullYear(), 0, 1);\n case 5:\n return new Date(y.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(y.getFullYear() - 1, 11, 30);\n }\n }\n function q(y) {\n var P = Ba(new Date(y.tm_year + 1900, 0, 1), y.tm_yday), N = new Date(P.getFullYear(), 0, 4), G = new Date(P.getFullYear() + 1, 0, 4), Se = L(N), rt = L(G);\n return O(Se, P) <= 0 ? O(rt, P) <= 0 ? P.getFullYear() + 1 : P.getFullYear() : P.getFullYear() - 1;\n }\n var I = {\n \"%a\": (y) => w[y.tm_wday].substring(0, 3),\n \"%A\": (y) => w[y.tm_wday],\n \"%b\": (y) => _[y.tm_mon].substring(0, 3),\n \"%B\": (y) => _[y.tm_mon],\n \"%C\": (y) => {\n var P = y.tm_year + 1900;\n return E(P / 100 | 0, 2);\n },\n \"%d\": (y) => E(y.tm_mday, 2),\n \"%e\": (y) => T(y.tm_mday, 2, \" \"),\n \"%g\": (y) => q(y).toString().substring(2),\n \"%G\": (y) => q(y),\n \"%H\": (y) => E(y.tm_hour, 2),\n \"%I\": (y) => {\n var P = y.tm_hour;\n return P == 0 ? P = 12 : P > 12 && (P -= 12), E(P, 2);\n },\n \"%j\": (y) => E(y.tm_mday + Ha(et(y.tm_year + 1900) ? ur : lr, y.tm_mon - 1), 3),\n \"%m\": (y) => E(y.tm_mon + 1, 2),\n \"%M\": (y) => E(y.tm_min, 2),\n \"%n\": () => `\n`,\n \"%p\": (y) => y.tm_hour >= 0 && y.tm_hour < 12 ? \"AM\" : \"PM\",\n \"%S\": (y) => E(y.tm_sec, 2),\n \"%t\": () => \"\t\",\n \"%u\": (y) => y.tm_wday || 7,\n \"%U\": (y) => {\n var P = y.tm_yday + 7 - y.tm_wday;\n return E(Math.floor(P / 7), 2);\n },\n \"%V\": (y) => {\n var P = Math.floor((y.tm_yday + 7 - (y.tm_wday + 6) % 7) / 7);\n if ((y.tm_wday + 371 - y.tm_yday - 2) % 7 <= 2 && P++, P) {\n if (P == 53) {\n var N = (y.tm_wday + 371 - y.tm_yday) % 7;\n N != 4 && (N != 3 || !et(y.tm_year)) && (P = 1);\n }\n } else {\n P = 52;\n var G = (y.tm_wday + 7 - y.tm_yday - 1) % 7;\n (G == 4 || G == 5 && et(y.tm_year % 400 - 1)) && P++;\n }\n return E(P, 2);\n },\n \"%w\": (y) => y.tm_wday,\n \"%W\": (y) => {\n var P = y.tm_yday + 7 - (y.tm_wday + 6) % 7;\n return E(Math.floor(P / 7), 2);\n },\n \"%y\": (y) => (y.tm_year + 1900).toString().substring(2),\n \"%Y\": (y) => y.tm_year + 1900,\n \"%z\": (y) => {\n var P = y.tm_gmtoff, N = P >= 0;\n return P = Math.abs(P) / 60, P = P / 60 * 100 + P % 60, (N ? \"+\" : \"-\") + (\"0000\" + P).slice(-4);\n },\n \"%Z\": (y) => y.tm_zone,\n \"%%\": () => \"%\"\n };\n d = d.replace(/%%/g, \"\\0\\0\");\n for (var m in I)\n d.includes(m) && (d = d.replace(new RegExp(m, \"g\"), I[m](u)));\n d = d.replace(/\\0\\0/g, \"%\");\n var J = Va(d);\n return J.length > t ? 0 : (qa(J, e), J.length - 1);\n }, za = (e, t, n, a, s) => Na(e, t, n, a);\n qt = i.InternalError = class extends Error {\n constructor(e) {\n super(e), this.name = \"InternalError\";\n }\n }, gn(), _e = i.BindingError = class extends Error {\n constructor(e) {\n super(e), this.name = \"BindingError\";\n }\n }, Mn(), Tn(), Wn(), er = i.UnboundTypeError = Bn(Error, \"UnboundTypeError\"), Gn(), Jn();\n var Ga = {\n s: sn,\n u: cn,\n b: ln,\n g: dn,\n q: fn,\n J: hn,\n f: pn,\n V: mn,\n d: un,\n da: vn,\n Q: yn,\n _: bn,\n ca: Vn,\n ba: Nn,\n w: zn,\n Y: Qn,\n x: Zn,\n h: Kn,\n L: ta,\n M: ra,\n t: aa,\n o: oa,\n K: ca,\n C: ma,\n A: va,\n ea: ya,\n $: ga,\n R: wa,\n ha: Mt,\n fa: $a,\n Z: Ea,\n N: Oa,\n O: Da,\n aa: Ma,\n B: Aa,\n X: xa,\n W: Ia,\n T: Wa,\n U: ja,\n E: uo,\n D: Za,\n F: co,\n n: lo,\n a: Ya,\n e: eo,\n m: Xa,\n k: ro,\n H: io,\n v: ao,\n G: so,\n z: ho,\n P: mo,\n l: to,\n j: Ka,\n c: Qa,\n p: Ja,\n I: oo,\n r: fo,\n i: no,\n y: po,\n ga: La,\n S: za\n }, z = on(), ce = i._free = (e) => (ce = i._free = z.ka)(e), Ft = i._malloc = (e) => (Ft = i._malloc = z.la)(e), dr = (e) => (dr = z.na)(e), j = (e, t) => (j = z.oa)(e, t), Ue = (e) => (Ue = z.pa)(e), B = () => (B = z.qa)(), V = (e) => (V = z.ra)(e), fr = (e) => (fr = z.sa)(e), hr = (e) => (hr = z.ta)(e), pr = (e, t, n) => (pr = z.ua)(e, t, n), mr = (e) => (mr = z.va)(e);\n i.dynCall_viijii = (e, t, n, a, s, u, d) => (i.dynCall_viijii = z.wa)(e, t, n, a, s, u, d);\n var vr = i.dynCall_jiiii = (e, t, n, a, s) => (vr = i.dynCall_jiiii = z.xa)(e, t, n, a, s);\n i.dynCall_iiiiij = (e, t, n, a, s, u, d) => (i.dynCall_iiiiij = z.ya)(e, t, n, a, s, u, d), i.dynCall_iiiiijj = (e, t, n, a, s, u, d, f, m) => (i.dynCall_iiiiijj = z.za)(e, t, n, a, s, u, d, f, m), i.dynCall_iiiiiijj = (e, t, n, a, s, u, d, f, m, w) => (i.dynCall_iiiiiijj = z.Aa)(e, t, n, a, s, u, d, f, m, w);\n function Ya(e, t) {\n var n = B();\n try {\n return H(e)(t);\n } catch (a) {\n if (V(n), a !== a + 0)\n throw a;\n j(1, 0);\n }\n }\n function Ja(e, t, n, a) {\n var s = B();\n try {\n H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function Qa(e, t, n) {\n var a = B();\n try {\n H(e)(t, n);\n } catch (s) {\n if (V(a), s !== s + 0)\n throw s;\n j(1, 0);\n }\n }\n function Xa(e, t, n, a) {\n var s = B();\n try {\n return H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function Za(e, t, n, a, s) {\n var u = B();\n try {\n return H(e)(t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n function Ka(e, t) {\n var n = B();\n try {\n H(e)(t);\n } catch (a) {\n if (V(n), a !== a + 0)\n throw a;\n j(1, 0);\n }\n }\n function eo(e, t, n) {\n var a = B();\n try {\n return H(e)(t, n);\n } catch (s) {\n if (V(a), s !== s + 0)\n throw s;\n j(1, 0);\n }\n }\n function to(e) {\n var t = B();\n try {\n H(e)();\n } catch (n) {\n if (V(t), n !== n + 0)\n throw n;\n j(1, 0);\n }\n }\n function ro(e, t, n, a, s) {\n var u = B();\n try {\n return H(e)(t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n function no(e, t, n, a, s, u, d, f, m, w, _) {\n var T = B();\n try {\n H(e)(t, n, a, s, u, d, f, m, w, _);\n } catch (E) {\n if (V(T), E !== E + 0)\n throw E;\n j(1, 0);\n }\n }\n function ao(e, t, n, a, s, u, d) {\n var f = B();\n try {\n return H(e)(t, n, a, s, u, d);\n } catch (m) {\n if (V(f), m !== m + 0)\n throw m;\n j(1, 0);\n }\n }\n function oo(e, t, n, a, s) {\n var u = B();\n try {\n H(e)(t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n function io(e, t, n, a, s, u) {\n var d = B();\n try {\n return H(e)(t, n, a, s, u);\n } catch (f) {\n if (V(d), f !== f + 0)\n throw f;\n j(1, 0);\n }\n }\n function so(e, t, n, a, s, u, d, f) {\n var m = B();\n try {\n return H(e)(t, n, a, s, u, d, f);\n } catch (w) {\n if (V(m), w !== w + 0)\n throw w;\n j(1, 0);\n }\n }\n function co(e, t, n, a) {\n var s = B();\n try {\n return H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function uo(e, t, n, a) {\n var s = B();\n try {\n return H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function lo(e) {\n var t = B();\n try {\n return H(e)();\n } catch (n) {\n if (V(t), n !== n + 0)\n throw n;\n j(1, 0);\n }\n }\n function fo(e, t, n, a, s, u, d, f) {\n var m = B();\n try {\n H(e)(t, n, a, s, u, d, f);\n } catch (w) {\n if (V(m), w !== w + 0)\n throw w;\n j(1, 0);\n }\n }\n function ho(e, t, n, a, s, u, d, f, m, w, _, T) {\n var E = B();\n try {\n return H(e)(t, n, a, s, u, d, f, m, w, _, T);\n } catch (O) {\n if (V(E), O !== O + 0)\n throw O;\n j(1, 0);\n }\n }\n function po(e, t, n, a, s, u, d, f, m, w, _, T, E, O, L, q) {\n var I = B();\n try {\n H(e)(t, n, a, s, u, d, f, m, w, _, T, E, O, L, q);\n } catch (J) {\n if (V(I), J !== J + 0)\n throw J;\n j(1, 0);\n }\n }\n function mo(e, t, n, a, s) {\n var u = B();\n try {\n return vr(e, t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n var tt;\n ve = function e() {\n tt || yr(), tt || (ve = e);\n };\n function yr() {\n if (te > 0 || (Le(), te > 0))\n return;\n function e() {\n tt || (tt = !0, i.calledRun = !0, !W && (dt(), c(i), i.onRuntimeInitialized && i.onRuntimeInitialized(), ft()));\n }\n i.setStatus ? (i.setStatus(\"Running...\"), setTimeout(function() {\n setTimeout(function() {\n i.setStatus(\"\");\n }, 1), e();\n }, 1)) : e();\n }\n if (i.preInit)\n for (typeof i.preInit == \"function\" && (i.preInit = [i.preInit]); i.preInit.length > 0; )\n i.preInit.pop()();\n return yr(), o.ready;\n };\n})();\nfunction Yo(r) {\n return Bt(\n lt,\n r\n );\n}\nfunction Hi(r) {\n return No(\n lt,\n r\n );\n}\nasync function Jo(r, o) {\n return zo(\n lt,\n r,\n o\n );\n}\nasync function Qo(r, o) {\n return Go(\n lt,\n r,\n o\n );\n}\nvar je;\nclass ct extends EventTarget {\n constructor(o = {}) {\n var i;\n super(), Co(this, je, void 0);\n try {\n const c = (i = o == null ? void 0 : o.formats) == null ? void 0 : i.filter(\n (l) => l !== \"unknown\"\n );\n if ((c == null ? void 0 : c.length) === 0)\n throw new TypeError(\"Hint option provided, but is empty.\");\n c == null || c.forEach((l) => {\n if (!it.has(l))\n throw new TypeError(\n `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.`\n );\n }), $o(this, je, c != null ? c : []), Yo().then((l) => {\n this.dispatchEvent(\n new CustomEvent(\"load\", {\n detail: l\n })\n );\n }).catch((l) => {\n this.dispatchEvent(new CustomEvent(\"error\", { detail: l }));\n });\n } catch (c) {\n throw Cr(\n c,\n \"Failed to construct 'BarcodeDetector'\"\n );\n }\n }\n static async getSupportedFormats() {\n return _o.filter((o) => o !== \"unknown\");\n }\n async detect(o) {\n try {\n const i = await Mo(o);\n if (i === null)\n return [];\n let c;\n try {\n jr(i) ? c = await Jo(i, {\n tryHarder: !0,\n formats: br(this, je).map((l) => it.get(l))\n }) : c = await Qo(i, {\n tryHarder: !0,\n formats: br(this, je).map((l) => it.get(l))\n });\n } catch (l) {\n throw console.error(l), new DOMException(\n \"Barcode detection service unavailable.\",\n \"NotSupportedError\"\n );\n }\n return c.map((l) => {\n const {\n topLeft: { x: h, y: v },\n topRight: { x: g, y: b },\n bottomLeft: { x: p, y: C },\n bottomRight: { x: S, y: $ }\n } = l.position, F = Math.min(h, g, p, S), U = Math.min(v, b, C, $), W = Math.max(h, g, p, S), R = Math.max(v, b, C, $);\n return {\n boundingBox: new DOMRectReadOnly(\n F,\n U,\n W - F,\n R - U\n ),\n rawValue: l.text,\n format: So(l.format),\n cornerPoints: [\n {\n x: h,\n y: v\n },\n {\n x: g,\n y: b\n },\n {\n x: S,\n y: $\n },\n {\n x: p,\n y: C\n }\n ]\n };\n });\n } catch (i) {\n throw Cr(\n i,\n \"Failed to execute 'detect' on 'BarcodeDetector'\"\n );\n }\n }\n}\nje = /* @__PURE__ */ new WeakMap();\nconst Vt = (r, o, i = \"error\") => {\n let c, l;\n const h = new Promise(\n (v, g) => {\n c = v, l = g, r.addEventListener(o, c), r.addEventListener(i, l);\n }\n );\n return h.finally(() => {\n r.removeEventListener(o, c), r.removeEventListener(i, l);\n }), h;\n}, Sr = (r) => new Promise((o) => setTimeout(o, r));\nclass Xo extends Error {\n constructor() {\n super(\"can't process cross-origin image\"), this.name = \"DropImageFetchError\";\n }\n}\nclass Vr extends Error {\n constructor() {\n super(\"this browser has no Stream API support\"), this.name = \"StreamApiNotSupportedError\";\n }\n}\nclass Zo extends Error {\n constructor() {\n super(\n \"camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.\"\n ), this.name = \"InsecureContextError\";\n }\n}\nclass Ko extends Error {\n constructor() {\n super(\n \"Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)\"\n ), this.name = \"StreamLoadTimeoutError\";\n }\n}\nlet qr;\nasync function ei(r) {\n if (window.BarcodeDetector === void 0)\n return console.debug(\"[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill.\"), new ct({ formats: r });\n const o = await window.BarcodeDetector.getSupportedFormats(), i = r.filter((c) => !o.includes(c));\n return i.length > 0 ? (console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`), new ct({ formats: r })) : (console.debug(\"[vue-qrcode-reader] Will use native BarcodeDetector.\"), new window.BarcodeDetector({ formats: r }));\n}\nasync function Nr(r) {\n qr = await ei(r);\n}\nconst ti = async (r, {\n detectHandler: o,\n locateHandler: i,\n minDelay: c,\n formats: l\n}) => {\n console.debug(\"[vue-qrcode-reader] start scanning\"), await Nr(l);\n const h = (v) => async (g) => {\n if (r.readyState === 0)\n console.debug(\"[vue-qrcode-reader] stop scanning: video element readyState is 0\");\n else {\n const { lastScanned: b, contentBefore: p, lastScanHadContent: C } = v;\n if (g - b < c)\n window.requestAnimationFrame(h(v));\n else {\n const S = await qr.detect(r), $ = S.some((W) => !p.includes(W.rawValue));\n $ && o(S);\n const F = S.length > 0;\n F && i(S), !F && C && i(S);\n const U = {\n lastScanned: g,\n lastScanHadContent: F,\n // It can happen that a QR code is constantly in view of the camera but\n // maybe a scanned frame is a bit blurry and we detect nothing but in the\n // next frame we detect the code again. We also want to avoid emitting\n // a `detect` event in such a case. So we don't reset `contentBefore`,\n // if we detect nothing, only if we detect something new.\n contentBefore: $ ? S.map((W) => W.rawValue) : p\n };\n window.requestAnimationFrame(h(U));\n }\n }\n };\n h({\n lastScanned: performance.now(),\n contentBefore: [],\n lastScanHadContent: !1\n })(performance.now());\n}, ri = async (r) => {\n if (r.startsWith(\"http\") && r.includes(location.host) === !1)\n throw new Xo();\n const o = document.createElement(\"img\");\n return o.src = r, await Vt(o, \"load\"), o;\n}, zr = async (r, o = [\"qr_code\"]) => await new ct({ formats: o }).detect(r), ni = async (r, o = [\"qr_code\"]) => {\n const i = new ct({ formats: o }), c = await ri(r);\n return await i.detect(c);\n};\nvar Gr = {}, Q = {};\nObject.defineProperty(Q, \"__esModule\", {\n value: !0\n});\nQ.compactObject = Qr;\nQ.deprecated = fi;\nvar ai = Q.detectBrowser = hi;\nQ.disableLog = ui;\nQ.disableWarnings = li;\nQ.extractVersion = st;\nQ.filterStats = pi;\nQ.log = di;\nQ.walkStats = ut;\nQ.wrapPeerConnectionEvent = ci;\nfunction oi(r, o, i) {\n return o = ii(o), o in r ? Object.defineProperty(r, o, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : r[o] = i, r;\n}\nfunction ii(r) {\n var o = si(r, \"string\");\n return pe(o) === \"symbol\" ? o : String(o);\n}\nfunction si(r, o) {\n if (pe(r) !== \"object\" || r === null)\n return r;\n var i = r[Symbol.toPrimitive];\n if (i !== void 0) {\n var c = i.call(r, o || \"default\");\n if (pe(c) !== \"object\")\n return c;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (o === \"string\" ? String : Number)(r);\n}\nfunction pe(r) {\n \"@babel/helpers - typeof\";\n return pe = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, pe(r);\n}\nvar Yr = !0, Jr = !0;\nfunction st(r, o, i) {\n var c = r.match(o);\n return c && c.length >= i && parseInt(c[i], 10);\n}\nfunction ci(r, o, i) {\n if (r.RTCPeerConnection) {\n var c = r.RTCPeerConnection.prototype, l = c.addEventListener;\n c.addEventListener = function(v, g) {\n if (v !== o)\n return l.apply(this, arguments);\n var b = function(C) {\n var S = i(C);\n S && (g.handleEvent ? g.handleEvent(S) : g(S));\n };\n return this._eventMap = this._eventMap || {}, this._eventMap[o] || (this._eventMap[o] = /* @__PURE__ */ new Map()), this._eventMap[o].set(g, b), l.apply(this, [v, b]);\n };\n var h = c.removeEventListener;\n c.removeEventListener = function(v, g) {\n if (v !== o || !this._eventMap || !this._eventMap[o])\n return h.apply(this, arguments);\n if (!this._eventMap[o].has(g))\n return h.apply(this, arguments);\n var b = this._eventMap[o].get(g);\n return this._eventMap[o].delete(g), this._eventMap[o].size === 0 && delete this._eventMap[o], Object.keys(this._eventMap).length === 0 && delete this._eventMap, h.apply(this, [v, b]);\n }, Object.defineProperty(c, \"on\" + o, {\n get: function() {\n return this[\"_on\" + o];\n },\n set: function(g) {\n this[\"_on\" + o] && (this.removeEventListener(o, this[\"_on\" + o]), delete this[\"_on\" + o]), g && this.addEventListener(o, this[\"_on\" + o] = g);\n },\n enumerable: !0,\n configurable: !0\n });\n }\n}\nfunction ui(r) {\n return typeof r != \"boolean\" ? new Error(\"Argument type: \" + pe(r) + \". Please use a boolean.\") : (Yr = r, r ? \"adapter.js logging disabled\" : \"adapter.js logging enabled\");\n}\nfunction li(r) {\n return typeof r != \"boolean\" ? new Error(\"Argument type: \" + pe(r) + \". Please use a boolean.\") : (Jr = !r, \"adapter.js deprecation warnings \" + (r ? \"disabled\" : \"enabled\"));\n}\nfunction di() {\n if ((typeof window > \"u\" ? \"undefined\" : pe(window)) === \"object\") {\n if (Yr)\n return;\n typeof console < \"u\" && typeof console.log == \"function\" && console.log.apply(console, arguments);\n }\n}\nfunction fi(r, o) {\n Jr && console.warn(r + \" is deprecated, please use \" + o + \" instead.\");\n}\nfunction hi(r) {\n var o = {\n browser: null,\n version: null\n };\n if (typeof r > \"u\" || !r.navigator || !r.navigator.userAgent)\n return o.browser = \"Not a browser.\", o;\n var i = r.navigator;\n if (i.mozGetUserMedia)\n o.browser = \"firefox\", o.version = st(i.userAgent, /Firefox\\/(\\d+)\\./, 1);\n else if (i.webkitGetUserMedia || r.isSecureContext === !1 && r.webkitRTCPeerConnection)\n o.browser = \"chrome\", o.version = st(i.userAgent, /Chrom(e|ium)\\/(\\d+)\\./, 2);\n else if (r.RTCPeerConnection && i.userAgent.match(/AppleWebKit\\/(\\d+)\\./))\n o.browser = \"safari\", o.version = st(i.userAgent, /AppleWebKit\\/(\\d+)\\./, 1), o.supportsUnifiedPlan = r.RTCRtpTransceiver && \"currentDirection\" in r.RTCRtpTransceiver.prototype;\n else\n return o.browser = \"Not a supported browser.\", o;\n return o;\n}\nfunction Pr(r) {\n return Object.prototype.toString.call(r) === \"[object Object]\";\n}\nfunction Qr(r) {\n return Pr(r) ? Object.keys(r).reduce(function(o, i) {\n var c = Pr(r[i]), l = c ? Qr(r[i]) : r[i], h = c && !Object.keys(l).length;\n return l === void 0 || h ? o : Object.assign(o, oi({}, i, l));\n }, {}) : r;\n}\nfunction ut(r, o, i) {\n !o || i.has(o.id) || (i.set(o.id, o), Object.keys(o).forEach(function(c) {\n c.endsWith(\"Id\") ? ut(r, r.get(o[c]), i) : c.endsWith(\"Ids\") && o[c].forEach(function(l) {\n ut(r, r.get(l), i);\n });\n }));\n}\nfunction pi(r, o, i) {\n var c = i ? \"outbound-rtp\" : \"inbound-rtp\", l = /* @__PURE__ */ new Map();\n if (o === null)\n return l;\n var h = [];\n return r.forEach(function(v) {\n v.type === \"track\" && v.trackIdentifier === o.id && h.push(v);\n }), h.forEach(function(v) {\n r.forEach(function(g) {\n g.type === c && g.trackId === v.id && ut(r, g, l);\n });\n }), l;\n}\nObject.defineProperty(Gr, \"__esModule\", {\n value: !0\n});\nvar mi = Gr.shimGetUserMedia = gi, vi = yi(Q);\nfunction Xr(r) {\n if (typeof WeakMap != \"function\")\n return null;\n var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap();\n return (Xr = function(l) {\n return l ? i : o;\n })(r);\n}\nfunction yi(r, o) {\n if (r && r.__esModule)\n return r;\n if (r === null || he(r) !== \"object\" && typeof r != \"function\")\n return { default: r };\n var i = Xr(o);\n if (i && i.has(r))\n return i.get(r);\n var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var h in r)\n if (h !== \"default\" && Object.prototype.hasOwnProperty.call(r, h)) {\n var v = l ? Object.getOwnPropertyDescriptor(r, h) : null;\n v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h];\n }\n return c.default = r, i && i.set(r, c), c;\n}\nfunction he(r) {\n \"@babel/helpers - typeof\";\n return he = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, he(r);\n}\nvar Tr = vi.log;\nfunction gi(r, o) {\n var i = r && r.navigator;\n if (i.mediaDevices) {\n var c = function(p) {\n if (he(p) !== \"object\" || p.mandatory || p.optional)\n return p;\n var C = {};\n return Object.keys(p).forEach(function(S) {\n if (!(S === \"require\" || S === \"advanced\" || S === \"mediaSource\")) {\n var $ = he(p[S]) === \"object\" ? p[S] : {\n ideal: p[S]\n };\n $.exact !== void 0 && typeof $.exact == \"number\" && ($.min = $.max = $.exact);\n var F = function(R, A) {\n return R ? R + A.charAt(0).toUpperCase() + A.slice(1) : A === \"deviceId\" ? \"sourceId\" : A;\n };\n if ($.ideal !== void 0) {\n C.optional = C.optional || [];\n var U = {};\n typeof $.ideal == \"number\" ? (U[F(\"min\", S)] = $.ideal, C.optional.push(U), U = {}, U[F(\"max\", S)] = $.ideal, C.optional.push(U)) : (U[F(\"\", S)] = $.ideal, C.optional.push(U));\n }\n $.exact !== void 0 && typeof $.exact != \"number\" ? (C.mandatory = C.mandatory || {}, C.mandatory[F(\"\", S)] = $.exact) : [\"min\", \"max\"].forEach(function(W) {\n $[W] !== void 0 && (C.mandatory = C.mandatory || {}, C.mandatory[F(W, S)] = $[W]);\n });\n }\n }), p.advanced && (C.optional = (C.optional || []).concat(p.advanced)), C;\n }, l = function(p, C) {\n if (o.version >= 61)\n return C(p);\n if (p = JSON.parse(JSON.stringify(p)), p && he(p.audio) === \"object\") {\n var S = function(R, A, X) {\n A in R && !(X in R) && (R[X] = R[A], delete R[A]);\n };\n p = JSON.parse(JSON.stringify(p)), S(p.audio, \"autoGainControl\", \"googAutoGainControl\"), S(p.audio, \"noiseSuppression\", \"googNoiseSuppression\"), p.audio = c(p.audio);\n }\n if (p && he(p.video) === \"object\") {\n var $ = p.video.facingMode;\n $ = $ && (he($) === \"object\" ? $ : {\n ideal: $\n });\n var F = o.version < 66;\n if ($ && ($.exact === \"user\" || $.exact === \"environment\" || $.ideal === \"user\" || $.ideal === \"environment\") && !(i.mediaDevices.getSupportedConstraints && i.mediaDevices.getSupportedConstraints().facingMode && !F)) {\n delete p.video.facingMode;\n var U;\n if ($.exact === \"environment\" || $.ideal === \"environment\" ? U = [\"back\", \"rear\"] : ($.exact === \"user\" || $.ideal === \"user\") && (U = [\"front\"]), U)\n return i.mediaDevices.enumerateDevices().then(function(W) {\n W = W.filter(function(A) {\n return A.kind === \"videoinput\";\n });\n var R = W.find(function(A) {\n return U.some(function(X) {\n return A.label.toLowerCase().includes(X);\n });\n });\n return !R && W.length && U.includes(\"back\") && (R = W[W.length - 1]), R && (p.video.deviceId = $.exact ? {\n exact: R.deviceId\n } : {\n ideal: R.deviceId\n }), p.video = c(p.video), Tr(\"chrome: \" + JSON.stringify(p)), C(p);\n });\n }\n p.video = c(p.video);\n }\n return Tr(\"chrome: \" + JSON.stringify(p)), C(p);\n }, h = function(p) {\n return o.version >= 64 ? p : {\n name: {\n PermissionDeniedError: \"NotAllowedError\",\n PermissionDismissedError: \"NotAllowedError\",\n InvalidStateError: \"NotAllowedError\",\n DevicesNotFoundError: \"NotFoundError\",\n ConstraintNotSatisfiedError: \"OverconstrainedError\",\n TrackStartError: \"NotReadableError\",\n MediaDeviceFailedDueToShutdown: \"NotAllowedError\",\n MediaDeviceKillSwitchOn: \"NotAllowedError\",\n TabCaptureError: \"AbortError\",\n ScreenCaptureError: \"AbortError\",\n DeviceCaptureError: \"AbortError\"\n }[p.name] || p.name,\n message: p.message,\n constraint: p.constraint || p.constraintName,\n toString: function() {\n return this.name + (this.message && \": \") + this.message;\n }\n };\n }, v = function(p, C, S) {\n l(p, function($) {\n i.webkitGetUserMedia($, C, function(F) {\n S && S(h(F));\n });\n });\n };\n if (i.getUserMedia = v.bind(i), i.mediaDevices.getUserMedia) {\n var g = i.mediaDevices.getUserMedia.bind(i.mediaDevices);\n i.mediaDevices.getUserMedia = function(b) {\n return l(b, function(p) {\n return g(p).then(function(C) {\n if (p.audio && !C.getAudioTracks().length || p.video && !C.getVideoTracks().length)\n throw C.getTracks().forEach(function(S) {\n S.stop();\n }), new DOMException(\"\", \"NotFoundError\");\n return C;\n }, function(C) {\n return Promise.reject(h(C));\n });\n });\n };\n }\n }\n}\nvar Zr = {};\nObject.defineProperty(Zr, \"__esModule\", {\n value: !0\n});\nvar wi = Zr.shimGetUserMedia = $i, bi = Ci(Q);\nfunction Kr(r) {\n if (typeof WeakMap != \"function\")\n return null;\n var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap();\n return (Kr = function(l) {\n return l ? i : o;\n })(r);\n}\nfunction Ci(r, o) {\n if (r && r.__esModule)\n return r;\n if (r === null || Pe(r) !== \"object\" && typeof r != \"function\")\n return { default: r };\n var i = Kr(o);\n if (i && i.has(r))\n return i.get(r);\n var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var h in r)\n if (h !== \"default\" && Object.prototype.hasOwnProperty.call(r, h)) {\n var v = l ? Object.getOwnPropertyDescriptor(r, h) : null;\n v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h];\n }\n return c.default = r, i && i.set(r, c), c;\n}\nfunction Pe(r) {\n \"@babel/helpers - typeof\";\n return Pe = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, Pe(r);\n}\nfunction $i(r, o) {\n var i = r && r.navigator, c = r && r.MediaStreamTrack;\n if (i.getUserMedia = function(b, p, C) {\n bi.deprecated(\"navigator.getUserMedia\", \"navigator.mediaDevices.getUserMedia\"), i.mediaDevices.getUserMedia(b).then(p, C);\n }, !(o.version > 55 && \"autoGainControl\" in i.mediaDevices.getSupportedConstraints())) {\n var l = function(p, C, S) {\n C in p && !(S in p) && (p[S] = p[C], delete p[C]);\n }, h = i.mediaDevices.getUserMedia.bind(i.mediaDevices);\n if (i.mediaDevices.getUserMedia = function(b) {\n return Pe(b) === \"object\" && Pe(b.audio) === \"object\" && (b = JSON.parse(JSON.stringify(b)), l(b.audio, \"autoGainControl\", \"mozAutoGainControl\"), l(b.audio, \"noiseSuppression\", \"mozNoiseSuppression\")), h(b);\n }, c && c.prototype.getSettings) {\n var v = c.prototype.getSettings;\n c.prototype.getSettings = function() {\n var b = v.apply(this, arguments);\n return l(b, \"mozAutoGainControl\", \"autoGainControl\"), l(b, \"mozNoiseSuppression\", \"noiseSuppression\"), b;\n };\n }\n if (c && c.prototype.applyConstraints) {\n var g = c.prototype.applyConstraints;\n c.prototype.applyConstraints = function(b) {\n return this.kind === \"audio\" && Pe(b) === \"object\" && (b = JSON.parse(JSON.stringify(b)), l(b, \"autoGainControl\", \"mozAutoGainControl\"), l(b, \"noiseSuppression\", \"mozNoiseSuppression\")), g.apply(this, [b]);\n };\n }\n }\n}\nvar ae = {};\nObject.defineProperty(ae, \"__esModule\", {\n value: !0\n});\nae.shimAudioContext = xi;\nae.shimCallbacksAPI = Ei;\nae.shimConstraints = rn;\nae.shimCreateOfferLegacy = Ai;\nvar _i = ae.shimGetUserMedia = Oi;\nae.shimLocalStreamsAPI = Pi;\nae.shimRTCIceServerUrls = Di;\nae.shimRemoteStreamsAPI = Ti;\nae.shimTrackEventTransceiver = Mi;\nvar en = Si(Q);\nfunction tn(r) {\n if (typeof WeakMap != \"function\")\n return null;\n var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap();\n return (tn = function(l) {\n return l ? i : o;\n })(r);\n}\nfunction Si(r, o) {\n if (r && r.__esModule)\n return r;\n if (r === null || me(r) !== \"object\" && typeof r != \"function\")\n return { default: r };\n var i = tn(o);\n if (i && i.has(r))\n return i.get(r);\n var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var h in r)\n if (h !== \"default\" && Object.prototype.hasOwnProperty.call(r, h)) {\n var v = l ? Object.getOwnPropertyDescriptor(r, h) : null;\n v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h];\n }\n return c.default = r, i && i.set(r, c), c;\n}\nfunction me(r) {\n \"@babel/helpers - typeof\";\n return me = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, me(r);\n}\nfunction Pi(r) {\n if (!(me(r) !== \"object\" || !r.RTCPeerConnection)) {\n if (\"getLocalStreams\" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getLocalStreams = function() {\n return this._localStreams || (this._localStreams = []), this._localStreams;\n }), !(\"addStream\" in r.RTCPeerConnection.prototype)) {\n var o = r.RTCPeerConnection.prototype.addTrack;\n r.RTCPeerConnection.prototype.addStream = function(c) {\n var l = this;\n this._localStreams || (this._localStreams = []), this._localStreams.includes(c) || this._localStreams.push(c), c.getAudioTracks().forEach(function(h) {\n return o.call(l, h, c);\n }), c.getVideoTracks().forEach(function(h) {\n return o.call(l, h, c);\n });\n }, r.RTCPeerConnection.prototype.addTrack = function(c) {\n for (var l = this, h = arguments.length, v = new Array(h > 1 ? h - 1 : 0), g = 1; g < h; g++)\n v[g - 1] = arguments[g];\n return v && v.forEach(function(b) {\n l._localStreams ? l._localStreams.includes(b) || l._localStreams.push(b) : l._localStreams = [b];\n }), o.apply(this, arguments);\n };\n }\n \"removeStream\" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.removeStream = function(c) {\n var l = this;\n this._localStreams || (this._localStreams = []);\n var h = this._localStreams.indexOf(c);\n if (h !== -1) {\n this._localStreams.splice(h, 1);\n var v = c.getTracks();\n this.getSenders().forEach(function(g) {\n v.includes(g.track) && l.removeTrack(g);\n });\n }\n });\n }\n}\nfunction Ti(r) {\n if (!(me(r) !== \"object\" || !r.RTCPeerConnection) && (\"getRemoteStreams\" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getRemoteStreams = function() {\n return this._remoteStreams ? this._remoteStreams : [];\n }), !(\"onaddstream\" in r.RTCPeerConnection.prototype))) {\n Object.defineProperty(r.RTCPeerConnection.prototype, \"onaddstream\", {\n get: function() {\n return this._onaddstream;\n },\n set: function(c) {\n var l = this;\n this._onaddstream && (this.removeEventListener(\"addstream\", this._onaddstream), this.removeEventListener(\"track\", this._onaddstreampoly)), this.addEventListener(\"addstream\", this._onaddstream = c), this.addEventListener(\"track\", this._onaddstreampoly = function(h) {\n h.streams.forEach(function(v) {\n if (l._remoteStreams || (l._remoteStreams = []), !l._remoteStreams.includes(v)) {\n l._remoteStreams.push(v);\n var g = new Event(\"addstream\");\n g.stream = v, l.dispatchEvent(g);\n }\n });\n });\n }\n });\n var o = r.RTCPeerConnection.prototype.setRemoteDescription;\n r.RTCPeerConnection.prototype.setRemoteDescription = function() {\n var c = this;\n return this._onaddstreampoly || this.addEventListener(\"track\", this._onaddstreampoly = function(l) {\n l.streams.forEach(function(h) {\n if (c._remoteStreams || (c._remoteStreams = []), !(c._remoteStreams.indexOf(h) >= 0)) {\n c._remoteStreams.push(h);\n var v = new Event(\"addstream\");\n v.stream = h, c.dispatchEvent(v);\n }\n });\n }), o.apply(c, arguments);\n };\n }\n}\nfunction Ei(r) {\n if (!(me(r) !== \"object\" || !r.RTCPeerConnection)) {\n var o = r.RTCPeerConnection.prototype, i = o.createOffer, c = o.createAnswer, l = o.setLocalDescription, h = o.setRemoteDescription, v = o.addIceCandidate;\n o.createOffer = function(p, C) {\n var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = i.apply(this, [S]);\n return C ? ($.then(p, C), Promise.resolve()) : $;\n }, o.createAnswer = function(p, C) {\n var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = c.apply(this, [S]);\n return C ? ($.then(p, C), Promise.resolve()) : $;\n };\n var g = function(p, C, S) {\n var $ = l.apply(this, [p]);\n return S ? ($.then(C, S), Promise.resolve()) : $;\n };\n o.setLocalDescription = g, g = function(p, C, S) {\n var $ = h.apply(this, [p]);\n return S ? ($.then(C, S), Promise.resolve()) : $;\n }, o.setRemoteDescription = g, g = function(p, C, S) {\n var $ = v.apply(this, [p]);\n return S ? ($.then(C, S), Promise.resolve()) : $;\n }, o.addIceCandidate = g;\n }\n}\nfunction Oi(r) {\n var o = r && r.navigator;\n if (o.mediaDevices && o.mediaDevices.getUserMedia) {\n var i = o.mediaDevices, c = i.getUserMedia.bind(i);\n o.mediaDevices.getUserMedia = function(l) {\n return c(rn(l));\n };\n }\n !o.getUserMedia && o.mediaDevices && o.mediaDevices.getUserMedia && (o.getUserMedia = (function(h, v, g) {\n o.mediaDevices.getUserMedia(h).then(v, g);\n }).bind(o));\n}\nfunction rn(r) {\n return r && r.video !== void 0 ? Object.assign({}, r, {\n video: en.compactObject(r.video)\n }) : r;\n}\nfunction Di(r) {\n if (r.RTCPeerConnection) {\n var o = r.RTCPeerConnection;\n r.RTCPeerConnection = function(c, l) {\n if (c && c.iceServers) {\n for (var h = [], v = 0; v < c.iceServers.length; v++) {\n var g = c.iceServers[v];\n g.urls === void 0 && g.url ? (en.deprecated(\"RTCIceServer.url\", \"RTCIceServer.urls\"), g = JSON.parse(JSON.stringify(g)), g.urls = g.url, delete g.url, h.push(g)) : h.push(c.iceServers[v]);\n }\n c.iceServers = h;\n }\n return new o(c, l);\n }, r.RTCPeerConnection.prototype = o.prototype, \"generateCertificate\" in o && Object.defineProperty(r.RTCPeerConnection, \"generateCertificate\", {\n get: function() {\n return o.generateCertificate;\n }\n });\n }\n}\nfunction Mi(r) {\n me(r) === \"object\" && r.RTCTrackEvent && \"receiver\" in r.RTCTrackEvent.prototype && !(\"transceiver\" in r.RTCTrackEvent.prototype) && Object.defineProperty(r.RTCTrackEvent.prototype, \"transceiver\", {\n get: function() {\n return {\n receiver: this.receiver\n };\n }\n });\n}\nfunction Ai(r) {\n var o = r.RTCPeerConnection.prototype.createOffer;\n r.RTCPeerConnection.prototype.createOffer = function(c) {\n if (c) {\n typeof c.offerToReceiveAudio < \"u\" && (c.offerToReceiveAudio = !!c.offerToReceiveAudio);\n var l = this.getTransceivers().find(function(v) {\n return v.receiver.track.kind === \"audio\";\n });\n c.offerToReceiveAudio === !1 && l ? l.direction === \"sendrecv\" ? l.setDirection ? l.setDirection(\"sendonly\") : l.direction = \"sendonly\" : l.direction === \"recvonly\" && (l.setDirection ? l.setDirection(\"inactive\") : l.direction = \"inactive\") : c.offerToReceiveAudio === !0 && !l && this.addTransceiver(\"audio\", {\n direction: \"recvonly\"\n }), typeof c.offerToReceiveVideo < \"u\" && (c.offerToReceiveVideo = !!c.offerToReceiveVideo);\n var h = this.getTransceivers().find(function(v) {\n return v.receiver.track.kind === \"video\";\n });\n c.offerToReceiveVideo === !1 && h ? h.direction === \"sendrecv\" ? h.setDirection ? h.setDirection(\"sendonly\") : h.direction = \"sendonly\" : h.direction === \"recvonly\" && (h.setDirection ? h.setDirection(\"inactive\") : h.direction = \"inactive\") : c.offerToReceiveVideo === !0 && !h && this.addTransceiver(\"video\", {\n direction: \"recvonly\"\n });\n }\n return o.apply(this, arguments);\n };\n}\nfunction xi(r) {\n me(r) !== \"object\" || r.AudioContext || (r.AudioContext = r.webkitAudioContext);\n}\nconst Ri = (r) => {\n let o = !1, i;\n return (...c) => (o || (i = r(c), o = !0), i);\n};\nfunction ue(r, o) {\n if (r === !1)\n throw new Error(o != null ? o : \"assertion failure\");\n}\nfunction Er(r) {\n throw new Error(\"this code should be unreachable\");\n}\nconst ki = Ri(() => {\n const r = ai(window);\n switch (r.browser) {\n case \"chrome\":\n mi(window, r);\n break;\n case \"firefox\":\n wi(window, r);\n break;\n case \"safari\":\n _i(window, r);\n break;\n default:\n throw new Vr();\n }\n});\nlet Te = Promise.resolve({ type: \"stop\", data: {} });\nasync function Or(r, o, i) {\n var g, b, p;\n if (console.debug(\n \"[vue-qrcode-reader] starting camera with constraints: \",\n JSON.stringify(o)\n ), window.isSecureContext !== !0)\n throw new Zo();\n if (((g = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : g.getUserMedia) === void 0)\n throw new Vr();\n ki(), console.debug(\"[vue-qrcode-reader] calling getUserMedia\");\n const c = await navigator.mediaDevices.getUserMedia({\n audio: !1,\n video: o\n });\n r.srcObject !== void 0 ? r.srcObject = c : r.mozSrcObject !== void 0 ? r.mozSrcObject = c : window.URL.createObjectURL ? r.src = window.URL.createObjectURL(c) : window.webkitURL ? r.src = window.webkitURL.createObjectURL(c) : r.src = c.id, r.play(), console.debug(\"[vue-qrcode-reader] waiting for video element to load\"), await Promise.race([\n Vt(r, \"loadeddata\"),\n // On iOS devices in PWA mode, QrcodeStream works initially, but after\n // killing and restarting the PWA, all video elements fail to load camera\n // streams and never emit the `loadeddata` event. Looks like this is\n // related to a WebKit issue (see #298). No workarounds at the moment.\n // To at least detect this situation, we throw an error if the event\n // has not been emitted after a 6 second timeout.\n Sr(6e3).then(() => {\n throw new Ko();\n })\n ]), console.debug(\"[vue-qrcode-reader] video element loaded\"), await Sr(500);\n const [l] = c.getVideoTracks(), h = (p = (b = l == null ? void 0 : l.getCapabilities) == null ? void 0 : b.call(l)) != null ? p : {};\n let v = !1;\n return i && h.torch && (await l.applyConstraints({ advanced: [{ torch: !0 }] }), v = !0), console.debug(\"[vue-qrcode-reader] camera ready\"), {\n type: \"start\",\n data: {\n videoEl: r,\n stream: c,\n capabilities: h,\n constraints: o,\n isTorchOn: v\n }\n };\n}\nasync function Ii(r, {\n constraints: o,\n torch: i,\n restart: c = !1\n}) {\n Te = Te.then((h) => {\n if (h.type === \"start\") {\n const {\n data: {\n videoEl: v,\n stream: g,\n constraints: b,\n isTorchOn: p\n }\n } = h;\n return !c && r === v && o === b && i === p ? h : nn(v, g, p).then(\n () => Or(r, o, i)\n );\n } else if (h.type === \"stop\" || h.type === \"failed\")\n return Or(r, o, i);\n Er();\n }).catch((h) => (console.debug(`[vue-qrcode-reader] starting camera failed with \"${h}\"`), { type: \"failed\", error: h }));\n const l = await Te;\n if (l.type === \"stop\")\n throw new Error(\"Something went wrong with the camera task queue (start task).\");\n if (l.type === \"failed\")\n throw l.error;\n if (l.type === \"start\")\n return l.data.capabilities;\n Er();\n}\nasync function nn(r, o, i) {\n console.debug(\"[vue-qrcode-reader] stopping camera\"), r.src = \"\", r.srcObject = null, r.load(), await Vt(r, \"error\");\n for (const c of o.getTracks())\n i != null || await c.applyConstraints({ advanced: [{ torch: !1 }] }), o.removeTrack(c), c.stop();\n return {\n type: \"stop\",\n data: {}\n };\n}\nasync function ot() {\n if (Te = Te.then((o) => {\n if (o.type === \"stop\" || o.type === \"failed\")\n return o;\n const {\n data: { videoEl: i, stream: c, isTorchOn: l }\n } = o;\n return nn(i, c, l);\n }), (await Te).type === \"start\")\n throw new Error(\"Something went wrong with the camera task queue (stop task).\");\n}\nconst Fi = /* @__PURE__ */ jt({\n __name: \"QrcodeStream\",\n props: {\n // in this file: don't use `props.constraints` directly. Use `constraintsCached`.\n /**\n * Passes an object with various camera configuration options.\n */\n constraints: {\n type: Object,\n default() {\n return { facingMode: \"environment\" };\n }\n },\n // in this file: don't use `props.formats` directly. Use `formatsCached`.\n /**\n * Passes formats that will be recognized during detection.\n */\n formats: {\n type: Array,\n default: () => [\"qr_code\"]\n },\n /**\n * Setting this prop to true freezes the camera. Set to false to resume.\n */\n paused: {\n type: Boolean,\n default: !1\n },\n /**\n * Enables or disables camera torch during detection.\n */\n torch: {\n type: Boolean,\n default: !1\n },\n /**\n * Defines callback function that will be responsible for drawing detected code tracking rectangle\n */\n track: {\n type: Function\n }\n },\n emits: [\"detect\", \"camera-on\", \"camera-off\", \"error\"],\n setup(r, { emit: o }) {\n const i = r, c = o, l = we(i.constraints), h = we(i.formats);\n We(\n () => i.constraints,\n (k, D) => {\n JSON.stringify(k) !== JSON.stringify(D) && (l.value = k);\n },\n { deep: !0 }\n ), We(\n () => i.formats,\n (k, D) => {\n JSON.stringify(k) !== JSON.stringify(D) && (h.value = k);\n },\n { deep: !0 }\n );\n const v = we(), g = we(), b = we(), p = we(!1), C = we(!1);\n vo(() => {\n C.value = !0;\n }), yo(() => {\n ot();\n });\n const S = Ut(() => ({\n torch: i.torch,\n constraints: l.value,\n shouldStream: C.value && !i.paused\n }));\n We(\n S,\n async (k) => {\n const D = b.value;\n ue(\n D !== void 0,\n \"cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined.\"\n );\n const M = v.value;\n ue(\n M !== void 0,\n \"cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined.\"\n );\n const le = M.getContext(\"2d\");\n if (ue(le !== null, \"if cavnas is defined, canvas 2d context should also be non-null\"), k.shouldStream) {\n ot(), p.value = !1;\n try {\n const oe = await Ii(D, k);\n C.value ? (p.value = !0, c(\"camera-on\", oe)) : await ot();\n } catch (oe) {\n c(\"error\", oe);\n }\n } else\n M.width = D.videoWidth, M.height = D.videoHeight, le.drawImage(D, 0, 0, D.videoWidth, D.videoHeight), ot(), p.value = !1, c(\"camera-off\");\n },\n { deep: !0 }\n ), We(h, async (k) => {\n C.value && await Nr(k);\n });\n const $ = Ut(() => S.value.shouldStream && p.value);\n We($, (k) => {\n if (k) {\n ue(\n v.value !== void 0,\n \"shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined\"\n ), F(v.value), ue(\n g.value !== void 0,\n \"shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined\"\n ), F(g.value);\n const D = () => i.track === void 0 ? 500 : 40;\n ue(\n b.value !== void 0,\n \"shouldScan watcher should only be triggered when component is mounted. Thus video element is defined\"\n ), ti(b.value, {\n detectHandler: (M) => c(\"detect\", M),\n formats: h.value,\n locateHandler: U,\n minDelay: D()\n });\n }\n });\n const F = (k) => {\n const D = k.getContext(\"2d\");\n ue(D !== null, \"canvas 2d context should always be non-null\"), D.clearRect(0, 0, k.width, k.height);\n }, U = (k) => {\n const D = g.value;\n ue(\n D !== void 0,\n \"onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined.\"\n );\n const M = b.value;\n if (ue(\n M !== void 0,\n \"onLocate handler should only be called when component is mounted. Thus video element is always defined.\"\n ), k.length === 0 || i.track === void 0)\n F(D);\n else {\n const le = M.offsetWidth, oe = M.offsetHeight, be = M.videoWidth, Ce = M.videoHeight, Oe = Math.max(le / be, oe / Ce), De = be * Oe, Le = Ce * Oe, dt = De / be, ft = Le / Ce, ht = (le - De) / 2, pt = (oe - Le) / 2, Me = ({ x: de, y: Z }) => ({\n x: Math.floor(de * dt),\n y: Math.floor(Z * ft)\n }), te = ({ x: de, y: Z }) => ({\n x: Math.floor(de + ht),\n y: Math.floor(Z + pt)\n }), ve = k.map((de) => {\n const { boundingBox: Z, cornerPoints: vt } = de, { x: He, y: fe } = te(\n Me({\n x: Z.x,\n y: Z.y\n })\n ), { x: Be, y: yt } = Me({\n x: Z.width,\n y: Z.height\n });\n return {\n ...de,\n cornerPoints: vt.map((Ve) => te(Me(Ve))),\n boundingBox: DOMRectReadOnly.fromRect({ x: He, y: fe, width: Be, height: yt })\n };\n });\n D.width = M.offsetWidth, D.height = M.offsetHeight;\n const mt = D.getContext(\"2d\");\n i.track(ve, mt);\n }\n }, W = {\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n // notice that we use z-index only once for the wrapper div.\n // If z-index is not defined, elements are stacked in the order they appear in the DOM.\n // The first element is at the very bottom and subsequent elements are added on top.\n \"z-index\": \"0\"\n }, R = {\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n top: \"0\",\n left: \"0\"\n }, A = {\n width: \"100%\",\n height: \"100%\",\n \"object-fit\": \"cover\"\n }, X = Ut(() => $.value ? A : {\n ...A,\n visibility: \"hidden\",\n position: \"absolute\"\n });\n return (k, D) => (Lt(), Ht(\"div\", { style: W }, [\n nt(\"video\", {\n ref_key: \"videoRef\",\n ref: b,\n style: go(X.value),\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\"\n }, null, 4),\n wo(nt(\"canvas\", {\n id: \"qrcode-stream-pause-frame\",\n ref_key: \"pauseFrameRef\",\n ref: v,\n style: A\n }, null, 512), [\n [bo, !$.value]\n ]),\n nt(\"canvas\", {\n id: \"qrcode-stream-tracking-layer\",\n ref_key: \"trackingLayerRef\",\n ref: g,\n style: R\n }, null, 512),\n nt(\"div\", { style: R }, [\n Dr(k.$slots, \"default\")\n ])\n ]));\n }\n}), Ui = /* @__PURE__ */ jt({\n __name: \"QrcodeCapture\",\n props: {\n formats: {\n type: Array,\n default: () => [\"qr_code\"]\n }\n },\n emits: [\"detect\"],\n setup(r, { emit: o }) {\n const i = r, c = o, l = (h) => {\n if (!(!(h.target instanceof HTMLInputElement) || !h.target.files))\n for (const v of Array.from(h.target.files))\n zr(v, i.formats).then((g) => {\n c(\"detect\", g);\n });\n };\n return (h, v) => (Lt(), Ht(\"input\", {\n onChange: l,\n type: \"file\",\n name: \"image\",\n accept: \"image/*\",\n capture: \"environment\",\n multiple: \"\"\n }, null, 32));\n }\n}), Wi = /* @__PURE__ */ jt({\n __name: \"QrcodeDropZone\",\n props: {\n formats: {\n type: Array,\n default: () => [\"qr_code\"]\n }\n },\n emits: [\"detect\", \"dragover\", \"error\"],\n setup(r, { emit: o }) {\n const i = r, c = o, l = async (g) => {\n try {\n const b = await g;\n c(\"detect\", b);\n } catch (b) {\n c(\"error\", b);\n }\n }, h = (g) => {\n c(\"dragover\", g);\n }, v = ({ dataTransfer: g }) => {\n if (!g)\n return;\n h(!1);\n const b = [...Array.from(g.files)], p = g.getData(\"text/uri-list\");\n b.forEach((C) => {\n l(zr(C, i.formats));\n }), p !== \"\" && l(ni(p, i.formats));\n };\n return (g, b) => (Lt(), Ht(\"div\", {\n onDrop: at(v, [\"prevent\", \"stop\"]),\n onDragenter: b[0] || (b[0] = at((p) => h(!0), [\"prevent\", \"stop\"])),\n onDragleave: b[1] || (b[1] = at((p) => h(!1), [\"prevent\", \"stop\"])),\n onDragover: b[2] || (b[2] = at(() => {\n }, [\"prevent\", \"stop\"]))\n }, [\n Dr(g.$slots, \"default\")\n ], 32));\n }\n});\nfunction ji(r) {\n r.component(\"qrcode-stream\", Fi), r.component(\"qrcode-capture\", Ui), r.component(\"qrcode-drop-zone\", Wi);\n}\nconst Bi = { install: ji };\nexport {\n Ui as QrcodeCapture,\n Wi as QrcodeDropZone,\n Fi as QrcodeStream,\n Bi as VueQrcodeReader,\n ji as install,\n Hi as setZXingModuleOverrides\n};\n"], + "mappings": "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", + "names": [] +} diff --git a/utils/date.ts b/utils/date.ts new file mode 100644 index 0000000..4332455 --- /dev/null +++ b/utils/date.ts @@ -0,0 +1,17 @@ +export function formatDate(time:Date|string,separator='-'){ + time=new Date(time); + let year=time.getFullYear(), + month=time.getMonth()+ 1, + date=time.getDate(); + return year+separator+(month<10?'0'+month:month)+separator+(date<10?'0'+date:date); +} + +//时间格式化 +export function formatTime(time:Date,separator1='-',seperator2=':'){ + time=new Date(time); + let date=formatDate(time,separator1), + hours=time.getHours(), + minutes=time.getMinutes(), + seconds=time.getSeconds(); + return date+' '+(hours<10?'0'+hours:hours)+seperator2+(minutes<10?'0'+minutes:minutes)+seperator2+(seconds<10?'0'+seconds:seconds); +} \ No newline at end of file

      C1xnhvfn(ZlqA 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 z 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 literal 0 HcmV?d00001 diff --git a/node_modules/zxing-wasm/dist/writer/zxing_writer.wasm b/node_modules/zxing-wasm/dist/writer/zxing_writer.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c33fa0dbad9b5186ea2f20e8f84b72cb3149ba5e GIT binary patch literal 337639 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