From c2d655774f665204de185d07f07244bac066016a Mon Sep 17 00:00:00 2001 From: zizifn <1803942+zizifn@users.noreply.github.com> Date: Sun, 5 Mar 2023 16:20:04 +0800 Subject: [PATCH] add Ws 0rtt into node and deno (#103) add ws 0rtt to deno and nodejs --- .gitignore | 9 +- .npmrc-cn | 10 - .vscode/extensions.json | 3 +- .vscode/launch.json | 7 + .vscode/settings.json | 8 +- .../src/deno => cf-page/public}/401.html | 0 apps/deno-vless/.eslintrc.json | 18 - apps/deno-vless/deno.json | 3 + apps/deno-vless/deno.lock | 539 ++++++++++++++++++ apps/deno-vless/index.html | 18 - apps/deno-vless/postcss.config.js | 15 - apps/deno-vless/project.json | 54 +- apps/deno-vless/src/assets/.gitkeep | 0 apps/deno-vless/src/{deno => }/client.ts | 7 +- .../src/client/assets/index.0f81511d.js | 50 -- .../src/client/assets/index.74140327.css | 1 - apps/deno-vless/src/client/favicon.ico | Bin 15086 -> 0 bytes apps/deno-vless/src/deno-test.ts | 16 - apps/deno-vless/src/index.tsx | 14 - apps/deno-vless/src/main.ts | 200 ++++++- apps/deno-vless/src/styles.css | 3 - apps/deno-vless/tailwind.config.js | 18 - apps/deno-vless/tsconfig.app.json | 22 - apps/deno-vless/tsconfig.json | 21 - apps/deno-vless/tsconfig.spec.json | 23 - apps/deno-vless/vite.config.ts | 26 - apps/node-vless/project.json | 3 +- apps/node-vless/src/main.ts | 25 +- deno-test.ts | 6 + dist/apps/cf-page/401.html | 33 ++ dist/apps/cf-page/assets/index-27b909e7.css | 1 + dist/apps/cf-page/assets/index-aea6cc6c.js | 50 ++ .../public => dist/apps/cf-page}/favicon.ico | Bin .../client => dist/apps/cf-page}/index.html | 7 +- import_map.json | 7 + ipv6-nodejs.js | 11 + libs/edge-ui/src/lib/app.tsx | 78 ++- libs/edge-ui/src/lib/model.ts | 5 + libs/vless-js/src/index.ts | 7 +- libs/vless-js/src/lib/vless-js.ts | 240 ++------ nx.json | 3 +- package-lock.json | 324 +++++++++++ package.json | 1 + test.mjs | 27 +- test2.mjs | 46 +- 45 files changed, 1406 insertions(+), 553 deletions(-) delete mode 100644 .npmrc-cn rename apps/{deno-vless/src/deno => cf-page/public}/401.html (100%) delete mode 100644 apps/deno-vless/.eslintrc.json create mode 100644 apps/deno-vless/deno.json create mode 100644 apps/deno-vless/deno.lock delete mode 100644 apps/deno-vless/index.html delete mode 100644 apps/deno-vless/postcss.config.js delete mode 100644 apps/deno-vless/src/assets/.gitkeep rename apps/deno-vless/src/{deno => }/client.ts (85%) delete mode 100644 apps/deno-vless/src/client/assets/index.0f81511d.js delete mode 100644 apps/deno-vless/src/client/assets/index.74140327.css delete mode 100644 apps/deno-vless/src/client/favicon.ico delete mode 100644 apps/deno-vless/src/deno-test.ts delete mode 100644 apps/deno-vless/src/index.tsx delete mode 100644 apps/deno-vless/src/styles.css delete mode 100644 apps/deno-vless/tailwind.config.js delete mode 100644 apps/deno-vless/tsconfig.app.json delete mode 100644 apps/deno-vless/tsconfig.json delete mode 100644 apps/deno-vless/tsconfig.spec.json delete mode 100644 apps/deno-vless/vite.config.ts create mode 100644 deno-test.ts create mode 100644 dist/apps/cf-page/401.html create mode 100644 dist/apps/cf-page/assets/index-27b909e7.css create mode 100644 dist/apps/cf-page/assets/index-aea6cc6c.js rename {apps/deno-vless/public => dist/apps/cf-page}/favicon.ico (100%) rename {apps/deno-vless/src/client => dist/apps/cf-page}/index.html (64%) create mode 100644 import_map.json create mode 100644 ipv6-nodejs.js create mode 100644 libs/edge-ui/src/lib/model.ts diff --git a/.gitignore b/.gitignore index 6d0ff11..7c8e009 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,13 @@ # See http://help.github.com/ignore-files/ for more about ignoring files. # compiled output -dist +# https://theapache64.github.io/git-do-not-ignore/ +!dist/ +dist/* +!dist/apps/ +dist/apps/* +!dist/apps/cf-page + tmp /out-tsc @@ -45,3 +51,4 @@ Thumbs.db **/.dev.vars wrangler.toml +.npmrc diff --git a/.npmrc-cn b/.npmrc-cn deleted file mode 100644 index 991dde0..0000000 --- a/.npmrc-cn +++ /dev/null @@ -1,10 +0,0 @@ -# registry=https://registry.npmmirror.com - -# https-proxy=http://127.0.0.1:1081/ -ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ -registry=https://registry.npmmirror.com - - -# CYPRESS -# CYPRESS_INSTALL_BINARY=0 npm install -# CYPRESS_DOWNLOAD_MIRROR=https://npm.taobao.org/mirrors/cypress/9.0.0/linux64/cypress.zip npm install \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 6a302fe..00163df 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,7 @@ "nrwl.angular-console", "esbenp.prettier-vscode", "dbaeumer.vscode-eslint", - "firsttris.vscode-jest-runner" + "firsttris.vscode-jest-runner", + "denoland.vscode-deno" ] } diff --git a/.vscode/launch.json b/.vscode/launch.json index 85dd6ff..8a8c05e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,13 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "name": "Attach by Process ID", + "processId": "${command:PickProcess}", + "request": "attach", + "skipFiles": ["/**"], + "type": "node" + }, { "request": "launch", "name": "Launch Program", diff --git a/.vscode/settings.json b/.vscode/settings.json index 1af5e57..dc74292 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,9 +2,11 @@ "deno.codeLens.implementations": true, "deno.codeLens.references": true, "deno.enablePaths": [ - "apps/deno-bypass", "apps/deno-vless/src/deno", "apps/deno-vless/src/main.ts", - "apps/deno-vless/src/deno-test.ts" - ] + "apps/deno-vless/src/deno-test.ts", + "apps/deno-vless2" + ], + "deno.unstable": true, + "deno.importMap": "./import_map.json" } diff --git a/apps/deno-vless/src/deno/401.html b/apps/cf-page/public/401.html similarity index 100% rename from apps/deno-vless/src/deno/401.html rename to apps/cf-page/public/401.html diff --git a/apps/deno-vless/.eslintrc.json b/apps/deno-vless/.eslintrc.json deleted file mode 100644 index 734ddac..0000000 --- a/apps/deno-vless/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/apps/deno-vless/deno.json b/apps/deno-vless/deno.json new file mode 100644 index 0000000..315d5ac --- /dev/null +++ b/apps/deno-vless/deno.json @@ -0,0 +1,3 @@ +{ + "importMap": "../../import_map.json" +} diff --git a/apps/deno-vless/deno.lock b/apps/deno-vless/deno.lock new file mode 100644 index 0000000..654523e --- /dev/null +++ b/apps/deno-vless/deno.lock @@ -0,0 +1,539 @@ +{ + "version": "2", + "remote": { + "https://deno.land/std@0.157.0/async/abortable.ts": "87aa7230be8360c24ad437212311c9e8d4328854baec27b4c7abb26e85515c06", + "https://deno.land/std@0.157.0/async/deadline.ts": "48ac998d7564969f3e6ec6b6f9bf0217ebd00239b1b2292feba61272d5dd58d0", + "https://deno.land/std@0.157.0/async/debounce.ts": "de5433bff08a2bb61416fc53b3bd2d5867090c8a815465e5b4a10a77495b1051", + "https://deno.land/std@0.157.0/async/deferred.ts": "c01de44b9192359cebd3fe93273fcebf9e95110bf3360023917da9a2d1489fae", + "https://deno.land/std@0.157.0/async/delay.ts": "0419dfc993752849692d1f9647edf13407c7facc3509b099381be99ffbc9d699", + "https://deno.land/std@0.157.0/async/mod.ts": "dd0a8ed4f3984ffabe2fcca7c9f466b7932d57b1864ffee148a5d5388316db6b", + "https://deno.land/std@0.157.0/async/mux_async_iterator.ts": "3447b28a2a582224a3d4d3596bccbba6e85040da3b97ed64012f7decce98d093", + "https://deno.land/std@0.157.0/async/pool.ts": "ef9eb97b388543acbf0ac32647121e4dbe629236899586c4d4311a8770fbb239", + "https://deno.land/std@0.157.0/async/tee.ts": "d27680d911816fcb3d231e16d690e7588079e66a9b2e5ce8cc354db94fdce95f", + "https://deno.land/std@0.157.0/http/server.ts": "c1bce1cbf4060055f622d5c3f0e406fd553e5dca111ca836d28c6268f170ebeb", + "https://deno.land/std@0.167.0/_util/asserts.ts": "d0844e9b62510f89ce1f9878b046f6a57bf88f208a10304aab50efcb48365272", + "https://deno.land/std@0.167.0/_util/os.ts": "8a33345f74990e627b9dfe2de9b040004b08ea5146c7c9e8fe9a29070d193934", + "https://deno.land/std@0.167.0/async/abortable.ts": "80b2ac399f142cc528f95a037a7d0e653296352d95c681e284533765961de409", + "https://deno.land/std@0.167.0/async/deadline.ts": "2c2deb53c7c28ca1dda7a3ad81e70508b1ebc25db52559de6b8636c9278fd41f", + "https://deno.land/std@0.167.0/async/debounce.ts": "60301ffb37e730cd2d6f9dadfd0ecb2a38857681bd7aaf6b0a106b06e5210a98", + "https://deno.land/std@0.167.0/async/deferred.ts": "77d3f84255c3627f1cc88699d8472b664d7635990d5358c4351623e098e917d6", + "https://deno.land/std@0.167.0/async/delay.ts": "5a9bfba8de38840308a7a33786a0155a7f6c1f7a859558ddcec5fe06e16daf57", + "https://deno.land/std@0.167.0/async/mod.ts": "7809ad4bb223e40f5fdc043e5c7ca04e0e25eed35c32c3c32e28697c553fa6d9", + "https://deno.land/std@0.167.0/async/mux_async_iterator.ts": "770a0ff26c59f8bbbda6b703a2235f04e379f73238e8d66a087edc68c2a2c35f", + "https://deno.land/std@0.167.0/async/pool.ts": "6854d8cd675a74c73391c82005cbbe4cc58183bddcd1fbbd7c2bcda42b61cf69", + "https://deno.land/std@0.167.0/async/retry.ts": "e8e5173623915bbc0ddc537698fa418cf875456c347eda1ed453528645b42e67", + "https://deno.land/std@0.167.0/async/tee.ts": "3a47cc4e9a940904fd4341f0224907e199121c80b831faa5ec2b054c6d2eff5e", + "https://deno.land/std@0.167.0/collections/_utils.ts": "fd759867be7a0047a1fa89ec89f7b58ebe3f2f7f089a8f4e416eb30c5d764868", + "https://deno.land/std@0.167.0/collections/deep_merge.ts": "0303cca7697646c5464ecb3337d494602056babae4f09baf6619f1043ba7eb6d", + "https://deno.land/std@0.167.0/crypto/_fnv/fnv32.ts": "aa9bddead8c6345087d3abd4ef35fb9655622afc333fc41fff382b36e64280b5", + "https://deno.land/std@0.167.0/crypto/_fnv/fnv64.ts": "625d7e7505b6cb2e9801b5fd6ed0a89256bac12b2bbb3e4664b85a88b0ec5bef", + "https://deno.land/std@0.167.0/crypto/_fnv/index.ts": "a8f6a361b4c6d54e5e89c16098f99b6962a1dd6ad1307dbc97fa1ecac5d7060a", + "https://deno.land/std@0.167.0/crypto/_fnv/util.ts": "4848313bed7f00f55be3cb080aa0583fc007812ba965b03e4009665bde614ce3", + "https://deno.land/std@0.167.0/crypto/_util.ts": "4a8cb74e7273d2400aa6da582ec58078cf8d54bc66530592048cbd7cc4152621", + "https://deno.land/std@0.167.0/crypto/_wasm/lib/deno_std_wasm_crypto.generated.mjs": "71c1ac20f32fdbdc9b31a14917779c7fa392dbc8b050059cbb2c35b400b975b1", + "https://deno.land/std@0.167.0/crypto/_wasm/mod.ts": "b49ec171049bbbaaed3c5a5a71dfcb3d09f880607c8d9c517638d0443bd0f874", + "https://deno.land/std@0.167.0/crypto/keystack.ts": "ee8ee58ca876f619cef56f40127405f77f9738f50a459b6ba44234b3a2cb6cc8", + "https://deno.land/std@0.167.0/crypto/mod.ts": "f953406904aa4257a6c76c40eb74b47d8dad83af8a77f33a4639cbac6d311baf", + "https://deno.land/std@0.167.0/crypto/timing_safe_equal.ts": "3784958e40a5fe10429a68b75cc5f8d34356bf0bc2eb93c80c3033e2a6f17821", + "https://deno.land/std@0.167.0/crypto/util.ts": "93fc9dbaa62421538ad60ee65337cbf1d8a0298fac3c4f70b37e5627e7e129eb", + "https://deno.land/std@0.167.0/encoding/base64.ts": "8605e018e49211efc767686f6f687827d7f5fd5217163e981d8d693105640d7a", + "https://deno.land/std@0.167.0/encoding/base64url.ts": "0283b12fcd306c11e3cf26fc022fecc800c6acc19704ea8bdb3908898fcd06d6", + "https://deno.land/std@0.167.0/encoding/hex.ts": "b51e99b684486a3ad2406807a8be953f5ef8bac95af202774a759f9fcf0d87a6", + "https://deno.land/std@0.167.0/flags/mod.ts": "4f50ec6383c02684db35de38b3ffb2cd5b9fcfcc0b1147055d1980c49e82521c", + "https://deno.land/std@0.167.0/fmt/colors.ts": "03ad95e543d2808bc43c17a3dd29d25b43d0f16287fe562a0be89bf632454a12", + "https://deno.land/std@0.167.0/http/file_server.ts": "369b5e4bb418e3ad6aae6d53102de292521604937acb3bfa27b90bbc59b50396", + "https://deno.land/std@0.167.0/http/http_status.ts": "ed24048cc0d06066c944da59b0301da3ae2f990564bb4ad79bb52a09cf8e9b30", + "https://deno.land/std@0.167.0/http/server.ts": "e99c1bee8a3f6571ee4cdeb2966efad465b8f6fe62bec1bdb59c1f007cc4d155", + "https://deno.land/std@0.167.0/http/util.ts": "759a2b57b44b722d2033d0dfe077f7e9a257f431db6d0319b78dcfebed0adb1e", + "https://deno.land/std@0.167.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1", + "https://deno.land/std@0.167.0/media_types/mod.ts": "8c0447e561dd74fb26c52ad0df92d9f2ab170329a11a3f78498e3ea94c0590fd", + "https://deno.land/std@0.167.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af", + "https://deno.land/std@0.167.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", + "https://deno.land/std@0.167.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", + "https://deno.land/std@0.167.0/path/_util.ts": "d16be2a16e1204b65f9d0dfc54a9bc472cafe5f4a190b3c8471ec2016ccd1677", + "https://deno.land/std@0.167.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", + "https://deno.land/std@0.167.0/path/glob.ts": "81cc6c72be002cd546c7a22d1f263f82f63f37fe0035d9726aa96fc8f6e4afa1", + "https://deno.land/std@0.167.0/path/mod.ts": "cf7cec7ac11b7048bb66af8ae03513e66595c279c65cfa12bfc07d9599608b78", + "https://deno.land/std@0.167.0/path/posix.ts": "b859684bc4d80edfd4cad0a82371b50c716330bed51143d6dcdbe59e6278b30c", + "https://deno.land/std@0.167.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", + "https://deno.land/std@0.167.0/path/win32.ts": "7cebd2bda6657371adc00061a1d23fdd87bcdf64b4843bb148b0b24c11b40f69", + "https://deno.land/std@0.167.0/version.ts": "06714d4f648ff89b814ffe8ccd3a67f80517b078e0c9367496b8ef8b7d31fbfc", + "https://deno.land/std@0.170.0/async/abortable.ts": "80b2ac399f142cc528f95a037a7d0e653296352d95c681e284533765961de409", + "https://deno.land/std@0.170.0/async/deadline.ts": "2c2deb53c7c28ca1dda7a3ad81e70508b1ebc25db52559de6b8636c9278fd41f", + "https://deno.land/std@0.170.0/async/debounce.ts": "60301ffb37e730cd2d6f9dadfd0ecb2a38857681bd7aaf6b0a106b06e5210a98", + "https://deno.land/std@0.170.0/async/deferred.ts": "77d3f84255c3627f1cc88699d8472b664d7635990d5358c4351623e098e917d6", + "https://deno.land/std@0.170.0/async/delay.ts": "5a9bfba8de38840308a7a33786a0155a7f6c1f7a859558ddcec5fe06e16daf57", + "https://deno.land/std@0.170.0/async/mod.ts": "7809ad4bb223e40f5fdc043e5c7ca04e0e25eed35c32c3c32e28697c553fa6d9", + "https://deno.land/std@0.170.0/async/mux_async_iterator.ts": "770a0ff26c59f8bbbda6b703a2235f04e379f73238e8d66a087edc68c2a2c35f", + "https://deno.land/std@0.170.0/async/pool.ts": "6854d8cd675a74c73391c82005cbbe4cc58183bddcd1fbbd7c2bcda42b61cf69", + "https://deno.land/std@0.170.0/async/retry.ts": "e8e5173623915bbc0ddc537698fa418cf875456c347eda1ed453528645b42e67", + "https://deno.land/std@0.170.0/async/tee.ts": "3a47cc4e9a940904fd4341f0224907e199121c80b831faa5ec2b054c6d2eff5e", + "https://deno.land/std@0.170.0/http/server.ts": "1b93c76cd415d7b6ad0ae36c17ccb9149b23f4dff018f7d5aa1ab5c36637eb45", + "https://jspm.dev/lodash-es": "bd969abe143ae52e316a482de288c33f697a78f113ecddd0893d75a668ea7d62", + "https://jspm.dev/npm:lodash-es@4.17.21/_/00eee99c.js": "37070aa0478b631d73a493088920e39e809c4c8887c4a5ede242ad8cbfb95758", + "https://jspm.dev/npm:lodash-es@4.17.21/_/01736674.js": "2bedb78993d68efec3a9f12a882f71679a2a361b3d25d714e293f8b5b2de51bc", + "https://jspm.dev/npm:lodash-es@4.17.21/_/02d6c299.js": "6fe98cef98517a9381fa22636fd0557a8ee146d224e5821ebdbe0740ae475983", + "https://jspm.dev/npm:lodash-es@4.17.21/_/05d03ed7.js": "3f8b9275e36ce11dc34d8a355fea3a204ce200fdea42c1644c9566bfd531f542", + "https://jspm.dev/npm:lodash-es@4.17.21/_/0b311353.js": "416555d524b35bd3bcddcad23cb4f9400b18df197da272a0e34349b49c2da289", + "https://jspm.dev/npm:lodash-es@4.17.21/_/0b5bcb97.js": "f85857f8c923cd0dc96b8e077c724238b19d976c622675f693037c2fddda8c8b", + "https://jspm.dev/npm:lodash-es@4.17.21/_/0bb20403.js": "13d1eec9a9ae4403fcfe97aa85d11f581a43b05a5f43a436b43f010b24a93522", + "https://jspm.dev/npm:lodash-es@4.17.21/_/0c0b1c46.js": "e06d62e267fd70698fc849dbee243bce22a4c67b27a95e229a709ae7927e9b4b", + "https://jspm.dev/npm:lodash-es@4.17.21/_/10c2be66.js": "fef2a0411495287081dcdb487f8a19056d163988822f175a532303e45e26bdc4", + "https://jspm.dev/npm:lodash-es@4.17.21/_/130bf524.js": "1a3941e656304ee9247bfc10de18e8f15c530ebc326624a68b65ec596144c0a8", + "https://jspm.dev/npm:lodash-es@4.17.21/_/1383de04.js": "f11f6cf2b27b5ec70710e992415193550776673e2c2df05e2ee81a580239c9f5", + "https://jspm.dev/npm:lodash-es@4.17.21/_/1386403c.js": "2832b0a6d4a1a7d4050ed24a3576451a7fc9b923aad3cfa18aa78cbd8007a91b", + "https://jspm.dev/npm:lodash-es@4.17.21/_/1545748e.js": "3770903adc448f2d3d6e6e03c9c34d33c913e224b87646082be11f11fc88d562", + "https://jspm.dev/npm:lodash-es@4.17.21/_/16393db3.js": "a5095c7aa6f2d717a5ecf4845e3ea9f30c093f5211cdd6928275b1983dbc5084", + "https://jspm.dev/npm:lodash-es@4.17.21/_/17fb905d.js": "00f0bc1a6cd1564dc7812bba6b82e432eafe079762b9a90c83f56d8cc32a8563", + "https://jspm.dev/npm:lodash-es@4.17.21/_/19315954.js": "0be2bac09cd0fd8df4fd7805b4674f9ffa534ba3a5ea98fddde2faefd436dcfc", + "https://jspm.dev/npm:lodash-es@4.17.21/_/1d34989e.js": "64cbd52b2880f70c665a9b41d74f72307d326fd90c34e429300c7221453f6436", + "https://jspm.dev/npm:lodash-es@4.17.21/_/1dfe23ae.js": "813088b806241074f3f000e435ff0e21864eb6df27127a32eedcbb868f4c788a", + "https://jspm.dev/npm:lodash-es@4.17.21/_/1e0e86cd.js": "980593e57c9215cfb61e6c34bbedbbe42c1507d175b2cd603ffc91aad2ad647c", + "https://jspm.dev/npm:lodash-es@4.17.21/_/203a09f2.js": "62eb56ac3aceb71788219ff1b2f56f3be858ab53f059b69585938b1691cde0bd", + "https://jspm.dev/npm:lodash-es@4.17.21/_/24eddd3d.js": "2dc23d60b9e3977a0db4aed01d2e584aa87d94a58750559db88e5ca4ad9d71a6", + "https://jspm.dev/npm:lodash-es@4.17.21/_/27733a90.js": "2d8afdb8dc0bdb492f088915bad9e87da92f7c962cca96df370d8c3f8767ca17", + "https://jspm.dev/npm:lodash-es@4.17.21/_/28e2aab9.js": "539cef76090d73da43e2506c72e6cc9d2c3644c85557d11698d6d6f0ad796832", + "https://jspm.dev/npm:lodash-es@4.17.21/_/2a83f3a2.js": "d82cba4f089f95e365b979287c7781a7791add7e1f3f5fff83a3c1658035c284", + "https://jspm.dev/npm:lodash-es@4.17.21/_/2b1d23fe.js": "8afce7d40a560985789df5242f1391d581e1168d943b2fde77c6bac7d6e8ce35", + "https://jspm.dev/npm:lodash-es@4.17.21/_/2d655bf5.js": "51782fa05b78d8df3b0eab334b9319a1d6d2c76c9f680522c3151ef8d8750db3", + "https://jspm.dev/npm:lodash-es@4.17.21/_/30141f0f.js": "b39b533cb1df9d177e94f19c599052646a3e6761a080ac3488bdbcd84ae9a163", + "https://jspm.dev/npm:lodash-es@4.17.21/_/3151fc5f.js": "dbf0065b61f72e0e9d73aa8df49cdf0004271e364dfbfe175c499b98b49a7bee", + "https://jspm.dev/npm:lodash-es@4.17.21/_/31bf9ac3.js": "7dbe1e52f19dc675be8c3addd35ea7a9c6b70c93c4d5821a310c0a629516c6e9", + "https://jspm.dev/npm:lodash-es@4.17.21/_/36c815fc.js": "80f3fd5c8e1c75d840d0b01dd6bc1125926ec1f61bd39d504a578464602a50e0", + "https://jspm.dev/npm:lodash-es@4.17.21/_/38394896.js": "c6ef95c557f1eba137d41a232ead46d7775d91d93f1640cbe9b072298baa3707", + "https://jspm.dev/npm:lodash-es@4.17.21/_/399d274a.js": "ca843f79d6c6f71e3b89d02e850417884f1296ad6300baee52804326a354920a", + "https://jspm.dev/npm:lodash-es@4.17.21/_/3a395ce1.js": "d658b0c52d7aad0e1e76920320a74fc36488f8fd8023208a69bf7fcb1327cd7b", + "https://jspm.dev/npm:lodash-es@4.17.21/_/3cfb9cd3.js": "c8d0c25ca446ced635aa39de4b741031f3b0ef778669d69fe05c20dc49428188", + "https://jspm.dev/npm:lodash-es@4.17.21/_/3d95c57d.js": "bb9274bf53afea744b1138dddbb8e5ef8866229f661b4cba131d6158ad90cca4", + "https://jspm.dev/npm:lodash-es@4.17.21/_/402c5d7a.js": "8bf062d4423f6f6a7f9c50bd5e929f91f8df740591a5f254630ff559179c983f", + "https://jspm.dev/npm:lodash-es@4.17.21/_/407ebd0d.js": "a558f31bd1e749e84084f90a19a19df72b80e089ee16e69dd022ba34d8b553c8", + "https://jspm.dev/npm:lodash-es@4.17.21/_/43b5d56d.js": "af04041dd2dc11d0ee0967c002d12dfb09f16745e5575849a16d343c92c4c071", + "https://jspm.dev/npm:lodash-es@4.17.21/_/463e7889.js": "ac52074f7a4e4c47c3339e813bb2623f6c486b68f0f58cc9023b6fff0fa581a5", + "https://jspm.dev/npm:lodash-es@4.17.21/_/48027737.js": "5048145a8eec822e1c810854d50b5200eb9db397017b17ff6d9f00f69fa31672", + "https://jspm.dev/npm:lodash-es@4.17.21/_/484e8999.js": "58b03040e5caa0c0e2109c3846cc6bab5df92c4d27ec4224159ecce9406e2903", + "https://jspm.dev/npm:lodash-es@4.17.21/_/4d837337.js": "854450a64703426033bf70c2c8a6dca8fc88c6cef2e569f6ed38cd535874e84d", + "https://jspm.dev/npm:lodash-es@4.17.21/_/502197cf.js": "6fea2a2ca31fbc71a3727bde69ec982fb0e20eb0b75ca703960fd57b428f464f", + "https://jspm.dev/npm:lodash-es@4.17.21/_/51a9bdd4.js": "4de759414b19f610be5f380bf07ac2ae8da66b59249c9ea74a0061717ec281c4", + "https://jspm.dev/npm:lodash-es@4.17.21/_/53bd6314.js": "023303433119467c1a845e3594c9b21c2ef6b238b76edc196759fd31f6146da4", + "https://jspm.dev/npm:lodash-es@4.17.21/_/56765766.js": "ec493b01df613f602d488b2bb3caa13bdc3c522a86eaeec3dadb5de33b1890d6", + "https://jspm.dev/npm:lodash-es@4.17.21/_/5839515d.js": "ee0762bcb9a20e698eea69f971b9b91d172ec39f5a513a1cd36b8e0daeb81220", + "https://jspm.dev/npm:lodash-es@4.17.21/_/585c9edc.js": "c89d4b434be7deb2c1a7e1de856fbe69aa37125411c8fd6b6b05241b90883ff5", + "https://jspm.dev/npm:lodash-es@4.17.21/_/592507a7.js": "76b75d86efd915c46d53c07aa8d1f2c0083c043747afde898a96a9023f862b68", + "https://jspm.dev/npm:lodash-es@4.17.21/_/5c0e4804.js": "10bf72afaee300056346251d07c085f731b67f6725e0abf6f471c8c765ac719b", + "https://jspm.dev/npm:lodash-es@4.17.21/_/5f448d66.js": "57f7ca9d4574963a160b9cc9e21a31b5e274b03f1f3d390a327ae05e6da3e313", + "https://jspm.dev/npm:lodash-es@4.17.21/_/5feb7f4d.js": "77a9344c0752364af435ed34ecfebc2eeedf1b8d5fff00a54d7eb29f33b48121", + "https://jspm.dev/npm:lodash-es@4.17.21/_/60f3bb4b.js": "d6e6f5a638db2cd61d9edc4eea06557158bfe4c36432f3f91b6f0613325fbb7d", + "https://jspm.dev/npm:lodash-es@4.17.21/_/635961f9.js": "71317f9cf5723be1bd660582dc67d14f3da9acd2b69a3c28b177a55ecd302215", + "https://jspm.dev/npm:lodash-es@4.17.21/_/65103b5d.js": "ee5510d5ebf566c883df89bd7942c579a3d8fb9dd279ad53bb71b48df22e1ea2", + "https://jspm.dev/npm:lodash-es@4.17.21/_/66f45db3.js": "b0e86aa06314c4129c6526a11fc088879750c2799938f5e5a13595a164a90f6a", + "https://jspm.dev/npm:lodash-es@4.17.21/_/6703045c.js": "6198501112257dd9e6ecb9b5c57a594cdaf37af777fce5ff83684b19e47f974c", + "https://jspm.dev/npm:lodash-es@4.17.21/_/67807643.js": "dfd3e7795b80ce39d52263067985032c4751eede9c6eeff503cf59995a6ab272", + "https://jspm.dev/npm:lodash-es@4.17.21/_/6fb96f49.js": "d933516b8a1a67bd0ff40fe3fd5ee3789d814125b4d787abe81a60eddd1271eb", + "https://jspm.dev/npm:lodash-es@4.17.21/_/703e5e28.js": "4dc6c69c7955c9260a874b1a06979c6f4923fae4197c86277f3453e8bd4d16cd", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7100b469.js": "4e2b3570f10e1bf90b687dd342b935b60ee6a180bbf3f377b4bfb41ac21b6d0f", + "https://jspm.dev/npm:lodash-es@4.17.21/_/73372287.js": "fb96dce6428c3fb5fec2317a08f86850f31367af5a18d73753ca40e140a7a5d2", + "https://jspm.dev/npm:lodash-es@4.17.21/_/75cff482.js": "182b02e552b20319f058a9f4c0c180718bb1bfaaf74aed67d5e6972a231dde8e", + "https://jspm.dev/npm:lodash-es@4.17.21/_/76ea3370.js": "8d1f899618e63ba94489bddd8d80a2c62dc07b3f69cacf48e9dc7ed16fe586e0", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7801f571.js": "a20305d64ee42a5bb7938e62dae0c806af207dd32125bf2e2c0d5021fe944523", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7953e050.js": "3db506ed2c3c531038244dce34cd5dbfdf83e3bb2bec81326b667c25fd00c4ce", + "https://jspm.dev/npm:lodash-es@4.17.21/_/796fa7c7.js": "13a4ae014d4e80db42128df3439935f47e9c80520998bc8b3179490631ebe776", + "https://jspm.dev/npm:lodash-es@4.17.21/_/79a1b287.js": "838dc4f43daf1247a7afdf17094936c5a75ae805404c6ea8e338c891d8c9a6ac", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7a7ec766.js": "dee0686a9fbde7f463698fe010d61287cb3afbbb65d746c44cbba7bda82c46b9", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7a86998d.js": "580be03b87915a1a7c58161bcc8ecf8622e4b667fa9d7f73eff04247638215b8", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7bbc195f.js": "4324b885bb1c31e1d839f9322e06643fbcbdc92c5fa67ff7a4e80ae5b94d4fdb", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7e70392a.js": "72a4cd7ee7882df13ccb8d9271171ea0117f1c3b16a9d60c1edd27b80153d63f", + "https://jspm.dev/npm:lodash-es@4.17.21/_/7fcaefab.js": "7022d8cffed88a437cac03dc06cb5dc4705d69b2ec97f46bed07c881a108f252", + "https://jspm.dev/npm:lodash-es@4.17.21/_/822773d9.js": "87f8b42251a27a2fe97e56dde36926308b3a594949af1b196decb881f0aae145", + "https://jspm.dev/npm:lodash-es@4.17.21/_/841bb6c0.js": "a18a19d08c179a17fc105d40e2627fc35244555c22aac2b3cb88d78a112cc63f", + "https://jspm.dev/npm:lodash-es@4.17.21/_/874eb754.js": "4a68b137ae16b855946f71115bc42122415aee29d3081e6663b12b57115c1c15", + "https://jspm.dev/npm:lodash-es@4.17.21/_/87e6bc8a.js": "62b7398cc1ff6a6dfe705c11fe4f8637d3d3b89d6d59fdd57b399dd2aa39e021", + "https://jspm.dev/npm:lodash-es@4.17.21/_/88d7c693.js": "eb6b1a07b8341a677684f2420019c6d1f0e7cf59389cc19570c1ac2599262aae", + "https://jspm.dev/npm:lodash-es@4.17.21/_/894288ab.js": "90ee762097c230c8d807d8e4f7d58be7efaa1c0d6fed92f011ba82770082bf4c", + "https://jspm.dev/npm:lodash-es@4.17.21/_/8babf61e.js": "7d3735645ad3d5f40d3ffe0e20ef5e4ec03d4873f02a211b300f79f16240c4fb", + "https://jspm.dev/npm:lodash-es@4.17.21/_/8bc5f7f3.js": "ac061a69c7cc70d4d8072ba9a10605188946dfc6662735232db513b3b9839b4e", + "https://jspm.dev/npm:lodash-es@4.17.21/_/8d4d122f.js": "ba1e9835b009e90fd3dd5cab7053c2ca7fe4aeb319812ec422692cb95582a83a", + "https://jspm.dev/npm:lodash-es@4.17.21/_/8d8705aa.js": "23b2c68207f3e3dd8b449b9d4f190e4620ac22d5d7a12ad69859cb0b9a51980c", + "https://jspm.dev/npm:lodash-es@4.17.21/_/8fb9d566.js": "68eefe77564498475dabafa07be0076eba21cd941966e33822915e2da5b35c37", + "https://jspm.dev/npm:lodash-es@4.17.21/_/9056e65a.js": "e00f21dc84616751a13b6590a81c1c52b3a70ec32c5223a0ee64e970d6326fda", + "https://jspm.dev/npm:lodash-es@4.17.21/_/98062778.js": "43e805ed06acc9d93aa6e7f7e9e3571c941a18d3bf4e12c6a3d36802d2eee6c3", + "https://jspm.dev/npm:lodash-es@4.17.21/_/986b7729.js": "921aaaa196ad899f72d955b0a84689f874826562132ec43797c7df1c8e2f8edc", + "https://jspm.dev/npm:lodash-es@4.17.21/_/98df1741.js": "ce999fd4ce4e2637497fb9a2b158b5286a6be9a397947201bc7da0dabf932456", + "https://jspm.dev/npm:lodash-es@4.17.21/_/9950791a.js": "fca503f242e2c1d2570db9cad24f0217724e8dad2e74fb96bde27da8fbbc5e10", + "https://jspm.dev/npm:lodash-es@4.17.21/_/9bf895a3.js": "8028ad9529cfcb56f5c0f23c89e1523680ad3caa6564660483863d2319c164ea", + "https://jspm.dev/npm:lodash-es@4.17.21/_/9c462ada.js": "9c097bedd311655ed640d3c6cf7c50bf17dccd0f2973176309e654ae8ed3b6db", + "https://jspm.dev/npm:lodash-es@4.17.21/_/9db0989d.js": "f79eb7b4fb71aec9f77ddd22be0fecf8058eac98dff324f68a6a1735c6f99df2", + "https://jspm.dev/npm:lodash-es@4.17.21/_/9f137e5b.js": "30996c0bf954eaef8e195011b13250947b2ece8cdb9f3a8416474b302e7a64c6", + "https://jspm.dev/npm:lodash-es@4.17.21/_/a4e96b24.js": "c8c8498aab385ea8c73c12c884e1ad6279c2adc116093a6cafa5795705620f6d", + "https://jspm.dev/npm:lodash-es@4.17.21/_/a8ebb5d4.js": "15282b92bbddc4040df4745a1045d28449e4919d3909b9b2f706b4a5f3683975", + "https://jspm.dev/npm:lodash-es@4.17.21/_/ad435a40.js": "01f97d1f669b867f15c228b7e53e66dd81ba7799202546ecc17d3c7245e64471", + "https://jspm.dev/npm:lodash-es@4.17.21/_/b0d71dac.js": "07a29f1ff46e4411f9b63f5082f63dbe45ce88c67688159c32088a95b8beaa75", + "https://jspm.dev/npm:lodash-es@4.17.21/_/b17df163.js": "219baa925ae221c086fc7bf7487091c02713ab541475818de7c7bb381fa6b1d0", + "https://jspm.dev/npm:lodash-es@4.17.21/_/b1d05723.js": "d4f60198c50c33679afd356b5391030982d11f187b39fac285ad4c9fa4d4f272", + "https://jspm.dev/npm:lodash-es@4.17.21/_/b225817a.js": "750214238a44dbb94665795080ccde95c44d52547e3dad248d50354c1a411b83", + "https://jspm.dev/npm:lodash-es@4.17.21/_/b731ddec.js": "392c581875c331eede5d0376fe9bb31977d3efc7de72217059ed81139478b08d", + "https://jspm.dev/npm:lodash-es@4.17.21/_/bda11cda.js": "c98c5df65d3d4662863207e02cec664de57f463b3c7c79383e8d015abf4e4f3e", + "https://jspm.dev/npm:lodash-es@4.17.21/_/be1f91e4.js": "3896ea6a62b3d3631a0a3141bbc5c60e91ebb1ce3da583124adf673dcc670182", + "https://jspm.dev/npm:lodash-es@4.17.21/_/c0862ccb.js": "2ce24f0af749237355cd91eaf5a4223e08d0e33391a625006cc82281fa0c706c", + "https://jspm.dev/npm:lodash-es@4.17.21/_/c5f390e5.js": "965a712b7146026be20665c514c00ec77c73ebab9302f06a278806f656e24d11", + "https://jspm.dev/npm:lodash-es@4.17.21/_/c7012d8a.js": "99719f1416495375967029974daa1944750a2046a65a3b48dbd1d36ff79c3f59", + "https://jspm.dev/npm:lodash-es@4.17.21/_/c952862c.js": "0226be118dc33fb52ced27a9639c18fa0347695dbdb6a1abc33eb34b5d4f4458", + "https://jspm.dev/npm:lodash-es@4.17.21/_/c96a0489.js": "d5d59f61eed1703618cc70376a473ec97c98e26c585d4000bf41a678c0dde1df", + "https://jspm.dev/npm:lodash-es@4.17.21/_/cc60ce64.js": "e7a59d1cc18e203fe15d32dce0ae80d5dc9c9173a68f3cc8536f906631c08b21", + "https://jspm.dev/npm:lodash-es@4.17.21/_/cf0de6d8.js": "7853c9c380abecaba7128bcd4c221c90486d2361c06dde43f5a695306abbce5d", + "https://jspm.dev/npm:lodash-es@4.17.21/_/d14d4efa.js": "ab48edb7a88caeffda97f9b0d4c581ebe220dce27b718f997977de88bbc512e7", + "https://jspm.dev/npm:lodash-es@4.17.21/_/d32deed4.js": "e7e959a4d28ba39cdb59ce7f002ead6adc7d7e62ab1496c4dc460452d6452b2e", + "https://jspm.dev/npm:lodash-es@4.17.21/_/d4a1ebe8.js": "1eaa0d642534855d16c1f13fa2a82051dd33bfe6608dfcd28aff94ed9c0bc2e9", + "https://jspm.dev/npm:lodash-es@4.17.21/_/d9fd2a7c.js": "6f2dfdcaf1678853ffa4b36faa392b2df50903c40522b85ad6e3135e5464f98b", + "https://jspm.dev/npm:lodash-es@4.17.21/_/da987058.js": "a43aa826c50185b6cdf59831750b5deae4510d36a34dcbffaae842845740b13a", + "https://jspm.dev/npm:lodash-es@4.17.21/_/db85cb17.js": "be21f10d6372c7af85a7a4124768860c37c7a3e58b19a2d728cfdf7216218e55", + "https://jspm.dev/npm:lodash-es@4.17.21/_/dcfc3998.js": "663caa0605460b5ba360e84d3d435ea4ef4ec2573f9346fc36ca9f0d3f731566", + "https://jspm.dev/npm:lodash-es@4.17.21/_/def5a505.js": "f3224b338bad3da8fedeb47bfb4023888baf8d5387745911ee4dcb04f225d366", + "https://jspm.dev/npm:lodash-es@4.17.21/_/df9293ee.js": "73776a64dc12f1413646bfd2d250ad854c64b9ef172fd4c6d77b93fa332f91e2", + "https://jspm.dev/npm:lodash-es@4.17.21/_/e10cd6f2.js": "c54b7034d8a82a2d63ca542eba8f17296c4a05beec312735a44dc17a2770a950", + "https://jspm.dev/npm:lodash-es@4.17.21/_/e1d4e071.js": "8feb9df6185324d58ca1167d9c14873c53e7e7ed396238756da6c451189677e8", + "https://jspm.dev/npm:lodash-es@4.17.21/_/e524acca.js": "f1bd4a54716f512f4a3249e37f6dcc3281d09ae0053f76758bcb27579dd6d6d7", + "https://jspm.dev/npm:lodash-es@4.17.21/_/e52eecc0.js": "92531672d0331c7101f0dba92dcab787f5a55472cf965e9a94c7d0a4dfe2c600", + "https://jspm.dev/npm:lodash-es@4.17.21/_/e6902cb9.js": "e075f9be90c0d1c57148a546b9d3e5e68c6537421163478168f07dced72d5aa6", + "https://jspm.dev/npm:lodash-es@4.17.21/_/e6cabbd0.js": "2549cbe0827d2754abb5b45f64b7e96ae24fecfbb802859ecf8b0d5ad58d6898", + "https://jspm.dev/npm:lodash-es@4.17.21/_/e8626fab.js": "a0eb1aac0507355c359588ca71ec7d91d5c269542ce0a29242fe005b49378a3b", + "https://jspm.dev/npm:lodash-es@4.17.21/_/ebbec2c8.js": "2e4d7652a563e35d3213c54e00bdd8d2b6c8bd87f1734c3c38ddd27a9d062e01", + "https://jspm.dev/npm:lodash-es@4.17.21/_/f01ae9b5.js": "295cdcaa1029b51ee863fc0cf9e819bfeae55ee2a7df367483e63712e3cebfb8", + "https://jspm.dev/npm:lodash-es@4.17.21/_/f08a6ffe.js": "9109344bf0776b2c30de2dcc4b8d5f58dc32aee48e649f11811f9ec1177db9e1", + "https://jspm.dev/npm:lodash-es@4.17.21/_/f945550f.js": "cf04071a967ad944ea086be9822f09a9e52ca4d17c9c9db8cd65eb1f80ab53b1", + "https://jspm.dev/npm:lodash-es@4.17.21/_/fc09277a.js": "2706d821dd6e7f5ef880f6b9e631efd44949a0e081a723063d2fda09929fcdc0", + "https://jspm.dev/npm:lodash-es@4.17.21/_/fccdb4f4.js": "767bd249ef3089cb7da63149080211025236694919cc4b1007f1c7e4b9d3fffd", + "https://jspm.dev/npm:lodash-es@4.17.21/_/ff41ecfb.js": "7d63ff01dce794a12ac4415ef94d9d5f2bb476cb7adc97aabfc7b586bd1aa488", + "https://jspm.dev/npm:lodash-es@4.17.21/_/ffc0ea6b.js": "9c3f20833420019e26371ee0c3e90e3a2704e391d685d3297a78322eef4d62db", + "https://jspm.dev/npm:lodash-es@4.17.21/_arrayEach": "afcc5a28962d983cda016f265ff9918341e9b2218448c0935a71c6818ac489cd", + "https://jspm.dev/npm:lodash-es@4.17.21/_arrayEvery": "960bbd642b7fe2cce6d936f8ea714d9e31ada5673a18b5efb8c417b6c0a7ce52", + "https://jspm.dev/npm:lodash-es@4.17.21/_arrayFilter": "292cefd33bbd5b86d31bb10ef62bda753dddd0c6b03b47af2d80eaab214f1153", + "https://jspm.dev/npm:lodash-es@4.17.21/_arrayMap": "a832d5f9c633a539c3bd1ead4eab96c2e55a413f8df07946528c17c574107670", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseClone": "1500b9c33c0c4cf22be69a7e694a55af966c7c37817ce096a578884dec9a2845", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseEvery": "fb8712e564aa688d42f7bd8aac174bb8b7855b76ede1ec2242308ba739feb1da", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseForOwn": "6e44508de841e82bd162235708e69be04daafa4f41a28a87515cd4921502147a", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseHas": "62e58f125804f1a6ccb5a96d0966e921a20f7bb5a9cf0b5cb8ce5a76011ef710", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseIndexOf": "7f855822ccb438335ba078cc705d70d57412d577ce7a65848dbf991b7c4c8d5b", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseProperty": "0e64ba27c7c45d03954da0450457df1374cf082d555659d5e30ee9d2c287d668", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseRange": "8d369cafe5fff2c94b91cc6684d03c6b3f992fb56c65ca145469772a43665d80", + "https://jspm.dev/npm:lodash-es@4.17.21/_baseRest": "5ad9ff40a2ea3777c4efec69b7a354173e785e916dce915ac24457d436d830d0", + "https://jspm.dev/npm:lodash-es@4.17.21/_copyArray": "c1a8db9f2e96de5402b0c18c51d92e9a60eda26dca5875e1a351d4be40a3fe9f", + "https://jspm.dev/npm:lodash-es@4.17.21/_overRest": "3083837bb6e6c425dcf3907733bddcc1c00f3c5f0234e10754f09d1f95d66d9e", + "https://jspm.dev/npm:lodash-es@4.17.21/add.js": "1a244d164fa836db91e98f827fdcd2e405948841331a67963d2d104a4deee4fe", + "https://jspm.dev/npm:lodash-es@4.17.21/after.js": "40a42ac08f1de8fcc368309830f10ad950d35e4e1fb0ca9cd0d66565c8af956d", + "https://jspm.dev/npm:lodash-es@4.17.21/ary.js": "371e34ee852967a293b25cb8c13ab1ccfa8a3a69bca5f8ef6670144fcac70f12", + "https://jspm.dev/npm:lodash-es@4.17.21/assign": "d1128ddeb291b2a6ec867f55a75d57bba040c06592579d464339a87c459eb17a", + "https://jspm.dev/npm:lodash-es@4.17.21/assignIn.js": "2ef29b5c3d6e2e4c0e7688dc6150f721b53fe29f120b273b1ebfd17e5fe97f14", + "https://jspm.dev/npm:lodash-es@4.17.21/assignInWith.js": "28d2a5b338cc1d0ed4150e5b0fe08f36419a31e23e43d82e3ff99f93b0e5c87a", + "https://jspm.dev/npm:lodash-es@4.17.21/assignWith": "5b69a43ca901c554205b5ef18d5119180233028b46e38b256ec83e14802784e9", + "https://jspm.dev/npm:lodash-es@4.17.21/at": "b8a37cdca937bcc5382ecfc758085439e525bcd1e795e1f87dc347cf4e7224b7", + "https://jspm.dev/npm:lodash-es@4.17.21/attempt": "c605ec552de80c9acba609995def59deabf3414b5d09c2c47f43a29107928235", + "https://jspm.dev/npm:lodash-es@4.17.21/before.js": "ad21da9318faefd0c3f9323dd431040b6f1448fc7acfaf856ecc330547150eb0", + "https://jspm.dev/npm:lodash-es@4.17.21/bind": "2e807e953ab13235680bd15f5158f8b81fc0da43f9872b9c95a0deb7ea9aab62", + "https://jspm.dev/npm:lodash-es@4.17.21/bindAll.js": "d5bc48a0ffd79efcc6d1ff4db6c22d1d397184aacdc3e97adbfb0edc4e7bd562", + "https://jspm.dev/npm:lodash-es@4.17.21/bindKey.js": "a406389507d54551f85d9531e78bf2ebf681927fe229af1a3c1c6dbd7e589122", + "https://jspm.dev/npm:lodash-es@4.17.21/camelCase": "75fbbf93244ba1e76d3ac335b37761671e520b411bdff6a9a93bbddd1d289eba", + "https://jspm.dev/npm:lodash-es@4.17.21/capitalize": "9c63b6eb33e6f848089c593811afa762bcb85ce2a8290b1c5a22a3855f1a04b9", + "https://jspm.dev/npm:lodash-es@4.17.21/castArray": "4145d6e0746e5970e2aa800ef47cf26fb41983ab968778fba9b515c10b37b4c8", + "https://jspm.dev/npm:lodash-es@4.17.21/ceil.js": "18db70461ddfa7a437e9a1b7078dc659a082777927b10bed631994103b90e28e", + "https://jspm.dev/npm:lodash-es@4.17.21/chain.js": "fc72a2ec68d56e665aa085d6f3af561c021404010acbcb1217f32b3a840f1186", + "https://jspm.dev/npm:lodash-es@4.17.21/chunk": "bf4ff5d53fd0dfdc47dd37172a4b5598f4a4000dab75dbf3e79a80064d8886a9", + "https://jspm.dev/npm:lodash-es@4.17.21/clamp": "d904ae5dbd1fcec01e8ff50fd1e533340a8d5b5a5fb2eff36faba20ab53e5bc6", + "https://jspm.dev/npm:lodash-es@4.17.21/clone": "8d1337bebebbfd685d037215948bc50c3160aace2e85e40a221312aee40cb313", + "https://jspm.dev/npm:lodash-es@4.17.21/cloneDeep": "83b61c7188bd74358ed47ede85d25d7847751e7a1505ce6f5d9d6bfff6132b37", + "https://jspm.dev/npm:lodash-es@4.17.21/cloneDeepWith": "9e59fcbfdd4687cf4ffcfec3298d2ac3a379b41fb1c6e080f602de30604f3c34", + "https://jspm.dev/npm:lodash-es@4.17.21/cloneWith.js": "64b47470fb9a091513252ea58950b11e9d4ae10b57b7dc7d326c0cdba704f273", + "https://jspm.dev/npm:lodash-es@4.17.21/commit.js": "54daa6b6a9e0650fecfc1b7016950263ffd524060c17aab04bb862175a53a486", + "https://jspm.dev/npm:lodash-es@4.17.21/compact": "c0d33d79bab072010c1ef687413c958601a7b14286ad3199e40323a828c7c9e4", + "https://jspm.dev/npm:lodash-es@4.17.21/concat": "96194b27cb82c06eff603231f0ec32d4401e3515951f7c79b372ea8fac5bbd78", + "https://jspm.dev/npm:lodash-es@4.17.21/cond.js": "7485ae05c55c659c2e5bcd9d8e0f06fb07865a242ab908ef4f46fcb56ce7042b", + "https://jspm.dev/npm:lodash-es@4.17.21/conforms.js": "c1e704643485430be899f873cd3acaeba3d7bad5f969589f08e2ea96a067ff5d", + "https://jspm.dev/npm:lodash-es@4.17.21/conformsTo.js": "cc738abf20f685269ed3c8cb2fe206cd9932ee284d31ec367c445f919b1ee5ea", + "https://jspm.dev/npm:lodash-es@4.17.21/constant": "58b50a427440a5ff93ad7e5378bbb943e2f043123f5a7e4382c79a78e2a725b2", + "https://jspm.dev/npm:lodash-es@4.17.21/countBy": "7a52f9d1f3d0ded660e1c7f1b3fb59b41de7ab6203e78a4f839da02e2617c4d1", + "https://jspm.dev/npm:lodash-es@4.17.21/create.js": "3371e9ffc9f2fc42873cbde9c4892888cef37252649cccb7f2d287cbaffce7c6", + "https://jspm.dev/npm:lodash-es@4.17.21/curry": "28f16d7394b2446d77cda07f4813d7ffd5a1c28454da36d66f33be08e44bbb67", + "https://jspm.dev/npm:lodash-es@4.17.21/curryRight.js": "22697996cfbbbee79f9292cdfe78824bab07697aacd32c776f41c6443f1cd686", + "https://jspm.dev/npm:lodash-es@4.17.21/debounce": "7348f465b2f73be2cf57114a82526aded112e3037d3d942e8f42a89787dd9ebe", + "https://jspm.dev/npm:lodash-es@4.17.21/deburr": "c381eed450b9ea635b0eeaa97289b6dba6eb8a19fea9395bdafdb291348f685f", + "https://jspm.dev/npm:lodash-es@4.17.21/defaultTo": "deedf26555de4f37837e7ea161d032dc0ebd3899d5eb62972b7ba374a3b3dfc2", + "https://jspm.dev/npm:lodash-es@4.17.21/defaults": "8dd3734fdb1c307b1f5c1a2c99f471039d5b2ced0a0b689a192645c7e740eb9f", + "https://jspm.dev/npm:lodash-es@4.17.21/defaultsDeep": "9f2ad67e4cde41d286946a37a0161d5b6149ddfe62ae231cb8df495318c60c5d", + "https://jspm.dev/npm:lodash-es@4.17.21/defer": "734716e2d145426d806717880e5e660c46296e051a4aff1f206871b5e656bed9", + "https://jspm.dev/npm:lodash-es@4.17.21/delay": "472e971debb0bd7736679d4a6b765a9d6253aac451aa1e9bded6d899e31bf977", + "https://jspm.dev/npm:lodash-es@4.17.21/difference": "0b5b72bde60b37a1a172c495c78ac8d373e73ffc66de1da6177e75b4175c465e", + "https://jspm.dev/npm:lodash-es@4.17.21/differenceBy": "2df180c384f719e55bf9f94c1ddee7b14daa01f54c1df69cc823e94ae921a50d", + "https://jspm.dev/npm:lodash-es@4.17.21/differenceWith": "eb1b0c612465eaa5ae14ac36145d592d348dadcfd90d2fee4589597d04ca34fc", + "https://jspm.dev/npm:lodash-es@4.17.21/divide.js": "4ab52e3c1504e6641a7f5bbc7cdf88c610e99600eff75e4917d46c78581cd845", + "https://jspm.dev/npm:lodash-es@4.17.21/drop": "6c732193e5e681dff00f6dd135a36435c0b70ec6790208b782533d5cf5ddd79d", + "https://jspm.dev/npm:lodash-es@4.17.21/dropRight": "cd400b7bce9b92d244929e37d8dec3a284c230916b4fed3388b311c489a79593", + "https://jspm.dev/npm:lodash-es@4.17.21/dropRightWhile.js": "6ff589a0ba2795dc56aaafac35f0fb5607d8a5a125d4e7ea2bc39696acdc33f8", + "https://jspm.dev/npm:lodash-es@4.17.21/dropWhile.js": "8a46e9b4026f5e48cfd28f365778974e103fa0248dc4de1af69dccb12053aa55", + "https://jspm.dev/npm:lodash-es@4.17.21/each": "2615ee61c1b07fba411a4df3d95657fbe9857c1cb5f16674b95d7bd98ecffdf4", + "https://jspm.dev/npm:lodash-es@4.17.21/eachRight": "7ec260f20b32cdc9e1cb0a877e63649da245bfb811f64a0f9228a8413b7c5ca4", + "https://jspm.dev/npm:lodash-es@4.17.21/endsWith": "7c103441d2f28bcae9ec2c11673ae913702564bd2d49c65aa41e1e49108df2f5", + "https://jspm.dev/npm:lodash-es@4.17.21/entries": "b997a412de36d37dc5cd10b5818a993d3ad8aafc07f1042f94cec32989e87bc0", + "https://jspm.dev/npm:lodash-es@4.17.21/entriesIn.js": "bdb3972ed805d0a971f25cecf92d8425ae15f1de276ea3aaf8182d2829170e08", + "https://jspm.dev/npm:lodash-es@4.17.21/eq": "a6960b851bb2f92f51bcc8a398387da815f717f9cc083cc3ed594e9d82fe667e", + "https://jspm.dev/npm:lodash-es@4.17.21/escape.js": "d9ef15d72b3e9a7bb275a05d0278da592b7144684030b6c9bab153e54130c2b6", + "https://jspm.dev/npm:lodash-es@4.17.21/escapeRegExp": "d2db3897830c406f16baca56bddfb5c53a583ae4c9233c46d689a71f7c25796a", + "https://jspm.dev/npm:lodash-es@4.17.21/every": "d8cb1c33006a6f937682744bcd03306d32dfb93083f91724d46152bdcd516562", + "https://jspm.dev/npm:lodash-es@4.17.21/extend": "518814c7eeb2ff5b7aff8a4bfa29d35fb83be827bb41001d2f44500c01108565", + "https://jspm.dev/npm:lodash-es@4.17.21/extendWith": "cffcfaca39feaa7de87db7318fd07df5995a94f82692cf166b650083b6d3f505", + "https://jspm.dev/npm:lodash-es@4.17.21/fill": "0cb81c66f155aa979a3d42ddcccaef9ced584f3442f5095d0ddd69c9eddad25d", + "https://jspm.dev/npm:lodash-es@4.17.21/filter": "612c5fb488424976bb20e4e5e24d8e1f90c4744a16760417162fbfa81a57a399", + "https://jspm.dev/npm:lodash-es@4.17.21/find": "128407773c64cddd3d9fcd00130c4de0a3f8f21c2457e2214aaf4ff6cca07e0b", + "https://jspm.dev/npm:lodash-es@4.17.21/findIndex": "eb33f75a9824515c81a52d58a06722757ffec6892af160770dd6c8e22d030e1b", + "https://jspm.dev/npm:lodash-es@4.17.21/findKey": "93362f5a57b4997c7528266f755492ff5d9aa1a53df1fad1950d471f13bc06ca", + "https://jspm.dev/npm:lodash-es@4.17.21/findLast": "abf7a400942675894b0d327d711d11344500b9b83630c68bbc9bb75f15987a47", + "https://jspm.dev/npm:lodash-es@4.17.21/findLastIndex.js": "6ffea5aa4e47ccff4a95f6561f8d48e72fb13191e24cb2a4822fd390ded7b4e3", + "https://jspm.dev/npm:lodash-es@4.17.21/findLastKey.js": "72ece71fb81825378f0becf8dc799c25a913ee5c3b39dac6f38c44b501a2f5c4", + "https://jspm.dev/npm:lodash-es@4.17.21/first": "5ce0037fff3a845be31070f201058dbe4e0b19f321bc5ca1407f4cf7df68e55f", + "https://jspm.dev/npm:lodash-es@4.17.21/flatMap": "8c4202b819100033d25cc1a51206554c9fcc7c9d6e4dce309980fa20ce3606cb", + "https://jspm.dev/npm:lodash-es@4.17.21/flatMapDeep.js": "2c5923630b12d2b19481da1937de086ba534d460fba6e4a017f13c6c48595618", + "https://jspm.dev/npm:lodash-es@4.17.21/flatMapDepth.js": "bede4fa48f887d7cedcdaeee913a51bda3ac6f8067b2d2a5bd89f6ffb514f9be", + "https://jspm.dev/npm:lodash-es@4.17.21/flatten": "ea5f55d735fc9fdc36db6fdc89f1f9cf6ebc31472752b25f00e6a3509833367b", + "https://jspm.dev/npm:lodash-es@4.17.21/flattenDeep": "c2dbe1185458cd6d1c0679e37a668201a38b5c99d20ad250e942c53ab93696b0", + "https://jspm.dev/npm:lodash-es@4.17.21/flattenDepth": "2499e2145ac7c61e68a4d88fe0781490d7fe0a30d6e086f560e2e320f8022b13", + "https://jspm.dev/npm:lodash-es@4.17.21/flip.js": "caf7d0d68817076639431907db72dfa29ca5b760cb84ba563817e7d5ac0d98af", + "https://jspm.dev/npm:lodash-es@4.17.21/floor": "1d94073557253c18de194d2ee32d907f2382541cebe68c882327b4f836f2f254", + "https://jspm.dev/npm:lodash-es@4.17.21/flow": "a05f960aa3a48951ad7bc2c75239020de228dd6f2e23237e57bb4178b45a36b0", + "https://jspm.dev/npm:lodash-es@4.17.21/flowRight": "e852d72ea3f3924648f48c098cf54b9e193eae083d47f2cc891e36fba68df0cd", + "https://jspm.dev/npm:lodash-es@4.17.21/forEach": "a78a02c29af4b506af29257629f2a5ad9bdb9de4a4fa8f08ec0a30935967db9f", + "https://jspm.dev/npm:lodash-es@4.17.21/forEachRight": "95d4a09173d6f119802072f008d671a38d1e50aff8e611224170cdefd2414973", + "https://jspm.dev/npm:lodash-es@4.17.21/forIn": "ff17b7bec3acd8c8662d8d1a72b20c95a23ba42de552fabd47f86109493117a5", + "https://jspm.dev/npm:lodash-es@4.17.21/forInRight.js": "6f6bddfc0a36cec0c793e98955774a29bd9964ea655a71f6b58c25258b352f33", + "https://jspm.dev/npm:lodash-es@4.17.21/forOwn": "ab979e1b9241805349a917a2066273c93a6faca000f19074343b95c1a3ed4908", + "https://jspm.dev/npm:lodash-es@4.17.21/forOwnRight.js": "cba1a5b206c50d77e01027dab005492f1aa5300dc487b7959063835b2ce1025a", + "https://jspm.dev/npm:lodash-es@4.17.21/fromPairs": "a79d6b6b658743af350a25c2449b7c465e282954ea233570461b6a709438c562", + "https://jspm.dev/npm:lodash-es@4.17.21/functions.js": "5c9fd4f6ddaab88f063054741c451447423019243dfabd15b53ab01d83fbeae7", + "https://jspm.dev/npm:lodash-es@4.17.21/functionsIn.js": "26b2b543db13874ec5116644459db164b40157bb08d7548c8e5cf609663de1aa", + "https://jspm.dev/npm:lodash-es@4.17.21/get": "71d9f03aefdd53fc5963bb23125c3bd55610721af3020df59bbf830fbcf136f1", + "https://jspm.dev/npm:lodash-es@4.17.21/groupBy": "a7b7b4e37bc610b6bbf19b32de0bcaab289fafd3177abde3167ec152cc9024a4", + "https://jspm.dev/npm:lodash-es@4.17.21/gt": "3f941d219c74be4354e964b20e0d957395cf7632743d05221d109a91c9b22ac4", + "https://jspm.dev/npm:lodash-es@4.17.21/gte": "a39b98c684d433bcdaecef7418f7af624b385ff6493326e5cab019d070ecdf4c", + "https://jspm.dev/npm:lodash-es@4.17.21/has": "ba047d514ef7a6b5821f3562f793d9f69901f18b1b5e8c8d98376240ea0e3948", + "https://jspm.dev/npm:lodash-es@4.17.21/hasIn": "b4eae03f1a62d4117c8c8ce5c896825aec69d858dcf15841ad0ceee2d04eb102", + "https://jspm.dev/npm:lodash-es@4.17.21/head": "89f6db54146d6638267b3c8d14f955cd751427bc823db5f676e48d8091c8d416", + "https://jspm.dev/npm:lodash-es@4.17.21/identity": "513134ab65e6acdebddc3d90ab397a247fbb5a89453a757e8de1094a96294098", + "https://jspm.dev/npm:lodash-es@4.17.21/inRange": "2ffd2677970316749fe00407ad45063e7bb6783074c6a639758387117c6130bf", + "https://jspm.dev/npm:lodash-es@4.17.21/includes": "c9bb08835b433ae16727e434d39a39d68ac6483be4a693121181b97052442bbb", + "https://jspm.dev/npm:lodash-es@4.17.21/indexOf": "b606ffbfdd3f49f7678e83bfb91f6ec89b6abe635c5ff7dc33bf9d61a867afa3", + "https://jspm.dev/npm:lodash-es@4.17.21/initial.js": "b14b4098985db54029230a24e7e7597585592bc8441c9e55a38c57c9fd062ddd", + "https://jspm.dev/npm:lodash-es@4.17.21/intersection": "2afa7c154e61dd9e86f6069b9fa5aab698b2ed59fce3eba2546441003c02bed7", + "https://jspm.dev/npm:lodash-es@4.17.21/intersectionBy": "2aa99198bbe89f92192dfce837c33bca3e30de2229d4b2df6a70da2467e1a0f6", + "https://jspm.dev/npm:lodash-es@4.17.21/intersectionWith.js": "419bcc0777f530488a71c910b504af7a27c59e7b2479aabe010f4b861eff2edc", + "https://jspm.dev/npm:lodash-es@4.17.21/invert": "1e8d757667c1712225cc0b97b39ff27bac78ec790326d20338b92f32257c23fb", + "https://jspm.dev/npm:lodash-es@4.17.21/invertBy": "0d3de74f4f04e4afbccd45926f2cb9b418a1586fc167af69d81c52844163f346", + "https://jspm.dev/npm:lodash-es@4.17.21/invoke.js": "4ec87d0d09c4b4552baa4b50cca8735dafb64ebe8a82b937a2946884991d2459", + "https://jspm.dev/npm:lodash-es@4.17.21/invokeMap.js": "12a73e1c3161e0d69c3645c2e0595448098f24a7d8cda46aef2b5d2a37cf1bd6", + "https://jspm.dev/npm:lodash-es@4.17.21/isArguments.js": "dbfc6cbf445ae1dd34ffce399ce5142cf7bc012814efeafa63cfc3ef659f2816", + "https://jspm.dev/npm:lodash-es@4.17.21/isArray": "1c0ce93062b0066c590f56f71c76958365e09bb3dc7cbd9852c3e7555f2ac74e", + "https://jspm.dev/npm:lodash-es@4.17.21/isArrayBuffer.js": "b443ce56931c1e0742303fbafdc830bc97e86117b62d68c57d935d62dc8240ba", + "https://jspm.dev/npm:lodash-es@4.17.21/isArrayLike": "aa2cbfaebfb3335a1afdeed7a519123c5022cf903b9eae1a7d93ecdb14ead41d", + "https://jspm.dev/npm:lodash-es@4.17.21/isArrayLikeObject.js": "f8d0de0abb3ad4261e3fa40b3cc42ea710121db812bf99bd444976489025a93e", + "https://jspm.dev/npm:lodash-es@4.17.21/isBoolean": "bfea211893e2a1d340246b9c399b0957868962be3b941e8ae090ab999d414856", + "https://jspm.dev/npm:lodash-es@4.17.21/isBuffer.js": "47c2417a8b0476869583288bd95fdb85ff13fa93ca95f0fd607f012f5c6ce980", + "https://jspm.dev/npm:lodash-es@4.17.21/isDate": "beb9481a329f99ef966f1fbef82ba6d31a9bbbcfed587c3545172bd702535337", + "https://jspm.dev/npm:lodash-es@4.17.21/isElement": "0c32c3fc4c70a0e4467eddc9e2f0047602cb4b7abd3301ab24e64c96ccd0ec38", + "https://jspm.dev/npm:lodash-es@4.17.21/isEmpty": "5d078d9a0809d6cc0b6320eb6dbb67aef8b9fc1793fd58d134a77272bfb48150", + "https://jspm.dev/npm:lodash-es@4.17.21/isEqual": "25683bf56f1b4c10bd041fb6e677efa81411060ffdb24cbe0bd275f3cadd543d", + "https://jspm.dev/npm:lodash-es@4.17.21/isEqualWith": "b6d0e23770c0193e2c0e0a980ab71661db53ff3e8a665d12a2bb27c125d9f578", + "https://jspm.dev/npm:lodash-es@4.17.21/isError.js": "53e5e06022cfdbc256c2fdf4dec387198b745a86db3f7004020596ca9c2c2299", + "https://jspm.dev/npm:lodash-es@4.17.21/isFinite": "64c18834587722785105bffd28a996bef68603ffa04714449ef0755bda52aa54", + "https://jspm.dev/npm:lodash-es@4.17.21/isFunction": "f8ebf17d0b6cba27259841a7415439d3c7f52517d1a5ca47e637a21a746edc9c", + "https://jspm.dev/npm:lodash-es@4.17.21/isInteger": "8c5ce4e891ad1bdfd0ac9e9f233367bec3f885b06ff40fa2d92c6718086ee5bb", + "https://jspm.dev/npm:lodash-es@4.17.21/isLength.js": "6d4ccbfc19fe11a68d0a41415fa916ec571d5a119e16d7db5fb46097d83d3865", + "https://jspm.dev/npm:lodash-es@4.17.21/isMap": "a848128c7ef8664c82bd80b52e72345a3f45a01d3db67d2d19ea1bb8c525ab3b", + "https://jspm.dev/npm:lodash-es@4.17.21/isMatch": "4ac71ae1d0cd9c9e5affbefb0d734de2d862e5211092f1b05145e3044038f0d4", + "https://jspm.dev/npm:lodash-es@4.17.21/isMatchWith.js": "8a0c7b3fd6cdff3687926303d30f442f79485fcfe6ff010cb1ccfcf6c4a562bc", + "https://jspm.dev/npm:lodash-es@4.17.21/isNaN": "ced5350082e2342e9802c5a32ae6091a452484a58a6bd9b5ac0a0db6e793130a", + "https://jspm.dev/npm:lodash-es@4.17.21/isNative.js": "d98dbdf71d79fb8432b7971d2b486504a957da8da2b4d92f3694d6b2c2bde70b", + "https://jspm.dev/npm:lodash-es@4.17.21/isNil": "5abfd43ebfdf86b2df57a62ef5eca7b7795859572ba83fcccb7d329235aba38a", + "https://jspm.dev/npm:lodash-es@4.17.21/isNull": "040436160bb4bb2034ebc40faf725637c31b22dce2e363184c6c93d733c67b84", + "https://jspm.dev/npm:lodash-es@4.17.21/isNumber": "9547dd2679b1276f0ad449715dd8c83334cb114fde995dd1ff6339db4a0e5787", + "https://jspm.dev/npm:lodash-es@4.17.21/isObject": "978d0ce182b02604111d6ae8d210616897218f1336404f6eab6b422d10f7e84f", + "https://jspm.dev/npm:lodash-es@4.17.21/isObjectLike": "89210bfce73a34cfa1180fb69b93812775e50057e78b3a583ebcacc8c3f86af7", + "https://jspm.dev/npm:lodash-es@4.17.21/isPlainObject": "8e8d9108e08a7c6ac63d30657c596161eeedc41319c9ba8fc8ed8aeac1fc7e62", + "https://jspm.dev/npm:lodash-es@4.17.21/isRegExp": "b34515b0ebac383c406cae514ce09a7e3489729fadb30985b5a968c461a970ea", + "https://jspm.dev/npm:lodash-es@4.17.21/isSafeInteger.js": "03b436d1f515996fef9b4e03659978f46488a4b8af7c75184d17aa44687c7c82", + "https://jspm.dev/npm:lodash-es@4.17.21/isSet.js": "93f1595e1b7dcb80a1ec0cac14b912dc17c0a7bfec4aa45f474ce0818a357d38", + "https://jspm.dev/npm:lodash-es@4.17.21/isString": "d61cf99d7df5f3d34c721cce203864c895c42f8952bad13076b288b707e6ff45", + "https://jspm.dev/npm:lodash-es@4.17.21/isSymbol": "b3da76c5736896ae117de3cad1acab416da654430b0633bfa280784aa5ec9002", + "https://jspm.dev/npm:lodash-es@4.17.21/isTypedArray.js": "22ce8523fafc400813c7e5dc6a0431d69d85b902c05266442ea6220e7a035155", + "https://jspm.dev/npm:lodash-es@4.17.21/isUndefined": "e09d60068ad2610cdf18e36d2dfb46b643111ad1da730339c85e59df754a6200", + "https://jspm.dev/npm:lodash-es@4.17.21/isWeakMap.js": "fcfa6e0ca9b7e654edc36d457807c677ed105db894613e780eb529e82e1dc412", + "https://jspm.dev/npm:lodash-es@4.17.21/isWeakSet.js": "46a4f5684b5be06f957846baa9efc6cc103a863e941764a01d34b24c68f03206", + "https://jspm.dev/npm:lodash-es@4.17.21/iteratee": "9055bb4450e37cc3e45ae21b9b3e6a4250e37fd362f8845bd0b467b7d118470e", + "https://jspm.dev/npm:lodash-es@4.17.21/join": "e83f5c598cdc1b58bf51c29381e59e39c2968a18c2373b63dac3d88f47190152", + "https://jspm.dev/npm:lodash-es@4.17.21/kebabCase": "31ee12d63385aa251723be025073dbb44e79bf4c3b1aca87bc130801fd4fc4f1", + "https://jspm.dev/npm:lodash-es@4.17.21/keyBy": "4fec34e1ffbc37a22c859b36b5e624d6c4102f1258c8885d04ad9de1344d1d12", + "https://jspm.dev/npm:lodash-es@4.17.21/keys": "18cf4e46f8ea44a7bbd23ede005f3227a743085e117aefd2389f8a13a20095a9", + "https://jspm.dev/npm:lodash-es@4.17.21/keysIn.js": "1f342cf51df02bcee1b64efb7ba92c5bbe2f5ace95c762f2439939c7c4fb8de1", + "https://jspm.dev/npm:lodash-es@4.17.21/last": "f899fd583be1d49b492737882d85a722be10ce778747ba091e5a52f5f3cee0d5", + "https://jspm.dev/npm:lodash-es@4.17.21/lastIndexOf.js": "2e3909d4f5f5efd5130e864fa55dd283faee067b5a021b5fa78f5f2392db01d4", + "https://jspm.dev/npm:lodash-es@4.17.21/lodash.default.js": "e7a7d61e0dfdded617e205145da2135556c23a522fec611b21cb83877351d0cf", + "https://jspm.dev/npm:lodash-es@4.17.21/lowerCase": "667bea5d334a7c5525d3fc96c632b4db90095e66a82999c325829df3261f4aa8", + "https://jspm.dev/npm:lodash-es@4.17.21/lowerFirst.js": "1e30d7494797655483f33a663b0260f47bd1a1f8047427bff9337f5cdb1776f5", + "https://jspm.dev/npm:lodash-es@4.17.21/lt": "88f318d7e1fed8f0d7f413cbdd7f8ebec3a7084ad3aae3b2f9a51d5ef06fc1ed", + "https://jspm.dev/npm:lodash-es@4.17.21/lte": "5a79259a7e5609c63fd47575f670f5b8c0980648910cbb8c35ab32d60cf88197", + "https://jspm.dev/npm:lodash-es@4.17.21/map": "cd2105f2f4aa636ee5d21748b783a7f9eb3fc492f646de0a50ca381a704b602a", + "https://jspm.dev/npm:lodash-es@4.17.21/mapKeys": "14688535243c5a56bca6957847db4c0409782bf0d1b89c236f5c052a51cfda50", + "https://jspm.dev/npm:lodash-es@4.17.21/mapValues": "883c4a6cc12937de1ccb09622e0047faef3f358163be5e3ad6ec73ec6c7e04d1", + "https://jspm.dev/npm:lodash-es@4.17.21/matches.js": "09660e354eca82406b43723ff3f6419a7b6db96edda3083499a09a6ef24621f8", + "https://jspm.dev/npm:lodash-es@4.17.21/matchesProperty.js": "b1b469f1284d5211e1cb6e2fc6fcea38c3c84f7062c1a9c46c01d4c7c1ca239c", + "https://jspm.dev/npm:lodash-es@4.17.21/max": "8d3066190d9ead2ceba4567c41391310bfcd1072d8c078183224d4c8f7407196", + "https://jspm.dev/npm:lodash-es@4.17.21/maxBy": "fd87a7b69ca4aa66e2b9b486ab06ebb44cf835e8279417f2f21f1a1fb7fcd693", + "https://jspm.dev/npm:lodash-es@4.17.21/mean": "d9112b1343e390732f9119aec27b7e0c366a0446b15f42dc19be8096db0a91cd", + "https://jspm.dev/npm:lodash-es@4.17.21/meanBy": "d18b8a7582b3660774b5d8ae958e95cf91e093107e7791e71d070dbc8c13e775", + "https://jspm.dev/npm:lodash-es@4.17.21/memoize": "52b1e8d5e8b23eac69579284a91c0b4e3b6053a7775cf9b256a2af622dbb1109", + "https://jspm.dev/npm:lodash-es@4.17.21/merge": "51ece8b39ab531022a2d1614c14e35a4f9f8dfd918ecc973327fb8b9db6df5de", + "https://jspm.dev/npm:lodash-es@4.17.21/mergeWith": "7953db5ed70d0c214dde7023bcb52d342ef524cbed97602ed2f1ec49bfe2ad35", + "https://jspm.dev/npm:lodash-es@4.17.21/method.js": "1a9266fcfd7d6aa085a014b97cf7142747eec5f0a03bae03571795e74baf1a75", + "https://jspm.dev/npm:lodash-es@4.17.21/methodOf.js": "82a2ea5254872dfa943e81ca07f2a7c6a83b35ff9703abac1d5253f8c8620c64", + "https://jspm.dev/npm:lodash-es@4.17.21/min": "3ae2c7d6dd31f887fdd88ac29e92d9a35710067c98e5a8bf361aeb116028affc", + "https://jspm.dev/npm:lodash-es@4.17.21/minBy": "d47eae2f068d99b69ddde159a20ba364b91cea35821677ac93eb1a446b85fe0a", + "https://jspm.dev/npm:lodash-es@4.17.21/mixin.js": "5f08e4aade37c0dedf813a7129b7c4d11143c8fe3bed0428ffcfda77e533f5bb", + "https://jspm.dev/npm:lodash-es@4.17.21/multiply.js": "0427ccb31697a7c18cdcbe45b36a66c01c738153c71e0f6155048ad5e2aa1051", + "https://jspm.dev/npm:lodash-es@4.17.21/negate.js": "2c2f477799b6a06b011eaf69f04735288e380b40a7bb4ff3dda38a4a55f3fd93", + "https://jspm.dev/npm:lodash-es@4.17.21/next.js": "0df719fe02d42afc21f56bfd19d7a2cf649eafdb4c1413c20955f882567eaf04", + "https://jspm.dev/npm:lodash-es@4.17.21/noop": "6de4e9f36d685ba26b65ed3cf20c358d0e56454dff87f56c12b1e0b634e8adae", + "https://jspm.dev/npm:lodash-es@4.17.21/now": "14b83605a8a699d9e80c843243a7289a4526961b6f7381a818610dcb783d9866", + "https://jspm.dev/npm:lodash-es@4.17.21/nth": "e089c18fc72731b406b5d811da7f97d74d7a42871f9fcb1de3491c38b16a71af", + "https://jspm.dev/npm:lodash-es@4.17.21/nthArg.js": "2f1aa819dc4c87d989dbfef6d9f6e1bb1e3ec0ee1341eda0575986cc4b114e26", + "https://jspm.dev/npm:lodash-es@4.17.21/omit": "f4ec8901fc1e083a68934b1cdebe0077dc9abdd1de804de1f9c8e172a4310a9c", + "https://jspm.dev/npm:lodash-es@4.17.21/omitBy": "a8536c8eacea56fa3b38e5ea2486ccb74bf0b90865d09735e67049a8dc7fcad0", + "https://jspm.dev/npm:lodash-es@4.17.21/once.js": "03681e124fb45eb55f2878852d46dedc5bc2619bd7dc2a6a761b9bcae4f5ac5e", + "https://jspm.dev/npm:lodash-es@4.17.21/orderBy": "1635ee186574cb264addc0966d29705836b161f1fa4f9d04ef8e91155d0ef118", + "https://jspm.dev/npm:lodash-es@4.17.21/over.js": "1c99c9b42647e2f161c883876a7ec7b1c2679fbbcbd94c1e021bcba804dc919e", + "https://jspm.dev/npm:lodash-es@4.17.21/overArgs.js": "4244732ef6c2e224e08b2993ef44895364c95b1ebe9e5b894e6527f6cc4308bc", + "https://jspm.dev/npm:lodash-es@4.17.21/overEvery.js": "feec5f43759f8fa346a0bc2ac704f002e2f210cfda5acd306d68bf6157667aaf", + "https://jspm.dev/npm:lodash-es@4.17.21/overSome.js": "95b782d51da8dfdb8db71c871cdd0bc76ad07306d211aaa1e0a3408642339a5b", + "https://jspm.dev/npm:lodash-es@4.17.21/pad.js": "9d4b2c84495b2b3d8fa37ab666c1b9ff2310af2aa5461931be48e42e75944464", + "https://jspm.dev/npm:lodash-es@4.17.21/padEnd": "19ad106856f54878fedd49485b735fbe59b9b9d01ad04ecec6189bc388bd5868", + "https://jspm.dev/npm:lodash-es@4.17.21/padStart": "0e9495d03198d32fb5bbcf9dd4267d5cf98d43a28ea4282a91e204689c9cae25", + "https://jspm.dev/npm:lodash-es@4.17.21/parseInt.js": "78ff6f4cbb2ed85d56a66ea392d8575e2f41ddfcda6ea123aa1a4fa637e95081", + "https://jspm.dev/npm:lodash-es@4.17.21/partial": "e72e5a700f6fb35501d00e01ddb4d16717db2d33dbb3926cd3a5da156f4e0e83", + "https://jspm.dev/npm:lodash-es@4.17.21/partialRight": "65d425b664665c3fd8dd2fb40a16e62c06551d620756e35e44024e1724950982", + "https://jspm.dev/npm:lodash-es@4.17.21/partition": "e812cd45b6f1743bc62c3da45c493a75245cdc26168c0d6bfdef7201f250dadc", + "https://jspm.dev/npm:lodash-es@4.17.21/pick": "bb8fe879a04c53b387c616d0192647b90c95738b9effbae8a52c3c2f1d1c7845", + "https://jspm.dev/npm:lodash-es@4.17.21/pickBy": "6175c477381e0626e21d7023f8583a813ea2e48f11eab448f84ea1e6bb1646a2", + "https://jspm.dev/npm:lodash-es@4.17.21/plant.js": "1a0096dd0862dc85e38e44b4b7e41a43cce455843f7f74d8dd7400c1028816a0", + "https://jspm.dev/npm:lodash-es@4.17.21/property": "c122bcc2930c91463c08d2a835aefe0819a797e92ae5f4a4a0a1d572467cca15", + "https://jspm.dev/npm:lodash-es@4.17.21/propertyOf.js": "e28cbeb33c45295a8197703f5e61b0fb773cc88401654e44039e2c23ae22b63d", + "https://jspm.dev/npm:lodash-es@4.17.21/pull": "272bdddc8e82fe87df440c724dd6cff3a9936d6b70deee343ff7e952cae39577", + "https://jspm.dev/npm:lodash-es@4.17.21/pullAll": "82a352945ae8a17df7502c4c5b41383eae0f3cc039c6d3d4e8a7d2a65a2b096c", + "https://jspm.dev/npm:lodash-es@4.17.21/pullAllBy.js": "bed0d8f1a22f2bdf2083470c7cbb9d5ce12a8663825150621f58b28506f40ad1", + "https://jspm.dev/npm:lodash-es@4.17.21/pullAllWith.js": "6b0e038ea77957b4ca07604c75c11186577cc3c8c638fc050532d9e8cdca6a62", + "https://jspm.dev/npm:lodash-es@4.17.21/pullAt.js": "22713d053fff928b60bec8b6cc30bdea279022c736c9f69bea3f82c4da8f149e", + "https://jspm.dev/npm:lodash-es@4.17.21/random": "020932ff32cc01550951035844d8f205a2ad871d92fa3c063d19e7d79834f7d4", + "https://jspm.dev/npm:lodash-es@4.17.21/range": "4d786681240aa091b2790b687c22e2dc0b98cfc71aa16040eb12291b393bff13", + "https://jspm.dev/npm:lodash-es@4.17.21/rangeRight.js": "18a15f0a7afaa9ca718752776dba0d143505768870102ad6b5308f7295ab13cf", + "https://jspm.dev/npm:lodash-es@4.17.21/rearg.js": "ff12f4caebd2b5737e4cb1b7d563b075648e6e14bd5cdc830c0b85d243de838f", + "https://jspm.dev/npm:lodash-es@4.17.21/reduce": "24e5a68af293d800509455160a845ff9faa2125140d1d76bd5741e94f29ea05a", + "https://jspm.dev/npm:lodash-es@4.17.21/reduceRight.js": "9d921a3e72cd05d528298f86ef021e2451a945acb56392170d8a0810b788ba2d", + "https://jspm.dev/npm:lodash-es@4.17.21/reject": "cd7275241297d8a7bef75e663d515cb5c4a4516188beae1df07443731173f865", + "https://jspm.dev/npm:lodash-es@4.17.21/remove": "c83d48ae4b94aad679137ac40abd61cbf63f9d9750a232c81381149d3d779688", + "https://jspm.dev/npm:lodash-es@4.17.21/repeat": "0274ef236657832fbc83925b09e7734b735f2e290f5716408575b8a9d4c70d74", + "https://jspm.dev/npm:lodash-es@4.17.21/replace.js": "0821a30151ca933e7f81637493a0392ceb396c8482b15feb99ac788874e59346", + "https://jspm.dev/npm:lodash-es@4.17.21/rest.js": "6afe2ccc293a4efa62a908b73f0db34571a46ff49ec3a485813bdfbe4ae5d8e8", + "https://jspm.dev/npm:lodash-es@4.17.21/result.js": "1de5e24793b0bbdc6076b0c65c70471dd8279e88182c7399eb781a104a657748", + "https://jspm.dev/npm:lodash-es@4.17.21/reverse": "27643bae051dd4a36f460fc6e58231c32685ee8fd5c1e8c7ffcea14bcbc3eb48", + "https://jspm.dev/npm:lodash-es@4.17.21/round": "1524dbba644c752a59ff99b5e262051139958fb6c8f06927986977cc3a472537", + "https://jspm.dev/npm:lodash-es@4.17.21/sample": "8f4403070d93a583b2a14d544f542732c1b32dd3ee8dc14ce9a53969ca4c38f0", + "https://jspm.dev/npm:lodash-es@4.17.21/sampleSize.js": "df25ef16a04a0dbbe39045c8f26c78d4deb0cd93774207f4c6e9bb891749bd15", + "https://jspm.dev/npm:lodash-es@4.17.21/set": "e7b40055c9c28d79a92375056af6425176ac1857ea1512b76b11ddb575d7a798", + "https://jspm.dev/npm:lodash-es@4.17.21/setWith.js": "aa280adb7aa15e16c2f5fea80c5ef97b7994c79b8c3e189e6aab6dd9bf7f80ad", + "https://jspm.dev/npm:lodash-es@4.17.21/shuffle": "bf0eaf7dfa2fd2ff685704e4edd02d294648b85bab771e5f8ea779bc3dc894fb", + "https://jspm.dev/npm:lodash-es@4.17.21/size": "17ed763ec28d468e432cd0ae8f52235e583b8c1fa971486e23e5a0a69f0fcb03", + "https://jspm.dev/npm:lodash-es@4.17.21/slice": "e7a12e77c31d52049966944e2b5cdc85388f6f0fd2aa7d0f77c64affd681eebd", + "https://jspm.dev/npm:lodash-es@4.17.21/snakeCase": "95ce3ed393a2f362b7eae9805e8d276af29be0fd4ec4734a6b82329ad25093aa", + "https://jspm.dev/npm:lodash-es@4.17.21/some": "3d906e134ec9517db0b469323ff12b74c70e884fc4e743b27bc78211048ea6a3", + "https://jspm.dev/npm:lodash-es@4.17.21/sortBy": "c045e5df5d5da48c8ba230745c1c649580144742e8859ef00665289c631b677c", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedIndex.js": "3db7b0d022bcee1d5b63fd047ad84d545d0fc3a8981c542d6c49361cc3b6c224", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedIndexBy.js": "bfd5cb0f5a8066c675bc9a69606dc2d205cbc87722afd84a0af13dd269ec5c38", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedIndexOf.js": "7b888c5791c7bbf1351ab83154f643f79cb7f8a25ea40adf2afa5cb27e9237e5", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedLastIndex.js": "0d7ccfc1fafc5ae96b8a2505c36f02230afdd23f7d7d4cfdeaa4af41b9e4e345", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedLastIndexBy.js": "20d94a6ef13f00c743710c8bd8910ce4df3c6050f75567a8ba23b297a4c43e91", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedLastIndexOf.js": "7dd80643234877fbad42f00cc938f82866b13d834e3ca016cc86aac3eb0b4331", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedUniq": "ca8b11fcb9d7463f2cfae2e5ae5e12498daf73497b93622837bda08babf7049c", + "https://jspm.dev/npm:lodash-es@4.17.21/sortedUniqBy.js": "6c74893752313639c2056a42243b7f549882ba79775237aa4fdc64b1e547103b", + "https://jspm.dev/npm:lodash-es@4.17.21/split": "b8c5bbfb798317625cbe66f1607a40151c6a9d53b447b309da4cd400f7972c53", + "https://jspm.dev/npm:lodash-es@4.17.21/spread.js": "b80f419c750e09f7a7b4cc96ec704c80e46458421e89f50c55a3d188bdc43373", + "https://jspm.dev/npm:lodash-es@4.17.21/startCase": "6df312b3117a76cc7df353a1de942ed48fc2cec59364a41fb07ef7ccf13ad055", + "https://jspm.dev/npm:lodash-es@4.17.21/startsWith": "e5637c64b2920b3f2604a3e7f53afab861fe530d65ea48994682c9f3f916c005", + "https://jspm.dev/npm:lodash-es@4.17.21/stubArray.js": "01c07e5061d6e15dfd25cec5306dd37f37b50b178afab3cafbffb5c77f1986d8", + "https://jspm.dev/npm:lodash-es@4.17.21/stubFalse.js": "6723abc70044d7816db59795b915e37743dc9eafe5a9a79cd42eac11c7d219cc", + "https://jspm.dev/npm:lodash-es@4.17.21/stubObject.js": "96b0edc09e57d90a3e3d7a9e99927790aecd71a9102c97273eaaf47200eea4be", + "https://jspm.dev/npm:lodash-es@4.17.21/stubString.js": "8e6fd930f048db320e2fd73d70d0cfe5bee10947772ce65051d31c0ed760c37b", + "https://jspm.dev/npm:lodash-es@4.17.21/stubTrue.js": "fc9830f6f9e59a63d39f8281baf84142d71b58bb0172ff90087813351a3a90f7", + "https://jspm.dev/npm:lodash-es@4.17.21/subtract.js": "d003a1b9ff4ced49d73a9bc66eea8f34ac87ad65683af34835c462d26fc1e1d3", + "https://jspm.dev/npm:lodash-es@4.17.21/sum": "576a656dd1d1dbc24bbe237ebfce5d0118e196330be8779444f9b4bbe2ccd544", + "https://jspm.dev/npm:lodash-es@4.17.21/sumBy": "e806c0431e1a1783a938172af9b5015aaa57c192ed6c7bae093805b2426aed05", + "https://jspm.dev/npm:lodash-es@4.17.21/tail.js": "04f8773f7ea2f687b2a61acaef7633b4288b45253327e10bd6d9b5cada6dc302", + "https://jspm.dev/npm:lodash-es@4.17.21/take": "ea6a1e801c9ecae9adc4de027b8aa7c4f63089e854c50971820320778a4942f6", + "https://jspm.dev/npm:lodash-es@4.17.21/takeRight": "322b713a5fc47f048644997464ac1cc5cc19636eccd992202d9dadccc5561033", + "https://jspm.dev/npm:lodash-es@4.17.21/takeRightWhile.js": "971ba35d2f5ff9e4983bfe3373331ba2888b3eda09788ff2b8c4e206338fd1b8", + "https://jspm.dev/npm:lodash-es@4.17.21/takeWhile.js": "dd32a518ff1532b01aab342f5101d77c207295074e4bcc9dd274de3d4ecb3611", + "https://jspm.dev/npm:lodash-es@4.17.21/tap.js": "cd345adafe6c1a7f9820d29c3a0cff55fee0439f0b4b3b7dc823b32015ad60b6", + "https://jspm.dev/npm:lodash-es@4.17.21/template": "289486bf71ca9b667b0e0d3ea0396601f291dc9561c762ab922a7d8f484e8741", + "https://jspm.dev/npm:lodash-es@4.17.21/throttle": "23340d6dc5f0cb9655d3bb32250d3dd9b8cfe5cb9939dfd57d454570fa44ed2d", + "https://jspm.dev/npm:lodash-es@4.17.21/thru.js": "cccca5430e533a46d565cac9ab00fc7dff7a1117e740a1a762aeaa62f26a3f07", + "https://jspm.dev/npm:lodash-es@4.17.21/times": "05c829b3a7a71973c36a74727dcb0df08edb4de5d81696691149ca924b58e8e1", + "https://jspm.dev/npm:lodash-es@4.17.21/toArray": "fad1a3ad0cb8023a2615d30b1389036fbc222c81271050de1eca876cf2c62fb6", + "https://jspm.dev/npm:lodash-es@4.17.21/toFinite.js": "5a7a7e5bce9c93ae02031f0007d391f5469b5a1db55a4e59585b9779c483f3c2", + "https://jspm.dev/npm:lodash-es@4.17.21/toInteger": "95f7b7e6d74a50f866467a6c2b1978d18c48ca6c13159e412bba763582c97e41", + "https://jspm.dev/npm:lodash-es@4.17.21/toIterator.js": "44b4e3339cb9418659cd20d4c152467234566e98b90b9e44358b3879087c30e3", + "https://jspm.dev/npm:lodash-es@4.17.21/toJSON.js": "f2c4c71476b504a06747de41da96327e0a797778863a9919f93da03eb64887d2", + "https://jspm.dev/npm:lodash-es@4.17.21/toLength.js": "72844c6c2a22fdf1591c1a06642ee5e122c13d84360726eb9de3488b2f5cc2cd", + "https://jspm.dev/npm:lodash-es@4.17.21/toLower": "96b0fc5648389e49f6fa104e4ed4194e402b37c0687bb3f98e26c4ddaf0b8d11", + "https://jspm.dev/npm:lodash-es@4.17.21/toNumber": "99a8bcedb653be2c84974330861af557a89ab9a20df496ffa462ca6b1d29c716", + "https://jspm.dev/npm:lodash-es@4.17.21/toPairs": "aeb601ac38108e25c6164f94dda6d4c5795745ba2cb69a3173d64139f68c0ccb", + "https://jspm.dev/npm:lodash-es@4.17.21/toPairsIn.js": "4cc0a70ba169a8eef24e9e11ab45858365df7336d7fd462b52d5d8ac42cf01c6", + "https://jspm.dev/npm:lodash-es@4.17.21/toPath": "47497fdffd75215e63081cbaa59e629be96a742012cc46ed671f1d15b7e8e39d", + "https://jspm.dev/npm:lodash-es@4.17.21/toPlainObject.js": "257f6bfc718fe863b186f2aaf4a392e663b4ad52a12ed0fea1fd5865e7bd08dc", + "https://jspm.dev/npm:lodash-es@4.17.21/toSafeInteger": "3d4cf071898ac7e83a48b78d55e9ed55354002480ad3dadc0effbdadeb3658ef", + "https://jspm.dev/npm:lodash-es@4.17.21/toString": "a5312a2efafb718f0c710d955e25320e57e91320b1816858b8009aafdcfadbb1", + "https://jspm.dev/npm:lodash-es@4.17.21/toUpper.js": "23daafa57bb8c979919322d0b748b620a539cb16e7ce5a41b8432f2193e764a6", + "https://jspm.dev/npm:lodash-es@4.17.21/transform": "4b201cbaa96515d6be272af362c0a23c0f7f47ecdc5a2b342c67feff32134723", + "https://jspm.dev/npm:lodash-es@4.17.21/trim": "2e4292ede70c77943fe375b23eb5514de1db4233b3e258061a5a6241207a5ec9", + "https://jspm.dev/npm:lodash-es@4.17.21/trimEnd": "f3a641abdcdfa247cce0bd437c7970678ffaf668b3776b401247c65302b38ad4", + "https://jspm.dev/npm:lodash-es@4.17.21/trimStart": "fe71383b3daf7bac064e02f9f9ec734476747bb35032ce9f08bf36ec95effd80", + "https://jspm.dev/npm:lodash-es@4.17.21/truncate": "336184358996de54e9092b2173cd1e2bd8c063515c0be427cbcf33b9d74b8d26", + "https://jspm.dev/npm:lodash-es@4.17.21/unary.js": "5feac04d9027cfb6c1ba4f3f735903eba4462f88925fea60f93034e8a8e93704", + "https://jspm.dev/npm:lodash-es@4.17.21/unescape": "44766dd869dbddc1ffce574a9cd847320f2e048700cb74bd8aad26dcb7442f97", + "https://jspm.dev/npm:lodash-es@4.17.21/union": "7573090b84056293244fb317c9a636b856f39b7e5a4fb6d791647b30eb3577e9", + "https://jspm.dev/npm:lodash-es@4.17.21/unionBy": "e83e06a936dc9b1cb7f234cfcbdbc9a1a57830e1239346a9a8b20f78bcdcd826", + "https://jspm.dev/npm:lodash-es@4.17.21/unionWith.js": "a19bed55ed4e574c6e3a17bf243e05ff6d722f0567ac0fb69a46e043c424f1ba", + "https://jspm.dev/npm:lodash-es@4.17.21/uniq": "58a4dcc49f0ddc96785c72d7482192f91b8ebeeef14c92157a9e56ca8f5b039c", + "https://jspm.dev/npm:lodash-es@4.17.21/uniqBy": "f4c15d46e3b27d90a61fc365cbea6fbe7d0a3a318b0cbf1c8e7d910d5aa41b1e", + "https://jspm.dev/npm:lodash-es@4.17.21/uniqWith": "aa15983fd0b8ab3d04f0b6e91e587cbe1879d819c024a5aba74fcac9f795725e", + "https://jspm.dev/npm:lodash-es@4.17.21/uniqueId": "dbf44bce3a3259637a3c9e1b028d31fd8aab2685b8abeb1faa031993713622d7", + "https://jspm.dev/npm:lodash-es@4.17.21/unset": "8966d97bcdd5adc1c349a492a7ff42ce27512d00b54ad76e8ade50a0ab1ee342", + "https://jspm.dev/npm:lodash-es@4.17.21/unzip": "595861857a606d5d58dd74144c6a8c15f40983161199f5b596ca6353f4a0c852", + "https://jspm.dev/npm:lodash-es@4.17.21/unzipWith.js": "e09a67f7a31750bea4630c4d607014ac968f486e71b779a960ea680506ce4b0c", + "https://jspm.dev/npm:lodash-es@4.17.21/update.js": "85d4b78b0e822edbd0eb7736ced53c629c3c988b92975b195110a671ae7f4df8", + "https://jspm.dev/npm:lodash-es@4.17.21/updateWith.js": "d7ff72a422299ccf1c7e05a44333e00dbfa11f053ffdca423250a3db861aa319", + "https://jspm.dev/npm:lodash-es@4.17.21/upperCase": "c432a8ac9ed0dad24a4e4df4e2ffbf60352e19f8dee40cdd2ffddade8972171c", + "https://jspm.dev/npm:lodash-es@4.17.21/upperFirst": "600910c104a63b26c75fffabd807b5a3d839eb5b9e567c29c42762d591b99b75", + "https://jspm.dev/npm:lodash-es@4.17.21/value.js": "f2c4c71476b504a06747de41da96327e0a797778863a9919f93da03eb64887d2", + "https://jspm.dev/npm:lodash-es@4.17.21/valueOf.js": "f2c4c71476b504a06747de41da96327e0a797778863a9919f93da03eb64887d2", + "https://jspm.dev/npm:lodash-es@4.17.21/values": "49278417cefc379cff0bdd0e1b21d196136591e8f0f9ee2d6aadafde2b5cd03c", + "https://jspm.dev/npm:lodash-es@4.17.21/valuesIn.js": "22a998315fac7e36c37b8573cf6ef6578acf0393b35724b8c68fb5e897b39040", + "https://jspm.dev/npm:lodash-es@4.17.21/without": "61631aa957e30468385a43b8543f92dc5f45109af754e173b34ce039074f66ce", + "https://jspm.dev/npm:lodash-es@4.17.21/words": "637192d60f7599cf3eb4f8d64a32d80041819bfd6bfea62e5de51f618092234c", + "https://jspm.dev/npm:lodash-es@4.17.21/wrap.js": "4a46cfc19144c9c0d751fe65fc0129900df6bff64459c7bd64bfe8f37b8b5836", + "https://jspm.dev/npm:lodash-es@4.17.21/wrapperAt.js": "ebdf7dfe6515d56a2485bc5472580496ad918d1bfbe44d08e394bff60cec4b7a", + "https://jspm.dev/npm:lodash-es@4.17.21/wrapperChain.js": "54460671cef771f5bc42946302639505aca21dd48434f46c258f24ac4f950cd5", + "https://jspm.dev/npm:lodash-es@4.17.21/wrapperLodash.js": "9b202a80e7b1963facc2bfdf4b1c636e0c37e76ec336b5cf98b54038abf55ae2", + "https://jspm.dev/npm:lodash-es@4.17.21/wrapperReverse.js": "af14be24b2ddce246c0e979c6e1a33e13a805986cb61d648b5fbc346535574e0", + "https://jspm.dev/npm:lodash-es@4.17.21/xor.js": "97e897e2090c3e759c922b09ec722f851e6270762883157448ce0f361aa90c3a", + "https://jspm.dev/npm:lodash-es@4.17.21/xorBy.js": "3cc987d57c8e3d1e416222821826bd6bdfe8218a45aaf1ba40556cf64aff9629", + "https://jspm.dev/npm:lodash-es@4.17.21/xorWith.js": "27890d393d4b15947b703cf141d7b48be398f7443a0c2f2c8d44e27c71900975", + "https://jspm.dev/npm:lodash-es@4.17.21/zip": "ff1ff54d8b036388ac7e202c81ff1e3e867dcbde158b724e19cdf1e9e9c59e2a", + "https://jspm.dev/npm:lodash-es@4.17.21/zipObject": "b2d67732bd69d97113b64c7c1b6bec4372c28261ed078d2cd0e9e9bc33bdff83", + "https://jspm.dev/npm:lodash-es@4.17.21/zipObjectDeep": "c8e198647a365be25eb3f413104bb36b8e105d8058ce06b9440487ed00773dc5", + "https://jspm.dev/npm:lodash-es@4.17.21/zipWith": "4d329d4b574b05475659fda0400262007a2b4555ea6a08ca4b110783ec3489b0", + "https://jspm.dev/npm:uuid@9.0.0": "97f0953723efa7b59f8e817d29e17829e5ca65f84ad0ed307bf2a01d4527885e", + "https://jspm.dev/uuid": "f0e9c7616b2fcc3874269405b7ee0f63a0e8e9501a0dae44005006cd5ff019a6" + } +} diff --git a/apps/deno-vless/index.html b/apps/deno-vless/index.html deleted file mode 100644 index 3d0e77e..0000000 --- a/apps/deno-vless/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - Edge Tunnel VLESS Deno - - - - - - - -
- - - - \ No newline at end of file diff --git a/apps/deno-vless/postcss.config.js b/apps/deno-vless/postcss.config.js deleted file mode 100644 index c72626d..0000000 --- a/apps/deno-vless/postcss.config.js +++ /dev/null @@ -1,15 +0,0 @@ -const { join } = require('path'); - -// Note: If you use library-specific PostCSS/Tailwind configuration then you should remove the `postcssConfig` build -// option from your application's configuration (i.e. project.json). -// -// See: https://nx.dev/guides/using-tailwind-css-in-react#step-4:-applying-configuration-to-libraries - -module.exports = { - plugins: { - tailwindcss: { - config: join(__dirname, 'tailwind.config.js'), - }, - autoprefixer: {}, - }, -}; diff --git a/apps/deno-vless/project.json b/apps/deno-vless/project.json index e927e7d..be0b321 100644 --- a/apps/deno-vless/project.json +++ b/apps/deno-vless/project.json @@ -1,62 +1,40 @@ { "name": "deno-vless", "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/deno-vless/src", "projectType": "application", + "sourceRoot": "apps/deno-vless/src", "targets": { "build": { - "executor": "@nrwl/vite:build", - "outputs": ["{options.outputPath}"], - "defaultConfiguration": "production", + "executor": "@nrwl/deno:bundle", + "outputs": ["dist/apps/deno-vless"], "options": { - "outputPath": "apps/deno-vless/src/client" - }, - "configurations": { - "development": { - "mode": "development" - }, - "production": { - "mode": "production" - } + "main": "apps/deno-vless/src/main.ts", + "outputFile": "dist/apps/deno-vless/main.js", + "denoConfig": "apps/deno-vless/deno.json" } }, "serve": { - "executor": "@nrwl/vite:dev-server", - "defaultConfiguration": "development", + "executor": "@nrwl/deno:run", "options": { - "buildTarget": "deno-vless:build" - }, - "configurations": { - "development": { - "buildTarget": "deno-vless:build:development", - "hmr": true - }, - "production": { - "buildTarget": "deno-vless:build:production", - "hmr": false - } - } - }, - "serve-deno": { - "executor": "nx:run-commands", - "options": { - "command": "deno run --allow-net --allow-read --allow-write --allow-env --watch apps/deno-vless/src/main.ts" + "buildTarget": "deno-vless:build", + "watch": true } }, "test": { - "executor": "@nrwl/vite:test", - "outputs": ["{projectRoot}/coverage"], + "executor": "@nrwl/deno:test", + "outputs": ["coverage/apps/deno-vless"], "options": { - "passWithNoTests": true + "coverageDirectory": "coverage/apps/deno-vless", + "denoConfig": "apps/deno-vless/deno.json" } }, "lint": { - "executor": "@nrwl/linter:eslint", - "outputs": ["{options.outputFile}"], + "executor": "@nrwl/deno:lint", "options": { - "lintFilePatterns": ["apps/deno-vless/**/*.{ts,tsx,js,jsx}"] + "denoConfig": "apps/deno-vless/deno.json" } } }, + "implicitDependencies": ["cf-page"], "tags": [] } diff --git a/apps/deno-vless/src/assets/.gitkeep b/apps/deno-vless/src/assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/apps/deno-vless/src/deno/client.ts b/apps/deno-vless/src/client.ts similarity index 85% rename from apps/deno-vless/src/deno/client.ts rename to apps/deno-vless/src/client.ts index 5e703ba..dd3c8b0 100644 --- a/apps/deno-vless/src/deno/client.ts +++ b/apps/deno-vless/src/client.ts @@ -6,16 +6,13 @@ async function serveClient(req: Request, basePath: string) { const pathname = new URL(req.url).pathname; if (pathname.startsWith('/assets')) { const resp = await serveDir(req, { - fsRoot: `${Deno.cwd()}/apps/deno-vless/src/client`, + fsRoot: `${Deno.cwd()}/dist/apps/cf-page`, }); resp.headers.set('cache-control', 'public, max-age=2592000'); return resp; } if (pathname.includes(basePath)) { - return await serveFile( - req, - `${Deno.cwd()}/apps/deno-vless/src/client/index.html` - ); + return await serveFile(req, `${Deno.cwd()}/dist/apps/cf-page/index.html`); } const basicAuth = req.headers.get('Authorization') || ''; const authString = basicAuth.split(' ')?.[1] || ''; diff --git a/apps/deno-vless/src/client/assets/index.0f81511d.js b/apps/deno-vless/src/client/assets/index.0f81511d.js deleted file mode 100644 index 4d6128d..0000000 --- a/apps/deno-vless/src/client/assets/index.0f81511d.js +++ /dev/null @@ -1,50 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerpolicy&&(o.referrerPolicy=l.referrerpolicy),l.crossorigin==="use-credentials"?o.credentials="include":l.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function Df(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var T={exports:{}},M={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var pr=Symbol.for("react.element"),Of=Symbol.for("react.portal"),Uf=Symbol.for("react.fragment"),$f=Symbol.for("react.strict_mode"),jf=Symbol.for("react.profiler"),Vf=Symbol.for("react.provider"),Hf=Symbol.for("react.context"),Qf=Symbol.for("react.forward_ref"),Wf=Symbol.for("react.suspense"),Kf=Symbol.for("react.memo"),Yf=Symbol.for("react.lazy"),Ou=Symbol.iterator;function Gf(e){return e===null||typeof e!="object"?null:(e=Ou&&e[Ou]||e["@@iterator"],typeof e=="function"?e:null)}var qs={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},bs=Object.assign,ea={};function kn(e,t,n){this.props=e,this.context=t,this.refs=ea,this.updater=n||qs}kn.prototype.isReactComponent={};kn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};kn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ta(){}ta.prototype=kn.prototype;function Bi(e,t,n){this.props=e,this.context=t,this.refs=ea,this.updater=n||qs}var Ai=Bi.prototype=new ta;Ai.constructor=Bi;bs(Ai,kn.prototype);Ai.isPureReactComponent=!0;var Uu=Array.isArray,na=Object.prototype.hasOwnProperty,Di={current:null},ra={key:!0,ref:!0,__self:!0,__source:!0};function la(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)na.call(t,r)&&!ra.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,q=N[K];if(0>>1;Kl(to,z))Ptl(kr,to)?(N[K]=kr,N[Pt]=z,K=Pt):(N[K]=to,N[_t]=z,K=_t);else if(Ptl(kr,z))N[K]=kr,N[Pt]=z,K=Pt;else break e}}return F}function l(N,F){var z=N.sortIndex-F.sortIndex;return z!==0?z:N.id-F.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],p=1,g=null,h=3,y=!1,m=!1,w=!1,P=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(N){for(var F=n(a);F!==null;){if(F.callback===null)r(a);else if(F.startTime<=N)r(a),F.sortIndex=F.expirationTime,t(s,F);else break;F=n(a)}}function v(N){if(w=!1,d(N),!m)if(n(s)!==null)m=!0,Nn(S);else{var F=n(a);F!==null&&rt(v,F.startTime-N)}}function S(N,F){m=!1,w&&(w=!1,f(x),x=-1),y=!0;var z=h;try{for(d(F),g=n(s);g!==null&&(!(g.expirationTime>F)||N&&!Q());){var K=g.callback;if(typeof K=="function"){g.callback=null,h=g.priorityLevel;var q=K(g.expirationTime<=F);F=e.unstable_now(),typeof q=="function"?g.callback=q:g===n(s)&&r(s),d(F)}else r(s);g=n(s)}if(g!==null)var Er=!0;else{var _t=n(a);_t!==null&&rt(v,_t.startTime-F),Er=!1}return Er}finally{g=null,h=z,y=!1}}var k=!1,C=null,x=-1,I=5,R=-1;function Q(){return!(e.unstable_now()-RN||125K?(N.sortIndex=z,t(a,N),n(s)===null&&N===n(a)&&(w?(f(x),x=-1):w=!0,rt(v,z-K))):(N.sortIndex=q,t(s,N),m||y||(m=!0,Nn(S))),N},e.unstable_shouldYield=Q,e.unstable_wrapCallback=function(N){var F=h;return function(){var z=h;h=F;try{return N.apply(this,arguments)}finally{h=z}}}})(ua);(function(e){e.exports=ua})(ia);/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var sa=T.exports,ke=ia.exports;function E(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Oo=Object.prototype.hasOwnProperty,bf=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ju={},Vu={};function ed(e){return Oo.call(Vu,e)?!0:Oo.call(ju,e)?!1:bf.test(e)?Vu[e]=!0:(ju[e]=!0,!1)}function td(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function nd(e,t,n,r){if(t===null||typeof t>"u"||td(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function de(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var le={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){le[e]=new de(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];le[t]=new de(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){le[e]=new de(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){le[e]=new de(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){le[e]=new de(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){le[e]=new de(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){le[e]=new de(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){le[e]=new de(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){le[e]=new de(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ui=/[\-:]([a-z])/g;function $i(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Ui,$i);le[t]=new de(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Ui,$i);le[t]=new de(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Ui,$i);le[t]=new de(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){le[e]=new de(e,1,!1,e.toLowerCase(),null,!1,!1)});le.xlinkHref=new de("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){le[e]=new de(e,1,!1,e.toLowerCase(),null,!0,!0)});function ji(e,t,n,r){var l=le.hasOwnProperty(t)?le[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=` -`+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{lo=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?In(e):""}function rd(e){switch(e.tag){case 5:return In(e.type);case 16:return In("Lazy");case 13:return In("Suspense");case 19:return In("SuspenseList");case 0:case 2:case 15:return e=oo(e.type,!1),e;case 11:return e=oo(e.type.render,!1),e;case 1:return e=oo(e.type,!0),e;default:return""}}function Vo(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Kt:return"Fragment";case Wt:return"Portal";case Uo:return"Profiler";case Vi:return"StrictMode";case $o:return"Suspense";case jo:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case fa:return(e.displayName||"Context")+".Consumer";case ca:return(e._context.displayName||"Context")+".Provider";case Hi:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Qi:return t=e.displayName||null,t!==null?t:Vo(e.type)||"Memo";case ot:t=e._payload,e=e._init;try{return Vo(e(t))}catch{}}return null}function ld(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Vo(t);case 8:return t===Vi?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function St(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function pa(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function od(e){var t=pa(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Nr(e){e._valueTracker||(e._valueTracker=od(e))}function ha(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=pa(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function tl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ho(e,t){var n=t.checked;return H({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Qu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=St(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ma(e,t){t=t.checked,t!=null&&ji(e,"checked",t,!1)}function Qo(e,t){ma(e,t);var n=St(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Wo(e,t.type,n):t.hasOwnProperty("defaultValue")&&Wo(e,t.type,St(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Wu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Wo(e,t,n){(t!=="number"||tl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Bn=Array.isArray;function rn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=_r.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Xn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var On={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},id=["Webkit","ms","Moz","O"];Object.keys(On).forEach(function(e){id.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),On[t]=On[e]})});function wa(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||On.hasOwnProperty(e)&&On[e]?(""+t).trim():t+"px"}function Sa(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=wa(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var ud=H({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Go(e,t){if(t){if(ud[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(E(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(E(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(E(61))}if(t.style!=null&&typeof t.style!="object")throw Error(E(62))}}function Xo(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Jo=null;function Wi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Zo=null,ln=null,on=null;function Gu(e){if(e=gr(e)){if(typeof Zo!="function")throw Error(E(280));var t=e.stateNode;t&&(t=Fl(t),Zo(e.stateNode,e.type,t))}}function Ea(e){ln?on?on.push(e):on=[e]:ln=e}function ka(){if(ln){var e=ln,t=on;if(on=ln=null,Gu(e),t)for(e=0;e>>=0,e===0?32:31-(yd(e)/wd|0)|0}var Pr=64,Tr=4194304;function An(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ol(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=An(u):(o&=i,o!==0&&(r=An(o)))}else i=n&~l,i!==0?r=An(i):o!==0&&(r=An(o));if(r===0)return 0;if(t!==0&&t!==r&&(t&l)===0&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function hr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-De(t),e[t]=n}function Cd(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=$n),rs=String.fromCharCode(32),ls=!1;function Va(e,t){switch(e){case"keyup":return Zd.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ha(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Yt=!1;function bd(e,t){switch(e){case"compositionend":return Ha(t);case"keypress":return t.which!==32?null:(ls=!0,rs);case"textInput":return e=t.data,e===rs&&ls?null:e;default:return null}}function ep(e,t){if(Yt)return e==="compositionend"||!bi&&Va(e,t)?(e=$a(),Kr=Ji=at=null,Yt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ss(n)}}function Ya(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ya(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ga(){for(var e=window,t=tl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=tl(e.document)}return t}function eu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function ap(e){var t=Ga(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ya(n.ownerDocument.documentElement,n)){if(r!==null&&eu(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=as(n,o);var i=as(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Gt=null,ri=null,Vn=null,li=!1;function cs(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;li||Gt==null||Gt!==tl(r)||(r=Gt,"selectionStart"in r&&eu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Vn&&tr(Vn,r)||(Vn=r,r=sl(ri,"onSelect"),0Zt||(e.current=ci[Zt],ci[Zt]=null,Zt--)}function D(e,t){Zt++,ci[Zt]=e.current,e.current=t}var Et={},se=Ct(Et),me=Ct(!1),Dt=Et;function dn(e,t){var n=e.type.contextTypes;if(!n)return Et;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function ge(e){return e=e.childContextTypes,e!=null}function cl(){U(me),U(se)}function vs(e,t,n){if(se.current!==Et)throw Error(E(168));D(se,t),D(me,n)}function rc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(E(108,ld(e)||"Unknown",l));return H({},n,r)}function fl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Et,Dt=se.current,D(se,e),D(me,me.current),!0}function ys(e,t,n){var r=e.stateNode;if(!r)throw Error(E(169));n?(e=rc(e,t,Dt),r.__reactInternalMemoizedMergedChildContext=e,U(me),U(se),D(se,e)):U(me),D(me,n)}var Ye=null,Ml=!1,So=!1;function lc(e){Ye===null?Ye=[e]:Ye.push(e)}function Ep(e){Ml=!0,lc(e)}function xt(){if(!So&&Ye!==null){So=!0;var e=0,t=A;try{var n=Ye;for(A=1;e>=i,l-=i,Ge=1<<32-De(t)+l|n<x?(I=C,C=null):I=C.sibling;var R=h(f,C,d[x],v);if(R===null){C===null&&(C=I);break}e&&C&&R.alternate===null&&t(f,C),c=o(R,c,x),k===null?S=R:k.sibling=R,k=R,C=I}if(x===d.length)return n(f,C),$&&Lt(f,x),S;if(C===null){for(;xx?(I=C,C=null):I=C.sibling;var Q=h(f,C,R.value,v);if(Q===null){C===null&&(C=I);break}e&&C&&Q.alternate===null&&t(f,C),c=o(Q,c,x),k===null?S=Q:k.sibling=Q,k=Q,C=I}if(R.done)return n(f,C),$&&Lt(f,x),S;if(C===null){for(;!R.done;x++,R=d.next())R=g(f,R.value,v),R!==null&&(c=o(R,c,x),k===null?S=R:k.sibling=R,k=R);return $&&Lt(f,x),S}for(C=r(f,C);!R.done;x++,R=d.next())R=y(C,f,x,R.value,v),R!==null&&(e&&R.alternate!==null&&C.delete(R.key===null?x:R.key),c=o(R,c,x),k===null?S=R:k.sibling=R,k=R);return e&&C.forEach(function(ye){return t(f,ye)}),$&&Lt(f,x),S}function P(f,c,d,v){if(typeof d=="object"&&d!==null&&d.type===Kt&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case xr:e:{for(var S=d.key,k=c;k!==null;){if(k.key===S){if(S=d.type,S===Kt){if(k.tag===7){n(f,k.sibling),c=l(k,d.props.children),c.return=f,f=c;break e}}else if(k.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===ot&&Ns(S)===k.type){n(f,k.sibling),c=l(k,d.props),c.ref=zn(f,k,d),c.return=f,f=c;break e}n(f,k);break}else t(f,k);k=k.sibling}d.type===Kt?(c=At(d.props.children,f.mode,v,d.key),c.return=f,f=c):(v=el(d.type,d.key,d.props,null,f.mode,v),v.ref=zn(f,c,d),v.return=f,f=v)}return i(f);case Wt:e:{for(k=d.key;c!==null;){if(c.key===k)if(c.tag===4&&c.stateNode.containerInfo===d.containerInfo&&c.stateNode.implementation===d.implementation){n(f,c.sibling),c=l(c,d.children||[]),c.return=f,f=c;break e}else{n(f,c);break}else t(f,c);c=c.sibling}c=To(d,f.mode,v),c.return=f,f=c}return i(f);case ot:return k=d._init,P(f,c,k(d._payload),v)}if(Bn(d))return m(f,c,d,v);if(_n(d))return w(f,c,d,v);Br(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,c!==null&&c.tag===6?(n(f,c.sibling),c=l(c,d),c.return=f,f=c):(n(f,c),c=Po(d,f.mode,v),c.return=f,f=c),i(f)):n(f,c)}return P}var hn=dc(!0),pc=dc(!1),vr={},Qe=Ct(vr),or=Ct(vr),ir=Ct(vr);function Mt(e){if(e===vr)throw Error(E(174));return e}function au(e,t){switch(D(ir,t),D(or,e),D(Qe,vr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Yo(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Yo(t,e)}U(Qe),D(Qe,t)}function mn(){U(Qe),U(or),U(ir)}function hc(e){Mt(ir.current);var t=Mt(Qe.current),n=Yo(t,e.type);t!==n&&(D(or,e),D(Qe,n))}function cu(e){or.current===e&&(U(Qe),U(or))}var j=Ct(0);function vl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Eo=[];function fu(){for(var e=0;en?n:4,e(!0);var r=ko.transition;ko.transition={};try{e(!1),t()}finally{A=n,ko.transition=r}}function Rc(){return ze().memoizedState}function Np(e,t,n){var r=yt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},zc(e))Fc(t,n);else if(n=sc(e,t,n,r),n!==null){var l=ce();Oe(n,e,r,l),Mc(n,t,r)}}function _p(e,t,n){var r=yt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(zc(e))Fc(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,Ue(u,i)){var s=t.interleaved;s===null?(l.next=l,uu(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=sc(e,t,l,r),n!==null&&(l=ce(),Oe(n,e,r,l),Mc(n,t,r))}}function zc(e){var t=e.alternate;return e===V||t!==null&&t===V}function Fc(e,t){Hn=yl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Mc(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Yi(e,n)}}var wl={readContext:Re,useCallback:oe,useContext:oe,useEffect:oe,useImperativeHandle:oe,useInsertionEffect:oe,useLayoutEffect:oe,useMemo:oe,useReducer:oe,useRef:oe,useState:oe,useDebugValue:oe,useDeferredValue:oe,useTransition:oe,useMutableSource:oe,useSyncExternalStore:oe,useId:oe,unstable_isNewReconciler:!1},Pp={readContext:Re,useCallback:function(e,t){return je().memoizedState=[e,t===void 0?null:t],e},useContext:Re,useEffect:Ps,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Jr(4194308,4,Nc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Jr(4194308,4,e,t)},useInsertionEffect:function(e,t){return Jr(4,2,e,t)},useMemo:function(e,t){var n=je();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=je();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Np.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=je();return e={current:e},t.memoizedState=e},useState:_s,useDebugValue:gu,useDeferredValue:function(e){return je().memoizedState=e},useTransition:function(){var e=_s(!1),t=e[0];return e=xp.bind(null,e[1]),je().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=V,l=je();if($){if(n===void 0)throw Error(E(407));n=n()}else{if(n=t(),ee===null)throw Error(E(349));(Ut&30)!==0||vc(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ps(wc.bind(null,r,o,e),[e]),r.flags|=2048,ar(9,yc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=je(),t=ee.identifierPrefix;if($){var n=Xe,r=Ge;n=(r&~(1<<32-De(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ur++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Ve]=t,e[lr]=r,Vc(e,t,!1,!1),t.stateNode=e;e:{switch(i=Xo(n,r),n){case"dialog":O("cancel",e),O("close",e),l=r;break;case"iframe":case"object":case"embed":O("load",e),l=r;break;case"video":case"audio":for(l=0;lvn&&(t.flags|=128,r=!0,Fn(o,!1),t.lanes=4194304)}else{if(!r)if(e=vl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Fn(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!$)return ie(t),null}else 2*Y()-o.renderingStartTime>vn&&n!==1073741824&&(t.flags|=128,r=!0,Fn(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Y(),t.sibling=null,n=j.current,D(j,r?n&1|2:n&1),t):(ie(t),null);case 22:case 23:return ku(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(we&1073741824)!==0&&(ie(t),t.subtreeFlags&6&&(t.flags|=8192)):ie(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function Bp(e,t){switch(nu(t),t.tag){case 1:return ge(t.type)&&cl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return mn(),U(me),U(se),fu(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return cu(t),null;case 13:if(U(j),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));pn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return U(j),null;case 4:return mn(),null;case 10:return iu(t.type._context),null;case 22:case 23:return ku(),null;case 24:return null;default:return null}}var Dr=!1,ue=!1,Ap=typeof WeakSet=="function"?WeakSet:Set,_=null;function tn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){W(e,t,r)}else n.current=null}function ki(e,t,n){try{n()}catch(r){W(e,t,r)}}var As=!1;function Dp(e,t){if(oi=il,e=Ga(),eu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,p=0,g=e,h=null;t:for(;;){for(var y;g!==n||l!==0&&g.nodeType!==3||(u=i+l),g!==o||r!==0&&g.nodeType!==3||(s=i+r),g.nodeType===3&&(i+=g.nodeValue.length),(y=g.firstChild)!==null;)h=g,g=y;for(;;){if(g===e)break t;if(h===n&&++a===l&&(u=i),h===o&&++p===r&&(s=i),(y=g.nextSibling)!==null)break;g=h,h=g.parentNode}g=y}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(ii={focusedElem:e,selectionRange:n},il=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var m=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(m!==null){var w=m.memoizedProps,P=m.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?w:Me(t.type,w),P);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var d=t.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(v){W(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return m=As,As=!1,m}function Qn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&ki(t,n,o)}l=l.next}while(l!==r)}}function Al(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Ci(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Wc(e){var t=e.alternate;t!==null&&(e.alternate=null,Wc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ve],delete t[lr],delete t[ai],delete t[wp],delete t[Sp])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Kc(e){return e.tag===5||e.tag===3||e.tag===4}function Ds(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Kc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function xi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=al));else if(r!==4&&(e=e.child,e!==null))for(xi(e,t,n),e=e.sibling;e!==null;)xi(e,t,n),e=e.sibling}function Ni(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Ni(e,t,n),e=e.sibling;e!==null;)Ni(e,t,n),e=e.sibling}var ne=null,Ie=!1;function lt(e,t,n){for(n=n.child;n!==null;)Yc(e,t,n),n=n.sibling}function Yc(e,t,n){if(He&&typeof He.onCommitFiberUnmount=="function")try{He.onCommitFiberUnmount(Tl,n)}catch{}switch(n.tag){case 5:ue||tn(n,t);case 6:var r=ne,l=Ie;ne=null,lt(e,t,n),ne=r,Ie=l,ne!==null&&(Ie?(e=ne,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ne.removeChild(n.stateNode));break;case 18:ne!==null&&(Ie?(e=ne,n=n.stateNode,e.nodeType===8?wo(e.parentNode,n):e.nodeType===1&&wo(e,n),bn(e)):wo(ne,n.stateNode));break;case 4:r=ne,l=Ie,ne=n.stateNode.containerInfo,Ie=!0,lt(e,t,n),ne=r,Ie=l;break;case 0:case 11:case 14:case 15:if(!ue&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&((o&2)!==0||(o&4)!==0)&&ki(n,t,i),l=l.next}while(l!==r)}lt(e,t,n);break;case 1:if(!ue&&(tn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){W(n,t,u)}lt(e,t,n);break;case 21:lt(e,t,n);break;case 22:n.mode&1?(ue=(r=ue)||n.memoizedState!==null,lt(e,t,n),ue=r):lt(e,t,n);break;default:lt(e,t,n)}}function Os(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Ap),t.forEach(function(r){var l=Kp.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Fe(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=Y()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Up(r/1960))-r,10e?16:e,ct===null)var r=!1;else{if(e=ct,ct=null,kl=0,(B&6)!==0)throw Error(E(331));var l=B;for(B|=4,_=e.current;_!==null;){var o=_,i=o.child;if((_.flags&16)!==0){var u=o.deletions;if(u!==null){for(var s=0;sY()-Su?Bt(e,0):wu|=n),ve(e,t)}function tf(e,t){t===0&&((e.mode&1)===0?t=1:(t=Tr,Tr<<=1,(Tr&130023424)===0&&(Tr=4194304)));var n=ce();e=et(e,t),e!==null&&(hr(e,t,n),ve(e,n))}function Wp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),tf(e,n)}function Kp(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),tf(e,n)}var nf;nf=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||me.current)he=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return he=!1,Mp(e,t,n);he=(e.flags&131072)!==0}else he=!1,$&&(t.flags&1048576)!==0&&oc(t,pl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Zr(e,t),e=t.pendingProps;var l=dn(t,se.current);sn(t,n),l=pu(null,t,r,e,l,n);var o=hu();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ge(r)?(o=!0,fl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,su(t),l.updater=Il,t.stateNode=l,l._reactInternals=t,mi(t,r,e,n),t=yi(null,t,r,!0,o,n)):(t.tag=0,$&&o&&tu(t),ae(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Zr(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=Gp(r),e=Me(r,e),l){case 0:t=vi(null,t,r,e,n);break e;case 1:t=Ms(null,t,r,e,n);break e;case 11:t=zs(null,t,r,e,n);break e;case 14:t=Fs(null,t,r,Me(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Me(r,l),vi(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Me(r,l),Ms(e,t,r,l,n);case 3:e:{if(Uc(t),e===null)throw Error(E(387));r=t.pendingProps,o=t.memoizedState,l=o.element,ac(e,t),gl(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=gn(Error(E(423)),t),t=Is(e,t,r,n,l);break e}else if(r!==l){l=gn(Error(E(424)),t),t=Is(e,t,r,n,l);break e}else for(Se=mt(t.stateNode.containerInfo.firstChild),Ee=t,$=!0,Be=null,n=pc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(pn(),r===l){t=tt(e,t,n);break e}ae(e,t,r,n)}t=t.child}return t;case 5:return hc(t),e===null&&di(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,ui(r,l)?i=null:o!==null&&ui(r,o)&&(t.flags|=32),Oc(e,t),ae(e,t,i,n),t.child;case 6:return e===null&&di(t),null;case 13:return $c(e,t,n);case 4:return au(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=hn(t,null,r,n):ae(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Me(r,l),zs(e,t,r,l,n);case 7:return ae(e,t,t.pendingProps,n),t.child;case 8:return ae(e,t,t.pendingProps.children,n),t.child;case 12:return ae(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,D(hl,r._currentValue),r._currentValue=i,o!==null)if(Ue(o.value,i)){if(o.children===l.children&&!me.current){t=tt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=Ze(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var p=a.pending;p===null?s.next=s:(s.next=p.next,p.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),pi(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(E(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),pi(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}ae(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,sn(t,n),l=Re(l),r=r(l),t.flags|=1,ae(e,t,r,n),t.child;case 14:return r=t.type,l=Me(r,t.pendingProps),l=Me(r.type,l),Fs(e,t,r,l,n);case 15:return Ac(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Me(r,l),Zr(e,t),t.tag=1,ge(r)?(e=!0,fl(t)):e=!1,sn(t,n),fc(t,r,l),mi(t,r,l,n),yi(null,t,r,!0,e,n);case 19:return jc(e,t,n);case 22:return Dc(e,t,n)}throw Error(E(156,t.tag))};function rf(e,t){return La(e,t)}function Yp(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Te(e,t,n,r){return new Yp(e,t,n,r)}function xu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Gp(e){if(typeof e=="function")return xu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Hi)return 11;if(e===Qi)return 14}return 2}function wt(e,t){var n=e.alternate;return n===null?(n=Te(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function el(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")xu(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Kt:return At(n.children,l,o,t);case Vi:i=8,l|=8;break;case Uo:return e=Te(12,n,t,l|2),e.elementType=Uo,e.lanes=o,e;case $o:return e=Te(13,n,t,l),e.elementType=$o,e.lanes=o,e;case jo:return e=Te(19,n,t,l),e.elementType=jo,e.lanes=o,e;case da:return Ol(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ca:i=10;break e;case fa:i=9;break e;case Hi:i=11;break e;case Qi:i=14;break e;case ot:i=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=Te(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function At(e,t,n,r){return e=Te(7,e,r,t),e.lanes=n,e}function Ol(e,t,n,r){return e=Te(22,e,r,t),e.elementType=da,e.lanes=n,e.stateNode={isHidden:!1},e}function Po(e,t,n){return e=Te(6,e,null,t),e.lanes=n,e}function To(e,t,n){return t=Te(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xp(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=uo(0),this.expirationTimes=uo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=uo(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Nu(e,t,n,r,l,o,i,u,s){return e=new Xp(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Te(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},su(o),e}function Jp(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=Ce})(oa);var sf,Ks=oa.exports;sf=Ks.createRoot,Ks.hydrateRoot;const t0=typeof window>"u"||typeof document>"u";let Hl=t0?T.exports.useEffect:T.exports.useLayoutEffect;function cn(e){let t=T.exports.useRef(e);return Hl(()=>{t.current=e},[e]),t}function n0(e){typeof queueMicrotask=="function"?queueMicrotask(e):Promise.resolve().then(e).catch(t=>setTimeout(()=>{throw t}))}function Ql(){let e=[],t=[],n={enqueue(r){t.push(r)},addEventListener(r,l,o,i){return r.addEventListener(l,o,i),n.add(()=>r.removeEventListener(l,o,i))},requestAnimationFrame(...r){let l=requestAnimationFrame(...r);return n.add(()=>cancelAnimationFrame(l))},nextFrame(...r){return n.requestAnimationFrame(()=>n.requestAnimationFrame(...r))},setTimeout(...r){let l=setTimeout(...r);return n.add(()=>clearTimeout(l))},microTask(...r){let l={current:!0};return n0(()=>{l.current&&r[0]()}),n.add(()=>{l.current=!1})},add(r){return e.push(r),()=>{let l=e.indexOf(r);if(l>=0){let[o]=e.splice(l,1);o()}}},dispose(){for(let r of e.splice(0))r()},async workQueue(){for(let r of t.splice(0))await r()}};return n}function af(){let[e]=T.exports.useState(Ql);return T.exports.useEffect(()=>()=>e.dispose(),[e]),e}let It=function(e){let t=cn(e);return Pl.useCallback((...n)=>t.current(...n),[t])},Lo={serverHandoffComplete:!1};function cf(){let[e,t]=T.exports.useState(Lo.serverHandoffComplete);return T.exports.useEffect(()=>{e!==!0&&t(!0)},[e]),T.exports.useEffect(()=>{Lo.serverHandoffComplete===!1&&(Lo.serverHandoffComplete=!0)},[]),e}function Ae(e,t,...n){if(e in t){let l=t[e];return typeof l=="function"?l(...n):l}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map(l=>`"${l}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,Ae),r}let r0=Symbol();function ff(...e){let t=T.exports.useRef(e);T.exports.useEffect(()=>{t.current=e},[e]);let n=It(r=>{for(let l of t.current)l!=null&&(typeof l=="function"?l(r):l.current=r)});return e.every(r=>r==null||r?.[r0])?void 0:n}var df=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(df||{}),Je=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Je||{});function pf({ourProps:e,theirProps:t,slot:n,defaultTag:r,features:l,visible:o=!0,name:i}){let u=hf(t,e);if(o)return $r(u,n,r,i);let s=l??0;if(s&2){let{static:a=!1,...p}=u;if(a)return $r(p,n,r,i)}if(s&1){let{unmount:a=!0,...p}=u;return Ae(a?0:1,{[0](){return null},[1](){return $r({...p,hidden:!0,style:{display:"none"}},n,r,i)}})}return $r(u,n,r,i)}function $r(e,t={},n,r){let{as:l=n,children:o,refName:i="ref",...u}=Ro(e,["unmount","static"]),s=e.ref!==void 0?{[i]:e.ref}:{},a=typeof o=="function"?o(t):o;u.className&&typeof u.className=="function"&&(u.className=u.className(t));let p={};if(t){let g=!1,h=[];for(let[y,m]of Object.entries(t))typeof m=="boolean"&&(g=!0),m===!0&&h.push(y);g&&(p["data-headlessui-state"]=h.join(" "))}if(l===T.exports.Fragment&&Object.keys(Ys(u)).length>0){if(!T.exports.isValidElement(a)||Array.isArray(a)&&a.length>1)throw new Error(['Passing props on "Fragment"!',"",`The current component <${r} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(u).map(g=>` - ${g}`).join(` -`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(g=>` - ${g}`).join(` -`)].join(` -`));return T.exports.cloneElement(a,Object.assign({},hf(a.props,Ys(Ro(u,["ref"]))),p,s,l0(a.ref,s.ref)))}return T.exports.createElement(l,Object.assign({},Ro(u,["ref"]),l!==T.exports.Fragment&&s,l!==T.exports.Fragment&&p),a)}function l0(...e){return{ref:e.every(t=>t==null)?void 0:t=>{for(let n of e)n!=null&&(typeof n=="function"?n(t):n.current=t)}}}function hf(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},n={};for(let r of e)for(let l in r)l.startsWith("on")&&typeof r[l]=="function"?(n[l]!=null||(n[l]=[]),n[l].push(r[l])):t[l]=r[l];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map(r=>[r,void 0])));for(let r in n)Object.assign(t,{[r](l,...o){let i=n[r];for(let u of i){if((l instanceof Event||l?.nativeEvent instanceof Event)&&l.defaultPrevented)return;u(l,...o)}}});return t}function Lu(e){var t;return Object.assign(T.exports.forwardRef(e),{displayName:(t=e.displayName)!=null?t:e.name})}function Ys(e){let t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}function Ro(e,t=[]){let n=Object.assign({},e);for(let r of t)r in n&&delete n[r];return n}let Ru=T.exports.createContext(null);Ru.displayName="OpenClosedContext";var fr=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(fr||{});function mf(){return T.exports.useContext(Ru)}function o0({value:e,children:t}){return Pl.createElement(Ru.Provider,{value:e},t)}var Wl={exports:{}},Kl={};/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var i0=T.exports,u0=Symbol.for("react.element"),s0=Symbol.for("react.fragment"),a0=Object.prototype.hasOwnProperty,c0=i0.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,f0={key:!0,ref:!0,__self:!0,__source:!0};function gf(e,t,n){var r,l={},o=null,i=null;n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(i=t.ref);for(r in t)a0.call(t,r)&&!f0.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)l[r]===void 0&&(l[r]=t[r]);return{$$typeof:u0,type:e,key:o,ref:i,props:l,_owner:c0.current}}Kl.Fragment=s0;Kl.jsx=gf;Kl.jsxs=gf;(function(e){e.exports=Kl})(Wl);const zu=Wl.exports.Fragment,L=Wl.exports.jsx,te=Wl.exports.jsxs;function vf(){let e=T.exports.useRef(!1);return Hl(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function d0(e){let t={called:!1};return(...n)=>{if(!t.called)return t.called=!0,e(...n)}}function zo(e,...t){e&&t.length>0&&e.classList.add(...t)}function Fo(e,...t){e&&t.length>0&&e.classList.remove(...t)}function p0(e,t){let n=Ql();if(!e)return n.dispose;let{transitionDuration:r,transitionDelay:l}=getComputedStyle(e),[o,i]=[r,l].map(u=>{let[s=0]=u.split(",").filter(Boolean).map(a=>a.includes("ms")?parseFloat(a):parseFloat(a)*1e3).sort((a,p)=>p-a);return s});if(o+i!==0){let u=n.addEventListener(e,"transitionend",s=>{s.target===s.currentTarget&&(t(),u())})}else t();return n.add(()=>t()),n.dispose}function h0(e,t,n,r){let l=n?"enter":"leave",o=Ql(),i=r!==void 0?d0(r):()=>{};l==="enter"&&(e.removeAttribute("hidden"),e.style.display="");let u=Ae(l,{enter:()=>t.enter,leave:()=>t.leave}),s=Ae(l,{enter:()=>t.enterTo,leave:()=>t.leaveTo}),a=Ae(l,{enter:()=>t.enterFrom,leave:()=>t.leaveFrom});return Fo(e,...t.enter,...t.enterTo,...t.enterFrom,...t.leave,...t.leaveFrom,...t.leaveTo,...t.entered),zo(e,...u,...a),o.nextFrame(()=>{Fo(e,...a),zo(e,...s),p0(e,()=>(Fo(e,...u),zo(e,...t.entered),i()))}),o.dispose}function m0({container:e,direction:t,classes:n,onStart:r,onStop:l}){let o=vf(),i=af(),u=cn(t);Hl(()=>{let s=Ql();i.add(s.dispose);let a=e.current;if(!!a&&u.current!=="idle"&&!!o.current)return s.dispose(),r.current(u.current),s.add(h0(a,n.current,u.current==="enter",()=>{s.dispose(),l.current(u.current)})),s.dispose},[t])}function g0(...e){return e.filter(Boolean).join(" ")}function Tt(e=""){return e.split(" ").filter(t=>t.trim().length>1)}let Yl=T.exports.createContext(null);Yl.displayName="TransitionContext";var v0=(e=>(e.Visible="visible",e.Hidden="hidden",e))(v0||{});function y0(){let e=T.exports.useContext(Yl);if(e===null)throw new Error("A is used but it is missing a parent or .");return e}function w0(){let e=T.exports.useContext(Gl);if(e===null)throw new Error("A is used but it is missing a parent or .");return e}let Gl=T.exports.createContext(null);Gl.displayName="NestingContext";function Xl(e){return"children"in e?Xl(e.children):e.current.filter(({el:t})=>t.current!==null).filter(({state:t})=>t==="visible").length>0}function yf(e,t){let n=cn(e),r=T.exports.useRef([]),l=vf(),o=af(),i=It((y,m=Je.Hidden)=>{let w=r.current.findIndex(({el:P})=>P===y);w!==-1&&(Ae(m,{[Je.Unmount](){r.current.splice(w,1)},[Je.Hidden](){r.current[w].state="hidden"}}),o.microTask(()=>{var P;!Xl(r)&&l.current&&((P=n.current)==null||P.call(n))}))}),u=It(y=>{let m=r.current.find(({el:w})=>w===y);return m?m.state!=="visible"&&(m.state="visible"):r.current.push({el:y,state:"visible"}),()=>i(y,Je.Unmount)}),s=T.exports.useRef([]),a=T.exports.useRef(Promise.resolve()),p=T.exports.useRef({enter:[],leave:[],idle:[]}),g=It((y,m,w)=>{s.current.splice(0),t&&(t.chains.current[m]=t.chains.current[m].filter(([P])=>P!==y)),t?.chains.current[m].push([y,new Promise(P=>{s.current.push(P)})]),t?.chains.current[m].push([y,new Promise(P=>{Promise.all(p.current[m].map(([f,c])=>c)).then(()=>P())})]),m==="enter"?a.current=a.current.then(()=>t?.wait.current).then(()=>w(m)):w(m)}),h=It((y,m,w)=>{Promise.all(p.current[m].splice(0).map(([P,f])=>f)).then(()=>{var P;(P=s.current.shift())==null||P()}).then(()=>w(m))});return T.exports.useMemo(()=>({children:r,register:u,unregister:i,onStart:g,onStop:h,wait:a,chains:p}),[u,i,r,g,h,p,a])}function S0(){}let E0=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function Gs(e){var t;let n={};for(let r of E0)n[r]=(t=e[r])!=null?t:S0;return n}function k0(e){let t=T.exports.useRef(Gs(e));return T.exports.useEffect(()=>{t.current=Gs(e)},[e]),t}let C0="div",wf=df.RenderStrategy,Sf=Lu(function(e,t){let{beforeEnter:n,afterEnter:r,beforeLeave:l,afterLeave:o,enter:i,enterFrom:u,enterTo:s,entered:a,leave:p,leaveFrom:g,leaveTo:h,...y}=e,m=T.exports.useRef(null),w=ff(m,t),P=y.unmount?Je.Unmount:Je.Hidden,{show:f,appear:c,initial:d}=y0(),[v,S]=T.exports.useState(f?"visible":"hidden"),k=w0(),{register:C,unregister:x}=k,I=T.exports.useRef(null);T.exports.useEffect(()=>C(m),[C,m]),T.exports.useEffect(()=>{if(P===Je.Hidden&&!!m.current){if(f&&v!=="visible"){S("visible");return}return Ae(v,{hidden:()=>x(m),visible:()=>C(m)})}},[v,m,C,x,f,P]);let R=cn({enter:Tt(i),enterFrom:Tt(u),enterTo:Tt(s),entered:Tt(a),leave:Tt(p),leaveFrom:Tt(g),leaveTo:Tt(h)}),Q=k0({beforeEnter:n,afterEnter:r,beforeLeave:l,afterLeave:o}),ye=cf();T.exports.useEffect(()=>{if(ye&&v==="visible"&&m.current===null)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")},[m,v,ye]);let X=d&&!c,Sr=(()=>!ye||X||I.current===f?"idle":f?"enter":"leave")(),eo=It(z=>Ae(z,{enter:()=>Q.current.beforeEnter(),leave:()=>Q.current.beforeLeave(),idle:()=>{}})),Nn=It(z=>Ae(z,{enter:()=>Q.current.afterEnter(),leave:()=>Q.current.afterLeave(),idle:()=>{}})),rt=yf(()=>{S("hidden"),x(m)},k);m0({container:m,classes:R,direction:Sr,onStart:cn(z=>{rt.onStart(m,z,eo)}),onStop:cn(z=>{rt.onStop(m,z,Nn),z==="leave"&&!Xl(rt)&&(S("hidden"),x(m))})}),T.exports.useEffect(()=>{!X||(P===Je.Hidden?I.current=null:I.current=f)},[f,X,v]);let N=y,F={ref:w};return c&&f&&(typeof window>"u"||typeof document>"u")&&(N={...N,className:g0(y.className,...R.current.enter,...R.current.enterFrom)}),L(Gl.Provider,{value:rt,children:L(o0,{value:Ae(v,{visible:fr.Open,hidden:fr.Closed}),children:pf({ourProps:F,theirProps:N,defaultTag:C0,features:wf,visible:v==="visible",name:"Transition.Child"})})})}),Ri=Lu(function(e,t){let{show:n,appear:r=!1,unmount:l,...o}=e,i=T.exports.useRef(null),u=ff(i,t);cf();let s=mf();if(n===void 0&&s!==null&&(n=Ae(s,{[fr.Open]:!0,[fr.Closed]:!1})),![!0,!1].includes(n))throw new Error("A is used but it is missing a `show={true | false}` prop.");let[a,p]=T.exports.useState(n?"visible":"hidden"),g=yf(()=>{p("hidden")}),[h,y]=T.exports.useState(!0),m=T.exports.useRef([n]);Hl(()=>{h!==!1&&m.current[m.current.length-1]!==n&&(m.current.push(n),y(!1))},[m,n]);let w=T.exports.useMemo(()=>({show:n,appear:r,initial:h}),[n,r,h]);T.exports.useEffect(()=>{if(n)p("visible");else if(!Xl(g))p("hidden");else{let f=i.current;if(!f)return;let c=f.getBoundingClientRect();c.x===0&&c.y===0&&c.width===0&&c.height===0&&p("hidden")}},[n,g]);let P={unmount:l};return L(Gl.Provider,{value:g,children:L(Yl.Provider,{value:w,children:pf({ourProps:{...P,as:T.exports.Fragment,children:Pl.createElement(Sf,{ref:u,...P,...o})},theirProps:{},defaultTag:T.exports.Fragment,features:wf,visible:a==="visible",name:"Transition"})})})}),x0=Lu(function(e,t){let n=T.exports.useContext(Yl)!==null,r=mf()!==null;return L(zu,{children:!n&&r?L(Ri,{ref:t,...e}):Pl.createElement(Sf,{ref:t,...e})})}),N0=Object.assign(Ri,{Child:x0,Root:Ri});function _0({title:e,titleId:t,...n},r){return te("svg",{...Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r,"aria-labelledby":t},n),children:[e?L("title",{id:t,children:e}):null,L("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})]})}const P0=T.exports.forwardRef(_0),Fu=P0;function T0({title:e,titleId:t,...n},r){return te("svg",{...Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r,"aria-labelledby":t},n),children:[e?L("title",{id:t,children:e}):null,L("path",{d:"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"})]})}const L0=T.exports.forwardRef(T0),R0=L0;var yr={},z0=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},Ef={},Ne={};let Mu;const F0=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Ne.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};Ne.getSymbolTotalCodewords=function(t){return F0[t]};Ne.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};Ne.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');Mu=t};Ne.isKanjiModeEnabled=function(){return typeof Mu<"u"};Ne.toSJIS=function(t){return Mu(t)};var Jl={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}e.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},e.from=function(r,l){if(e.isValid(r))return r;try{return t(r)}catch{return l}}})(Jl);function kf(){this.buffer=[],this.length=0}kf.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let n=0;n>>t-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var M0=kf;function wr(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}wr.prototype.set=function(e,t,n,r){const l=e*this.size+t;this.data[l]=n,r&&(this.reservedBit[l]=!0)};wr.prototype.get=function(e,t){return this.data[e*this.size+t]};wr.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n};wr.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var I0=wr,Cf={};(function(e){const t=Ne.getSymbolSize;e.getRowColCoords=function(r){if(r===1)return[];const l=Math.floor(r/7)+2,o=t(r),i=o===145?26:Math.ceil((o-13)/(2*l-2))*2,u=[o-7];for(let s=1;s=0&&l<=7},e.from=function(l){return e.isValid(l)?parseInt(l,10):void 0},e.getPenaltyN1=function(l){const o=l.size;let i=0,u=0,s=0,a=null,p=null;for(let g=0;g=5&&(i+=t.N1+(u-5)),a=y,u=1),y=l.get(h,g),y===p?s++:(s>=5&&(i+=t.N1+(s-5)),p=y,s=1)}u>=5&&(i+=t.N1+(u-5)),s>=5&&(i+=t.N1+(s-5))}return i},e.getPenaltyN2=function(l){const o=l.size;let i=0;for(let u=0;u=10&&(u===1488||u===93)&&i++,s=s<<1&2047|l.get(p,a),p>=10&&(s===1488||s===93)&&i++}return i*t.N3},e.getPenaltyN4=function(l){let o=0;const i=l.data.length;for(let s=0;s=0;){const i=o[0];for(let s=0;s0){const o=new Uint8Array(this.degree);return o.set(r,l),o}return r};var A0=Iu,Tf={},Nt={},Bu={};Bu.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var We={};const Lf="[0-9]+",D0="[A-Z $%*+\\-./:]+";let dr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";dr=dr.replace(/u/g,"\\u");const O0="(?:(?![A-Z0-9 $%*+\\-./:]|"+dr+`)(?:.|[\r -]))+`;We.KANJI=new RegExp(dr,"g");We.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");We.BYTE=new RegExp(O0,"g");We.NUMERIC=new RegExp(Lf,"g");We.ALPHANUMERIC=new RegExp(D0,"g");const U0=new RegExp("^"+dr+"$"),$0=new RegExp("^"+Lf+"$"),j0=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");We.testKanji=function(t){return U0.test(t)};We.testNumeric=function(t){return $0.test(t)};We.testAlphanumeric=function(t){return j0.test(t)};(function(e){const t=Bu,n=We;e.NUMERIC={id:"Numeric",bit:1<<0,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:1<<1,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:1<<2,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:1<<3,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(o,i){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!t.isValid(i))throw new Error("Invalid version: "+i);return i>=1&&i<10?o.ccBits[0]:i<27?o.ccBits[1]:o.ccBits[2]},e.getBestModeForData=function(o){return n.testNumeric(o)?e.NUMERIC:n.testAlphanumeric(o)?e.ALPHANUMERIC:n.testKanji(o)?e.KANJI:e.BYTE},e.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},e.isValid=function(o){return o&&o.bit&&o.ccBits};function r(l){if(typeof l!="string")throw new Error("Param is not a string");switch(l.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+l)}}e.from=function(o,i){if(e.isValid(o))return o;try{return r(o)}catch{return i}}})(Nt);(function(e){const t=Ne,n=Zl,r=Jl,l=Nt,o=Bu,i=1<<12|1<<11|1<<10|1<<9|1<<8|1<<5|1<<2|1<<0,u=t.getBCHDigit(i);function s(h,y,m){for(let w=1;w<=40;w++)if(y<=e.getCapacity(w,m,h))return w}function a(h,y){return l.getCharCountIndicator(h,y)+4}function p(h,y){let m=0;return h.forEach(function(w){const P=a(w.mode,y);m+=P+w.getBitsLength()}),m}function g(h,y){for(let m=1;m<=40;m++)if(p(h,m)<=e.getCapacity(m,y,l.MIXED))return m}e.from=function(y,m){return o.isValid(y)?parseInt(y,10):m},e.getCapacity=function(y,m,w){if(!o.isValid(y))throw new Error("Invalid QR Code version");typeof w>"u"&&(w=l.BYTE);const P=t.getSymbolTotalCodewords(y),f=n.getTotalCodewordsCount(y,m),c=(P-f)*8;if(w===l.MIXED)return c;const d=c-a(w,y);switch(w){case l.NUMERIC:return Math.floor(d/10*3);case l.ALPHANUMERIC:return Math.floor(d/11*2);case l.KANJI:return Math.floor(d/13);case l.BYTE:default:return Math.floor(d/8)}},e.getBestVersionForData=function(y,m){let w;const P=r.from(m,r.M);if(Array.isArray(y)){if(y.length>1)return g(y,P);if(y.length===0)return 1;w=y[0]}else w=y;return s(w.mode,w.getLength(),P)},e.getEncodedBits=function(y){if(!o.isValid(y)||y<7)throw new Error("Invalid QR Code version");let m=y<<12;for(;t.getBCHDigit(m)-u>=0;)m^=i<=0;)l^=zf<0&&(r=this.data.substr(n),l=parseInt(r,10),t.put(l,o*3+1))};var Q0=yn;const W0=Nt,Mo=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function wn(e){this.mode=W0.ALPHANUMERIC,this.data=e}wn.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};wn.prototype.getLength=function(){return this.data.length};wn.prototype.getBitsLength=function(){return wn.getBitsLength(this.data.length)};wn.prototype.write=function(t){let n;for(n=0;n+2<=this.data.length;n+=2){let r=Mo.indexOf(this.data[n])*45;r+=Mo.indexOf(this.data[n+1]),t.put(r,11)}this.data.length%2&&t.put(Mo.indexOf(this.data[n]),6)};var K0=wn,Y0=function(t){for(var n=[],r=t.length,l=0;l=55296&&o<=56319&&r>l+1){var i=t.charCodeAt(l+1);i>=56320&&i<=57343&&(o=(o-55296)*1024+i-56320+65536,l+=1)}if(o<128){n.push(o);continue}if(o<2048){n.push(o>>6|192),n.push(o&63|128);continue}if(o<55296||o>=57344&&o<65536){n.push(o>>12|224),n.push(o>>6&63|128),n.push(o&63|128);continue}if(o>=65536&&o<=1114111){n.push(o>>18|240),n.push(o>>12&63|128),n.push(o>>6&63|128),n.push(o&63|128);continue}n.push(239,191,189)}return new Uint8Array(n).buffer};const G0=Y0,X0=Nt;function Sn(e){this.mode=X0.BYTE,typeof e=="string"&&(e=G0(e)),this.data=new Uint8Array(e)}Sn.getBitsLength=function(t){return t*8};Sn.prototype.getLength=function(){return this.data.length};Sn.prototype.getBitsLength=function(){return Sn.getBitsLength(this.data.length)};Sn.prototype.write=function(e){for(let t=0,n=this.data.length;t=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` -Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}};var b0=En,Mf={exports:{}};(function(e){var t={single_source_shortest_paths:function(n,r,l){var o={},i={};i[r]=0;var u=t.PriorityQueue.make();u.push(r,0);for(var s,a,p,g,h,y,m,w,P;!u.empty();){s=u.pop(),a=s.value,g=s.cost,h=n[a]||{};for(p in h)h.hasOwnProperty(p)&&(y=h[p],m=g+y,w=i[p],P=typeof i[p]>"u",(P||w>m)&&(i[p]=m,u.push(p,m),o[p]=a))}if(typeof l<"u"&&typeof i[l]>"u"){var f=["Could not find a path from ",r," to ",l,"."].join("");throw new Error(f)}return o},extract_shortest_path_from_predecessor_list:function(n,r){for(var l=[],o=r;o;)l.push(o),n[o],o=n[o];return l.reverse(),l},find_path:function(n,r,l){var o=t.single_source_shortest_paths(n,r,l);return t.extract_shortest_path_from_predecessor_list(o,l)},PriorityQueue:{make:function(n){var r=t.PriorityQueue,l={},o;n=n||{};for(o in r)r.hasOwnProperty(o)&&(l[o]=r[o]);return l.queue=[],l.sorter=n.sorter||r.default_sorter,l},default_sorter:function(n,r){return n.cost-r.cost},push:function(n,r){var l={value:n,cost:r};this.queue.push(l),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(Mf);(function(e){const t=Nt,n=Q0,r=K0,l=J0,o=b0,i=We,u=Ne,s=Mf.exports;function a(f){return unescape(encodeURIComponent(f)).length}function p(f,c,d){const v=[];let S;for(;(S=f.exec(d))!==null;)v.push({data:S[0],index:S.index,mode:c,length:S[0].length});return v}function g(f){const c=p(i.NUMERIC,t.NUMERIC,f),d=p(i.ALPHANUMERIC,t.ALPHANUMERIC,f);let v,S;return u.isKanjiModeEnabled()?(v=p(i.BYTE,t.BYTE,f),S=p(i.KANJI,t.KANJI,f)):(v=p(i.BYTE_KANJI,t.BYTE,f),S=[]),c.concat(d,v,S).sort(function(C,x){return C.index-x.index}).map(function(C){return{data:C.data,mode:C.mode,length:C.length}})}function h(f,c){switch(c){case t.NUMERIC:return n.getBitsLength(f);case t.ALPHANUMERIC:return r.getBitsLength(f);case t.KANJI:return o.getBitsLength(f);case t.BYTE:return l.getBitsLength(f)}}function y(f){return f.reduce(function(c,d){const v=c.length-1>=0?c[c.length-1]:null;return v&&v.mode===d.mode?(c[c.length-1].data+=d.data,c):(c.push(d),c)},[])}function m(f){const c=[];for(let d=0;d=0&&u<=6&&(s===0||s===6)||s>=0&&s<=6&&(u===0||u===6)||u>=2&&u<=4&&s>=2&&s<=4?e.set(o+u,i+s,!0,!0):e.set(o+u,i+s,!1,!0))}}function sh(e){const t=e.size;for(let n=8;n>u&1)===1,e.set(l,o,i,!0),e.set(o,l,i,!0)}function Ao(e,t,n){const r=e.size,l=oh.getEncodedBits(t,n);let o,i;for(o=0;o<15;o++)i=(l>>o&1)===1,o<6?e.set(o,8,i,!0):o<8?e.set(o+1,8,i,!0):e.set(r-15+o,8,i,!0),o<8?e.set(8,r-o-1,i,!0):o<9?e.set(8,15-o-1+1,i,!0):e.set(8,15-o-1,i,!0);e.set(r-8,8,1,!0)}function fh(e,t){const n=e.size;let r=-1,l=n-1,o=7,i=0;for(let u=n-1;u>0;u-=2)for(u===6&&u--;;){for(let s=0;s<2;s++)if(!e.isReserved(l,u-s)){let a=!1;i>>o&1)===1),e.set(l,u-s,a),o--,o===-1&&(i++,o=7)}if(l+=r,l<0||n<=l){l-=r,r=-r;break}}}function dh(e,t,n){const r=new eh;n.forEach(function(s){r.put(s.mode.bit,4),r.put(s.getLength(),ih.getCharCountIndicator(s.mode,e)),s.write(r)});const l=bl.getSymbolTotalCodewords(e),o=Mi.getTotalCodewordsCount(e,t),i=(l-o)*8;for(r.getLengthInBits()+4<=i&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);const u=(i-r.getLengthInBits())/8;for(let s=0;s=7&&ch(s,t),fh(s,i),isNaN(r)&&(r=Fi.getBestMask(s,Ao.bind(null,s,n))),Fi.applyMask(r,s),Ao(s,n,r),{modules:s,version:t,errorCorrectionLevel:n,maskPattern:r,segments:l}}Ef.create=function(t,n){if(typeof t>"u"||t==="")throw new Error("No input text");let r=Io.M,l,o;return typeof n<"u"&&(r=Io.from(n.errorCorrectionLevel,Io.M),l=_l.from(n.version),o=Fi.from(n.maskPattern),n.toSJISFunc&&bl.setToSJISFunction(n.toSJISFunc)),hh(t,l,r,o)};var If={},Au={};(function(e){function t(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let r=n.slice().replace("#","").split("");if(r.length<3||r.length===5||r.length>8)throw new Error("Invalid hex color: "+n);(r.length===3||r.length===4)&&(r=Array.prototype.concat.apply([],r.map(function(o){return[o,o]}))),r.length===6&&r.push("F","F");const l=parseInt(r.join(""),16);return{r:l>>24&255,g:l>>16&255,b:l>>8&255,a:l&255,hex:"#"+r.slice(0,6).join("")}}e.getOptions=function(r){r||(r={}),r.color||(r.color={});const l=typeof r.margin>"u"||r.margin===null||r.margin<0?4:r.margin,o=r.width&&r.width>=21?r.width:void 0,i=r.scale||4;return{width:o,scale:o?4:i,margin:l,color:{dark:t(r.color.dark||"#000000ff"),light:t(r.color.light||"#ffffffff")},type:r.type,rendererOpts:r.rendererOpts||{}}},e.getScale=function(r,l){return l.width&&l.width>=r+l.margin*2?l.width/(r+l.margin*2):l.scale},e.getImageWidth=function(r,l){const o=e.getScale(r,l);return Math.floor((r+l.margin*2)*o)},e.qrToImageData=function(r,l,o){const i=l.modules.size,u=l.modules.data,s=e.getScale(i,o),a=Math.floor((i+o.margin*2)*s),p=o.margin*s,g=[o.color.light,o.color.dark];for(let h=0;h=p&&y>=p&&h"u"&&(!i||!i.getContext)&&(s=i,i=void 0),i||(a=r()),s=t.getOptions(s);const p=t.getImageWidth(o.modules.size,s),g=a.getContext("2d"),h=g.createImageData(p,p);return t.qrToImageData(h.data,o,s),n(g,a,p),g.putImageData(h,0,0),a},e.renderToDataURL=function(o,i,u){let s=u;typeof s>"u"&&(!i||!i.getContext)&&(s=i,i=void 0),s||(s={});const a=e.render(o,i,s),p=s.type||"image/png",g=s.rendererOpts||{};return a.toDataURL(p,g.quality)}})(If);var Bf={};const mh=Au;function Zs(e,t){const n=e.a/255,r=t+'="'+e.hex+'"';return n<1?r+" "+t+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function Do(e,t,n){let r=e+t;return typeof n<"u"&&(r+=" "+n),r}function gh(e,t,n){let r="",l=0,o=!1,i=0;for(let u=0;u0&&s>0&&e[u-1]||(r+=o?Do("M",s+n,.5+a+n):Do("m",l,0),l=0,o=!1),s+1':"",a="',p='viewBox="0 0 '+u+" "+u+'"',h=''+s+a+` -`;return typeof r=="function"&&r(null,h),h};const vh=z0,Ii=Ef,Af=If,yh=Bf;function Du(e,t,n,r,l){const o=[].slice.call(arguments,1),i=o.length,u=typeof o[i-1]=="function";if(!u&&!vh())throw new Error("Callback required as last argument");if(u){if(i<2)throw new Error("Too few arguments provided");i===2?(l=n,n=t,t=r=void 0):i===3&&(t.getContext&&typeof l>"u"?(l=r,r=void 0):(l=r,r=n,n=t,t=void 0))}else{if(i<1)throw new Error("Too few arguments provided");return i===1?(n=t,t=r=void 0):i===2&&!t.getContext&&(r=n,n=t,t=void 0),new Promise(function(s,a){try{const p=Ii.create(n,r);s(e(p,t,r))}catch(p){a(p)}})}try{const s=Ii.create(n,r);l(null,e(s,t,r))}catch(s){l(s)}}yr.create=Ii.create;yr.toCanvas=Du.bind(null,Af.render);yr.toDataURL=Du.bind(null,Af.renderToDataURL);yr.toString=Du.bind(null,function(e,t,n){return yh.render(e,n)});const wh=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Sh(e){return typeof e=="string"&&wh.test(e)}function Eh(){const[e,t]=T.exports.useState(""),[n,r]=T.exports.useState(!1);function l(o){t(o),r(!0)}return T.exports.useEffect(()=>{if(n){console.log("useEffect---setShow");const o=setTimeout(()=>{r(!1)},1500);return()=>{clearTimeout(o)}}},[n]),te(zu,{children:[te("div",{className:"flex flex-col items-center h-screen",children:[L(Ph,{}),te("div",{className:"flex flex-col h-full ite",children:[L(xh,{text:e}),L(_h,{handleShare:l}),L(kh,{}),L(Nh,{handleShare:l})]})]}),L(Ch,{show:n,setShow:r})]})}function kh(){return L("div",{className:"p-4 rounded-md bg-yellow-50",children:te("div",{className:"flex",children:[L("div",{className:"flex-shrink-0",children:L(Fu,{className:"w-5 h-5 text-yellow-400","aria-hidden":"true"})}),te("div",{className:"ml-3",children:[L("h3",{className:"text-sm font-medium text-yellow-800",children:"\u8BF7\u6CE8\u610F\uFF01"}),L("div",{className:"mt-2 text-sm text-yellow-700",children:te("p",{children:["\u5982\u679C\u9047\u5230\u8FDE\u4E0D\u4E0A\u7F51\u7684\u60C5\u51B5, \u8BF7\u67E5\u770B/\u53C2\u8003\u5177\u4F53\u5BA2\u6237\u7AEF\u7684 \xA0",L("a",{target:"_blank",href:"https://github.com/zizifn/edgetunnel#%E5%AE%A2%E6%88%B7%E7%AB%AF-v2rayn-%E9%85%8D%E7%BD%AE",className:"font-medium text-yellow-700 underline hover:text-yellow-600",children:"DNS \u76F8\u5173\u8BBE\u7F6E\u3002"})]})})]})]})})}function Ch({show:e,setShow:t}){return L(zu,{children:L("div",{"aria-live":"assertive",className:"fixed inset-0 flex items-end px-4 py-6 pointer-events-none sm:items-start sm:p-6",children:L("div",{className:"flex flex-col items-center w-full space-y-4 sm:items-end",children:L(N0,{show:e,as:T.exports.Fragment,enter:"transform ease-out duration-300 transition",enterFrom:"translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2",enterTo:"translate-y-0 opacity-100 sm:translate-x-0",leave:"transition ease-in duration-100",leaveFrom:"opacity-100",leaveTo:"opacity-0",children:L("div",{className:"w-full max-w-sm overflow-hidden bg-white rounded-lg shadow-lg pointer-events-auto ring-1 ring-black ring-opacity-5",children:L("div",{className:"p-4",children:te("div",{className:"flex items-start",children:[L("div",{className:"flex-shrink-0",children:L(Fu,{className:"w-6 h-6 text-red-700","aria-hidden":"true"})}),te("div",{className:"ml-3 w-0 flex-1 pt-0.5",children:[L("p",{className:"text-sm font-medium text-gray-900",children:"\u5206\u4EAB\u6210\u529F\uFF01"}),L("p",{className:"mt-1 text-sm text-red-500",children:"\u8BF7\u4E0D\u8981\u968F\u610F\u6CC4\u9732\u5206\u4EAB\u94FE\u63A5\uFF01\uFF01"})]}),L("div",{className:"flex flex-shrink-0 ml-4",children:te("button",{type:"button",className:"inline-flex text-gray-400 bg-white rounded-md hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2",onClick:()=>{t(!1)},children:[L("span",{className:"sr-only",children:"Close"}),L(R0,{className:"w-5 h-5","aria-hidden":"true"})]})})]})})})})})})})}function xh({text:e}){const[t,n]=T.exports.useState(""),[r,l]=T.exports.useState(!1);T.exports.useEffect(()=>{(async()=>{if(e){const i=await yr.toDataURL(e);n(i)}})()},[e]);async function o(){await navigator.clipboard.writeText(e),l(!0),setTimeout(()=>{l(!1)},1500)}return te("div",{className:"flex flex-col border border-blue-300 overflow-hidden w-[420px] h-[420px] justify-start items-center",children:[L("img",{src:t,width:"350",height:"350",alt:"\u4E8C\u7EF4\u7801",className:"border-spacing-1"}),te("div",{className:"flex flex-grow w-full bg-gray-200",children:[L("span",{className:"flex-grow",children:e}),te("div",{className:"w-6 h-6 ml-auto",children:[L("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",onClick:o,className:`w-6 h-6 hover:cursor-pointer hover:border hover:border-indigo-500 ${r?"hidden":"block"}`,children:L("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5A3.375 3.375 0 006.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0015 2.25h-1.5a2.251 2.251 0 00-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 00-9-9z"})}),L("svg",{"aria-hidden":"true",height:"16",viewBox:"0 0 16 16",version:"1.1",className:`w-6 h-6 hover:border hover:border-indigo-500 ${r?"block bg-green-300":"hidden"}`,children:L("path",{fillRule:"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})})]})]})]})}function Nh({handleShare:e}){const[t,n]=T.exports.useState("");return te("div",{className:"mt-4",children:[L("label",{htmlFor:"comment",className:"block text-sm font-medium text-gray-700",children:"\u968F\u610F\u8981\u5206\u4EAB\u7684\u5185\u5BB9."}),L("div",{className:"mt-1",children:L("textarea",{rows:4,name:"comment",id:"comment",className:"block w-full border border-gray-300 rounded-md shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm",value:t,onChange:r=>n(r.target.value)})}),L("div",{className:"flex justify-end mt-2",children:L("button",{onClick:()=>e(t),type:"submit",className:"inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-transparent rounded-md shadow-sm hover:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2",children:"\u5206\u4EAB"})})]})}function _h({handleShare:e}){function t(){return window.location.href}function n(){const r=new URL(window.location.href);return`vless://${r.pathname.split("/").find(Sh)}@${r.hostname}:443?encryption=none&security=tls&type=ws#v2ray-edge`}return te("span",{className:"inline-flex self-center mt-4 rounded-md shadow-sm isolate",children:[L("button",{onClick:()=>e(t()),type:"button",className:"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-l-md hover:border-indigo-500 focus:z-10 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500",children:"\u5206\u4EAB\u672C\u9875"}),L("button",{onClick:()=>e(n()),type:"button",className:"relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 hover:bg-gray-50 focus:z-10 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500",children:"\u5206\u4EAB V2ray"})]})}function Ph(){return L("div",{className:"flex justify-center w-full p-4 rounded-md bg-red-50",children:te("div",{className:"flex",children:[L("div",{className:"flex-shrink-0",children:L(Fu,{className:"w-5 h-5 text-red-700","aria-hidden":"true"})}),te("div",{className:"ml-3",children:[L("h3",{className:"text-sm font-medium text-red-700",children:"\u6CE8\u610F\uFF01\uFF01"}),L("div",{className:"mt-2 text-sm text-red-700",children:L("p",{children:"\u6CC4\u9732\u672C\u9875\u9762\u5C31\u7B49\u4E8E\u6CC4\u9732\u4F60\u7684\u8BBE\u7F6E\u3002"})})]})]})})}const Th=sf(document.getElementById("root"));Th.render(L(T.exports.StrictMode,{children:L(Eh,{})})); diff --git a/apps/deno-vless/src/client/assets/index.74140327.css b/apps/deno-vless/src/client/assets/index.74140327.css deleted file mode 100644 index 1742121..0000000 --- a/apps/deno-vless/src/client/assets/index.74140327.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:0}.isolate{isolation:isolate}.ml-3{margin-left:.75rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mt-4{margin-top:1rem}.-ml-px{margin-left:-1px}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.hidden{display:none}.h-screen{height:100vh}.h-full{height:100%}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[420px\]{height:420px}.w-5{width:1.25rem}.w-full{width:100%}.w-6{width:1.5rem}.w-0{width:0px}.w-\[420px\]{width:420px}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-spacing-1{--tw-border-spacing-x: .25rem;--tw-border-spacing-y: .25rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.translate-y-2{--tw-translate-y: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.border{border-width:1px}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-green-300{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity))}.p-4{padding:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-0\.5{padding-top:.125rem}.pt-0{padding-top:0}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-100{transition-duration:.1s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border:hover{border-width:1px}.hover\:border-indigo-500:hover{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:z-10:focus{z-index:10}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}@media (min-width: 640px){.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:translate-x-2{--tw-translate-x: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:p-6{padding:1.5rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}} diff --git a/apps/deno-vless/src/client/favicon.ico b/apps/deno-vless/src/client/favicon.ico deleted file mode 100644 index 317ebcb2336e0833a22dddf0ab287849f26fda57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeI332;U^%p|z7g|#(P)qFEA@4f!_@qOK2 z_lJl}!lhL!VT_U|uN7%8B2iKH??xhDa;*`g{yjTFWHvXn;2s{4R7kH|pKGdy(7z!K zgftM+Ku7~24TLlh(!g)gz|foI94G^t2^IO$uvX$3(OR0<_5L2sB)lMAMy|+`xodJ{ z_Uh_1m)~h?a;2W{dmhM;u!YGo=)OdmId_B<%^V^{ovI@y`7^g1_V9G}*f# zNzAtvou}I!W1#{M^@ROc(BZ! z+F!!_aR&Px3_reO(EW+TwlW~tv*2zr?iP7(d~a~yA|@*a89IUke+c472NXM0wiX{- zl`UrZC^1XYyf%1u)-Y)jj9;MZ!SLfd2Hl?o|80Su%Z?To_=^g_Jt0oa#CT*tjx>BI z16wec&AOWNK<#i0Qd=1O$fymLRoUR*%;h@*@v7}wApDl^w*h}!sYq%kw+DKDY)@&A z@9$ULEB3qkR#85`lb8#WZw=@})#kQig9oqy^I$dj&k4jU&^2(M3q{n1AKeGUKPFbr z1^<)aH;VsG@J|B&l>UtU#Ejv3GIqERzYgL@UOAWtW<{p#zy`WyJgpCy8$c_e%wYJL zyGHRRx38)HyjU3y{-4z6)pzb>&Q1pR)B&u01F-|&Gx4EZWK$nkUkOI|(D4UHOXg_- zw{OBf!oWQUn)Pe(=f=nt=zkmdjpO^o8ZZ9o_|4tW1ni+Un9iCW47*-ut$KQOww!;u z`0q)$s6IZO!~9$e_P9X!hqLxu`fpcL|2f^I5d4*a@Dq28;@2271v_N+5HqYZ>x;&O z05*7JT)mUe&%S0@UD)@&8SmQrMtsDfZT;fkdA!r(S=}Oz>iP)w=W508=Rc#nNn7ym z1;42c|8($ALY8#a({%1#IXbWn9-Y|0eDY$_L&j{63?{?AH{);EzcqfydD$@-B`Y3<%IIj7S7rK_N}je^=dEk%JQ4c z!tBdTPE3Tse;oYF>cnrapWq*o)m47X1`~6@(!Y29#>-#8zm&LXrXa(3=7Z)ElaQqj z-#0JJy3Fi(C#Rx(`=VXtJ63E2_bZGCz+QRa{W0e2(m3sI?LOcUBx)~^YCqZ{XEPX)C>G>U4tfqeH8L(3|pQR*zbL1 zT9e~4Tb5p9_G}$y4t`i*4t_Mr9QYvL9C&Ah*}t`q*}S+VYh0M6GxTTSXI)hMpMpIq zD1ImYqJLzbj0}~EpE-aH#VCH_udYEW#`P2zYmi&xSPs_{n6tBj=MY|-XrA;SGA_>y zGtU$?HXm$gYj*!N)_nQ59%lQdXtQZS3*#PC-{iB_sm+ytD*7j`D*k(P&IH2GHT}Eh z5697eQECVIGQAUe#eU2I!yI&%0CP#>%6MWV z@zS!p@+Y1i1b^QuuEF*13CuB zu69dve5k7&Wgb+^s|UB08Dr3u`h@yM0NTj4h7MnHo-4@xmyr7(*4$rpPwsCDZ@2be zRz9V^GnV;;?^Lk%ynzq&K(Aix`mWmW`^152Hoy$CTYVehpD-S1-W^#k#{0^L`V6CN+E z!w+xte;2vu4AmVNEFUOBmrBL>6MK@!O2*N|2=d|Y;oN&A&qv=qKn73lDD zI(+oJAdgv>Yr}8(&@ZuAZE%XUXmX(U!N+Z_sjL<1vjy1R+1IeHt`79fnYdOL{$ci7 z%3f0A*;Zt@ED&Gjm|OFTYBDe%bbo*xXAQsFz+Q`fVBH!N2)kaxN8P$c>sp~QXnv>b zwq=W3&Mtmih7xkR$YA)1Yi?avHNR6C99!u6fh=cL|KQ&PwF!n@ud^n(HNIImHD!h87!i*t?G|p0o+eelJ?B@A64_9%SBhNaJ64EvKgD&%LjLCYnNfc; znj?%*p@*?dq#NqcQFmmX($wms@CSAr9#>hUR^=I+=0B)vvGX%T&#h$kmX*s=^M2E!@N9#m?LhMvz}YB+kd zG~mbP|D(;{s_#;hsKK9lbVK&Lo734x7SIFJ9V_}2$@q?zm^7?*XH94w5Qae{7zOMUF z^?%F%)c1Y)Q?Iy?I>knw*8gYW#ok|2gdS=YYZLiD=CW|Nj;n^x!=S#iJ#`~Ld79+xXpVmUK^B(xO_vO!btA9y7w3L3-0j-y4 z?M-V{%z;JI`bk7yFDcP}OcCd*{Q9S5$iGA7*E1@tfkyjAi!;wP^O71cZ^Ep)qrQ)N z#wqw0_HS;T7x3y|`P==i3hEwK%|>fZ)c&@kgKO1~5<5xBSk?iZV?KI6&i72H6S9A* z=U(*e)EqEs?Oc04)V-~K5AUmh|62H4*`UAtItO$O(q5?6jj+K^oD!04r=6#dsxp?~}{`?&sXn#q2 zGuY~7>O2=!u@@Kfu7q=W*4egu@qPMRM>(eyYyaIE<|j%d=iWNdGsx%c!902v#ngNg z@#U-O_4xN$s_9?(`{>{>7~-6FgWpBpqXb`Ydc3OFL#&I}Irse9F_8R@4zSS*Y*o*B zXL?6*Aw!AfkNCgcr#*yj&p3ZDe2y>v$>FUdKIy_2N~}6AbHc7gA3`6$g@1o|dE>vz z4pl(j9;kyMsjaw}lO?(?Xg%4k!5%^t#@5n=WVc&JRa+XT$~#@rldvN3S1rEpU$;XgxVny7mki3 z-Hh|jUCHrUXuLr!)`w>wgO0N%KTB-1di>cj(x3Bav`7v z3G7EIbU$z>`Nad7Rk_&OT-W{;qg)-GXV-aJT#(ozdmnA~Rq3GQ_3mby(>q6Ocb-RgTUhTN)))x>m&eD;$J5Bg zo&DhY36Yg=J=$Z>t}RJ>o|@hAcwWzN#r(WJ52^g$lh^!63@hh+dR$&_dEGu&^CR*< z!oFqSqO@>xZ*nC2oiOd0eS*F^IL~W-rsrO`J`ej{=ou_q^_(<$&-3f^J z&L^MSYWIe{&pYq&9eGaArA~*kA { - console.log('start'); - - const connect = await Deno.connect({ - port: 443, - hostname: '2606:4700:0000:0000:0000:0000:6810:7c60', - }); - - console.log(connect.remoteAddr); - return new Response('hello', { - status: 200, - }); -}; -serve(handler, { port: 8081, hostname: '0.0.0.0' }); diff --git a/apps/deno-vless/src/index.tsx b/apps/deno-vless/src/index.tsx deleted file mode 100644 index 89c46d7..0000000 --- a/apps/deno-vless/src/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { StrictMode } from 'react'; -import * as ReactDOM from 'react-dom/client'; -// import App from './app/app'; -import { EdgeApp } from 'edge-ui'; -import './styles.css'; - -const root = ReactDOM.createRoot( - document.getElementById('root') as HTMLElement -); -root.render( - - - -); diff --git a/apps/deno-vless/src/main.ts b/apps/deno-vless/src/main.ts index 4d4f543..bc58cfe 100644 --- a/apps/deno-vless/src/main.ts +++ b/apps/deno-vless/src/main.ts @@ -1,8 +1,12 @@ import { serve } from 'https://deno.land/std@0.170.0/http/server.ts'; import * as uuid from 'https://jspm.dev/uuid'; -import * as lodash from 'https://jspm.dev/lodash-es'; -import { serveClient } from './deno/client.ts'; -import { processWebSocket } from '../../../libs/vless-js/src/lib/vless-js.ts'; +import { serveClient } from './client.ts'; +import { + closeWebSocket, + delay, + makeReadableWebSocketStream, + processVlessHeader, +} from 'vless-js'; const userID = Deno.env.get('UUID') || ''; let isVaildUser = uuid.validate(userID); @@ -13,7 +17,7 @@ if (!isVaildUser) { const handler = async (req: Request): Promise => { if (!isVaildUser) { const index401 = await Deno.readFile( - `${Deno.cwd()}/apps/deno-vless/src/deno/401.html` + `${Deno.cwd()}/dist/apps/cf-page/401.html` ); return new Response(index401, { status: 401, @@ -32,20 +36,194 @@ const handler = async (req: Request): Promise => { // let test: Deno.TcpConn | null = null; // test!.writable.abort(); // + const earlyDataHeader = req.headers.get('sec-websocket-protocol') || ''; + processWebSocket({ userID, webSocket: socket, - rawTCPFactory: (port: number, hostname: string) => { - return Deno.connect({ - port, - hostname, - }); - }, - libs: { uuid, lodash }, + earlyDataHeader, + // rawTCPFactory: (port: number, hostname: string) => { + // return Deno.connect({ + // port, + // hostname, + // }); + // }, }); return response; }; +async function processWebSocket({ + userID, + webSocket, + earlyDataHeader, +}: // libs: { uuid, lodash }, +{ + userID: string; + webSocket: WebSocket; + earlyDataHeader: string; + // rawTCPFactory: (port: number, hostname: string) => Promise; + // libs: { uuid: any; lodash: any }; +}) { + let address = ''; + let portWithRandomLog = ''; + let remoteConnection: { + readable: any; + writable: any; + write: (arg0: Uint8Array) => any; + close: () => void; + } | null = null; + let remoteConnectionReadyResolve: Function; + try { + const log = (info: string, event?: any) => { + console.log(`[${address}:${portWithRandomLog}] ${info}`, event || ''); + }; + const readableWebSocketStream = makeReadableWebSocketStream( + webSocket, + earlyDataHeader, + log + ); + let vlessResponseHeader: Uint8Array | null = null; + + // ws --> remote + readableWebSocketStream + .pipeTo( + new WritableStream({ + async write(chunk, controller) { + const vlessBuffer = chunk; + if (remoteConnection) { + const number = await remoteConnection.write( + new Uint8Array(vlessBuffer) + ); + return; + } + const { + hasError, + message, + portRemote, + addressRemote, + rawDataIndex, + vlessVersion, + isUDP, + } = processVlessHeader(vlessBuffer, userID); + address = addressRemote || ''; + portWithRandomLog = `${portRemote}--${Math.random()}`; + if (isUDP) { + console.log('udp'); + controller.error( + `[${address}:${portWithRandomLog}] command udp is not support ` + ); + return; + } + if (hasError) { + controller.error(`[${address}:${portWithRandomLog}] ${message} `); + } + // const addressType = requestAddr >> 4; + // const addressLength = requestAddr & 0x0f; + console.log(`[${address}:${portWithRandomLog}] connecting`); + remoteConnection = await Deno.connect({ + port: portRemote!, + hostname: address, + }); + vlessResponseHeader = new Uint8Array([vlessVersion![0], 0]); + const rawClientData = vlessBuffer.slice(rawDataIndex!); + await remoteConnection!.write(new Uint8Array(rawClientData)); + remoteConnectionReadyResolve(remoteConnection); + }, + close() { + console.log( + `[${address}:${portWithRandomLog}] readableWebSocketStream is close` + ); + }, + abort(reason) { + console.log( + `[${address}:${portWithRandomLog}] readableWebSocketStream is abort`, + JSON.stringify(reason) + ); + }, + }) + ) + .catch((error) => { + console.error( + `[${address}:${portWithRandomLog}] readableWebSocketStream pipeto has exception`, + error.stack || error + ); + // error is cancel readable stream anyway, no need close websocket in here + // closeWebSocket(webSocket); + // close remote conn + // remoteConnection?.close(); + }); + await new Promise((resolve) => (remoteConnectionReadyResolve = resolve)); + let remoteChunkCount = 0; + let totoal = 0; + // remote --> ws + await remoteConnection!.readable.pipeTo( + new WritableStream({ + start() { + if (webSocket.readyState === webSocket.OPEN) { + webSocket.send(vlessResponseHeader!); + } + }, + async write(chunk: Uint8Array, controller) { + function send2WebSocket() { + if (webSocket.readyState !== webSocket.OPEN) { + controller.error( + `can't accept data from remoteConnection!.readable when client webSocket is close early` + ); + return; + } + webSocket.send(chunk); + } + + remoteChunkCount++; + //#region + // console.log( + // `${(totoal += + // chunk.length)}, count: ${remoteChunkCount.toString()}, ${ + // chunk.length + // }` + // ); + // https://github.com/zizifn/edgetunnel/issues/87, hack for this issue, maybe websocket sent too many small chunk, + // casue v2ray client can't process https://github.com/denoland/deno/issues/17332 + // limit X number count / bandwith, due to deno can't read bufferedAmount in deno, + // this is deno bug and this will not need in nodejs version + //#endregion + if (remoteChunkCount < 20) { + send2WebSocket(); + } else if (remoteChunkCount < 120) { + await delay(10); // 64kb * 100 = 6m/s + send2WebSocket(); + } else if (remoteChunkCount < 500) { + await delay(20); // (64kb * 1000/20) = 3m/s + send2WebSocket(); + } else { + await delay(50); // (64kb * 1000/50) /s + send2WebSocket(); + } + }, + close() { + console.log( + `[${address}:${portWithRandomLog}] remoteConnection!.readable is close` + ); + }, + abort(reason) { + closeWebSocket(webSocket); + console.error( + `[${address}:${portWithRandomLog}] remoteConnection!.readable abort`, + reason + ); + }, + }) + ); + } catch (error: any) { + console.error( + `[${address}:${portWithRandomLog}] processWebSocket has exception `, + error.stack || error + ); + closeWebSocket(webSocket); + } + return; +} + globalThis.addEventListener('beforeunload', (e) => { console.log('About to exit...'); }); diff --git a/apps/deno-vless/src/styles.css b/apps/deno-vless/src/styles.css deleted file mode 100644 index 23d597f..0000000 --- a/apps/deno-vless/src/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind components; -@tailwind base; -@tailwind utilities; diff --git a/apps/deno-vless/tailwind.config.js b/apps/deno-vless/tailwind.config.js deleted file mode 100644 index d0c1802..0000000 --- a/apps/deno-vless/tailwind.config.js +++ /dev/null @@ -1,18 +0,0 @@ -const { createGlobPatternsForDependencies } = require('@nrwl/react/tailwind'); -const { join } = require('path'); - -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: [ - join( - __dirname, - '{src,pages,components}/**/*!(*.stories|*.spec).{ts,tsx,html}' - ), - ...createGlobPatternsForDependencies(__dirname), - 'libs/edge-ui/src/lib/*.tsx', - ], - theme: { - extend: {}, - }, - plugins: [], -}; diff --git a/apps/deno-vless/tsconfig.app.json b/apps/deno-vless/tsconfig.app.json deleted file mode 100644 index 7aeb67a..0000000 --- a/apps/deno-vless/tsconfig.app.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": ["node"] - }, - "files": [ - "../../node_modules/@nrwl/react/typings/cssmodule.d.ts", - "../../node_modules/@nrwl/react/typings/image.d.ts" - ], - "exclude": [ - "src/**/*.spec.ts", - "src/**/*.test.ts", - "src/**/*.spec.tsx", - "src/**/*.test.tsx", - "src/**/*.spec.js", - "src/**/*.test.js", - "src/**/*.spec.jsx", - "src/**/*.test.jsx" - ], - "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"] -} diff --git a/apps/deno-vless/tsconfig.json b/apps/deno-vless/tsconfig.json deleted file mode 100644 index b1de769..0000000 --- a/apps/deno-vless/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "allowJs": false, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "types": ["vite/client"] - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "extends": "../../tsconfig.base.json" -} diff --git a/apps/deno-vless/tsconfig.spec.json b/apps/deno-vless/tsconfig.spec.json deleted file mode 100644 index 95ea171..0000000 --- a/apps/deno-vless/tsconfig.spec.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": ["vitest/globals", "node"] - }, - "include": [ - "vite.config.ts", - "src/**/*.test.ts", - "src/**/*.spec.ts", - "src/**/*.test.tsx", - "src/**/*.spec.tsx", - "src/**/*.test.js", - "src/**/*.spec.js", - "src/**/*.test.jsx", - "src/**/*.spec.jsx", - "src/**/*.d.ts" - ], - "files": [ - "../../node_modules/@nrwl/react/typings/cssmodule.d.ts", - "../../node_modules/@nrwl/react/typings/image.d.ts" - ] -} diff --git a/apps/deno-vless/vite.config.ts b/apps/deno-vless/vite.config.ts deleted file mode 100644 index afb7b3d..0000000 --- a/apps/deno-vless/vite.config.ts +++ /dev/null @@ -1,26 +0,0 @@ -/// -import { defineConfig } from 'vite'; -import react from '@vitejs/plugin-react'; -import viteTsConfigPaths from 'vite-tsconfig-paths'; - -export default defineConfig({ - server: { - port: 4200, - host: 'localhost', - }, - plugins: [ - react(), - viteTsConfigPaths({ - root: '../../', - }), - ], - - test: { - globals: true, - cache: { - dir: '../../node_modules/.vitest', - }, - environment: 'jsdom', - include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - }, -}); diff --git a/apps/node-vless/project.json b/apps/node-vless/project.json index 20d878a..0a0365d 100644 --- a/apps/node-vless/project.json +++ b/apps/node-vless/project.json @@ -16,7 +16,8 @@ "assets": ["apps/node-vless/src/assets"], "webpackConfig": "apps/node-vless/webpack.config.js", "isolatedConfig": true, - "babelUpwardRootMode": true + "babelUpwardRootMode": true, + "sourceMap": true }, "configurations": { "production": { diff --git a/apps/node-vless/src/main.ts b/apps/node-vless/src/main.ts index bfc1e0d..25566c8 100644 --- a/apps/node-vless/src/main.ts +++ b/apps/node-vless/src/main.ts @@ -2,8 +2,7 @@ import { createServer } from 'http'; import { parse } from 'url'; import { WebSocketServer, WebSocket } from 'ws'; import { index401, serverStaticFile } from './app/utils'; -import * as uuid from 'uuid'; -import * as lodash from 'lodash'; +import { validate } from 'uuid'; import { createReadStream } from 'node:fs'; import { setDefaultResultOrder } from 'node:dns'; import { createSocket, Socket as UDPSocket } from 'node:dgram'; @@ -29,7 +28,7 @@ if (dnOder === 'ipv4first') { setDefaultResultOrder(dnOder); } -let isVaildUser = uuid.validate(userID); +let isVaildUser = validate(userID); if (!isVaildUser) { console.log('not set valid UUID'); } @@ -78,7 +77,7 @@ const server = createServer((req, resp) => { }); const vlessWServer = new WebSocketServer({ noServer: true }); -vlessWServer.on('connection', async function connection(ws) { +vlessWServer.on('connection', async function connection(ws, request) { let address = ''; let portWithRandomLog = ''; try { @@ -88,15 +87,22 @@ vlessWServer.on('connection', async function connection(ws) { let remoteConnection: Duplex = null; let udpClientStream: TransformStream = null; let remoteConnectionReadyResolve: Function; - - const readableWebSocketStream = makeReadableWebSocketStream(ws, log); + const earlyDataHeader = request.headers['sec-websocket-protocol']; + const readableWebSocketStream = makeReadableWebSocketStream( + ws, + earlyDataHeader, + log + ); let vlessResponseHeader: Uint8Array | null = null; - // ws --> remote + // ws --> remote readableWebSocketStream .pipeTo( new WritableStream({ async write(chunk: Buffer, controller) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk); + } if (udpClientStream) { const writer = udpClientStream.writable.getWriter(); // nodejs buffer to ArrayBuffer issue @@ -127,7 +133,7 @@ vlessWServer.on('connection', async function connection(ws) { rawDataIndex, vlessVersion, isUDP, - } = processVlessHeader(vlessBuffer, userID, uuid, lodash); + } = processVlessHeader(vlessBuffer, userID); address = addressRemote || ''; portWithRandomLog = `${portRemote}--${Math.random()} ${ isUDP ? 'udp ' : 'tcp ' @@ -153,7 +159,7 @@ vlessWServer.on('connection', async function connection(ws) { } }, close() { - // if (udpClientStream) { + // if (udpClientStream ) { // udpClientStream.writable.close(); // } console.log( @@ -161,6 +167,7 @@ vlessWServer.on('connection', async function connection(ws) { ); }, abort(reason) { + // TODO: log can be remove, abort will catch by catch block console.log( `[${address}:${portWithRandomLog}] readableWebSocketStream is abort`, JSON.stringify(reason) diff --git a/deno-test.ts b/deno-test.ts new file mode 100644 index 0000000..86255e6 --- /dev/null +++ b/deno-test.ts @@ -0,0 +1,6 @@ +const socket = await Deno.connect({ + port: 4000, + hostname: '[fe80::1386:3003:9d30:6194]', +}); + +console.log(socket); diff --git a/dist/apps/cf-page/401.html b/dist/apps/cf-page/401.html new file mode 100644 index 0000000..38839d5 --- /dev/null +++ b/dist/apps/cf-page/401.html @@ -0,0 +1,33 @@ + + + + + + + + 401 - UUID Not Valid + + + + +

Not set valid UUID in Environment Variables.

+

Please use tool to generate and remember UUID or use this one +

+

You must use same UUID for login this page after config valid UUID Environment Variables +

+

Please refer to deno + deploy guide +

+ +

Or maybe check below GIF

+ guide + + + + \ No newline at end of file diff --git a/dist/apps/cf-page/assets/index-27b909e7.css b/dist/apps/cf-page/assets/index-27b909e7.css new file mode 100644 index 0000000..8de1d58 --- /dev/null +++ b/dist/apps/cf-page/assets/index-27b909e7.css @@ -0,0 +1 @@ +.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.isolate{isolation:isolate}.mt-2{margin-top:.5rem}.ml-3{margin-left:.75rem}.mt-1{margin-top:.25rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mt-4{margin-top:1rem}.-ml-px{margin-left:-1px}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-screen{height:100vh}.h-full{height:100%}.h-6{height:1.5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-\[420px\]{height:420px}.w-4{width:1rem}.w-5{width:1.25rem}.w-full{width:100%}.w-6{width:1.5rem}.w-0{width:0px}.w-\[500px\]{width:500px}.w-4\/5{width:80%}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-spacing-1{--tw-border-spacing-x: .25rem;--tw-border-spacing-y: .25rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.translate-y-2{--tw-translate-y: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.break-normal{overflow-wrap:normal;word-break:normal}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-dashed{border-style:dashed}.border-indigo-600{--tw-border-opacity: 1;border-color:rgb(79 70 229 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-green-300{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity))}.p-4{padding:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-0\.5{padding-top:.125rem}.pt-0{padding-top:0}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.leading-6{line-height:1.5rem}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-100{transition-duration:.1s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border:hover{border-width:1px}.hover\:border-indigo-500:hover{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:z-10:focus{z-index:10}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}@media (min-width: 640px){.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:translate-x-2{--tw-translate-x: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:p-6{padding:1.5rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}} diff --git a/dist/apps/cf-page/assets/index-aea6cc6c.js b/dist/apps/cf-page/assets/index-aea6cc6c.js new file mode 100644 index 0000000..0f94ce1 --- /dev/null +++ b/dist/apps/cf-page/assets/index-aea6cc6c.js @@ -0,0 +1,50 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function jf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var qn={},Vf={get exports(){return qn},set exports(e){qn=e}},Il={},x={},Hf={get exports(){return x},set exports(e){x=e}},I={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vr=Symbol.for("react.element"),Qf=Symbol.for("react.portal"),Wf=Symbol.for("react.fragment"),Kf=Symbol.for("react.strict_mode"),Yf=Symbol.for("react.profiler"),Gf=Symbol.for("react.provider"),Xf=Symbol.for("react.context"),Jf=Symbol.for("react.forward_ref"),Zf=Symbol.for("react.suspense"),qf=Symbol.for("react.memo"),bf=Symbol.for("react.lazy"),Hu=Symbol.iterator;function ed(e){return e===null||typeof e!="object"?null:(e=Hu&&e[Hu]||e["@@iterator"],typeof e=="function"?e:null)}var ra={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},la=Object.assign,oa={};function Nn(e,t,n){this.props=e,this.context=t,this.refs=oa,this.updater=n||ra}Nn.prototype.isReactComponent={};Nn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Nn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ia(){}ia.prototype=Nn.prototype;function ji(e,t,n){this.props=e,this.context=t,this.refs=oa,this.updater=n||ra}var Vi=ji.prototype=new ia;Vi.constructor=ji;la(Vi,Nn.prototype);Vi.isPureReactComponent=!0;var Qu=Array.isArray,ua=Object.prototype.hasOwnProperty,Hi={current:null},sa={key:!0,ref:!0,__self:!0,__source:!0};function aa(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)ua.call(t,r)&&!sa.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,b=_[O];if(0>>1;Ol(lo,M))Ltl(_r,lo)?(_[O]=_r,_[Lt]=M,O=Lt):(_[O]=lo,_[Tt]=M,O=Tt);else if(Ltl(_r,M))_[O]=_r,_[Lt]=M,O=Lt;else break e}}return z}function l(_,z){var M=_.sortIndex-z.sortIndex;return M!==0?M:_.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],p=1,v=null,h=3,y=!1,m=!1,w=!1,T=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(_){for(var z=n(a);z!==null;){if(z.callback===null)r(a);else if(z.startTime<=_)r(a),z.sortIndex=z.expirationTime,t(s,z);else break;z=n(a)}}function g(_){if(w=!1,d(_),!m)if(n(s)!==null)m=!0,Pn(S);else{var z=n(a);z!==null&&Tn(g,z.startTime-_)}}function S(_,z){m=!1,w&&(w=!1,f(N),N=-1),y=!0;var M=h;try{for(d(z),v=n(s);v!==null&&(!(v.expirationTime>z)||_&&!W());){var O=v.callback;if(typeof O=="function"){v.callback=null,h=v.priorityLevel;var b=O(v.expirationTime<=z);z=e.unstable_now(),typeof b=="function"?v.callback=b:v===n(s)&&r(s),d(z)}else r(s);v=n(s)}if(v!==null)var xr=!0;else{var Tt=n(a);Tt!==null&&Tn(g,Tt.startTime-z),xr=!1}return xr}finally{v=null,h=M,y=!1}}var k=!1,C=null,N=-1,F=5,R=-1;function W(){return!(e.unstable_now()-R_||125<_?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):F=0<_?Math.floor(1e3/_):5},e.unstable_getCurrentPriorityLevel=function(){return h},e.unstable_getFirstCallbackNode=function(){return n(s)},e.unstable_next=function(_){switch(h){case 1:case 2:case 3:var z=3;break;default:z=h}var M=h;h=z;try{return _()}finally{h=M}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(_,z){switch(_){case 1:case 2:case 3:case 4:case 5:break;default:_=3}var M=h;h=_;try{return z()}finally{h=M}},e.unstable_scheduleCallback=function(_,z,M){var O=e.unstable_now();switch(typeof M=="object"&&M!==null?(M=M.delay,M=typeof M=="number"&&0O?(_.sortIndex=M,t(a,_),n(s)===null&&_===n(a)&&(w?(f(N),N=-1):w=!0,Tn(g,M-O))):(_.sortIndex=b,t(s,_),m||y||(m=!0,Pn(S))),_},e.unstable_shouldYield=W,e.unstable_wrapCallback=function(_){var z=h;return function(){var M=h;h=z;try{return _.apply(this,arguments)}finally{h=M}}}})(da);(function(e){e.exports=da})(dd);/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var pa=x,ke=Vo;function E(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ho=Object.prototype.hasOwnProperty,pd=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ku={},Yu={};function hd(e){return Ho.call(Yu,e)?!0:Ho.call(Ku,e)?!1:pd.test(e)?Yu[e]=!0:(Ku[e]=!0,!1)}function md(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function gd(e,t,n,r){if(t===null||typeof t>"u"||md(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function de(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var le={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){le[e]=new de(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];le[t]=new de(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){le[e]=new de(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){le[e]=new de(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){le[e]=new de(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){le[e]=new de(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){le[e]=new de(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){le[e]=new de(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){le[e]=new de(e,5,!1,e.toLowerCase(),null,!1,!1)});var Wi=/[\-:]([a-z])/g;function Ki(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Wi,Ki);le[t]=new de(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Wi,Ki);le[t]=new de(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Wi,Ki);le[t]=new de(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){le[e]=new de(e,1,!1,e.toLowerCase(),null,!1,!1)});le.xlinkHref=new de("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){le[e]=new de(e,1,!1,e.toLowerCase(),null,!0,!0)});function Yi(e,t,n,r){var l=le.hasOwnProperty(t)?le[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=` +`+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{uo=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?An(e):""}function vd(e){switch(e.tag){case 5:return An(e.type);case 16:return An("Lazy");case 13:return An("Suspense");case 19:return An("SuspenseList");case 0:case 2:case 15:return e=so(e.type,!1),e;case 11:return e=so(e.type.render,!1),e;case 1:return e=so(e.type,!0),e;default:return""}}function Yo(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Gt:return"Fragment";case Yt:return"Portal";case Qo:return"Profiler";case Gi:return"StrictMode";case Wo:return"Suspense";case Ko:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ga:return(e.displayName||"Context")+".Consumer";case ma:return(e._context.displayName||"Context")+".Provider";case Xi:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ji:return t=e.displayName||null,t!==null?t:Yo(e.type)||"Memo";case it:t=e._payload,e=e._init;try{return Yo(e(t))}catch{}}return null}function yd(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Yo(t);case 8:return t===Gi?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Et(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ya(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function wd(e){var t=ya(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Lr(e){e._valueTracker||(e._valueTracker=wd(e))}function wa(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ya(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ul(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Go(e,t){var n=t.checked;return Q({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Xu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Et(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Sa(e,t){t=t.checked,t!=null&&Yi(e,"checked",t,!1)}function Xo(e,t){Sa(e,t);var n=Et(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Jo(e,t.type,n):t.hasOwnProperty("defaultValue")&&Jo(e,t.type,Et(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ju(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Jo(e,t,n){(t!=="number"||ul(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Bn=Array.isArray;function on(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Rr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function er(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var jn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Sd=["Webkit","ms","Moz","O"];Object.keys(jn).forEach(function(e){Sd.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),jn[t]=jn[e]})});function Na(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||jn.hasOwnProperty(e)&&jn[e]?(""+t).trim():t+"px"}function xa(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Na(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Ed=Q({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function bo(e,t){if(t){if(Ed[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(E(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(E(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(E(61))}if(t.style!=null&&typeof t.style!="object")throw Error(E(62))}}function ei(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ti=null;function Zi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ni=null,un=null,sn=null;function bu(e){if(e=Sr(e)){if(typeof ni!="function")throw Error(E(280));var t=e.stateNode;t&&(t=Bl(t),ni(e.stateNode,e.type,t))}}function _a(e){un?sn?sn.push(e):sn=[e]:un=e}function Pa(){if(un){var e=un,t=sn;if(sn=un=null,bu(e),t)for(e=0;e>>=0,e===0?32:31-(Md(e)/Id|0)|0}var zr=64,Mr=4194304;function $n(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function fl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=$n(u):(o&=i,o!==0&&(r=$n(o)))}else i=n&~l,i!==0?r=$n(i):o!==0&&(r=$n(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function yr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ae(t),e[t]=n}function Ad(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Hn),ss=String.fromCharCode(32),as=!1;function Ya(e,t){switch(e){case"keyup":return fp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ga(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Xt=!1;function pp(e,t){switch(e){case"compositionend":return Ga(t);case"keypress":return t.which!==32?null:(as=!0,ss);case"textInput":return e=t.data,e===ss&&as?null:e;default:return null}}function hp(e,t){if(Xt)return e==="compositionend"||!ou&&Ya(e,t)?(e=Wa(),Jr=nu=ct=null,Xt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ps(n)}}function qa(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qa(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ba(){for(var e=window,t=ul();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ul(e.document)}return t}function iu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Cp(e){var t=ba(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&qa(n.ownerDocument.documentElement,n)){if(r!==null&&iu(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=hs(n,o);var i=hs(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Jt=null,si=null,Wn=null,ai=!1;function ms(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ai||Jt==null||Jt!==ul(r)||(r=Jt,"selectionStart"in r&&iu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Wn&&ir(Wn,r)||(Wn=r,r=hl(si,"onSelect"),0bt||(e.current=mi[bt],mi[bt]=null,bt--)}function B(e,t){bt++,mi[bt]=e.current,e.current=t}var kt={},se=Nt(kt),me=Nt(!1),$t=kt;function hn(e,t){var n=e.type.contextTypes;if(!n)return kt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function ge(e){return e=e.childContextTypes,e!=null}function gl(){U(me),U(se)}function ks(e,t,n){if(se.current!==kt)throw Error(E(168));B(se,t),B(me,n)}function sc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(E(108,yd(e)||"Unknown",l));return Q({},n,r)}function vl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||kt,$t=se.current,B(se,e),B(me,me.current),!0}function Cs(e,t,n){var r=e.stateNode;if(!r)throw Error(E(169));n?(e=sc(e,t,$t),r.__reactInternalMemoizedMergedChildContext=e,U(me),U(se),B(se,e)):U(me),B(me,n)}var Ge=null,$l=!1,Co=!1;function ac(e){Ge===null?Ge=[e]:Ge.push(e)}function Dp(e){$l=!0,ac(e)}function xt(){if(!Co&&Ge!==null){Co=!0;var e=0,t=A;try{var n=Ge;for(A=1;e>=i,l-=i,Je=1<<32-Ae(t)+l|n<N?(F=C,C=null):F=C.sibling;var R=h(f,C,d[N],g);if(R===null){C===null&&(C=F);break}e&&C&&R.alternate===null&&t(f,C),c=o(R,c,N),k===null?S=R:k.sibling=R,k=R,C=F}if(N===d.length)return n(f,C),j&&zt(f,N),S;if(C===null){for(;NN?(F=C,C=null):F=C.sibling;var W=h(f,C,R.value,g);if(W===null){C===null&&(C=F);break}e&&C&&W.alternate===null&&t(f,C),c=o(W,c,N),k===null?S=W:k.sibling=W,k=W,C=F}if(R.done)return n(f,C),j&&zt(f,N),S;if(C===null){for(;!R.done;N++,R=d.next())R=v(f,R.value,g),R!==null&&(c=o(R,c,N),k===null?S=R:k.sibling=R,k=R);return j&&zt(f,N),S}for(C=r(f,C);!R.done;N++,R=d.next())R=y(C,f,N,R.value,g),R!==null&&(e&&R.alternate!==null&&C.delete(R.key===null?N:R.key),c=o(R,c,N),k===null?S=R:k.sibling=R,k=R);return e&&C.forEach(function(ye){return t(f,ye)}),j&&zt(f,N),S}function T(f,c,d,g){if(typeof d=="object"&&d!==null&&d.type===Gt&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case Tr:e:{for(var S=d.key,k=c;k!==null;){if(k.key===S){if(S=d.type,S===Gt){if(k.tag===7){n(f,k.sibling),c=l(k,d.props.children),c.return=f,f=c;break e}}else if(k.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===it&&Rs(S)===k.type){n(f,k.sibling),c=l(k,d.props),c.ref=Fn(f,k,d),c.return=f,f=c;break e}n(f,k);break}else t(f,k);k=k.sibling}d.type===Gt?(c=Bt(d.props.children,f.mode,g,d.key),c.return=f,f=c):(g=ll(d.type,d.key,d.props,null,f.mode,g),g.ref=Fn(f,c,d),g.return=f,f=g)}return i(f);case Yt:e:{for(k=d.key;c!==null;){if(c.key===k)if(c.tag===4&&c.stateNode.containerInfo===d.containerInfo&&c.stateNode.implementation===d.implementation){n(f,c.sibling),c=l(c,d.children||[]),c.return=f,f=c;break e}else{n(f,c);break}else t(f,c);c=c.sibling}c=zo(d,f.mode,g),c.return=f,f=c}return i(f);case it:return k=d._init,T(f,c,k(d._payload),g)}if(Bn(d))return m(f,c,d,g);if(Ln(d))return w(f,c,d,g);$r(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,c!==null&&c.tag===6?(n(f,c.sibling),c=l(c,d),c.return=f,f=c):(n(f,c),c=Ro(d,f.mode,g),c.return=f,f=c),i(f)):n(f,c)}return T}var gn=vc(!0),yc=vc(!1),Er={},We=Nt(Er),cr=Nt(Er),fr=Nt(Er);function Dt(e){if(e===Er)throw Error(E(174));return e}function mu(e,t){switch(B(fr,t),B(cr,e),B(We,Er),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:qo(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=qo(t,e)}U(We),B(We,t)}function vn(){U(We),U(cr),U(fr)}function wc(e){Dt(fr.current);var t=Dt(We.current),n=qo(t,e.type);t!==n&&(B(cr,e),B(We,n))}function gu(e){cr.current===e&&(U(We),U(cr))}var V=Nt(0);function Cl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var No=[];function vu(){for(var e=0;en?n:4,e(!0);var r=xo.transition;xo.transition={};try{e(!1),t()}finally{A=n,xo.transition=r}}function Dc(){return ze().memoizedState}function $p(e,t,n){var r=wt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Oc(e))Ac(t,n);else if(n=pc(e,t,n,r),n!==null){var l=ce();Be(n,e,r,l),Bc(n,t,r)}}function Up(e,t,n){var r=wt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Oc(e))Ac(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,$e(u,i)){var s=t.interleaved;s===null?(l.next=l,pu(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=pc(e,t,l,r),n!==null&&(l=ce(),Be(n,e,r,l),Bc(n,t,r))}}function Oc(e){var t=e.alternate;return e===H||t!==null&&t===H}function Ac(e,t){Kn=Nl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bc(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,bi(e,n)}}var xl={readContext:Re,useCallback:oe,useContext:oe,useEffect:oe,useImperativeHandle:oe,useInsertionEffect:oe,useLayoutEffect:oe,useMemo:oe,useReducer:oe,useRef:oe,useState:oe,useDebugValue:oe,useDeferredValue:oe,useTransition:oe,useMutableSource:oe,useSyncExternalStore:oe,useId:oe,unstable_isNewReconciler:!1},jp={readContext:Re,useCallback:function(e,t){return je().memoizedState=[e,t===void 0?null:t],e},useContext:Re,useEffect:Ms,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,el(4194308,4,Rc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return el(4194308,4,e,t)},useInsertionEffect:function(e,t){return el(4,2,e,t)},useMemo:function(e,t){var n=je();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=je();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=$p.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var t=je();return e={current:e},t.memoizedState=e},useState:zs,useDebugValue:ku,useDeferredValue:function(e){return je().memoizedState=e},useTransition:function(){var e=zs(!1),t=e[0];return e=Bp.bind(null,e[1]),je().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=H,l=je();if(j){if(n===void 0)throw Error(E(407));n=n()}else{if(n=t(),te===null)throw Error(E(349));jt&30||kc(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ms(Nc.bind(null,r,o,e),[e]),r.flags|=2048,hr(9,Cc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=je(),t=te.identifierPrefix;if(j){var n=Ze,r=Je;n=(r&~(1<<32-Ae(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=dr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Ve]=t,e[ar]=r,Yc(e,t,!1,!1),t.stateNode=e;e:{switch(i=ei(n,r),n){case"dialog":$("cancel",e),$("close",e),l=r;break;case"iframe":case"object":case"embed":$("load",e),l=r;break;case"video":case"audio":for(l=0;lwn&&(t.flags|=128,r=!0,Dn(o,!1),t.lanes=4194304)}else{if(!r)if(e=Cl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Dn(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!j)return ie(t),null}else 2*Y()-o.renderingStartTime>wn&&n!==1073741824&&(t.flags|=128,r=!0,Dn(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Y(),t.sibling=null,n=V.current,B(V,r?n&1|2:n&1),t):(ie(t),null);case 22:case 23:return Tu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?we&1073741824&&(ie(t),t.subtreeFlags&6&&(t.flags|=8192)):ie(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function Xp(e,t){switch(su(t),t.tag){case 1:return ge(t.type)&&gl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return vn(),U(me),U(se),vu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return gu(t),null;case 13:if(U(V),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));mn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return U(V),null;case 4:return vn(),null;case 10:return du(t.type._context),null;case 22:case 23:return Tu(),null;case 24:return null;default:return null}}var jr=!1,ue=!1,Jp=typeof WeakSet=="function"?WeakSet:Set,P=null;function rn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){K(e,t,r)}else n.current=null}function Pi(e,t,n){try{n()}catch(r){K(e,t,r)}}var js=!1;function Zp(e,t){if(ci=dl,e=ba(),iu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,p=0,v=e,h=null;t:for(;;){for(var y;v!==n||l!==0&&v.nodeType!==3||(u=i+l),v!==o||r!==0&&v.nodeType!==3||(s=i+r),v.nodeType===3&&(i+=v.nodeValue.length),(y=v.firstChild)!==null;)h=v,v=y;for(;;){if(v===e)break t;if(h===n&&++a===l&&(u=i),h===o&&++p===r&&(s=i),(y=v.nextSibling)!==null)break;v=h,h=v.parentNode}v=y}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(fi={focusedElem:e,selectionRange:n},dl=!1,P=t;P!==null;)if(t=P,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,P=e;else for(;P!==null;){t=P;try{var m=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(m!==null){var w=m.memoizedProps,T=m.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?w:Ie(t.type,w),T);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var d=t.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(g){K(t,t.return,g)}if(e=t.sibling,e!==null){e.return=t.return,P=e;break}P=t.return}return m=js,js=!1,m}function Yn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Pi(t,n,o)}l=l.next}while(l!==r)}}function Vl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Ti(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Jc(e){var t=e.alternate;t!==null&&(e.alternate=null,Jc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ve],delete t[ar],delete t[hi],delete t[Ip],delete t[Fp])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Zc(e){return e.tag===5||e.tag===3||e.tag===4}function Vs(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Zc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Li(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ml));else if(r!==4&&(e=e.child,e!==null))for(Li(e,t,n),e=e.sibling;e!==null;)Li(e,t,n),e=e.sibling}function Ri(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Ri(e,t,n),e=e.sibling;e!==null;)Ri(e,t,n),e=e.sibling}var ne=null,Fe=!1;function ot(e,t,n){for(n=n.child;n!==null;)qc(e,t,n),n=n.sibling}function qc(e,t,n){if(Qe&&typeof Qe.onCommitFiberUnmount=="function")try{Qe.onCommitFiberUnmount(Fl,n)}catch{}switch(n.tag){case 5:ue||rn(n,t);case 6:var r=ne,l=Fe;ne=null,ot(e,t,n),ne=r,Fe=l,ne!==null&&(Fe?(e=ne,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ne.removeChild(n.stateNode));break;case 18:ne!==null&&(Fe?(e=ne,n=n.stateNode,e.nodeType===8?ko(e.parentNode,n):e.nodeType===1&&ko(e,n),lr(e)):ko(ne,n.stateNode));break;case 4:r=ne,l=Fe,ne=n.stateNode.containerInfo,Fe=!0,ot(e,t,n),ne=r,Fe=l;break;case 0:case 11:case 14:case 15:if(!ue&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&Pi(n,t,i),l=l.next}while(l!==r)}ot(e,t,n);break;case 1:if(!ue&&(rn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){K(n,t,u)}ot(e,t,n);break;case 21:ot(e,t,n);break;case 22:n.mode&1?(ue=(r=ue)||n.memoizedState!==null,ot(e,t,n),ue=r):ot(e,t,n);break;default:ot(e,t,n)}}function Hs(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Jp),t.forEach(function(r){var l=i0.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Me(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=Y()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*bp(r/1960))-r,10e?16:e,ft===null)var r=!1;else{if(e=ft,ft=null,Tl=0,D&6)throw Error(E(331));var l=D;for(D|=4,P=e.current;P!==null;){var o=P,i=o.child;if(P.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sY()-_u?At(e,0):xu|=n),ve(e,t)}function uf(e,t){t===0&&(e.mode&1?(t=Mr,Mr<<=1,!(Mr&130023424)&&(Mr=4194304)):t=1);var n=ce();e=nt(e,t),e!==null&&(yr(e,t,n),ve(e,n))}function o0(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),uf(e,n)}function i0(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),uf(e,n)}var sf;sf=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||me.current)he=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return he=!1,Yp(e,t,n);he=!!(e.flags&131072)}else he=!1,j&&t.flags&1048576&&cc(t,wl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;tl(e,t),e=t.pendingProps;var l=hn(t,se.current);cn(t,n),l=wu(null,t,r,e,l,n);var o=Su();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ge(r)?(o=!0,vl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,hu(t),l.updater=Ul,t.stateNode=l,l._reactInternals=t,Si(t,r,e,n),t=Ci(null,t,r,!0,o,n)):(t.tag=0,j&&o&&uu(t),ae(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(tl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=s0(r),e=Ie(r,e),l){case 0:t=ki(null,t,r,e,n);break e;case 1:t=Bs(null,t,r,e,n);break e;case 11:t=Os(null,t,r,e,n);break e;case 14:t=As(null,t,r,Ie(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),ki(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),Bs(e,t,r,l,n);case 3:e:{if(Qc(t),e===null)throw Error(E(387));r=t.pendingProps,o=t.memoizedState,l=o.element,hc(e,t),kl(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=yn(Error(E(423)),t),t=$s(e,t,r,n,l);break e}else if(r!==l){l=yn(Error(E(424)),t),t=$s(e,t,r,n,l);break e}else for(Se=gt(t.stateNode.containerInfo.firstChild),Ee=t,j=!0,De=null,n=yc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(mn(),r===l){t=rt(e,t,n);break e}ae(e,t,r,n)}t=t.child}return t;case 5:return wc(t),e===null&&vi(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,di(r,l)?i=null:o!==null&&di(r,o)&&(t.flags|=32),Hc(e,t),ae(e,t,i,n),t.child;case 6:return e===null&&vi(t),null;case 13:return Wc(e,t,n);case 4:return mu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=gn(t,null,r,n):ae(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),Os(e,t,r,l,n);case 7:return ae(e,t,t.pendingProps,n),t.child;case 8:return ae(e,t,t.pendingProps.children,n),t.child;case 12:return ae(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,B(Sl,r._currentValue),r._currentValue=i,o!==null)if($e(o.value,i)){if(o.children===l.children&&!me.current){t=rt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=be(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var p=a.pending;p===null?s.next=s:(s.next=p.next,p.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),yi(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(E(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),yi(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}ae(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,cn(t,n),l=Re(l),r=r(l),t.flags|=1,ae(e,t,r,n),t.child;case 14:return r=t.type,l=Ie(r,t.pendingProps),l=Ie(r.type,l),As(e,t,r,l,n);case 15:return jc(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),tl(e,t),t.tag=1,ge(r)?(e=!0,vl(t)):e=!1,cn(t,n),gc(t,r,l),Si(t,r,l,n),Ci(null,t,r,!0,e,n);case 19:return Kc(e,t,n);case 22:return Vc(e,t,n)}throw Error(E(156,t.tag))};function af(e,t){return Fa(e,t)}function u0(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Te(e,t,n,r){return new u0(e,t,n,r)}function Ru(e){return e=e.prototype,!(!e||!e.isReactComponent)}function s0(e){if(typeof e=="function")return Ru(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Xi)return 11;if(e===Ji)return 14}return 2}function St(e,t){var n=e.alternate;return n===null?(n=Te(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ll(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Ru(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Gt:return Bt(n.children,l,o,t);case Gi:i=8,l|=8;break;case Qo:return e=Te(12,n,t,l|2),e.elementType=Qo,e.lanes=o,e;case Wo:return e=Te(13,n,t,l),e.elementType=Wo,e.lanes=o,e;case Ko:return e=Te(19,n,t,l),e.elementType=Ko,e.lanes=o,e;case va:return Ql(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ma:i=10;break e;case ga:i=9;break e;case Xi:i=11;break e;case Ji:i=14;break e;case it:i=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=Te(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Bt(e,t,n,r){return e=Te(7,e,r,t),e.lanes=n,e}function Ql(e,t,n,r){return e=Te(22,e,r,t),e.elementType=va,e.lanes=n,e.stateNode={isHidden:!1},e}function Ro(e,t,n){return e=Te(6,e,null,t),e.lanes=n,e}function zo(e,t,n){return t=Te(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function a0(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=co(0),this.expirationTimes=co(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=co(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function zu(e,t,n,r,l,o,i,u,s){return e=new a0(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Te(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},hu(o),e}function c0(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=Ce})(fd);var pf,Zs=jo;pf=Zs.createRoot,Zs.hydrateRoot;var m0=Object.defineProperty,g0=(e,t,n)=>t in e?m0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mo=(e,t,n)=>(g0(e,typeof t!="symbol"?t+"":t,n),n);let v0=class{constructor(){Mo(this,"current",this.detect()),Mo(this,"handoffState","pending"),Mo(this,"currentId",0)}set(t){this.current!==t&&(this.handoffState="pending",this.currentId=0,this.current=t)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}handoff(){this.handoffState==="pending"&&(this.handoffState="complete")}get isHandoffComplete(){return this.handoffState==="complete"}},Jn=new v0,Xl=(e,t)=>{Jn.isServer?x.useEffect(e,t):x.useLayoutEffect(e,t)};function dn(e){let t=x.useRef(e);return Xl(()=>{t.current=e},[e]),t}function y0(e){typeof queueMicrotask=="function"?queueMicrotask(e):Promise.resolve().then(e).catch(t=>setTimeout(()=>{throw t}))}function Jl(){let e=[],t={addEventListener(n,r,l,o){return n.addEventListener(r,l,o),t.add(()=>n.removeEventListener(r,l,o))},requestAnimationFrame(...n){let r=requestAnimationFrame(...n);return t.add(()=>cancelAnimationFrame(r))},nextFrame(...n){return t.requestAnimationFrame(()=>t.requestAnimationFrame(...n))},setTimeout(...n){let r=setTimeout(...n);return t.add(()=>clearTimeout(r))},microTask(...n){let r={current:!0};return y0(()=>{r.current&&n[0]()}),t.add(()=>{r.current=!1})},add(n){return e.push(n),()=>{let r=e.indexOf(n);if(r>=0){let[l]=e.splice(r,1);l()}}},dispose(){for(let n of e.splice(0))n()},style(n,r,l){let o=n.style.getPropertyValue(r);return Object.assign(n.style,{[r]:l}),this.add(()=>{Object.assign(n.style,{[r]:o})})}};return t}function hf(){let[e]=x.useState(Jl);return x.useEffect(()=>()=>e.dispose(),[e]),e}let Ot=function(e){let t=dn(e);return Oe.useCallback((...n)=>t.current(...n),[t])};function mf(){let[e,t]=x.useState(Jn.isHandoffComplete);return e&&Jn.isHandoffComplete===!1&&t(!1),x.useEffect(()=>{e!==!0&&t(!0)},[e]),x.useEffect(()=>Jn.handoff(),[]),e}function He(e,t,...n){if(e in t){let l=t[e];return typeof l=="function"?l(...n):l}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map(l=>`"${l}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,He),r}let w0=Symbol();function gf(...e){let t=x.useRef(e);x.useEffect(()=>{t.current=e},[e]);let n=Ot(r=>{for(let l of t.current)l!=null&&(typeof l=="function"?l(r):l.current=r)});return e.every(r=>r==null||r?.[w0])?void 0:n}function vf(...e){return e.filter(Boolean).join(" ")}var yf=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(yf||{}),qe=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(qe||{});function wf({ourProps:e,theirProps:t,slot:n,defaultTag:r,features:l,visible:o=!0,name:i}){let u=Sf(t,e);if(o)return Qr(u,n,r,i);let s=l??0;if(s&2){let{static:a=!1,...p}=u;if(a)return Qr(p,n,r,i)}if(s&1){let{unmount:a=!0,...p}=u;return He(a?0:1,{[0](){return null},[1](){return Qr({...p,hidden:!0,style:{display:"none"}},n,r,i)}})}return Qr(u,n,r,i)}function Qr(e,t={},n,r){var l;let{as:o=n,children:i,refName:u="ref",...s}=Io(e,["unmount","static"]),a=e.ref!==void 0?{[u]:e.ref}:{},p=typeof i=="function"?i(t):i;"className"in s&&s.className&&typeof s.className=="function"&&(s.className=s.className(t));let v={};if(t){let h=!1,y=[];for(let[m,w]of Object.entries(t))typeof w=="boolean"&&(h=!0),w===!0&&y.push(m);h&&(v["data-headlessui-state"]=y.join(" "))}if(o===x.Fragment&&Object.keys(qs(s)).length>0){if(!x.isValidElement(p)||Array.isArray(p)&&p.length>1)throw new Error(['Passing props on "Fragment"!',"",`The current component <${r} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(s).map(m=>` - ${m}`).join(` +`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(m=>` - ${m}`).join(` +`)].join(` +`));let h=vf((l=p.props)==null?void 0:l.className,s.className),y=h?{className:h}:{};return x.cloneElement(p,Object.assign({},Sf(p.props,qs(Io(s,["ref"]))),v,a,S0(p.ref,a.ref),y))}return x.createElement(o,Object.assign({},Io(s,["ref"]),o!==x.Fragment&&a,o!==x.Fragment&&v),p)}function S0(...e){return{ref:e.every(t=>t==null)?void 0:t=>{for(let n of e)n!=null&&(typeof n=="function"?n(t):n.current=t)}}}function Sf(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},n={};for(let r of e)for(let l in r)l.startsWith("on")&&typeof r[l]=="function"?(n[l]!=null||(n[l]=[]),n[l].push(r[l])):t[l]=r[l];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map(r=>[r,void 0])));for(let r in n)Object.assign(t,{[r](l,...o){let i=n[r];for(let u of i){if((l instanceof Event||l?.nativeEvent instanceof Event)&&l.defaultPrevented)return;u(l,...o)}}});return t}function Du(e){var t;return Object.assign(x.forwardRef(e),{displayName:(t=e.displayName)!=null?t:e.name})}function qs(e){let t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}function Io(e,t=[]){let n=Object.assign({},e);for(let r of t)r in n&&delete n[r];return n}let Ou=x.createContext(null);Ou.displayName="OpenClosedContext";var Xe=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(Xe||{});function Ef(){return x.useContext(Ou)}function E0({value:e,children:t}){return Oe.createElement(Ou.Provider,{value:e},t)}function kf(){let e=x.useRef(!1);return Xl(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function k0(e=0){let[t,n]=x.useState(e),r=x.useCallback(u=>n(s=>s|u),[t]),l=x.useCallback(u=>Boolean(t&u),[t]),o=x.useCallback(u=>n(s=>s&~u),[n]),i=x.useCallback(u=>n(s=>s^u),[n]);return{flags:t,addFlag:r,hasFlag:l,removeFlag:o,toggleFlag:i}}function C0(e){let t={called:!1};return(...n)=>{if(!t.called)return t.called=!0,e(...n)}}function Fo(e,...t){e&&t.length>0&&e.classList.add(...t)}function Do(e,...t){e&&t.length>0&&e.classList.remove(...t)}function N0(e,t){let n=Jl();if(!e)return n.dispose;let{transitionDuration:r,transitionDelay:l}=getComputedStyle(e),[o,i]=[r,l].map(u=>{let[s=0]=u.split(",").filter(Boolean).map(a=>a.includes("ms")?parseFloat(a):parseFloat(a)*1e3).sort((a,p)=>p-a);return s});if(o+i!==0){let u=n.addEventListener(e,"transitionend",s=>{s.target===s.currentTarget&&(t(),u())})}else t();return n.add(()=>t()),n.dispose}function x0(e,t,n,r){let l=n?"enter":"leave",o=Jl(),i=r!==void 0?C0(r):()=>{};l==="enter"&&(e.removeAttribute("hidden"),e.style.display="");let u=He(l,{enter:()=>t.enter,leave:()=>t.leave}),s=He(l,{enter:()=>t.enterTo,leave:()=>t.leaveTo}),a=He(l,{enter:()=>t.enterFrom,leave:()=>t.leaveFrom});return Do(e,...t.enter,...t.enterTo,...t.enterFrom,...t.leave,...t.leaveFrom,...t.leaveTo,...t.entered),Fo(e,...u,...a),o.nextFrame(()=>{Do(e,...a),Fo(e,...s),N0(e,()=>(Do(e,...u),Fo(e,...t.entered),i()))}),o.dispose}function _0({container:e,direction:t,classes:n,onStart:r,onStop:l}){let o=kf(),i=hf(),u=dn(t);Xl(()=>{let s=Jl();i.add(s.dispose);let a=e.current;if(a&&u.current!=="idle"&&o.current)return s.dispose(),r.current(u.current),s.add(x0(a,n.current,u.current==="enter",()=>{s.dispose(),l.current(u.current)})),s.dispose},[t])}function Rt(e=""){return e.split(" ").filter(t=>t.trim().length>1)}let Zl=x.createContext(null);Zl.displayName="TransitionContext";var P0=(e=>(e.Visible="visible",e.Hidden="hidden",e))(P0||{});function T0(){let e=x.useContext(Zl);if(e===null)throw new Error("A is used but it is missing a parent or .");return e}function L0(){let e=x.useContext(ql);if(e===null)throw new Error("A is used but it is missing a parent or .");return e}let ql=x.createContext(null);ql.displayName="NestingContext";function bl(e){return"children"in e?bl(e.children):e.current.filter(({el:t})=>t.current!==null).filter(({state:t})=>t==="visible").length>0}function Cf(e,t){let n=dn(e),r=x.useRef([]),l=kf(),o=hf(),i=Ot((y,m=qe.Hidden)=>{let w=r.current.findIndex(({el:T})=>T===y);w!==-1&&(He(m,{[qe.Unmount](){r.current.splice(w,1)},[qe.Hidden](){r.current[w].state="hidden"}}),o.microTask(()=>{var T;!bl(r)&&l.current&&((T=n.current)==null||T.call(n))}))}),u=Ot(y=>{let m=r.current.find(({el:w})=>w===y);return m?m.state!=="visible"&&(m.state="visible"):r.current.push({el:y,state:"visible"}),()=>i(y,qe.Unmount)}),s=x.useRef([]),a=x.useRef(Promise.resolve()),p=x.useRef({enter:[],leave:[],idle:[]}),v=Ot((y,m,w)=>{s.current.splice(0),t&&(t.chains.current[m]=t.chains.current[m].filter(([T])=>T!==y)),t?.chains.current[m].push([y,new Promise(T=>{s.current.push(T)})]),t?.chains.current[m].push([y,new Promise(T=>{Promise.all(p.current[m].map(([f,c])=>c)).then(()=>T())})]),m==="enter"?a.current=a.current.then(()=>t?.wait.current).then(()=>w(m)):w(m)}),h=Ot((y,m,w)=>{Promise.all(p.current[m].splice(0).map(([T,f])=>f)).then(()=>{var T;(T=s.current.shift())==null||T()}).then(()=>w(m))});return x.useMemo(()=>({children:r,register:u,unregister:i,onStart:v,onStop:h,wait:a,chains:p}),[u,i,r,v,h,p,a])}function R0(){}let z0=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function bs(e){var t;let n={};for(let r of z0)n[r]=(t=e[r])!=null?t:R0;return n}function M0(e){let t=x.useRef(bs(e));return x.useEffect(()=>{t.current=bs(e)},[e]),t}let I0="div",Nf=yf.RenderStrategy;function F0(e,t){let{beforeEnter:n,afterEnter:r,beforeLeave:l,afterLeave:o,enter:i,enterFrom:u,enterTo:s,entered:a,leave:p,leaveFrom:v,leaveTo:h,...y}=e,m=x.useRef(null),w=gf(m,t),T=y.unmount?qe.Unmount:qe.Hidden,{show:f,appear:c,initial:d}=T0(),[g,S]=x.useState(f?"visible":"hidden"),k=L0(),{register:C,unregister:N}=k,F=x.useRef(null);x.useEffect(()=>C(m),[C,m]),x.useEffect(()=>{if(T===qe.Hidden&&m.current){if(f&&g!=="visible"){S("visible");return}return He(g,{hidden:()=>N(m),visible:()=>C(m)})}},[g,m,C,N,f,T]);let R=dn({enter:Rt(i),enterFrom:Rt(u),enterTo:Rt(s),entered:Rt(a),leave:Rt(p),leaveFrom:Rt(v),leaveTo:Rt(h)}),W=M0({beforeEnter:n,afterEnter:r,beforeLeave:l,afterLeave:o}),ye=mf();x.useEffect(()=>{if(ye&&g==="visible"&&m.current===null)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")},[m,g,ye]);let X=d&&!c,Nr=(()=>!ye||X||F.current===f?"idle":f?"enter":"leave")(),Pt=k0(0),Pn=Ot(O=>He(O,{enter:()=>{Pt.addFlag(Xe.Opening),W.current.beforeEnter()},leave:()=>{Pt.addFlag(Xe.Closing),W.current.beforeLeave()},idle:()=>{}})),Tn=Ot(O=>He(O,{enter:()=>{Pt.removeFlag(Xe.Opening),W.current.afterEnter()},leave:()=>{Pt.removeFlag(Xe.Closing),W.current.afterLeave()},idle:()=>{}})),_=Cf(()=>{S("hidden"),N(m)},k);_0({container:m,classes:R,direction:Nr,onStart:dn(O=>{_.onStart(m,O,Pn)}),onStop:dn(O=>{_.onStop(m,O,Tn),O==="leave"&&!bl(_)&&(S("hidden"),N(m))})}),x.useEffect(()=>{X&&(T===qe.Hidden?F.current=null:F.current=f)},[f,X,g]);let z=y,M={ref:w};return c&&f&&Jn.isServer&&(z={...z,className:vf(y.className,...R.current.enter,...R.current.enterFrom)}),Oe.createElement(ql.Provider,{value:_},Oe.createElement(E0,{value:He(g,{visible:Xe.Open,hidden:Xe.Closed})|Pt.flags},wf({ourProps:M,theirProps:z,defaultTag:I0,features:Nf,visible:g==="visible",name:"Transition.Child"})))}function D0(e,t){let{show:n,appear:r=!1,unmount:l,...o}=e,i=x.useRef(null),u=gf(i,t);mf();let s=Ef();if(n===void 0&&s!==null&&(n=(s&Xe.Open)===Xe.Open),![!0,!1].includes(n))throw new Error("A is used but it is missing a `show={true | false}` prop.");let[a,p]=x.useState(n?"visible":"hidden"),v=Cf(()=>{p("hidden")}),[h,y]=x.useState(!0),m=x.useRef([n]);Xl(()=>{h!==!1&&m.current[m.current.length-1]!==n&&(m.current.push(n),y(!1))},[m,n]);let w=x.useMemo(()=>({show:n,appear:r,initial:h}),[n,r,h]);x.useEffect(()=>{if(n)p("visible");else if(!bl(v))p("hidden");else{let f=i.current;if(!f)return;let c=f.getBoundingClientRect();c.x===0&&c.y===0&&c.width===0&&c.height===0&&p("hidden")}},[n,v]);let T={unmount:l};return Oe.createElement(ql.Provider,{value:v},Oe.createElement(Zl.Provider,{value:w},wf({ourProps:{...T,as:x.Fragment,children:Oe.createElement(xf,{ref:u,...T,...o})},theirProps:{},defaultTag:x.Fragment,features:Nf,visible:a==="visible",name:"Transition"})))}function O0(e,t){let n=x.useContext(Zl)!==null,r=Ef()!==null;return Oe.createElement(Oe.Fragment,null,!n&&r?Oe.createElement(Di,{ref:t,...e}):Oe.createElement(xf,{ref:t,...e}))}let Di=Du(D0),xf=Du(F0),A0=Du(O0),B0=Object.assign(Di,{Child:A0,Root:Di});const ol=x;function $0({title:e,titleId:t,...n},r){return ol.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r,"aria-labelledby":t},n),e?ol.createElement("title",{id:t},e):null,ol.createElement("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"}))}const U0=ol.forwardRef($0);var j0=U0;const il=x;function V0({title:e,titleId:t,...n},r){return il.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r,"aria-labelledby":t},n),e?il.createElement("title",{id:t},e):null,il.createElement("path",{d:"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"}))}const H0=il.forwardRef(V0);var Q0=H0,Au=j0,W0=Q0,kr={},K0=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},_f={},xe={};let Bu;const Y0=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];xe.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};xe.getSymbolTotalCodewords=function(t){return Y0[t]};xe.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};xe.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');Bu=t};xe.isKanjiModeEnabled=function(){return typeof Bu<"u"};xe.toSJIS=function(t){return Bu(t)};var eo={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}e.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},e.from=function(r,l){if(e.isValid(r))return r;try{return t(r)}catch{return l}}})(eo);function Pf(){this.buffer=[],this.length=0}Pf.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let n=0;n>>t-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var G0=Pf;function Cr(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Cr.prototype.set=function(e,t,n,r){const l=e*this.size+t;this.data[l]=n,r&&(this.reservedBit[l]=!0)};Cr.prototype.get=function(e,t){return this.data[e*this.size+t]};Cr.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n};Cr.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var X0=Cr,Tf={};(function(e){const t=xe.getSymbolSize;e.getRowColCoords=function(r){if(r===1)return[];const l=Math.floor(r/7)+2,o=t(r),i=o===145?26:Math.ceil((o-13)/(2*l-2))*2,u=[o-7];for(let s=1;s=0&&l<=7},e.from=function(l){return e.isValid(l)?parseInt(l,10):void 0},e.getPenaltyN1=function(l){const o=l.size;let i=0,u=0,s=0,a=null,p=null;for(let v=0;v=5&&(i+=t.N1+(u-5)),a=y,u=1),y=l.get(h,v),y===p?s++:(s>=5&&(i+=t.N1+(s-5)),p=y,s=1)}u>=5&&(i+=t.N1+(u-5)),s>=5&&(i+=t.N1+(s-5))}return i},e.getPenaltyN2=function(l){const o=l.size;let i=0;for(let u=0;u=10&&(u===1488||u===93)&&i++,s=s<<1&2047|l.get(p,a),p>=10&&(s===1488||s===93)&&i++}return i*t.N3},e.getPenaltyN4=function(l){let o=0;const i=l.data.length;for(let s=0;s=0;){const i=o[0];for(let s=0;s0){const o=new Uint8Array(this.degree);return o.set(r,l),o}return r};var Z0=$u,If={},_t={},Uu={};Uu.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var Ke={};const Ff="[0-9]+",q0="[A-Z $%*+\\-./:]+";let gr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";gr=gr.replace(/u/g,"\\u");const b0="(?:(?![A-Z0-9 $%*+\\-./:]|"+gr+`)(?:.|[\r +]))+`;Ke.KANJI=new RegExp(gr,"g");Ke.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Ke.BYTE=new RegExp(b0,"g");Ke.NUMERIC=new RegExp(Ff,"g");Ke.ALPHANUMERIC=new RegExp(q0,"g");const eh=new RegExp("^"+gr+"$"),th=new RegExp("^"+Ff+"$"),nh=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Ke.testKanji=function(t){return eh.test(t)};Ke.testNumeric=function(t){return th.test(t)};Ke.testAlphanumeric=function(t){return nh.test(t)};(function(e){const t=Uu,n=Ke;e.NUMERIC={id:"Numeric",bit:1<<0,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:1<<1,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:1<<2,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:1<<3,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(o,i){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!t.isValid(i))throw new Error("Invalid version: "+i);return i>=1&&i<10?o.ccBits[0]:i<27?o.ccBits[1]:o.ccBits[2]},e.getBestModeForData=function(o){return n.testNumeric(o)?e.NUMERIC:n.testAlphanumeric(o)?e.ALPHANUMERIC:n.testKanji(o)?e.KANJI:e.BYTE},e.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},e.isValid=function(o){return o&&o.bit&&o.ccBits};function r(l){if(typeof l!="string")throw new Error("Param is not a string");switch(l.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+l)}}e.from=function(o,i){if(e.isValid(o))return o;try{return r(o)}catch{return i}}})(_t);(function(e){const t=xe,n=to,r=eo,l=_t,o=Uu,i=1<<12|1<<11|1<<10|1<<9|1<<8|1<<5|1<<2|1<<0,u=t.getBCHDigit(i);function s(h,y,m){for(let w=1;w<=40;w++)if(y<=e.getCapacity(w,m,h))return w}function a(h,y){return l.getCharCountIndicator(h,y)+4}function p(h,y){let m=0;return h.forEach(function(w){const T=a(w.mode,y);m+=T+w.getBitsLength()}),m}function v(h,y){for(let m=1;m<=40;m++)if(p(h,m)<=e.getCapacity(m,y,l.MIXED))return m}e.from=function(y,m){return o.isValid(y)?parseInt(y,10):m},e.getCapacity=function(y,m,w){if(!o.isValid(y))throw new Error("Invalid QR Code version");typeof w>"u"&&(w=l.BYTE);const T=t.getSymbolTotalCodewords(y),f=n.getTotalCodewordsCount(y,m),c=(T-f)*8;if(w===l.MIXED)return c;const d=c-a(w,y);switch(w){case l.NUMERIC:return Math.floor(d/10*3);case l.ALPHANUMERIC:return Math.floor(d/11*2);case l.KANJI:return Math.floor(d/13);case l.BYTE:default:return Math.floor(d/8)}},e.getBestVersionForData=function(y,m){let w;const T=r.from(m,r.M);if(Array.isArray(y)){if(y.length>1)return v(y,T);if(y.length===0)return 1;w=y[0]}else w=y;return s(w.mode,w.getLength(),T)},e.getEncodedBits=function(y){if(!o.isValid(y)||y<7)throw new Error("Invalid QR Code version");let m=y<<12;for(;t.getBCHDigit(m)-u>=0;)m^=i<=0;)l^=Of<0&&(r=this.data.substr(n),l=parseInt(r,10),t.put(l,o*3+1))};var oh=Sn;const ih=_t,Oo=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function En(e){this.mode=ih.ALPHANUMERIC,this.data=e}En.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};En.prototype.getLength=function(){return this.data.length};En.prototype.getBitsLength=function(){return En.getBitsLength(this.data.length)};En.prototype.write=function(t){let n;for(n=0;n+2<=this.data.length;n+=2){let r=Oo.indexOf(this.data[n])*45;r+=Oo.indexOf(this.data[n+1]),t.put(r,11)}this.data.length%2&&t.put(Oo.indexOf(this.data[n]),6)};var uh=En,sh=function(t){for(var n=[],r=t.length,l=0;l=55296&&o<=56319&&r>l+1){var i=t.charCodeAt(l+1);i>=56320&&i<=57343&&(o=(o-55296)*1024+i-56320+65536,l+=1)}if(o<128){n.push(o);continue}if(o<2048){n.push(o>>6|192),n.push(o&63|128);continue}if(o<55296||o>=57344&&o<65536){n.push(o>>12|224),n.push(o>>6&63|128),n.push(o&63|128);continue}if(o>=65536&&o<=1114111){n.push(o>>18|240),n.push(o>>12&63|128),n.push(o>>6&63|128),n.push(o&63|128);continue}n.push(239,191,189)}return new Uint8Array(n).buffer};const ah=sh,ch=_t;function kn(e){this.mode=ch.BYTE,typeof e=="string"&&(e=ah(e)),this.data=new Uint8Array(e)}kn.getBitsLength=function(t){return t*8};kn.prototype.getLength=function(){return this.data.length};kn.prototype.getBitsLength=function(){return kn.getBitsLength(this.data.length)};kn.prototype.write=function(e){for(let t=0,n=this.data.length;t=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` +Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}};var hh=Cn,Ai={},mh={get exports(){return Ai},set exports(e){Ai=e}};(function(e){var t={single_source_shortest_paths:function(n,r,l){var o={},i={};i[r]=0;var u=t.PriorityQueue.make();u.push(r,0);for(var s,a,p,v,h,y,m,w,T;!u.empty();){s=u.pop(),a=s.value,v=s.cost,h=n[a]||{};for(p in h)h.hasOwnProperty(p)&&(y=h[p],m=v+y,w=i[p],T=typeof i[p]>"u",(T||w>m)&&(i[p]=m,u.push(p,m),o[p]=a))}if(typeof l<"u"&&typeof i[l]>"u"){var f=["Could not find a path from ",r," to ",l,"."].join("");throw new Error(f)}return o},extract_shortest_path_from_predecessor_list:function(n,r){for(var l=[],o=r;o;)l.push(o),n[o],o=n[o];return l.reverse(),l},find_path:function(n,r,l){var o=t.single_source_shortest_paths(n,r,l);return t.extract_shortest_path_from_predecessor_list(o,l)},PriorityQueue:{make:function(n){var r=t.PriorityQueue,l={},o;n=n||{};for(o in r)r.hasOwnProperty(o)&&(l[o]=r[o]);return l.queue=[],l.sorter=n.sorter||r.default_sorter,l},default_sorter:function(n,r){return n.cost-r.cost},push:function(n,r){var l={value:n,cost:r};this.queue.push(l),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(mh);(function(e){const t=_t,n=oh,r=uh,l=fh,o=hh,i=Ke,u=xe,s=Ai;function a(f){return unescape(encodeURIComponent(f)).length}function p(f,c,d){const g=[];let S;for(;(S=f.exec(d))!==null;)g.push({data:S[0],index:S.index,mode:c,length:S[0].length});return g}function v(f){const c=p(i.NUMERIC,t.NUMERIC,f),d=p(i.ALPHANUMERIC,t.ALPHANUMERIC,f);let g,S;return u.isKanjiModeEnabled()?(g=p(i.BYTE,t.BYTE,f),S=p(i.KANJI,t.KANJI,f)):(g=p(i.BYTE_KANJI,t.BYTE,f),S=[]),c.concat(d,g,S).sort(function(C,N){return C.index-N.index}).map(function(C){return{data:C.data,mode:C.mode,length:C.length}})}function h(f,c){switch(c){case t.NUMERIC:return n.getBitsLength(f);case t.ALPHANUMERIC:return r.getBitsLength(f);case t.KANJI:return o.getBitsLength(f);case t.BYTE:return l.getBitsLength(f)}}function y(f){return f.reduce(function(c,d){const g=c.length-1>=0?c[c.length-1]:null;return g&&g.mode===d.mode?(c[c.length-1].data+=d.data,c):(c.push(d),c)},[])}function m(f){const c=[];for(let d=0;d=0&&u<=6&&(s===0||s===6)||s>=0&&s<=6&&(u===0||u===6)||u>=2&&u<=4&&s>=2&&s<=4?e.set(o+u,i+s,!0,!0):e.set(o+u,i+s,!1,!0))}}function Nh(e){const t=e.size;for(let n=8;n>u&1)===1,e.set(l,o,i,!0),e.set(o,l,i,!0)}function $o(e,t,n){const r=e.size,l=Eh.getEncodedBits(t,n);let o,i;for(o=0;o<15;o++)i=(l>>o&1)===1,o<6?e.set(o,8,i,!0):o<8?e.set(o+1,8,i,!0):e.set(r-15+o,8,i,!0),o<8?e.set(8,r-o-1,i,!0):o<9?e.set(8,15-o-1+1,i,!0):e.set(8,15-o-1,i,!0);e.set(r-8,8,1,!0)}function Ph(e,t){const n=e.size;let r=-1,l=n-1,o=7,i=0;for(let u=n-1;u>0;u-=2)for(u===6&&u--;;){for(let s=0;s<2;s++)if(!e.isReserved(l,u-s)){let a=!1;i>>o&1)===1),e.set(l,u-s,a),o--,o===-1&&(i++,o=7)}if(l+=r,l<0||n<=l){l-=r,r=-r;break}}}function Th(e,t,n){const r=new gh;n.forEach(function(s){r.put(s.mode.bit,4),r.put(s.getLength(),kh.getCharCountIndicator(s.mode,e)),s.write(r)});const l=ro.getSymbolTotalCodewords(e),o=$i.getTotalCodewordsCount(e,t),i=(l-o)*8;for(r.getLengthInBits()+4<=i&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);const u=(i-r.getLengthInBits())/8;for(let s=0;s=7&&_h(s,t),Ph(s,i),isNaN(r)&&(r=Bi.getBestMask(s,$o.bind(null,s,n))),Bi.applyMask(r,s),$o(s,n,r),{modules:s,version:t,errorCorrectionLevel:n,maskPattern:r,segments:l}}_f.create=function(t,n){if(typeof t>"u"||t==="")throw new Error("No input text");let r=Ao.M,l,o;return typeof n<"u"&&(r=Ao.from(n.errorCorrectionLevel,Ao.M),l=Ml.from(n.version),o=Bi.from(n.maskPattern),n.toSJISFunc&&ro.setToSJISFunction(n.toSJISFunc)),Rh(t,l,r,o)};var Bf={},ju={};(function(e){function t(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let r=n.slice().replace("#","").split("");if(r.length<3||r.length===5||r.length>8)throw new Error("Invalid hex color: "+n);(r.length===3||r.length===4)&&(r=Array.prototype.concat.apply([],r.map(function(o){return[o,o]}))),r.length===6&&r.push("F","F");const l=parseInt(r.join(""),16);return{r:l>>24&255,g:l>>16&255,b:l>>8&255,a:l&255,hex:"#"+r.slice(0,6).join("")}}e.getOptions=function(r){r||(r={}),r.color||(r.color={});const l=typeof r.margin>"u"||r.margin===null||r.margin<0?4:r.margin,o=r.width&&r.width>=21?r.width:void 0,i=r.scale||4;return{width:o,scale:o?4:i,margin:l,color:{dark:t(r.color.dark||"#000000ff"),light:t(r.color.light||"#ffffffff")},type:r.type,rendererOpts:r.rendererOpts||{}}},e.getScale=function(r,l){return l.width&&l.width>=r+l.margin*2?l.width/(r+l.margin*2):l.scale},e.getImageWidth=function(r,l){const o=e.getScale(r,l);return Math.floor((r+l.margin*2)*o)},e.qrToImageData=function(r,l,o){const i=l.modules.size,u=l.modules.data,s=e.getScale(i,o),a=Math.floor((i+o.margin*2)*s),p=o.margin*s,v=[o.color.light,o.color.dark];for(let h=0;h=p&&y>=p&&h"u"&&(!i||!i.getContext)&&(s=i,i=void 0),i||(a=r()),s=t.getOptions(s);const p=t.getImageWidth(o.modules.size,s),v=a.getContext("2d"),h=v.createImageData(p,p);return t.qrToImageData(h.data,o,s),n(v,a,p),v.putImageData(h,0,0),a},e.renderToDataURL=function(o,i,u){let s=u;typeof s>"u"&&(!i||!i.getContext)&&(s=i,i=void 0),s||(s={});const a=e.render(o,i,s),p=s.type||"image/png",v=s.rendererOpts||{};return a.toDataURL(p,v.quality)}})(Bf);var $f={};const zh=ju;function na(e,t){const n=e.a/255,r=t+'="'+e.hex+'"';return n<1?r+" "+t+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function Uo(e,t,n){let r=e+t;return typeof n<"u"&&(r+=" "+n),r}function Mh(e,t,n){let r="",l=0,o=!1,i=0;for(let u=0;u0&&s>0&&e[u-1]||(r+=o?Uo("M",s+n,.5+a+n):Uo("m",l,0),l=0,o=!1),s+1':"",a="',p='viewBox="0 0 '+u+" "+u+'"',h=''+s+a+` +`;return typeof r=="function"&&r(null,h),h};const Ih=K0,Ui=_f,Uf=Bf,Fh=$f;function Vu(e,t,n,r,l){const o=[].slice.call(arguments,1),i=o.length,u=typeof o[i-1]=="function";if(!u&&!Ih())throw new Error("Callback required as last argument");if(u){if(i<2)throw new Error("Too few arguments provided");i===2?(l=n,n=t,t=r=void 0):i===3&&(t.getContext&&typeof l>"u"?(l=r,r=void 0):(l=r,r=n,n=t,t=void 0))}else{if(i<1)throw new Error("Too few arguments provided");return i===1?(n=t,t=r=void 0):i===2&&!t.getContext&&(r=n,n=t,t=void 0),new Promise(function(s,a){try{const p=Ui.create(n,r);s(e(p,t,r))}catch(p){a(p)}})}try{const s=Ui.create(n,r);l(null,e(s,t,r))}catch(s){l(s)}}kr.create=Ui.create;kr.toCanvas=Vu.bind(null,Uf.render);kr.toDataURL=Vu.bind(null,Uf.renderToDataURL);kr.toString=Vu.bind(null,function(e,t,n){return Fh.render(e,n)});const Dh=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Oh(e){return typeof e=="string"&&Dh.test(e)}function Ah(){const[e,t]=x.useState(""),[n,r]=x.useState(!1),[l,o]=x.useState({ws0Rtt:!1});function i(s){t(s),r(!0)}function u(s){o(s)}return x.useEffect(()=>{if(n){console.log("useEffect---setShow");const s=setTimeout(()=>{r(!1)},1500);return()=>{clearTimeout(s)}}},[n]),q(fa,{children:[q("div",{className:"flex flex-col items-center h-screen",children:[L(Qh,{}),q("div",{className:"flex flex-col h-full ite",children:[L(jh,{text:e}),L(Bh,{handleV2Option:u}),L(Hh,{handleShare:i,v2option:l}),L($h,{}),L(Vh,{handleShare:i})]})]}),L(Uh,{show:n,setShow:r})]})}function Bh({handleV2Option:e}){const[t,n]=x.useState(!1);return q("fieldset",{className:"mt-2 border-dashed border-2 border-indigo-600",children:[L("legend",{className:"sr-only",children:"Notifications"}),L("div",{className:"space-y-5",children:q("div",{className:"relative flex items-start",children:[L("div",{className:"flex h-6 items-center",children:L("input",{id:"ws0rtt","aria-describedby":"comments-description",name:"ws0rtt",type:"checkbox",checked:t,onChange:r=>{n(!t),e({ws0Rtt:!t})},className:"h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-600"})}),q("div",{className:"ml-3",children:[L("label",{htmlFor:"ws0rtt",className:"text-sm font-medium leading-6 text-gray-900",children:"WS 0RTT"}),L("p",{id:"comments-description",className:"text-sm text-gray-500",children:"Enable WS 0RTT"})]})]})})]})}function $h(){return L("div",{className:"p-4 rounded-md bg-yellow-50",children:q("div",{className:"flex",children:[L("div",{className:"flex-shrink-0",children:L(Au,{className:"w-5 h-5 text-yellow-400","aria-hidden":"true"})}),q("div",{className:"ml-3",children:[L("h3",{className:"text-sm font-medium text-yellow-800",children:"请注意!"}),L("div",{className:"mt-2 text-sm text-yellow-700",children:q("p",{children:["如果遇到连不上网的情况, 请查看/参考具体客户端的  ",L("a",{target:"_blank",href:"https://github.com/zizifn/edgetunnel#%E5%AE%A2%E6%88%B7%E7%AB%AF-v2rayn-%E9%85%8D%E7%BD%AE",className:"font-medium text-yellow-700 underline hover:text-yellow-600",children:"DNS 相关设置。"})]})})]})]})})}function Uh({show:e,setShow:t}){return L(fa,{children:L("div",{"aria-live":"assertive",className:"fixed inset-0 flex items-end px-4 py-6 pointer-events-none sm:items-start sm:p-6",children:L("div",{className:"flex flex-col items-center w-full space-y-4 sm:items-end",children:L(B0,{show:e,as:x.Fragment,enter:"transform ease-out duration-300 transition",enterFrom:"translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2",enterTo:"translate-y-0 opacity-100 sm:translate-x-0",leave:"transition ease-in duration-100",leaveFrom:"opacity-100",leaveTo:"opacity-0",children:L("div",{className:"w-full max-w-sm overflow-hidden bg-white rounded-lg shadow-lg pointer-events-auto ring-1 ring-black ring-opacity-5",children:L("div",{className:"p-4",children:q("div",{className:"flex items-start",children:[L("div",{className:"flex-shrink-0",children:L(Au,{className:"w-6 h-6 text-red-700","aria-hidden":"true"})}),q("div",{className:"ml-3 w-0 flex-1 pt-0.5",children:[L("p",{className:"text-sm font-medium text-gray-900",children:"分享成功!"}),L("p",{className:"mt-1 text-sm text-red-500",children:"请不要随意泄露分享链接!!"})]}),L("div",{className:"flex flex-shrink-0 ml-4",children:q("button",{type:"button",className:"inline-flex text-gray-400 bg-white rounded-md hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2",onClick:()=>{t(!1)},children:[L("span",{className:"sr-only",children:"Close"}),L(W0,{className:"w-5 h-5","aria-hidden":"true"})]})})]})})})})})})})}function jh({text:e}){const[t,n]=x.useState(""),[r,l]=x.useState(!1);x.useEffect(()=>{(async()=>{if(e){const i=await kr.toDataURL(e);n(i)}})()},[e]);async function o(){await navigator.clipboard.writeText(e),l(!0),setTimeout(()=>{l(!1)},1500)}return q("div",{className:"flex flex-col border border-blue-300 overflow-hidden w-[500px] h-[420px] justify-start items-center",children:[L("img",{src:t,width:"350",height:"350",alt:"二维码",className:"border-spacing-1"}),q("div",{className:"flex flex-grow w-full bg-gray-200",children:[L("span",{className:"flex-grow break-normal overflow-scroll w-4/5",children:e}),q("div",{className:"w-6 h-6 ml-auto",children:[L("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",onClick:o,className:`w-6 h-6 hover:cursor-pointer hover:border hover:border-indigo-500 ${r?"hidden":"block"}`,children:L("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5A3.375 3.375 0 006.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0015 2.25h-1.5a2.251 2.251 0 00-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 00-9-9z"})}),L("svg",{"aria-hidden":"true",height:"16",viewBox:"0 0 16 16",version:"1.1",className:`w-6 h-6 hover:border hover:border-indigo-500 ${r?"block bg-green-300":"hidden"}`,children:L("path",{fillRule:"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})})]})]})]})}function Vh({handleShare:e}){const[t,n]=x.useState("");return q("div",{className:"mt-4",children:[L("label",{htmlFor:"comment",className:"block text-sm font-medium text-gray-700",children:"随意要分享的内容."}),L("div",{className:"mt-1",children:L("textarea",{rows:4,name:"comment",id:"comment",className:"block w-full border border-gray-300 rounded-md shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm",value:t,onChange:r=>n(r.target.value)})}),L("div",{className:"flex justify-end mt-2",children:L("button",{onClick:()=>e(t),type:"submit",className:"inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-transparent rounded-md shadow-sm hover:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2",children:"分享"})})]})}function Hh({handleShare:e,v2option:t}){function n(){return window.location.href}function r(){const l=new URL(window.location.href),o=l.pathname.split("/").find(Oh);let i="";return t.ws0Rtt&&(i=`${i}?ed=2048`),i&&(i=`&path=${encodeURIComponent(i)}`),`vless://${o}@${l.hostname}:443?encryption=none&security=tls&type=ws${i||""}#${l.hostname}`}return q("span",{className:"inline-flex self-center mt-4 rounded-md shadow-sm isolate",children:[L("button",{onClick:()=>e(n()),type:"button",className:"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-l-md hover:border-indigo-500 focus:z-10 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500",children:"分享本页"}),L("button",{onClick:()=>e(r()),type:"button",className:"relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 hover:bg-gray-50 focus:z-10 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500",children:"分享 V2ray"})]})}function Qh(){return L("div",{className:"flex justify-center w-full p-4 rounded-md bg-red-50",children:q("div",{className:"flex",children:[L("div",{className:"flex-shrink-0",children:L(Au,{className:"w-5 h-5 text-red-700","aria-hidden":"true"})}),q("div",{className:"ml-3",children:[L("h3",{className:"text-sm font-medium text-red-700",children:"注意!!"}),L("div",{className:"mt-2 text-sm text-red-700",children:L("p",{children:"泄露本页面就等于泄露你的设置。"})})]})]})})}const Wh=pf(document.getElementById("root"));Wh.render(L(x.StrictMode,{children:L(Ah,{})})); diff --git a/apps/deno-vless/public/favicon.ico b/dist/apps/cf-page/favicon.ico similarity index 100% rename from apps/deno-vless/public/favicon.ico rename to dist/apps/cf-page/favicon.ico diff --git a/apps/deno-vless/src/client/index.html b/dist/apps/cf-page/index.html similarity index 64% rename from apps/deno-vless/src/client/index.html rename to dist/apps/cf-page/index.html index 3a2a7cd..fb6065b 100644 --- a/apps/deno-vless/src/client/index.html +++ b/dist/apps/cf-page/index.html @@ -3,13 +3,14 @@ - Edge Tunnel VLESS Deno + Edge Tunnel VLESS CF - - + + + diff --git a/import_map.json b/import_map.json new file mode 100644 index 0000000..9d432e6 --- /dev/null +++ b/import_map.json @@ -0,0 +1,7 @@ +{ + "imports": { + "vless-js": "./libs/vless-js/src/lib/vless-js.ts", + "uuid": "https://jspm.dev/uuid", + "lodash": "https://jspm.dev/lodash-es" + } +} diff --git a/ipv6-nodejs.js b/ipv6-nodejs.js new file mode 100644 index 0000000..6d10493 --- /dev/null +++ b/ipv6-nodejs.js @@ -0,0 +1,11 @@ +const http = require('http'); + +const server = http.createServer((req, res) => { + res.statusCode = 200; + res.setHeader('Content-Type', 'text/plain'); + res.end('Hello, World!\n'); +}); + +server.listen(4000, '::', () => { + console.log('Server running on http://[::]:3000/'); +}); diff --git a/libs/edge-ui/src/lib/app.tsx b/libs/edge-ui/src/lib/app.tsx index 8d3ed7b..3b45f93 100644 --- a/libs/edge-ui/src/lib/app.tsx +++ b/libs/edge-ui/src/lib/app.tsx @@ -4,13 +4,20 @@ import { ExclamationTriangleIcon, XMarkIcon } from '@heroicons/react/20/solid'; import QRCode from 'qrcode'; import { Fragment, useEffect, useState } from 'react'; import { validate as uuidValidate } from 'uuid'; +import { V2Option } from './model'; export function EdgeApp() { const [text, setText] = useState(''); const [show, setShow] = useState(false); + const [v2Option, setV2Option] = useState({ + ws0Rtt: false, + }); function handleShare(text: string) { setText(text); setShow(true); } + function handleV2Option(option: V2Option) { + setV2Option(option); + } useEffect(() => { if (show) { @@ -29,7 +36,11 @@ export function EdgeApp() {
- + +
@@ -39,6 +50,50 @@ export function EdgeApp() { ); } +function V2Options({ + handleV2Option, +}: { + handleV2Option: (option: V2Option) => void; +}) { + const [ws0Rtt, setWs0Rtt] = useState(false); + return ( +
+ Notifications +
+
+
+ { + setWs0Rtt(!ws0Rtt); + handleV2Option({ + ws0Rtt: !ws0Rtt, + }); + }} + className="h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-600" + /> +
+
+ +

+ Enable WS 0RTT +

+
+
+
+
+ ); +} + function SetUpAlert() { return (
@@ -154,7 +209,7 @@ function QRcodeImg({ text }: { text: string }) { } return ( -
+
- {text} + + {text} +
void; + v2option: V2Option; }) { function getPageURL() { return window.location.href; @@ -249,7 +308,18 @@ function ShareActions({ function getVlessURL() { const url = new URL(window.location.href); const uuid = url.pathname.split('/').find(uuidValidate); - return `vless://${uuid}@${url.hostname}:443?encryption=none&security=tls&type=ws#v2ray-edge`; + let pathParam = ''; + if (v2option.ws0Rtt) { + pathParam = `${pathParam}?ed=2048`; + } + if (pathParam) { + pathParam = `&path=${encodeURIComponent(pathParam)}`; + } + return `vless://${uuid}@${ + url.hostname + }:443?encryption=none&security=tls&type=ws${pathParam || ''}#${ + url.hostname + }`; } return ( diff --git a/libs/edge-ui/src/lib/model.ts b/libs/edge-ui/src/lib/model.ts new file mode 100644 index 0000000..66742a1 --- /dev/null +++ b/libs/edge-ui/src/lib/model.ts @@ -0,0 +1,5 @@ +type V2Option = { + ws0Rtt: boolean; +}; + +export { V2Option }; diff --git a/libs/vless-js/src/index.ts b/libs/vless-js/src/index.ts index d1be224..264588b 100644 --- a/libs/vless-js/src/index.ts +++ b/libs/vless-js/src/index.ts @@ -1 +1,6 @@ -export * from './lib/vless-js'; +export { + delay, + makeReadableWebSocketStream, + closeWebSocket, + processVlessHeader, +} from './lib/vless-js'; diff --git a/libs/vless-js/src/lib/vless-js.ts b/libs/vless-js/src/lib/vless-js.ts index 21e1c3a..8e9ecc3 100644 --- a/libs/vless-js/src/lib/vless-js.ts +++ b/libs/vless-js/src/lib/vless-js.ts @@ -1,3 +1,4 @@ +import { stringify } from 'uuid'; export function vlessJs(): string { return 'vless-js'; } @@ -7,180 +8,18 @@ export function delay(ms: number) { setTimeout(resolve, ms); }); } -export async function processWebSocket({ - userID, - webSocket, - rawTCPFactory, - libs: { uuid, lodash }, -}: { - userID: string; - webSocket: WebSocket; - rawTCPFactory: (port: number, hostname: string) => Promise; - libs: { uuid: any; lodash: any }; -}) { - let address = ''; - let portWithRandomLog = ''; - let remoteConnection: { - readable: any; - writable: any; - write: (arg0: Uint8Array) => any; - close: () => void; - } | null = null; - let remoteConnectionReadyResolve: Function; - try { - const log = (info: string, event?: any) => { - console.log(`[${address}:${portWithRandomLog}] ${info}`, event || ''); - }; - const readableWebSocketStream = makeReadableWebSocketStream(webSocket, log); - let vlessResponseHeader: Uint8Array | null = null; - - // ws --> remote - readableWebSocketStream - .pipeTo( - new WritableStream({ - async write(chunk, controller) { - const vlessBuffer = chunk; - if (remoteConnection) { - const number = await remoteConnection.write( - new Uint8Array(vlessBuffer) - ); - return; - } - const { - hasError, - message, - portRemote, - addressRemote, - rawDataIndex, - vlessVersion, - isUDP, - } = processVlessHeader(vlessBuffer, userID, uuid, lodash); - address = addressRemote || ''; - portWithRandomLog = `${portRemote}--${Math.random()}`; - if (isUDP) { - controller.error( - `[${address}:${portWithRandomLog}] command udp is not support ` - ); - } - if (hasError) { - controller.error(`[${address}:${portWithRandomLog}] ${message} `); - } - // const addressType = requestAddr >> 4; - // const addressLength = requestAddr & 0x0f; - console.log(`[${address}:${portWithRandomLog}] connecting`); - remoteConnection = await rawTCPFactory(portRemote!, address!); - vlessResponseHeader = new Uint8Array([vlessVersion![0], 0]); - const rawClientData = vlessBuffer.slice(rawDataIndex!); - await remoteConnection!.write(new Uint8Array(rawClientData)); - remoteConnectionReadyResolve(remoteConnection); - }, - close() { - console.log( - `[${address}:${portWithRandomLog}] readableWebSocketStream is close` - ); - }, - abort(reason) { - console.log( - `[${address}:${portWithRandomLog}] readableWebSocketStream is abort`, - JSON.stringify(reason) - ); - }, - }) - ) - .catch((error) => { - console.error( - `[${address}:${portWithRandomLog}] readableWebSocketStream pipeto has exception`, - error.stack || error - ); - // error is cancel readable stream anyway, no need close websocket in here - // closeWebSocket(webSocket); - // close remote conn - // remoteConnection?.close(); - }); - await new Promise((resolve) => (remoteConnectionReadyResolve = resolve)); - let remoteChunkCount = 0; - let totoal = 0; - // remote --> ws - await remoteConnection!.readable.pipeTo( - new WritableStream({ - start() { - if (webSocket.readyState === webSocket.OPEN) { - webSocket.send(vlessResponseHeader!); - } - }, - async write(chunk: Uint8Array, controller) { - function send2WebSocket() { - if (webSocket.readyState !== webSocket.OPEN) { - controller.error( - `can't accept data from remoteConnection!.readable when client webSocket is close early` - ); - return; - } - webSocket.send(chunk); - } - - remoteChunkCount++; - //#region - // console.log( - // `${(totoal += - // chunk.length)}, count: ${remoteChunkCount.toString()}, ${ - // chunk.length - // }` - // ); - // https://github.com/zizifn/edgetunnel/issues/87, hack for this issue, maybe websocket sent too many small chunk, - // casue v2ray client can't process https://github.com/denoland/deno/issues/17332 - // limit X number count / bandwith, due to deno can't read bufferedAmount in deno, - // this is deno bug and this will not need in nodejs version - //#endregion - if (remoteChunkCount < 20) { - send2WebSocket(); - } else if (remoteChunkCount < 120) { - await delay(10); // 64kb * 100 = 6m/s - send2WebSocket(); - } else if (remoteChunkCount < 500) { - await delay(20); // (64kb * 1000/20) = 3m/s - send2WebSocket(); - } else { - await delay(50); // (64kb * 1000/50) /s - send2WebSocket(); - } - }, - close() { - console.log( - `[${address}:${portWithRandomLog}] remoteConnection!.readable is close` - ); - }, - abort(reason) { - closeWebSocket(webSocket); - console.error( - `[${address}:${portWithRandomLog}] remoteConnection!.readable abort`, - reason - ); - }, - }) - ); - } catch (error: any) { - console.error( - `[${address}:${portWithRandomLog}] processWebSocket has exception `, - error.stack || error - ); - closeWebSocket(webSocket); - } - return; -} export function makeReadableWebSocketStream( ws: WebSocket | any, + earlyDataHeader: string, log: Function ) { let readableStreamCancel = false; return new ReadableStream({ start(controller) { ws.addEventListener('message', async (e: { data: ArrayBuffer }) => { - // console.log('MESSAGE'); const vlessBuffer: ArrayBuffer = e.data; // console.log('MESSAGE', vlessBuffer); - // console.log(`message is ${vlessBuffer.byteLength}`); // this is not backpressure, but backpressure is depends on underying websocket can pasue // https://streams.spec.whatwg.org/#example-rs-push-backpressure @@ -194,7 +33,7 @@ export function makeReadableWebSocketStream( ws.addEventListener('close', () => { try { log('webSocket is close'); - // is stream is cancel, skill controller.close + // is stream is cancel, skip controller.close if (readableStreamCancel) { return; } @@ -203,9 +42,23 @@ export function makeReadableWebSocketStream( log(`websocketStream can't close DUE to `, error); } }); + // header ws 0rtt + const { earlyData, error } = base64ToArrayBuffer(earlyDataHeader); + if (error) { + log(`earlyDataHeader has invaild base64`); + closeWebSocket(ws); + return; + } + if (earlyData) { + controller.enqueue(earlyData); + } + }, + pull(controller) { + // if ws can stop read if stream is full, we can implement backpressure + // https://streams.spec.whatwg.org/#example-rs-push-backpressure }, - pull(controller) {}, cancel(reason) { + // TODO: log can be remove, if writestream has error, write stream will has log log(`websocketStream is cancel DUE to `, reason); if (readableStreamCancel) { return; @@ -216,6 +69,21 @@ export function makeReadableWebSocketStream( }); } +function base64ToArrayBuffer(base64Str: string) { + if (!base64Str) { + return { error: null }; + } + try { + // go use modified Base64 for URL rfc4648 which js atob not support + base64Str = base64Str.replace(/-/g, '+').replace(/_/g, '/'); + const decode = atob(base64Str); + const arryBuffer = Uint8Array.from(decode, (c) => c.charCodeAt(0)); + return { earlyData: arryBuffer.buffer, error: null }; + } catch (error) { + return { error }; + } +} + export function closeWebSocket(socket: WebSocket | any) { if (socket.readyState === socket.OPEN) { socket.close(); @@ -223,16 +91,16 @@ export function closeWebSocket(socket: WebSocket | any) { } //https://github.com/v2ray/v2ray-core/issues/2636 -// 1 字节 16 字节 1 字节 M 字节 1 字节 2 字节 1 字节 S 字节 X 字节 -// 协议版本 等价 UUID 附加信息长度 M 附加信息 ProtoBuf 指令 端口 地址类型 地址 请求数据 - +// 1 字节 16 字节 1 字节 M 字节 1 字节 2 字节 1 字节 S 字节 X 字节 +// 协议版本 等价 UUID 附加信息长度 M (附加信息 ProtoBuf) 指令(udp/tcp) 端口 地址类型 地址 请求数据 +// 00 00 01 01bb(443) 02(ip/host) // 1 字节 1 字节 N 字节 Y 字节 // 协议版本,与请求的一致 附加信息长度 N 附加信息 ProtoBuf 响应数据 export function processVlessHeader( vlessBuffer: ArrayBuffer, - userID: string, - uuidLib: any, - lodash: any + userID: string + // uuidLib: any, + // lodash: any ) { if (vlessBuffer.byteLength < 24) { // console.log('invalid data'); @@ -245,7 +113,7 @@ export function processVlessHeader( const version = new Uint8Array(vlessBuffer.slice(0, 1)); let isValidUser = false; let isUDP = false; - if (uuidLib.stringify(new Uint8Array(vlessBuffer.slice(1, 17))) === userID) { + if (stringify(new Uint8Array(vlessBuffer.slice(1, 17))) === userID) { isValidUser = true; } if (!isValidUser) { @@ -311,26 +179,20 @@ export function processVlessHeader( break; case 3: addressLength = 16; - const addressChunkBy2: number[][] = lodash.chunk( - new Uint8Array( - vlessBuffer.slice( - addressValueIndex, - addressValueIndex + addressLength - ) - ), - 2, - null + const dataView = new DataView( + vlessBuffer.slice(addressValueIndex, addressValueIndex + addressLength) ); // 2001:0db8:85a3:0000:0000:8a2e:0370:7334 - addressValue = addressChunkBy2 - .map((items) => - items.map((item) => item.toString(16).padStart(2, '0')).join('') - ) - .join(':'); - if (addressValue) { - addressValue = `[${addressValue}]`; + const ipv6 = []; + for (let i = 0; i < 8; i++) { + ipv6.push(dataView.getUint16(i * 2).toString(16)); } - + addressValue = ipv6.join(':'); + // console.log('---------', addressValue) + // seems no need add [] for ipv6 + // if (addressValue) { + // addressValue = `[${addressValue}]`; + // } break; default: console.log(`invild addressType is ${addressType}`); diff --git a/nx.json b/nx.json index 692ce54..acf1042 100644 --- a/nx.json +++ b/nx.json @@ -50,5 +50,6 @@ } } }, - "defaultProject": "cf-page" + "defaultProject": "cf-page", + "plugins": ["@nrwl/deno"] } diff --git a/package-lock.json b/package-lock.json index f0b3212..e3d2528 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ "@cloudflare/workers-types": "^4.20230221.0", "@nrwl/cli": "15.7.2", "@nrwl/cypress": "15.7.2", + "@nrwl/deno": "^0.157.0", "@nrwl/eslint-plugin-nx": "15.7.2", "@nrwl/jest": "15.7.2", "@nrwl/js": "15.7.2", @@ -4359,6 +4360,33 @@ } } }, + "node_modules/@nrwl/deno": { + "version": "0.157.0", + "resolved": "https://registry.npmmirror.com/@nrwl/deno/-/deno-0.157.0.tgz", + "integrity": "sha512-LW7thChQ08W6N/h/NDT7RPzXvVM2WuP+2qdzgsdlRKRJK5HQdYS/B/geic/AbzY52O+Ajj/mBFqb6LfxXJrStw==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "15.7.0", + "@swc/core": "^1.2.173", + "fs-extra": "^11.1.0" + } + }, + "node_modules/@nrwl/deno/node_modules/@nrwl/devkit": { + "version": "15.7.0", + "resolved": "https://registry.npmmirror.com/@nrwl/devkit/-/devkit-15.7.0.tgz", + "integrity": "sha512-aPh3xnSpP4HH8sU2ICuuhtBgp2k4ydfkW/uTOlK/BvT94++AJ/Aj8ZSJFWAd2IteFsMNynPz5c0jLO+MSTqRnA==", + "dev": true, + "dependencies": { + "@phenomnomnominal/tsquery": "4.1.1", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.3.4", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 14.1 <= 16" + } + }, "node_modules/@nrwl/devkit": { "version": "15.7.2", "resolved": "https://registry.npmmirror.com/@nrwl/devkit/-/devkit-15.7.2.tgz", @@ -5173,6 +5201,188 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@swc/core": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.3.37.tgz", + "integrity": "sha512-VOFlEQ1pReOM73N9A7R8rt561GU8Rxsq833jiimWDUB2sXEN3V6n6wFTgYmZuMz2T4/R0cQA1nV48KkaT4gkFw==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=10" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.37", + "@swc/core-darwin-x64": "1.3.37", + "@swc/core-linux-arm-gnueabihf": "1.3.37", + "@swc/core-linux-arm64-gnu": "1.3.37", + "@swc/core-linux-arm64-musl": "1.3.37", + "@swc/core-linux-x64-gnu": "1.3.37", + "@swc/core-linux-x64-musl": "1.3.37", + "@swc/core-win32-arm64-msvc": "1.3.37", + "@swc/core-win32-ia32-msvc": "1.3.37", + "@swc/core-win32-x64-msvc": "1.3.37" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.37.tgz", + "integrity": "sha512-iIyVqqioUpVeT/hbBVfkrsjfCyL4idNH+LVKGmoTAWaTTSB0+UNhNuA7Wh2CqIHWh1Mv7IlumitWPcqsVDdoEw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.37.tgz", + "integrity": "sha512-dao5nXPWKxtaxqak4ZkRyBoApNIelW/glantQhPhj0FjMjuIQc+v03ldJ8XDByWOG+6xuVUTheANCtEccxoQBw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.37.tgz", + "integrity": "sha512-/mVrc8H/f062CUkqKGmBiil2VIYu4mKawHxERfeP1y38X5K/OwjG5s9MgO9TVxy+Ly6vejwj70kRhSa3hVp1Bw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.37.tgz", + "integrity": "sha512-eRQ3KaZI0j5LidTfOIi/kUVOOMuVmw1HCdt/Z1TAUKoHMLVxY8xcJ3pEE3/+ednI60EmHpwpJRs6LelXyL6uzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.37.tgz", + "integrity": "sha512-w2BRLODyxNQY2rfHZMZ5ir6QrrnGBPlnIslTrgKmVbn1OjZoxUCtuqhrYnCmybaAc4DOkeH02TqynEFXrm+EMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.37.tgz", + "integrity": "sha512-CfoH8EsZJZ9kunjMUjBNYD5fFuO86zw+K/o4wEw72Yg6ZEiqPmeIlCKU8tpTv4sK+CbhUXrmVzMB5tqsb2jALQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.37.tgz", + "integrity": "sha512-9YPrHYNdoG7PK11gV51GfL45biI2dic+YTqHUDKyykemsD7Ot1zUFX7Ty//pdvpKcKSff6SrHbfFACD5ziNirA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.37.tgz", + "integrity": "sha512-h17Ek8/wCDje6BrXOvCXBM80oBRmTSMMdLyt87whTl5xqYlWYYs9oQIzZndNRTlNpTgjGO8Ns2eo4kwVxIkBIA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.37.tgz", + "integrity": "sha512-1BR175E1olGy/zdt94cgdb6ps/lBNissAOaxyBk8taFpcjy3zpdP30yAoH0GIsC6isnZ5JfArbOJNRXXO5tE0Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.37.tgz", + "integrity": "sha512-1siDQ7dccQ1pesJmgAL3BUBbRPtfbNInOWnZOkiie/DfFqGQ117QKnCVyjUvwFKfTQx1+3UUTDmMSlRd00SlXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@swc/helpers": { "version": "0.4.14", "resolved": "https://registry.npmmirror.com/@swc/helpers/-/helpers-0.4.14.tgz", @@ -24077,6 +24287,32 @@ "semver": "7.3.4" } }, + "@nrwl/deno": { + "version": "0.157.0", + "resolved": "https://registry.npmmirror.com/@nrwl/deno/-/deno-0.157.0.tgz", + "integrity": "sha512-LW7thChQ08W6N/h/NDT7RPzXvVM2WuP+2qdzgsdlRKRJK5HQdYS/B/geic/AbzY52O+Ajj/mBFqb6LfxXJrStw==", + "dev": true, + "requires": { + "@nrwl/devkit": "15.7.0", + "@swc/core": "^1.2.173", + "fs-extra": "^11.1.0" + }, + "dependencies": { + "@nrwl/devkit": { + "version": "15.7.0", + "resolved": "https://registry.npmmirror.com/@nrwl/devkit/-/devkit-15.7.0.tgz", + "integrity": "sha512-aPh3xnSpP4HH8sU2ICuuhtBgp2k4ydfkW/uTOlK/BvT94++AJ/Aj8ZSJFWAd2IteFsMNynPz5c0jLO+MSTqRnA==", + "dev": true, + "requires": { + "@phenomnomnominal/tsquery": "4.1.1", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.3.4", + "tslib": "^2.3.0" + } + } + } + }, "@nrwl/devkit": { "version": "15.7.2", "resolved": "https://registry.npmmirror.com/@nrwl/devkit/-/devkit-15.7.2.tgz", @@ -24705,6 +24941,94 @@ "@sinonjs/commons": "^1.7.0" } }, + "@swc/core": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.3.37.tgz", + "integrity": "sha512-VOFlEQ1pReOM73N9A7R8rt561GU8Rxsq833jiimWDUB2sXEN3V6n6wFTgYmZuMz2T4/R0cQA1nV48KkaT4gkFw==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.3.37", + "@swc/core-darwin-x64": "1.3.37", + "@swc/core-linux-arm-gnueabihf": "1.3.37", + "@swc/core-linux-arm64-gnu": "1.3.37", + "@swc/core-linux-arm64-musl": "1.3.37", + "@swc/core-linux-x64-gnu": "1.3.37", + "@swc/core-linux-x64-musl": "1.3.37", + "@swc/core-win32-arm64-msvc": "1.3.37", + "@swc/core-win32-ia32-msvc": "1.3.37", + "@swc/core-win32-x64-msvc": "1.3.37" + } + }, + "@swc/core-darwin-arm64": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.37.tgz", + "integrity": "sha512-iIyVqqioUpVeT/hbBVfkrsjfCyL4idNH+LVKGmoTAWaTTSB0+UNhNuA7Wh2CqIHWh1Mv7IlumitWPcqsVDdoEw==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.37.tgz", + "integrity": "sha512-dao5nXPWKxtaxqak4ZkRyBoApNIelW/glantQhPhj0FjMjuIQc+v03ldJ8XDByWOG+6xuVUTheANCtEccxoQBw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.37.tgz", + "integrity": "sha512-/mVrc8H/f062CUkqKGmBiil2VIYu4mKawHxERfeP1y38X5K/OwjG5s9MgO9TVxy+Ly6vejwj70kRhSa3hVp1Bw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.37.tgz", + "integrity": "sha512-eRQ3KaZI0j5LidTfOIi/kUVOOMuVmw1HCdt/Z1TAUKoHMLVxY8xcJ3pEE3/+ednI60EmHpwpJRs6LelXyL6uzQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.37.tgz", + "integrity": "sha512-w2BRLODyxNQY2rfHZMZ5ir6QrrnGBPlnIslTrgKmVbn1OjZoxUCtuqhrYnCmybaAc4DOkeH02TqynEFXrm+EMw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.37.tgz", + "integrity": "sha512-CfoH8EsZJZ9kunjMUjBNYD5fFuO86zw+K/o4wEw72Yg6ZEiqPmeIlCKU8tpTv4sK+CbhUXrmVzMB5tqsb2jALQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.37.tgz", + "integrity": "sha512-9YPrHYNdoG7PK11gV51GfL45biI2dic+YTqHUDKyykemsD7Ot1zUFX7Ty//pdvpKcKSff6SrHbfFACD5ziNirA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.37.tgz", + "integrity": "sha512-h17Ek8/wCDje6BrXOvCXBM80oBRmTSMMdLyt87whTl5xqYlWYYs9oQIzZndNRTlNpTgjGO8Ns2eo4kwVxIkBIA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.37.tgz", + "integrity": "sha512-1BR175E1olGy/zdt94cgdb6ps/lBNissAOaxyBk8taFpcjy3zpdP30yAoH0GIsC6isnZ5JfArbOJNRXXO5tE0Q==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.37", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.37.tgz", + "integrity": "sha512-1siDQ7dccQ1pesJmgAL3BUBbRPtfbNInOWnZOkiie/DfFqGQ117QKnCVyjUvwFKfTQx1+3UUTDmMSlRd00SlXg==", + "dev": true, + "optional": true + }, "@swc/helpers": { "version": "0.4.14", "resolved": "https://registry.npmmirror.com/@swc/helpers/-/helpers-0.4.14.tgz", diff --git a/package.json b/package.json index 689f562..4a3c171 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "@cloudflare/workers-types": "^4.20230221.0", "@nrwl/cli": "15.7.2", "@nrwl/cypress": "15.7.2", + "@nrwl/deno": "^0.157.0", "@nrwl/eslint-plugin-nx": "15.7.2", "@nrwl/jest": "15.7.2", "@nrwl/js": "15.7.2", diff --git a/test.mjs b/test.mjs index a7af24b..c40654b 100644 --- a/test.mjs +++ b/test.mjs @@ -1,4 +1,5 @@ import { ReadableStream } from 'stream/web'; + function delay(ms) { return new Promise((resolve, rej) => { setTimeout(resolve, ms); @@ -8,9 +9,17 @@ try { let i = 0; const readableStream = new ReadableStream({ start(control) { - setInterval(() => { - control.enqueue(i++); - }, 100); + control.enqueue(undefined); + control.enqueue(1); + // control.close(); + control.error('eroro000-----readableStream--------'); + // setTimeout(() => { + // console.log('-----------------100'); + // control.error('eroro000-----readableStream--------'); + // }, 100); + // setInterval(() => { + // control.enqueue(i++); + // }, 100); // setTimeout(() => { // control.error('read error'); // }, 1000); @@ -23,7 +32,7 @@ try { // undefined.length; }, cancel(reason) { - console.log('---------', reason); + console.log('-ReadableStream---cancel-----', reason); }, }); @@ -35,8 +44,10 @@ try { new WritableStream({ async write(chunk, controller) { console.log(chunk); - await delay(1); - controller.error('error'); + // throw 'pipeTo error'; + // controller.error('pipeTo has error'); + // await delay(1); + // controller.error('error'); // if (chunk === 7) { // throw 'error'; // } @@ -45,12 +56,12 @@ try { console.log('close------WritableStream'); }, abort(reason) { - console.log('abort--------'); + console.log('abort--------', reason); }, }) ); - console.log('end--------'); + // console.log('end--------'); // for await (const iterator of readableStream) { // console.log(iterator); diff --git a/test2.mjs b/test2.mjs index 4f371eb..7a44e7c 100644 --- a/test2.mjs +++ b/test2.mjs @@ -1,28 +1,28 @@ -import { ReadableStream } from 'stream/web'; +const a = new Uint8Array([1, 2]); -try { - let i = 0; - const writeable = new WritableStream({ - start(controller) { - console.log('start'); - }, - write(chunk, con) { - console.log('write', chunk); - }, - abort(reason) { - console.log('abort', reason); - }, - }); +console.log(a); +console.log(a.buffer); - // const write = writeable.getWriter(); - await writeable.abort('1111'); - // await write.write('111'); +const b = Buffer.from([1, 2]); - console.log('end--------'); +console.log(b); +console.log(b.buffer); - // for await (const iterator of readableStream) { - // console.log(iterator); - // } -} catch (error) { - console.log('---end---', error); +function base64ToArrayBuffer(base64Str) { + console.log(base64Str); + try { + // go use modified Base64 for URL rfc4648 which js atob nor support + base64Str = base64Str.replace(/-/g, '+').replace(/_/g, '/'); + console.log(base64Str); + const decode = atob(base64Str); + console.log(decode); + const arrybuffer = Uint8Array.from(decode, (c) => c.charCodeAt(0)).buffer; + return; + } catch (error) { + console.log(error); + return null; + } } +const str = base64ToArrayBuffer( + 'AOKDkCEjE0J_l3yhsd7Hms4AAQG7Ag13d3cuYmFpZHUuY29tFgMDALwBAAC4AwNj_iSlI337rp-44I2NpQTGV00LB8ckDg17QcGu3fNkoAAAJMAswCvAMMAvwCTAI8AowCfACsAJwBTAEwCdAJwAPQA8ADUALwEAAGsAAAASABAAAA13d3cuYmFpZHUuY29tAAUABQEAAAAAAAoACAAGAB0AFwAYAAsAAgEAAA0AGgAYCAQIBQgGBAEFAQIBBAMFAwIDAgIGAQYDACMAAAAQAAsACQhodHRwLzEuMQAXAAD_AQABAA' +);