From 2c7e9caf45e51f695880e0a98cb04cb33cd30d59 Mon Sep 17 00:00:00 2001 From: fabio Date: Mon, 16 Mar 2026 20:03:59 +0100 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 5 + backend/.DS_Store | Bin 0 -> 6148 bytes backend/.env | 15 + backend/.vscode/launch.json | 35 + backend/GeneratedCode/generatedTypescript.ts | 483 ++++++ backend/cmd/server/main.go | 223 +++ backend/configs/config.json | 27 + backend/configs/roles.json | 22 + backend/data/data.db | Bin 0 -> 94208 bytes backend/go.mod | 56 + backend/go.sum | 140 ++ backend/internal/auth/password.go | 29 + backend/internal/auth/service.go | 187 +++ backend/internal/config/config.go | 89 + backend/internal/db/db.go | 64 + backend/internal/http/controllers/admin.go | 65 + backend/internal/http/controllers/auth.go | 430 +++++ .../http/controllers/authorization.go | 223 +++ backend/internal/http/controllers/helpers.go | 34 + backend/internal/http/controllers/response.go | 11 + .../internal/http/controllers/tokenhash.go | 11 + .../internal/http/controllers/validation.go | 28 + backend/internal/http/routes/admin_routes.go | 14 + backend/internal/http/routes/auth_routes.go | 42 + backend/internal/http/routes/routes.go | 25 + backend/internal/http/routes/system_routes.go | 94 ++ .../spa/assets/ApiEndpointsPage-DOm_uCJI.js | 1 + .../spa/assets/ApiEndpointsPage-gOL3JcKs.css | 1 + .../static/spa/assets/DevLayout-NkVPqUIU.js | 1 + .../spa/assets/ErrorNotFound-CYezCx4W.js | 1 + .../static/spa/assets/IndexPage-0Ryt20QD.css | 1 + .../static/spa/assets/IndexPage-C3QXgr9t.js | 1 + .../static/spa/assets/IndexPage-VdxnZT-U.js | 1 + ...ylUAMQXC89YmC2DPNWuYjalmUiAw-BepdiOnY.woff | Bin 0 -> 25552 bytes ...ylUAMQXC89YmC2DPNWuZtalmUiAw-4ZhHFPot.woff | Bin 0 -> 25260 bytes ...ylUAMQXC89YmC2DPNWuaabVmUiAw-CNa4tw4G.woff | Bin 0 -> 25368 bytes ...ylUAMQXC89YmC2DPNWub2bVmUiAw-CHKg1YId.woff | Bin 0 -> 25396 bytes ...ylUAMQXC89YmC2DPNWubEbFmUiAw-yBxCyPWP.woff | Bin 0 -> 24924 bytes ...ylUAMQXC89YmC2DPNWubEbVmUiAw-3fZ6d7DD.woff | Bin 0 -> 25192 bytes .../spa/assets/MailDebugPage-_Fae84OI.css | 1 + .../spa/assets/MailDebugPage-dW3_TCwt.js | 1 + .../static/spa/assets/MainLayout-Dnh2wyjy.js | 1 + .../static/spa/assets/MainLayout-KRjvhj3p.css | 1 + .../http/static/spa/assets/QBtn-AYMizH8c.js | 1 + .../http/static/spa/assets/QCard-D_vcm7k9.js | 1 + .../spa/assets/QCardActions-DlFyQG4S.js | 1 + .../static/spa/assets/QDialog-BcbjPBVh.js | 1 + .../http/static/spa/assets/QInput-CEazYqyH.js | 1 + .../http/static/spa/assets/QItem-F5bzVaJB.js | 1 + .../static/spa/assets/QLayout-DIjK04DF.js | 1 + .../http/static/spa/assets/QPage-gf8hzrox.js | 1 + .../static/spa/assets/QSelect-QjDUAbKc.js | 1 + .../spa/assets/ResetPasswordPage-DM3gheQo.js | 1 + .../spa/assets/ResetPasswordPage-DMBJffyk.css | 1 + .../_plugin-vue_export-helper-DlAUqK2U.js | 1 + .../http/static/spa/assets/api-rhge6pbe.js | 1 + ...flUhRq6tzZclQEJ-Vdg-IuiaDsNa-Dr0goTwe.woff | Bin 0 -> 164912 bytes ...tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-D-x-0Q06.woff2 | Bin 0 -> 128616 bytes .../http/static/spa/assets/format-GjIIeqP4.js | 1 + .../http/static/spa/assets/i18n-CQXJXuD5.js | 1 + .../http/static/spa/assets/index-BQveqNql.css | 1 + .../http/static/spa/assets/index-QUdrNkKl.js | 4 + .../http/static/spa/assets/render-B4qP-w0Q.js | 1 + .../static/spa/assets/use-dark-BRt0_t6X.js | 1 + .../assets/use-key-composition-TTwP9QMZ.js | 1 + .../spa/assets/use-prevent-scroll-eZQDeoK_.js | 1 + .../static/spa/assets/use-timeout-Jkrq6Sig.js | 1 + backend/internal/http/static/spa/favicon.ico | Bin 0 -> 64483 bytes .../http/static/spa/icons/favicon-128x128.png | Bin 0 -> 12324 bytes .../http/static/spa/icons/favicon-16x16.png | Bin 0 -> 859 bytes .../http/static/spa/icons/favicon-32x32.png | Bin 0 -> 2039 bytes .../http/static/spa/icons/favicon-96x96.png | Bin 0 -> 9643 bytes backend/internal/http/static/spa/index.html | 3 + .../http/templates/password_reset.html.tmpl | 17 + .../http/templates/password_reset.txt.tmpl | 11 + .../http/templates/registration.html.tmpl | 13 + .../http/templates/registration.txt.tmpl | 5 + backend/internal/mail/service.go | 233 +++ backend/internal/models/user.go | 213 +++ backend/internal/roles/main_roles.go | 26 + backend/internal/seed/seed.go | 104 ++ backend/internal/tsgenerator/generator.go | 80 + backend/pkg/ts-rpc/.DS_Store | Bin 0 -> 6148 bytes backend/pkg/ts-rpc/LICENSE | 661 ++++++++ backend/pkg/ts-rpc/README.md | 54 + backend/pkg/ts-rpc/docs/TsConst.md | 20 + backend/pkg/ts-rpc/docs/TsDeclaration.md | 12 + backend/pkg/ts-rpc/docs/TsEndpoint.md | 37 + backend/pkg/ts-rpc/docs/TsEnum.md | 58 + backend/pkg/ts-rpc/docs/TsExportEndpoints.md | 80 + backend/pkg/ts-rpc/docs/TsFetchTemplate.md | 429 +++++ backend/pkg/ts-rpc/docs/TsGoTypes.md | 30 + backend/pkg/ts-rpc/docs/TsInterface.md | 65 + backend/pkg/ts-rpc/docs/TsTags.md | 14 + backend/pkg/ts-rpc/docs/TsType.md | 32 + backend/pkg/ts-rpc/docs/intelliesense01.png | Bin 0 -> 148306 bytes backend/pkg/ts-rpc/tsApiTemplate.go | 219 +++ backend/pkg/ts-rpc/tsEndpoint.go | 200 +++ backend/pkg/ts-rpc/tsExitOnError.go | 14 + backend/pkg/ts-rpc/tsInfo.go | 423 +++++ backend/pkg/ts-rpc/tsStruct.go | 187 +++ backend/pkg/ts-rpc/tsTagJson.go | 49 + backend/pkg/ts-rpc/tsTagTs.go | 34 + backend/pkg/ts-rpc/tsTsInfo.go | 285 ++++ backend/pkg/ts-rpc/tsrpc.go | 104 ++ backend/postman_collection.json | 220 +++ frontend/.editorconfig | 7 + frontend/.env | 5 + frontend/.gitignore | 33 + frontend/.prettierrc.json | 5 + frontend/.vscode/extensions.json | 15 + frontend/.vscode/settings.json | 9 + frontend/README.md | 43 + frontend/bun.lock | 1494 +++++++++++++++++ frontend/eslint.config.js | 83 + frontend/index.html | 24 + frontend/package.json | 50 + frontend/pnpm-workspace.yaml | 2 + frontend/postcss.config.js | 29 + frontend/public/favicon.ico | Bin 0 -> 64483 bytes frontend/public/icons/favicon-128x128.png | Bin 0 -> 12324 bytes frontend/public/icons/favicon-16x16.png | Bin 0 -> 859 bytes frontend/public/icons/favicon-32x32.png | Bin 0 -> 2039 bytes frontend/public/icons/favicon-96x96.png | Bin 0 -> 9643 bytes frontend/quasar.config.ts | 235 +++ frontend/scripts/prerender.mjs | 249 +++ frontend/src/App.vue | 21 + frontend/src/api/api.ts | 483 ++++++ frontend/src/assets/flags/ch.svg | 9 + frontend/src/assets/flags/de.svg | 5 + frontend/src/assets/flags/en.svg | 7 + frontend/src/assets/flags/en_us.svg | 9 + frontend/src/assets/flags/fr.svg | 5 + frontend/src/assets/flags/it.svg | 7 + frontend/src/assets/quasar-logo-vertical.svg | 15 + frontend/src/boot/.gitkeep | 0 frontend/src/boot/i18n.ts | 33 + frontend/src/css/app.scss | 1 + frontend/src/css/quasar.variables.scss | 25 + frontend/src/env.d.ts | 7 + frontend/src/i18n/de/index.ts | 41 + frontend/src/i18n/de_ch/index.ts | 41 + frontend/src/i18n/en/index.ts | 41 + frontend/src/i18n/en_us/index.ts | 41 + frontend/src/i18n/fr/index.ts | 41 + frontend/src/i18n/fr_ch/index.ts | 41 + frontend/src/i18n/index.ts | 17 + frontend/src/i18n/it/index.ts | 41 + frontend/src/layouts/DevLayout.vue | 59 + frontend/src/layouts/MainLayout.vue | 166 ++ frontend/src/pages/ErrorNotFound.vue | 25 + frontend/src/pages/IndexPage.vue | 99 ++ frontend/src/pages/dev/ApiEndpointsPage.vue | 631 +++++++ frontend/src/pages/dev/IndexPage.vue | 9 + frontend/src/pages/dev/MailDebugPage.vue | 395 +++++ frontend/src/pages/dev/ResetPasswordPage.vue | 237 +++ frontend/src/router/index.ts | 37 + frontend/src/router/routes.ts | 37 + frontend/src/stores/example-store.ts | 21 + frontend/src/stores/index.ts | 32 + frontend/src/stores/preferences-store.ts | 59 + frontend/tsconfig.json | 3 + 163 files changed, 11344 insertions(+) create mode 100644 .DS_Store create mode 100644 backend/.DS_Store create mode 100644 backend/.env create mode 100644 backend/.vscode/launch.json create mode 100644 backend/GeneratedCode/generatedTypescript.ts create mode 100644 backend/cmd/server/main.go create mode 100644 backend/configs/config.json create mode 100644 backend/configs/roles.json create mode 100644 backend/data/data.db create mode 100644 backend/go.mod create mode 100644 backend/go.sum create mode 100644 backend/internal/auth/password.go create mode 100644 backend/internal/auth/service.go create mode 100644 backend/internal/config/config.go create mode 100644 backend/internal/db/db.go create mode 100644 backend/internal/http/controllers/admin.go create mode 100644 backend/internal/http/controllers/auth.go create mode 100644 backend/internal/http/controllers/authorization.go create mode 100644 backend/internal/http/controllers/helpers.go create mode 100644 backend/internal/http/controllers/response.go create mode 100644 backend/internal/http/controllers/tokenhash.go create mode 100644 backend/internal/http/controllers/validation.go create mode 100644 backend/internal/http/routes/admin_routes.go create mode 100644 backend/internal/http/routes/auth_routes.go create mode 100644 backend/internal/http/routes/routes.go create mode 100644 backend/internal/http/routes/system_routes.go create mode 100644 backend/internal/http/static/spa/assets/ApiEndpointsPage-DOm_uCJI.js create mode 100644 backend/internal/http/static/spa/assets/ApiEndpointsPage-gOL3JcKs.css create mode 100644 backend/internal/http/static/spa/assets/DevLayout-NkVPqUIU.js create mode 100644 backend/internal/http/static/spa/assets/ErrorNotFound-CYezCx4W.js create mode 100644 backend/internal/http/static/spa/assets/IndexPage-0Ryt20QD.css create mode 100644 backend/internal/http/static/spa/assets/IndexPage-C3QXgr9t.js create mode 100644 backend/internal/http/static/spa/assets/IndexPage-VdxnZT-U.js create mode 100644 backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjalmUiAw-BepdiOnY.woff create mode 100644 backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZtalmUiAw-4ZhHFPot.woff create mode 100644 backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmUiAw-CNa4tw4G.woff create mode 100644 backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAw-CHKg1YId.woff create mode 100644 backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbFmUiAw-yBxCyPWP.woff create mode 100644 backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmUiAw-3fZ6d7DD.woff create mode 100644 backend/internal/http/static/spa/assets/MailDebugPage-_Fae84OI.css create mode 100644 backend/internal/http/static/spa/assets/MailDebugPage-dW3_TCwt.js create mode 100644 backend/internal/http/static/spa/assets/MainLayout-Dnh2wyjy.js create mode 100644 backend/internal/http/static/spa/assets/MainLayout-KRjvhj3p.css create mode 100644 backend/internal/http/static/spa/assets/QBtn-AYMizH8c.js create mode 100644 backend/internal/http/static/spa/assets/QCard-D_vcm7k9.js create mode 100644 backend/internal/http/static/spa/assets/QCardActions-DlFyQG4S.js create mode 100644 backend/internal/http/static/spa/assets/QDialog-BcbjPBVh.js create mode 100644 backend/internal/http/static/spa/assets/QInput-CEazYqyH.js create mode 100644 backend/internal/http/static/spa/assets/QItem-F5bzVaJB.js create mode 100644 backend/internal/http/static/spa/assets/QLayout-DIjK04DF.js create mode 100644 backend/internal/http/static/spa/assets/QPage-gf8hzrox.js create mode 100644 backend/internal/http/static/spa/assets/QSelect-QjDUAbKc.js create mode 100644 backend/internal/http/static/spa/assets/ResetPasswordPage-DM3gheQo.js create mode 100644 backend/internal/http/static/spa/assets/ResetPasswordPage-DMBJffyk.css create mode 100644 backend/internal/http/static/spa/assets/_plugin-vue_export-helper-DlAUqK2U.js create mode 100644 backend/internal/http/static/spa/assets/api-rhge6pbe.js create mode 100644 backend/internal/http/static/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa-Dr0goTwe.woff create mode 100644 backend/internal/http/static/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-D-x-0Q06.woff2 create mode 100644 backend/internal/http/static/spa/assets/format-GjIIeqP4.js create mode 100644 backend/internal/http/static/spa/assets/i18n-CQXJXuD5.js create mode 100644 backend/internal/http/static/spa/assets/index-BQveqNql.css create mode 100644 backend/internal/http/static/spa/assets/index-QUdrNkKl.js create mode 100644 backend/internal/http/static/spa/assets/render-B4qP-w0Q.js create mode 100644 backend/internal/http/static/spa/assets/use-dark-BRt0_t6X.js create mode 100644 backend/internal/http/static/spa/assets/use-key-composition-TTwP9QMZ.js create mode 100644 backend/internal/http/static/spa/assets/use-prevent-scroll-eZQDeoK_.js create mode 100644 backend/internal/http/static/spa/assets/use-timeout-Jkrq6Sig.js create mode 100644 backend/internal/http/static/spa/favicon.ico create mode 100644 backend/internal/http/static/spa/icons/favicon-128x128.png create mode 100644 backend/internal/http/static/spa/icons/favicon-16x16.png create mode 100644 backend/internal/http/static/spa/icons/favicon-32x32.png create mode 100644 backend/internal/http/static/spa/icons/favicon-96x96.png create mode 100644 backend/internal/http/static/spa/index.html create mode 100644 backend/internal/http/templates/password_reset.html.tmpl create mode 100644 backend/internal/http/templates/password_reset.txt.tmpl create mode 100644 backend/internal/http/templates/registration.html.tmpl create mode 100644 backend/internal/http/templates/registration.txt.tmpl create mode 100644 backend/internal/mail/service.go create mode 100644 backend/internal/models/user.go create mode 100644 backend/internal/roles/main_roles.go create mode 100644 backend/internal/seed/seed.go create mode 100644 backend/internal/tsgenerator/generator.go create mode 100644 backend/pkg/ts-rpc/.DS_Store create mode 100644 backend/pkg/ts-rpc/LICENSE create mode 100644 backend/pkg/ts-rpc/README.md create mode 100644 backend/pkg/ts-rpc/docs/TsConst.md create mode 100644 backend/pkg/ts-rpc/docs/TsDeclaration.md create mode 100644 backend/pkg/ts-rpc/docs/TsEndpoint.md create mode 100644 backend/pkg/ts-rpc/docs/TsEnum.md create mode 100644 backend/pkg/ts-rpc/docs/TsExportEndpoints.md create mode 100644 backend/pkg/ts-rpc/docs/TsFetchTemplate.md create mode 100644 backend/pkg/ts-rpc/docs/TsGoTypes.md create mode 100644 backend/pkg/ts-rpc/docs/TsInterface.md create mode 100644 backend/pkg/ts-rpc/docs/TsTags.md create mode 100644 backend/pkg/ts-rpc/docs/TsType.md create mode 100644 backend/pkg/ts-rpc/docs/intelliesense01.png create mode 100644 backend/pkg/ts-rpc/tsApiTemplate.go create mode 100644 backend/pkg/ts-rpc/tsEndpoint.go create mode 100644 backend/pkg/ts-rpc/tsExitOnError.go create mode 100644 backend/pkg/ts-rpc/tsInfo.go create mode 100644 backend/pkg/ts-rpc/tsStruct.go create mode 100644 backend/pkg/ts-rpc/tsTagJson.go create mode 100644 backend/pkg/ts-rpc/tsTagTs.go create mode 100644 backend/pkg/ts-rpc/tsTsInfo.go create mode 100644 backend/pkg/ts-rpc/tsrpc.go create mode 100644 backend/postman_collection.json create mode 100644 frontend/.editorconfig create mode 100644 frontend/.env create mode 100644 frontend/.gitignore create mode 100644 frontend/.prettierrc.json create mode 100644 frontend/.vscode/extensions.json create mode 100644 frontend/.vscode/settings.json create mode 100644 frontend/README.md create mode 100644 frontend/bun.lock create mode 100644 frontend/eslint.config.js create mode 100644 frontend/index.html create mode 100644 frontend/package.json create mode 100644 frontend/pnpm-workspace.yaml create mode 100644 frontend/postcss.config.js create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/icons/favicon-128x128.png create mode 100644 frontend/public/icons/favicon-16x16.png create mode 100644 frontend/public/icons/favicon-32x32.png create mode 100644 frontend/public/icons/favicon-96x96.png create mode 100644 frontend/quasar.config.ts create mode 100644 frontend/scripts/prerender.mjs create mode 100644 frontend/src/App.vue create mode 100644 frontend/src/api/api.ts create mode 100644 frontend/src/assets/flags/ch.svg create mode 100644 frontend/src/assets/flags/de.svg create mode 100644 frontend/src/assets/flags/en.svg create mode 100644 frontend/src/assets/flags/en_us.svg create mode 100644 frontend/src/assets/flags/fr.svg create mode 100644 frontend/src/assets/flags/it.svg create mode 100644 frontend/src/assets/quasar-logo-vertical.svg create mode 100644 frontend/src/boot/.gitkeep create mode 100644 frontend/src/boot/i18n.ts create mode 100644 frontend/src/css/app.scss create mode 100644 frontend/src/css/quasar.variables.scss create mode 100644 frontend/src/env.d.ts create mode 100644 frontend/src/i18n/de/index.ts create mode 100644 frontend/src/i18n/de_ch/index.ts create mode 100644 frontend/src/i18n/en/index.ts create mode 100644 frontend/src/i18n/en_us/index.ts create mode 100644 frontend/src/i18n/fr/index.ts create mode 100644 frontend/src/i18n/fr_ch/index.ts create mode 100644 frontend/src/i18n/index.ts create mode 100644 frontend/src/i18n/it/index.ts create mode 100644 frontend/src/layouts/DevLayout.vue create mode 100644 frontend/src/layouts/MainLayout.vue create mode 100644 frontend/src/pages/ErrorNotFound.vue create mode 100644 frontend/src/pages/IndexPage.vue create mode 100644 frontend/src/pages/dev/ApiEndpointsPage.vue create mode 100644 frontend/src/pages/dev/IndexPage.vue create mode 100644 frontend/src/pages/dev/MailDebugPage.vue create mode 100644 frontend/src/pages/dev/ResetPasswordPage.vue create mode 100644 frontend/src/router/index.ts create mode 100644 frontend/src/router/routes.ts create mode 100644 frontend/src/stores/example-store.ts create mode 100644 frontend/src/stores/index.ts create mode 100644 frontend/src/stores/preferences-store.ts create mode 100644 frontend/tsconfig.json diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..96a466d92e2054321e0ece44a02b04e928ab652d GIT binary patch literal 6148 zcmeHKK}+L66ng_r00PQcV{Y1d%ci-h4CjzL&{-VP-M_z?#Fb4p0REj!sx!#$tw1oV;KQ zy2nCf@);dSAUughJBSNx(_s`a3VbvLXzf-Y03X_L2UF`;1Q?-h;Q@W;w=}F3*uiMf z3u4Ls8T8_4kk)EXY@t+MT&nO2U*VVDtr&T!pAH92zyFO|UxbK*yzU2Iqt2*RUHdGO z)Q^%*UnWFh2PqflQ4)$#Qw)=EAagwx;1;)9)s6AEvA4f%H})HoZF^j=AJnLEFqv5V z)7I|cS?ezDCgO*DabUPfNn6#J!#!4BiSXU)C$UIwFhW@zuAvVCx3_ebNNf{1(;^l4 z@lD-pi*65jxfM8F;ksH%p01xfmmYr|A$bNb{4ZYbwlJmzXK)Nh;KC{54s`SF`tRqa z5vOO8zpcT!Q$Q~VzA|?+GZQij7zN&{0PPPpI-#R6Qz*9%EaVjcv5ei)uueY>lw)gj zG-e7hg2q%TqDp1@iosMm_S>50Xv`F Node +node_modules/ +dist/ +build/ + diff --git a/backend/.DS_Store b/backend/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d271c8d8f3ca5dad605f3a424b565df0a020692c GIT binary patch literal 6148 zcmeHKOG*Pl5PhXV0zt`6H$tC4@CIXyh-(j^CNqd(K4Oyn?7f3m@QC`Vt0S2>ZbhUj zRKM!(s_O1Hq(1;;vd+(eF@PaeQPk)WZSL*bOU?tL#2hbpzzPL&T=pdTi%mNBLtJyt zHFbOb4Odazl+AorHZyuDMeo$Nk0`W&13aR^87h`}*H=z|@Lgh!YRC6=$M+b|%(x_% z6&bB@hdJvde+8`-o>;3n?t(tFy4i5S&vCRhOP#5UGvEw31I~amuwj5_w#sm1=%q8@ z3^)T{4Cww4sES#_)-Y}zEaDS@sMqKywDqE_F(F}=ur*{4MJ$wPp^}~$V&QBL$uCRT z8d^9cJw7Cjym`Dx9G&??bcbYyUOEHLK$n4itB&>jzv5q}_mSTX@tQN>4E!?&WH7y* zPPnLawticlp0$B`PgPOBRt*a6&Lw~q-A7Jhr}YQ5>6ayJ4K<6l$8e%w1R^0`I0L`H Fz$YttNIC!j literal 0 HcmV?d00001 diff --git a/backend/.env b/backend/.env new file mode 100644 index 0000000..4a7c42b --- /dev/null +++ b/backend/.env @@ -0,0 +1,15 @@ +# Server +PORT=3000 + +# Startup options +SEED=0 + +# Paths +CONFIG_PATH=configs/config.json +ROLES_CONFIG_PATH=configs/roles.json +FRONTEND_API_PATH=/Users/fabio/CODE/APP_GO_QUASAR/frontend/src/api +DB_driver=sqlite +DB_dsn=file:./data/data.db?_foreign_keys=on + +# Auth +AUTH_SECRET=change-me diff --git a/backend/.vscode/launch.json b/backend/.vscode/launch.json new file mode 100644 index 0000000..83fdd07 --- /dev/null +++ b/backend/.vscode/launch.json @@ -0,0 +1,35 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Backend: Debug cmd/server", + "type": "go", + "request": "launch", + "mode": "debug", + "program": "${workspaceFolder}/cmd/server", + "cwd": "${workspaceFolder}", + "envFile": "${workspaceFolder}/.env", + "args": [] + }, + { + "name": "Backend: Run cmd/server (no debug)", + "type": "go", + "request": "launch", + "mode": "debug", + "noDebug": true, + "program": "${workspaceFolder}/cmd/server", + "cwd": "${workspaceFolder}", + "envFile": "${workspaceFolder}/.env", + "args": [] + }, + { + "name": "Backend: Attach to Delve :2345", + "type": "go", + "request": "attach", + "mode": "remote", + "host": "127.0.0.1", + "port": 2345, + "cwd": "${workspaceFolder}" + } + ] +} diff --git a/backend/GeneratedCode/generatedTypescript.ts b/backend/GeneratedCode/generatedTypescript.ts new file mode 100644 index 0000000..e104374 --- /dev/null +++ b/backend/GeneratedCode/generatedTypescript.ts @@ -0,0 +1,483 @@ +// +// Typescript API generated from gofiber backend +// Copyright (C) 2022 - 2025 Fabio Prada +// +// This file was generated by github.com/millevolte/ts-rpc +// +// Mar 15, 2026 16:33:29 UTC +// + +export interface ApiRestResponse { + data?: unknown; + error: string | null; +} + +function isApiRestResponse(data: unknown): data is ApiRestResponse { + return ( + typeof data === "object" && + data !== null && + Object.prototype.hasOwnProperty.call(data, "data") && + Object.prototype.hasOwnProperty.call(data, "error") + ); +} + +function normalizeError(error: unknown): Error { + if (error instanceof DOMException && error.name === "AbortError") { + return new Error("api.error.timeouterror"); + } + + if (error instanceof TypeError && error.message === "Failed to fetch") { + return new Error("api.error.connectionerror"); + } + + if (error instanceof Error) { + return error; + } + + return new Error(String(error)); +} + +export default class Api { + apiUrl: string; + localStorage: Storage | null; + + constructor(apiurl: string) { + this.apiUrl = apiurl; + this.localStorage = window.localStorage; + } + + async request( + method: string, + url: string, + data: unknown, + timeout = 7000, + upload = false, + ): Promise { + const headers: { [key: string]: string } = { + "Cache-Control": "no-cache", + }; + + if (!upload) { + headers["Content-Type"] = "application/json"; + } + + if (this.localStorage) { + const auth = this.localStorage.getItem("Auth-Token"); + if (auth) { + headers["Auth-Token"] = auth; + } + } + + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + const requestOptions: RequestInit = { + method, + cache: "no-store", + mode: "cors", + credentials: "include", + headers, + signal: controller.signal, + }; + + if (upload) { + requestOptions.body = data as FormData; + } else if (data !== null && data !== undefined) { + requestOptions.body = JSON.stringify(data); + } + + try { + const response = await fetch(url, requestOptions); + + if (!response.ok) { + throw new Error("api.error." + response.statusText); + } + + if (this.localStorage) { + const jwt = response.headers.get("Auth-Token"); + if (jwt) { + this.localStorage.setItem("Auth-Token", jwt); + } + } + + const responseData = (await response.json()) as unknown; + if (!isApiRestResponse(responseData)) { + throw new Error("api.error.wrongdatatype"); + } + + if (responseData.error) { + throw new Error(responseData.error); + } + + return responseData; + } catch (error: unknown) { + throw normalizeError(error); + } finally { + clearTimeout(timeoutId); + } + } + + processResult(result: ApiRestResponse): { + data: unknown; + error: string | null; + } { + if (typeof result.data !== "object") { + return { data: result.data, error: null }; + } + + if (!result.data) { + result.data = {}; + } + + return { data: result.data, error: null }; + } + + processError(error: unknown): { + data: unknown; + error: string | null; + } { + const normalizedError = normalizeError(error); + + if (normalizedError.message === "api.error.timeouterror") { + Object.defineProperty(normalizedError, "__api_error__", { + value: normalizedError.message, + writable: false, + }); + + return { data: null, error: normalizedError.message }; + } + + if (normalizedError.message === "api.error.connectionerror") { + Object.defineProperty(normalizedError, "__api_error__", { + value: normalizedError.message, + writable: false, + }); + + return { data: null, error: normalizedError.message }; + } + + return { + data: null, + error: normalizedError.message, + }; + } + + async POST( + url: string, + data: unknown, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const upload = url.includes("/upload/"); + const result = await this.request( + "POST", + this.apiUrl + url, + data, + timeout, + upload, + ); + + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } + + async GET( + url: string, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = await this.request( + "GET", + this.apiUrl + url, + null, + timeout, + ); + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } + + async UPLOAD( + url: string, + data: unknown, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = await this.request( + "POST", + this.apiUrl + url, + data, + timeout, + true, + ); + + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } +} + +const api = new Api("http://localhost:3000"); + +// Global Declarations +export type Nullable = T | null; + +export type Record = { [P in K]: T }; + +// +// package controllers +// + +export interface LoginRequest { + username: string; + password: string; +} + +export interface RefreshRequest { + refresh_token: string; +} + +export interface SimpleResponse { + message: string; +} + +export interface ForgotPasswordRequest { + email: string; +} + +export interface ResetPasswordRequest { + token: string; + password: string; +} + +export interface ListUsersRequest { + page: number; + pageSize: number; +} + +// +// package models +// + +export interface UserPreferencesShort { + useIdle: boolean; + idleTimeout: number; + useIdlePassword: boolean; + idlePin: string; + useDirectLogin: boolean; + useQuadcodeLogin: boolean; + sendNoticesMail: boolean; + language: string; +} + +export interface UserShort { + email: string; + name: string; + roles: UserRoles; + status: UserStatus; + uuid: string; + details: Nullable; + preferences: Nullable; + avatar: Nullable; +} + +export interface UserCreateInput { + name: string; + email: string; + password: string; + roles: UserRoles; + status: UserStatus; + types: UserTypes; + avatar: Nullable; + details: Nullable; + preferences: Nullable; +} + +export interface UserDetailsShort { + title: string; + firstName: string; + lastName: string; + address: string; + city: string; + zipCode: string; + country: string; + phone: string; +} + +export type UserRoles = string[]; + +export type UserStatus = (typeof EnumUserStatus)[keyof typeof EnumUserStatus]; + +export type UserTypes = string[]; + +export type UsersShort = UserShort[]; + +export const EnumUserStatus = { + UserStatusPending: "pending", + UserStatusActive: "active", + UserStatusDisabled: "disabled", +} as const; + +// +// package routes +// + +// Typescript: TSEndpoint= path=/auth/password/valid; name=validToken; method=POST; request=string; response=controllers.SimpleResponse +// internal/http/routes/auth_routes.go Line: 40 +export const validToken = async ( + data: string, +): Promise<{ data: SimpleResponse; error: Nullable }> => { + return (await api.POST("/auth/password/valid", data)) as { + data: SimpleResponse; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/maildebug; name=mailDebug; method=GET; response=routes.[]MailDebugItem +// internal/http/routes/system_routes.go Line: 48 +export const mailDebug = async (): Promise<{ + data: MailDebugItem[]; + error: Nullable; +}> => { + return (await api.GET("/maildebug")) as { + data: MailDebugItem[]; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/admin/users; name=listUsers; method=POST; request=controllers.ListUsersRequest; response=models.[]UserShort +// internal/http/routes/admin_routes.go Line: 12 +export const listUsers = async ( + data: ListUsersRequest, +): Promise<{ data: UserShort[]; error: Nullable }> => { + return (await api.POST("/admin/users", data)) as { + data: UserShort[]; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/register; name=register; method=POST; request=models.UserCreateInput; response=models.UserShort +// internal/http/routes/auth_routes.go Line: 31 +export const register = async ( + data: UserCreateInput, +): Promise<{ data: UserShort; error: Nullable }> => { + return (await api.POST("/auth/register", data)) as { + data: UserShort; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/metrics; name=metrics; method=GET; response=string +// internal/http/routes/system_routes.go Line: 37 +export const metrics = async (): Promise<{ + data: string; + error: Nullable; +}> => { + return (await api.GET("/metrics")) as { + data: string; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/login; name=login; method=POST; request=controllers.LoginRequest; response=auth.TokenPair +// internal/http/routes/auth_routes.go Line: 22 +export const login = async ( + data: LoginRequest, +): Promise<{ data: TokenPair; error: Nullable }> => { + return (await api.POST("/auth/login", data)) as { + data: TokenPair; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/refresh; name=refresh; method=POST; request=controllers.RefreshRequest; response=auth.TokenPair +// internal/http/routes/auth_routes.go Line: 25 +export const refresh = async ( + data: RefreshRequest, +): Promise<{ data: TokenPair; error: Nullable }> => { + return (await api.POST("/auth/refresh", data)) as { + data: TokenPair; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/password/forgot; name=forgotPassword; method=POST; request=controllers.ForgotPasswordRequest; response=controllers.SimpleResponse +// internal/http/routes/auth_routes.go Line: 34 +export const forgotPassword = async ( + data: ForgotPasswordRequest, +): Promise<{ data: SimpleResponse; error: Nullable }> => { + return (await api.POST("/auth/password/forgot", data)) as { + data: SimpleResponse; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/password/reset; name=resetPassword; method=POST; request=controllers.ResetPasswordRequest; response=controllers.SimpleResponse +// internal/http/routes/auth_routes.go Line: 37 +export const resetPassword = async ( + data: ResetPasswordRequest, +): Promise<{ data: SimpleResponse; error: Nullable }> => { + return (await api.POST("/auth/password/reset", data)) as { + data: SimpleResponse; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/health; name=health; method=GET; response=string +// internal/http/routes/system_routes.go Line: 34 +export const health = async (): Promise<{ + data: string; + error: Nullable; +}> => { + return (await api.GET("/health")) as { + data: string; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/me; name=me; method=GET; response=models.UserShort +// internal/http/routes/auth_routes.go Line: 28 +export const me = async (): Promise<{ + data: UserShort; + error: Nullable; +}> => { + return (await api.GET("/auth/me")) as { + data: UserShort; + error: Nullable; + }; +}; + +export interface FormRequest { + req: string; + count: number; +} + +export interface FormResponse { + test: string; +} + +export interface MailDebugItem { + name: string; + content: string; +} + +// +// package auth +// + +export interface TokenPair { + access_token: string; + refresh_token: string; +} diff --git a/backend/cmd/server/main.go b/backend/cmd/server/main.go new file mode 100644 index 0000000..c119eca --- /dev/null +++ b/backend/cmd/server/main.go @@ -0,0 +1,223 @@ +package main + +import ( + "bufio" + "flag" + "log" + "os" + "os/signal" + "strconv" + "strings" + "syscall" + "time" + + "server/internal/auth" + "server/internal/config" + "server/internal/db" + "server/internal/http/controllers" + "server/internal/http/routes" + "server/internal/mail" + "server/internal/roles" + "server/internal/seed" + + "github.com/gofiber/fiber/v3" + "github.com/gofiber/fiber/v3/middleware/cors" + "github.com/gofiber/fiber/v3/middleware/logger" + "github.com/gofiber/fiber/v3/middleware/recover" + "github.com/gofiber/fiber/v3/middleware/requestid" +) + +// Typescript: TSDeclaration= Nullable = T | null; +// Typescript: TSDeclaration= Record = { [P in K]: T; } + +func main() { + loadDotEnv(".env") + + seedCount := flag.Int("seed", 0, "seed N fake users at startup (0 to skip)") + flag.Parse() + + configPath := envOrDefault("CONFIG_PATH", "configs/config.json") + cfg, err := config.LoadConfig(configPath) + if err != nil { + log.Fatalf("load config: %v", err) + } + if secret := os.Getenv("AUTH_SECRET"); secret != "" { + cfg.Auth.Secret = secret + } + + dbCfg := db.Config{ + Driver: envOrDefault("DB_driver", "sqlite"), + DSN: envOrDefault("DB_dsn", "file:./data/data.db?_foreign_keys=on"), + } + dbConn, err := db.Init(dbCfg) + if err != nil { + log.Fatalf("init db: %v", err) + } + + authService, err := auth.New(auth.Config{ + Secret: cfg.Auth.Secret, + Issuer: cfg.Auth.Issuer, + AccessTokenExpiry: time.Duration(cfg.Auth.AccessTokenExpiryMinutes) * time.Minute, + RefreshTokenExpiry: time.Duration(cfg.Auth.RefreshTokenExpiryMinutes) * time.Minute, + }) + if err != nil { + log.Fatalf("setup auth: %v", err) + } + + mailService, err := mail.New(mail.Config{ + AppName: cfg.AppName, + Mode: cfg.Mail.Mode, + From: cfg.Mail.From, + DebugDir: cfg.Mail.DebugDir, + TemplatesDir: cfg.Mail.TemplatesDir, + FrontendBaseURL: cfg.Mail.FrontendBaseURL, + ResetPasswordPath: cfg.Mail.ResetPasswordPath, + SMTP: mail.SMTPConfig{ + Host: cfg.Mail.SMTP.Host, + Port: cfg.Mail.SMTP.Port, + Username: cfg.Mail.SMTP.Username, + Password: cfg.Mail.SMTP.Password, + }, + }) + if err != nil { + log.Fatalf("setup mail: %v", err) + } + + roleConfigPath := cfg.RolesConfigPath + if envRoleConfig := os.Getenv("ROLES_CONFIG_PATH"); envRoleConfig != "" { + roleConfigPath = envRoleConfig + } + if roleConfigPath == "" { + roleConfigPath = envOrDefault("ROLES_CONFIG_PATH", "configs/roles.json") + } + roleResolver, err := controllers.LoadRoleConfig(roleConfigPath) + if err != nil { + log.Fatalf("load role config: %v", err) + } + roles.CheckUserRoleConsistency(dbConn, roleResolver) + + app := fiber.New(fiber.Config{ + AppName: cfg.AppName, + ReadTimeout: time.Duration(cfg.ReadTimeoutSeconds) * time.Second, + WriteTimeout: time.Duration(cfg.WriteTimeoutSeconds) * time.Second, + IdleTimeout: time.Duration(cfg.IdleTimeoutSeconds) * time.Second, + ErrorHandler: func(c fiber.Ctx, err error) error { + code := fiber.StatusInternalServerError + msg := "internal server error" + if e, ok := err.(*fiber.Error); ok { + code = e.Code + msg = e.Message + } + reqID := requestid.FromContext(c) + log.Printf("error request_id=%s status=%d method=%s path=%s ip=%s ua=%q err=%v", reqID, code, c.Method(), c.Path(), c.IP(), c.Get("User-Agent"), err) + if code >= 500 { + msg = "internal server error" + } + return c.Status(code).JSON(fiber.Map{"data": nil, "error": msg}) + }, + }) + + app.Use(requestid.New()) + app.Use(recover.New()) + app.Use(logger.New()) + app.Use(cors.New(cors.Config{ + AllowOrigins: []string{"http://localhost:9000"}, + AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"}, + AllowHeaders: []string{"Origin", "Auth-Token", "cache-control", "Content-Type", "Accept", "Authorization"}, + AllowCredentials: true, + ExposeHeaders: []string{"Auth-Token"}, + })) + + app.Options("/*", func(c fiber.Ctx) error { + return c.SendStatus(fiber.StatusNoContent) + }) + + // Make the DB handle available in request context for future handlers. + app.Use(func(c fiber.Ctx) error { + c.Locals("db", dbConn) + return c.Next() + }) + + app.Use(controllers.RequireEndpointPermission(roleResolver, authService)) + routes.Register(app, authService, mailService) + + port := envOrDefault("PORT", "3000") + + seedToRun := *seedCount + if seedToRun <= 0 { + seedToRun = envIntOrDefault("SEED", 0) + } + if seedToRun > 0 { + _, creds, err := seed.SeedUsers(dbConn, seedToRun) + if err != nil { + log.Fatalf("seed users: %v", err) + } + for _, cred := range creds { + log.Printf("seeded user email=%s password=%s", cred.Email, cred.Password) + } + } + + // Graceful shutdown so ctrl+c or SIGTERM stops the server cleanly. + go func() { + if err := app.Listen(":" + port); err != nil { + log.Fatalf("server failed: %v", err) + } + }() + + quit := make(chan os.Signal, 1) + signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) + <-quit + + log.Println("Shutting down server...") + if err := app.Shutdown(); err != nil { + log.Printf("shutdown error: %v", err) + } +} + +func envOrDefault(key, fallback string) string { + if value := os.Getenv(key); value != "" { + return value + } + return fallback +} + +func envIntOrDefault(key string, fallback int) int { + value := os.Getenv(key) + if value == "" { + return fallback + } + parsed, err := strconv.Atoi(value) + if err != nil { + log.Printf("warning: invalid %s=%q, using default %d", key, value, fallback) + return fallback + } + return parsed +} + +func loadDotEnv(path string) { + file, err := os.Open(path) + if err != nil { + return + } + defer file.Close() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + parts := strings.SplitN(line, "=", 2) + if len(parts) != 2 { + continue + } + key := strings.TrimSpace(parts[0]) + value := strings.TrimSpace(parts[1]) + if key == "" { + continue + } + if _, exists := os.LookupEnv(key); !exists { + _ = os.Setenv(key, value) + } + } +} diff --git a/backend/configs/config.json b/backend/configs/config.json new file mode 100644 index 0000000..2050b34 --- /dev/null +++ b/backend/configs/config.json @@ -0,0 +1,27 @@ +{ + "app_name": "Fiber Starter", + "read_timeout_seconds": 5, + "write_timeout_seconds": 10, + "idle_timeout_seconds": 30, + "disable_startup_message": false, + "auth": { + "secret": "change-me", + "issuer": "fiber-starter", + "access_token_expiry_minutes": 60, + "refresh_token_expiry_minutes": 4320 + }, + "mail": { + "mode": "file", + "from": "noreply@example.local", + "debug_dir": "data/mail-debug", + "templates_dir": "internal/http/templates", + "frontend_base_url": "http://localhost:9000", + "reset_password_path": "/#reset-password", + "smtp": { + "host": "", + "port": 587, + "username": "", + "password": "" + } + } +} diff --git a/backend/configs/roles.json b/backend/configs/roles.json new file mode 100644 index 0000000..eb83bfb --- /dev/null +++ b/backend/configs/roles.json @@ -0,0 +1,22 @@ +{ + "roles": { + "admin": ["admin", "manager", "user"], + "manager": ["manager", "user"], + "user": ["user"] + }, + "permissions": { + "admin": [ + "users:read", + "users:write", + "sessions:purge", + "admin:users:list" + ], + "manager": [ + "users:read" + ], + "user": [] + }, + "endpoints": { + "POST /admin/users": "admin:users:list" + } +} diff --git a/backend/data/data.db b/backend/data/data.db new file mode 100644 index 0000000000000000000000000000000000000000..829b610dcdaa42f1ccaf2b560f31ecec9ed54730 GIT binary patch literal 94208 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 literal 0 HcmV?d00001 diff --git a/backend/go.mod b/backend/go.mod new file mode 100644 index 0000000..ded7f06 --- /dev/null +++ b/backend/go.mod @@ -0,0 +1,56 @@ +module server + +go 1.25.4 + +require ( + github.com/brianvoe/gofakeit/v6 v6.28.0 + github.com/go-playground/validator/v10 v10.30.1 + github.com/gofiber/fiber/v3 v3.1.0 + github.com/golang-jwt/jwt/v5 v5.3.1 + github.com/google/uuid v1.6.0 + github.com/prometheus/client_golang v1.23.2 + golang.org/x/crypto v0.48.0 + gorm.io/driver/postgres v1.6.0 + gorm.io/driver/sqlite v1.6.0 + gorm.io/gorm v1.31.1 +) + +require ( + github.com/andybalholm/brotli v1.2.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.12 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/gofiber/schema v1.7.0 // indirect + github.com/gofiber/utils/v2 v2.0.2 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.6.0 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/klauspost/compress v1.18.4 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/philhofer/fwd v1.2.0 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/tinylib/msgp v1.6.3 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.69.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/protobuf v1.36.8 // indirect +) diff --git a/backend/go.sum b/backend/go.sum new file mode 100644 index 0000000..67c14c4 --- /dev/null +++ b/backend/go.sum @@ -0,0 +1,140 @@ +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= +github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4= +github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw= +github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w= +github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM= +github.com/gofiber/fiber/v2 v2.52.12 h1:0LdToKclcPOj8PktUdIKo9BUohjjwfnQl42Dhw8/WUw= +github.com/gofiber/fiber/v2 v2.52.12/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= +github.com/gofiber/fiber/v3 v3.1.0 h1:1p4I820pIa+FGxfwWuQZ5rAyX0WlGZbGT6Hnuxt6hKY= +github.com/gofiber/fiber/v3 v3.1.0/go.mod h1:n2nYQovvL9z3Too/FGOfgtERjW3GQcAUqgfoezGBZdU= +github.com/gofiber/schema v1.7.0 h1:yNM+FNRZjyYEli9Ey0AXRBrAY9jTnb+kmGs3lJGPvKg= +github.com/gofiber/schema v1.7.0/go.mod h1:A/X5Ffyru4p9eBdp99qu+nzviHzQiZ7odLT+TwxWhbk= +github.com/gofiber/utils/v2 v2.0.2 h1:ShRRssz0F3AhTlAQcuEj54OEDtWF7+HJDwEi/aa6QLI= +github.com/gofiber/utils/v2 v2.0.2/go.mod h1:+9Ub4NqQ+IaJoTliq5LfdmOJAA/Hzwf4pXOxOa3RrJ0= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.6.0 h1:SWJzexBzPL5jb0GEsrPMLIsi/3jOo7RHlzTjcAeDrPY= +github.com/jackc/pgx/v5 v5.6.0/go.mod h1:DNZ/vlrUnhWCoFGxHAG8U2ljioxukquj7utPDgtQdTw= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= +github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= +github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM= +github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po= +github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= +github.com/tinylib/msgp v1.6.3 h1:bCSxiTz386UTgyT1i0MSCvdbWjVW+8sG3PjkGsZQt4s= +github.com/tinylib/msgp v1.6.3/go.mod h1:RSp0LW9oSxFut3KzESt5Voq4GVWyS+PSulT77roAqEA= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= +github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= +github.com/valyala/fasthttp v1.69.0 h1:fNLLESD2SooWeh2cidsuFtOcrEi4uB4m1mPrkJMZyVI= +github.com/valyala/fasthttp v1.69.0/go.mod h1:4wA4PfAraPlAsJ5jMSqCE2ug5tqUPwKXxVj8oNECGcw= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/postgres v1.6.0 h1:2dxzU8xJ+ivvqTRph34QX+WrRaJlmfyPqXmoGVjMBa4= +gorm.io/driver/postgres v1.6.0/go.mod h1:vUw0mrGgrTK+uPHEhAdV4sfFELrByKVGnaVRkXDhtWo= +gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ= +gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= diff --git a/backend/internal/auth/password.go b/backend/internal/auth/password.go new file mode 100644 index 0000000..d603004 --- /dev/null +++ b/backend/internal/auth/password.go @@ -0,0 +1,29 @@ +package auth + +import ( + "errors" + "fmt" + + "golang.org/x/crypto/bcrypt" +) + +// HashPassword returns the bcrypt hash for the given password using the default cost. +func HashPassword(password string) (string, error) { + hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + if err != nil { + return "", fmt.Errorf("hash password: %w", err) + } + return string(hash), nil +} + +// VerifyPassword compares a bcrypt hash and a plaintext password in constant time. +func VerifyPassword(hashedPassword, password string) (bool, error) { + err := bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password)) + if err == nil { + return true, nil + } + if errors.Is(err, bcrypt.ErrMismatchedHashAndPassword) { + return false, nil + } + return false, fmt.Errorf("compare password: %w", err) +} diff --git a/backend/internal/auth/service.go b/backend/internal/auth/service.go new file mode 100644 index 0000000..f0a51ff --- /dev/null +++ b/backend/internal/auth/service.go @@ -0,0 +1,187 @@ +package auth + +import ( + "errors" + "strings" + "time" + + "github.com/gofiber/fiber/v3" + "github.com/golang-jwt/jwt/v5" +) + +type Config struct { + Secret string + Issuer string + AccessTokenExpiry time.Duration + RefreshTokenExpiry time.Duration +} + +type Service struct { + cfg Config + secret []byte + accessExpiry time.Duration + refreshExpiry time.Duration +} + +type Claims struct { + Username string `json:"username"` + TokenType string `json:"type"` + jwt.RegisteredClaims +} + +// Typescript: interface +type TokenPair struct { + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` +} + +const ( + tokenTypeAccess = "access" + tokenTypeRefresh = "refresh" +) + +func New(cfg Config) (*Service, error) { + if cfg.Secret == "" { + return nil, errors.New("jwt secret is required") + } + if cfg.AccessTokenExpiry <= 0 { + return nil, errors.New("access token expiry must be positive") + } + if cfg.RefreshTokenExpiry <= 0 { + return nil, errors.New("refresh token expiry must be positive") + } + + return &Service{ + cfg: cfg, + secret: []byte(cfg.Secret), + accessExpiry: cfg.AccessTokenExpiry, + refreshExpiry: cfg.RefreshTokenExpiry, + }, nil +} + +func (s *Service) GenerateTokenPair(username string) (TokenPair, error) { + access, err := s.generateToken(username, tokenTypeAccess, s.accessExpiry) + if err != nil { + return TokenPair{}, err + } + + refresh, err := s.generateToken(username, tokenTypeRefresh, s.refreshExpiry) + if err != nil { + return TokenPair{}, err + } + + return TokenPair{ + AccessToken: access, + RefreshToken: refresh, + }, nil +} + +// AccessExpiry returns the configured access token lifetime. +func (s *Service) AccessExpiry() time.Duration { + return s.accessExpiry +} + +// RefreshExpiry returns the configured refresh token lifetime. +func (s *Service) RefreshExpiry() time.Duration { + return s.refreshExpiry +} + +func (s *Service) Middleware() fiber.Handler { + return func(c fiber.Ctx) error { + tokenString := c.Get("Auth-Token") + if tokenString == "" { + return fiber.NewError(fiber.StatusUnauthorized, "missing token header") + } + + claims, err := s.parseToken(tokenString) + if err != nil { + return fiber.NewError(fiber.StatusUnauthorized, err.Error()) + } + if claims.TokenType != tokenTypeAccess { + return fiber.NewError(fiber.StatusUnauthorized, "access token required") + } + + c.Locals("authClaims", claims) + return c.Next() + } +} + +func (s *Service) Refresh(refreshToken string) (TokenPair, error) { + claims, err := s.parseToken(refreshToken) + if err != nil { + return TokenPair{}, err + } + if claims.TokenType != tokenTypeRefresh { + return TokenPair{}, errors.New("refresh token required") + } + return s.GenerateTokenPair(claims.Username) +} + +// ValidateAccessToken parses and validates an access token string, ensuring type=access. +func (s *Service) ValidateAccessToken(tokenString string) (*Claims, error) { + claims, err := s.parseToken(tokenString) + if err != nil { + return nil, err + } + if claims.TokenType != tokenTypeAccess { + return nil, errors.New("access token required") + } + return claims, nil +} + +func (s *Service) parseToken(tokenString string) (*Claims, error) { + claims := &Claims{} + token, err := jwt.ParseWithClaims(tokenString, claims, func(t *jwt.Token) (interface{}, error) { + if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fiber.ErrUnauthorized + } + return s.secret, nil + }) + if err != nil || !token.Valid { + return nil, errors.New("invalid or expired token") + } + if s.cfg.Issuer != "" && claims.Issuer != "" && claims.Issuer != s.cfg.Issuer { + return nil, errors.New("invalid token issuer") + } + + return claims, nil +} + +func (s *Service) generateToken(username, tokenType string, expiry time.Duration) (string, error) { + claims := Claims{ + Username: username, + TokenType: tokenType, + RegisteredClaims: jwt.RegisteredClaims{ + Issuer: s.cfg.Issuer, + ExpiresAt: jwt.NewNumericDate(time.Now().Add(expiry)), + IssuedAt: jwt.NewNumericDate(time.Now()), + }, + } + + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + return token.SignedString(s.secret) +} + +func bearerToken(header string) (string, error) { + if header == "" { + return "", errors.New("missing Auth-Token header") + } + if !strings.HasPrefix(header, "Bearer ") { + return "", errors.New("invalid Authorization header format") + } + + token := strings.TrimSpace(strings.TrimPrefix(header, "Bearer ")) + if token == "" { + return "", errors.New("empty bearer token") + } + return token, nil +} + +func ClaimsFromCtx(c fiber.Ctx) (*Claims, bool) { + val := c.Locals("authClaims") + if val == nil { + return nil, false + } + claims, ok := val.(*Claims) + return claims, ok +} diff --git a/backend/internal/config/config.go b/backend/internal/config/config.go new file mode 100644 index 0000000..f8c6992 --- /dev/null +++ b/backend/internal/config/config.go @@ -0,0 +1,89 @@ +package config + +import ( + "encoding/json" + "fmt" + "os" +) + +type ServerConfig struct { + AppName string `json:"app_name"` + ReadTimeoutSeconds int `json:"read_timeout_seconds"` + WriteTimeoutSeconds int `json:"write_timeout_seconds"` + IdleTimeoutSeconds int `json:"idle_timeout_seconds"` + DisableStartupMessage bool `json:"disable_startup_message"` + Auth AuthConfig `json:"auth"` + Mail MailConfig `json:"mail"` + RolesConfigPath string `json:"roles_config_path"` +} + +type AuthConfig struct { + Secret string `json:"secret"` + Issuer string `json:"issuer"` + AccessTokenExpiryMinutes int `json:"access_token_expiry_minutes"` + RefreshTokenExpiryMinutes int `json:"refresh_token_expiry_minutes"` +} + +type MailConfig struct { + Mode string `json:"mode"` + From string `json:"from"` + DebugDir string `json:"debug_dir"` + TemplatesDir string `json:"templates_dir"` + FrontendBaseURL string `json:"frontend_base_url"` + ResetPasswordPath string `json:"reset_password_path"` + SMTP SMTPMailConfig `json:"smtp"` +} + +type SMTPMailConfig struct { + Host string `json:"host"` + Port int `json:"port"` + Username string `json:"username"` + Password string `json:"password"` +} + +func LoadConfig(path string) (ServerConfig, error) { + data, err := os.ReadFile(path) + if err != nil { + return ServerConfig{}, fmt.Errorf("read config: %w", err) + } + var cfg ServerConfig + if err := json.Unmarshal(data, &cfg); err != nil { + return ServerConfig{}, fmt.Errorf("parse config: %w", err) + } + if cfg.Auth.Secret == "" { + return ServerConfig{}, fmt.Errorf("auth.secret must be set") + } + if cfg.Auth.AccessTokenExpiryMinutes <= 0 { + return ServerConfig{}, fmt.Errorf("auth.access_token_expiry_minutes must be greater than zero") + } + if cfg.Auth.RefreshTokenExpiryMinutes <= 0 { + return ServerConfig{}, fmt.Errorf("auth.refresh_token_expiry_minutes must be greater than zero") + } + if cfg.Mail.Mode == "" { + cfg.Mail.Mode = "file" + } + if cfg.Mail.TemplatesDir == "" { + cfg.Mail.TemplatesDir = "internal/http/templates" + } + if cfg.Mail.ResetPasswordPath == "" { + cfg.Mail.ResetPasswordPath = "/#reset-password" + } + if cfg.Mail.Mode != "smtp" && cfg.Mail.Mode != "file" { + return ServerConfig{}, fmt.Errorf("mail.mode must be either smtp or file") + } + if cfg.Mail.From == "" { + return ServerConfig{}, fmt.Errorf("mail.from must be set") + } + if cfg.Mail.Mode == "smtp" { + if cfg.Mail.SMTP.Host == "" { + return ServerConfig{}, fmt.Errorf("mail.smtp.host must be set when mail.mode=smtp") + } + if cfg.Mail.SMTP.Port <= 0 { + return ServerConfig{}, fmt.Errorf("mail.smtp.port must be greater than zero when mail.mode=smtp") + } + } else if cfg.Mail.DebugDir == "" { + cfg.Mail.DebugDir = "data/mail-debug" + } + + return cfg, nil +} diff --git a/backend/internal/db/db.go b/backend/internal/db/db.go new file mode 100644 index 0000000..c415e38 --- /dev/null +++ b/backend/internal/db/db.go @@ -0,0 +1,64 @@ +package db + +import ( + "fmt" + "os" + "path/filepath" + "strings" + + "server/internal/models" + + "gorm.io/driver/postgres" + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +type Config struct { + Driver string + DSN string +} + +// Init opens the configured database connection and runs schema migrations. +func Init(cfg Config) (*gorm.DB, error) { + switch cfg.Driver { + case "sqlite": + if err := ensureSQLiteDir(cfg.DSN); err != nil { + return nil, fmt.Errorf("prepare sqlite path: %w", err) + } + db, err := gorm.Open(sqlite.Open(cfg.DSN), &gorm.Config{}) + if err != nil { + return nil, fmt.Errorf("open sqlite: %w", err) + } + if err := db.AutoMigrate(&models.User{}, &models.UserDetails{}, &models.UserPreferences{}, &models.Session{}, &models.PasswordResetToken{}); err != nil { + return nil, fmt.Errorf("migrate user: %w", err) + } + return db, nil + case "postgres": + db, err := gorm.Open(postgres.Open(cfg.DSN), &gorm.Config{}) + if err != nil { + return nil, fmt.Errorf("open postgres: %w", err) + } + if err := db.AutoMigrate(&models.User{}, &models.UserDetails{}, &models.UserPreferences{}, &models.Session{}, &models.PasswordResetToken{}); err != nil { + return nil, fmt.Errorf("migrate user: %w", err) + } + return db, nil + default: + return nil, fmt.Errorf("unsupported driver %q", cfg.Driver) + } +} + +func ensureSQLiteDir(dsn string) error { + pathSpec := dsn + if idx := strings.Index(pathSpec, "?"); idx >= 0 { + pathSpec = pathSpec[:idx] + } + pathSpec = strings.TrimPrefix(pathSpec, "file:") + if pathSpec == "" || strings.Contains(pathSpec, ":memory:") { + return nil + } + dir := filepath.Dir(pathSpec) + if dir == "." || dir == "" { + return nil + } + return os.MkdirAll(dir, 0o755) +} diff --git a/backend/internal/http/controllers/admin.go b/backend/internal/http/controllers/admin.go new file mode 100644 index 0000000..2157fd5 --- /dev/null +++ b/backend/internal/http/controllers/admin.go @@ -0,0 +1,65 @@ +package controllers + +import ( + "github.com/gofiber/fiber/v3" + + "server/internal/models" +) + +type AdminController struct{} + +func NewAdminController() *AdminController { + return &AdminController{} +} + +// Typescript: interface +type ListUsersRequest struct { + Page int `json:"page" validate:"omitempty,min=1"` + PageSize int `json:"pageSize" validate:"omitempty,min=1,max=100"` +} + +// ListUsers returns a paginated list of users (requires admin permissions). +func (ac *AdminController) ListUsers(c fiber.Ctx) error { + var req ListUsersRequest + if err := c.Bind().Body(&req); err != nil { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + if err := validateStruct(&req); err != nil { + return err + } + if req.Page <= 0 { + req.Page = 1 + } + if req.PageSize <= 0 || req.PageSize > 100 { + req.PageSize = 20 + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var list []models.User + offset := (req.Page - 1) * req.PageSize + if err := db.Preload("Details").Preload("Preferences"). + Limit(req.PageSize). + Offset(offset). + Find(&list).Error; err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to load users") + } + + // Map to short representation + short := make([]models.UserShort, 0, len(list)) + for i := range list { + short = append(short, models.ToUserShort(&list[i])) + } + + return c.JSON(fiber.Map{ + "data": fiber.Map{ + "page": req.Page, + "pageSize": req.PageSize, + "items": short, + }, + "error": nil, + }) +} diff --git a/backend/internal/http/controllers/auth.go b/backend/internal/http/controllers/auth.go new file mode 100644 index 0000000..339481a --- /dev/null +++ b/backend/internal/http/controllers/auth.go @@ -0,0 +1,430 @@ +package controllers + +import ( + "crypto/rand" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "strings" + "time" + + "github.com/gofiber/fiber/v3" + "gorm.io/gorm" + + "server/internal/auth" + "server/internal/mail" + "server/internal/models" + + "github.com/google/uuid" +) + +type AuthController struct { + authService *auth.Service + mailService *mail.Service +} + +// Typescript: interface +type SimpleResponse struct { + Message string `json:"message"` +} + +func NewAuthController(authService *auth.Service, mailService *mail.Service) *AuthController { + return &AuthController{ + authService: authService, + mailService: mailService, + } +} + +// Typescript: interface +type LoginRequest struct { + Username string `json:"username" validate:"required,email"` + Password string `json:"password" validate:"required,min=8,max=128"` +} + +// Typescript: interface +type RefreshRequest struct { + RefreshToken string `json:"refresh_token"` +} + +// Typescript: interface +type ForgotPasswordRequest struct { + Email string `json:"email" validate:"required,email"` +} + +// Typescript: interface +type ResetPasswordRequest struct { + Token string `json:"token" validate:"required,min=20,max=255"` + Password string `json:"password" validate:"required,min=8,max=128"` +} + +// Login authenticates a user and issues an access/refresh token pair. +func (ac *AuthController) Login(c fiber.Ctx) error { + var req LoginRequest + if err := c.Bind().Body(&req); err != nil { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + if err := validateStruct(&req); err != nil { + return err + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var user models.User + if err := db.Where("email = ?", req.Username).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusUnauthorized, "invalid credentials") + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to fetch user") + } + match, err := auth.VerifyPassword(user.Password, req.Password) + if err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to verify credentials") + } + if !match { + return fiber.NewError(fiber.StatusUnauthorized, "invalid credentials") + } + + tokens, err := ac.authService.GenerateTokenPair(user.Email) + if err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to issue token") + } + + userID := user.ID + now := time.Now().UTC() + if err := db.Where("expires_at < ?", now).Delete(&models.Session{}).Error; err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to purge expired sessions") + } + + session := models.Session{ + UserID: &userID, + Username: user.Email, + AccessTokenHash: hashToken(tokens.AccessToken), + RefreshTokenHash: hashToken(tokens.RefreshToken), + ExpiresAt: now.Add(ac.authService.RefreshExpiry()), + IPAddress: c.IP(), + UserAgent: c.Get("User-Agent"), + } + + if err := db.Create(&session).Error; err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to record session") + } + + //c.Set("Auth-Token", tokens.AccessToken) + c.Response().Header.Set("Auth-Token", tokens.AccessToken) + + return c.JSON(success(tokens)) +} + +// Refresh renews an access/refresh token pair using a valid refresh token. +func (ac *AuthController) Refresh(c fiber.Ctx) error { + var req RefreshRequest + if err := c.Bind().Body(&req); err != nil { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + if req.RefreshToken == "" { + return fiber.NewError(fiber.StatusBadRequest, "refresh_token is required") + } + + tokens, err := ac.authService.Refresh(req.RefreshToken) + if err != nil { + return fiber.NewError(fiber.StatusUnauthorized, err.Error()) + } + return c.JSON(success(tokens)) +} + +// Me returns the authenticated user's profile (short format). +func (ac *AuthController) Me(c fiber.Ctx) error { + claims, ok := auth.ClaimsFromCtx(c) + if !ok { + return fiber.NewError(fiber.StatusUnauthorized, "missing claims") + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var user models.User + if err := db.Preload("Details").Preload("Preferences").Where("email = ?", claims.Username).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusNotFound, "user not found") + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to load user") + } + + return c.JSON(success(models.ToUserShort(&user))) +} + +// Register creates a new user with optional roles/types/preferences. +func (ac *AuthController) Register(c fiber.Ctx) error { + var req models.UserCreateInput + if err := c.Bind().Body(&req); err != nil { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + if err := validateStruct(&req); err != nil { + return err + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var existing models.User + if err := db.Where("email = ?", req.Email).First(&existing).Error; err == nil { + return fiber.NewError(fiber.StatusConflict, "user already exists") + } else if !errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusInternalServerError, "failed to check user") + } + + now := time.Now().UTC() + hashedPassword, err := auth.HashPassword(req.Password) + if err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to secure password") + } + user := models.User{ + Email: req.Email, + Name: req.Name, + Password: hashedPassword, + Roles: func() models.UserRoles { + if len(req.Roles) == 0 { + return models.UserRoles{"user"} + } + return req.Roles + }(), + Status: func() models.UserStatus { + if req.Status == "" { + return models.UserStatusPending + } + return req.Status + }(), + Types: func() models.UserTypes { + if len(req.Types) == 0 { + return models.UserTypes{"internal"} + } + return req.Types + }(), + Avatar: req.Avatar, + UUID: uuid.NewString(), + Details: toUserDetails(req.Details), + Preferences: func() *models.UserPreferences { + if req.Preferences == nil { + return nil + } + return &models.UserPreferences{ + UseIdle: req.Preferences.UseIdle, + IdleTimeout: req.Preferences.IdleTimeout, + UseIdlePassword: req.Preferences.UseIdlePassword, + IdlePin: req.Preferences.IdlePin, + UseDirectLogin: req.Preferences.UseDirectLogin, + UseQuadcodeLogin: req.Preferences.UseQuadcodeLogin, + SendNoticesMail: req.Preferences.SendNoticesMail, + Language: req.Preferences.Language, + } + }(), + CreatedAt: now, + UpdatedAt: now, + } + + if err := db.Create(&user).Error; err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to create user") + } + + if err := ac.mailService.Send(c, mail.Message{ + To: user.Email, + Subject: fmt.Sprintf("[%s] Registrazione completata", ac.mailService.AppName()), + Template: "registration", + TemplateData: mail.TemplateData{ + AppName: ac.mailService.AppName(), + UserName: user.Name, + UserEmail: user.Email, + }, + }); err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to send registration email") + } + + return c.Status(fiber.StatusCreated).JSON(success(models.ToUserShort(&user))) +} + +func (ac *AuthController) ForgotPassword(c fiber.Ctx) error { + var req ForgotPasswordRequest + if err := c.Bind().Body(&req); err != nil { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + if err := validateStruct(&req); err != nil { + return err + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var user models.User + if err := db.Where("email = ?", req.Email).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return c.JSON(success(fiber.Map{"sent": true})) + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to load user") + } + + if user.Status == models.UserStatusDisabled { + return c.JSON(success(fiber.Map{"sent": true})) + } + + resetToken, err := generateSecureToken() + if err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to generate reset token") + } + + now := time.Now().UTC() + record := models.PasswordResetToken{ + UserID: user.ID, + TokenHash: hashToken(resetToken), + ExpiresAt: now.Add(30 * time.Minute), + CreatedAt: now, + UpdatedAt: now, + } + + if err := db.Transaction(func(tx *gorm.DB) error { + if err := tx.Where("user_id = ? OR expires_at < ? OR used_at IS NOT NULL", user.ID, now). + Delete(&models.PasswordResetToken{}).Error; err != nil { + return err + } + return tx.Create(&record).Error + }); err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to store reset token") + } + + if err := ac.mailService.Send(c, mail.Message{ + To: user.Email, + Subject: fmt.Sprintf("[%s] Recupero password", ac.mailService.AppName()), + Template: "password_reset", + TemplateData: mail.TemplateData{ + AppName: ac.mailService.AppName(), + UserName: user.Name, + UserEmail: user.Email, + ResetToken: resetToken, + ResetURL: ac.mailService.ResetLink(resetToken), + }, + }); err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to send reset email") + } + + return c.JSON(success(SimpleResponse{Message: "password reset email sent"})) +} + +func (ac *AuthController) ResetPassword(c fiber.Ctx) error { + var req ResetPasswordRequest + if err := c.Bind().Body(&req); err != nil { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + if err := validateStruct(&req); err != nil { + return err + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + hashedPassword, err := auth.HashPassword(req.Password) + if err != nil { + return fiber.NewError(fiber.StatusInternalServerError, "failed to secure password") + } + + now := time.Now().UTC() + tokenHash := hashToken(req.Token) + if err := db.Transaction(func(tx *gorm.DB) error { + var resetToken models.PasswordResetToken + if err := tx.Where("token_hash = ?", tokenHash).First(&resetToken).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusBadRequest, "invalid or expired reset token") + } + return err + } + if resetToken.UsedAt != nil || now.After(resetToken.ExpiresAt) { + return fiber.NewError(fiber.StatusBadRequest, "invalid or expired reset token") + } + + if err := tx.Model(&models.User{}).Where("id = ?", resetToken.UserID).Updates(map[string]any{ + "password": hashedPassword, + "updated_at": now, + }).Error; err != nil { + return err + } + if err := tx.Model(&resetToken).Updates(map[string]any{ + "used_at": now, + "updated_at": now, + }).Error; err != nil { + return err + } + if err := tx.Where("user_id = ?", resetToken.UserID).Delete(&models.Session{}).Error; err != nil { + return err + } + if err := tx.Where("user_id = ? AND id <> ?", resetToken.UserID, resetToken.ID).Delete(&models.PasswordResetToken{}).Error; err != nil { + return err + } + return nil + }); err != nil { + var fiberErr *fiber.Error + if errors.As(err, &fiberErr) { + return fiberErr + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to reset password") + } + + return c.JSON(success(SimpleResponse{Message: "password reset successful"})) +} + +func (ac *AuthController) ValidToken(c fiber.Ctx) error { + raw := strings.TrimSpace(string(c.Body())) + if raw == "" { + return fiber.NewError(fiber.StatusBadRequest, "token is required") + } + + // Accept both plain text token payload and JSON string payload. + token := raw + if strings.HasPrefix(raw, "\"") && strings.HasSuffix(raw, "\"") { + if err := json.Unmarshal([]byte(raw), &token); err != nil { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + } + token = strings.TrimSpace(token) + if token == "" { + return fiber.NewError(fiber.StatusBadRequest, "token is required") + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + now := time.Now().UTC() + tokenHash := hashToken(token) + var resetToken models.PasswordResetToken + if err := db.Where("token_hash = ?", tokenHash).First(&resetToken).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusBadRequest, "invalid or expired reset token") + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to validate reset token") + } + + if resetToken.UsedAt != nil || now.After(resetToken.ExpiresAt) { + return fiber.NewError(fiber.StatusBadRequest, "invalid or expired reset token") + } + + return c.JSON(success(SimpleResponse{Message: "valid reset token"})) +} + +func generateSecureToken() (string, error) { + buf := make([]byte, 32) + if _, err := rand.Read(buf); err != nil { + return "", err + } + return base64.RawURLEncoding.EncodeToString(buf), nil +} diff --git a/backend/internal/http/controllers/authorization.go b/backend/internal/http/controllers/authorization.go new file mode 100644 index 0000000..731a3c6 --- /dev/null +++ b/backend/internal/http/controllers/authorization.go @@ -0,0 +1,223 @@ +package controllers + +import ( + "encoding/json" + "errors" + "fmt" + "os" + "strings" + + "github.com/gofiber/fiber/v3" + "gorm.io/gorm" + + "server/internal/auth" + "server/internal/models" +) + +type RoleConfig struct { + Roles map[string][]string `json:"roles"` + Permissions map[string][]string `json:"permissions"` + Endpoints map[string]string `json:"endpoints"` +} + +type RoleResolver struct { + roleClosure map[string]map[string]struct{} + permMap map[string]map[string]struct{} + endpointPerm map[string]string +} + +func LoadRoleConfig(path string) (*RoleResolver, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, fmt.Errorf("read role config: %w", err) + } + var cfg RoleConfig + if err := json.Unmarshal(data, &cfg); err != nil { + return nil, fmt.Errorf("parse role config: %w", err) + } + res := &RoleResolver{ + roleClosure: make(map[string]map[string]struct{}), + permMap: make(map[string]map[string]struct{}), + endpointPerm: make(map[string]string), + } + + for role := range cfg.Roles { + res.roleClosure[role] = make(map[string]struct{}) + } + + // Compute role closure (role implies itself). + var dfs func(string, map[string]struct{}) + dfs = func(role string, seen map[string]struct{}) { + if _, ok := seen[role]; ok { + return + } + seen[role] = struct{}{} + if implied, ok := cfg.Roles[role]; ok { + for _, r := range implied { + dfs(r, seen) + } + } + } + for role := range cfg.Roles { + set := make(map[string]struct{}) + set[role] = struct{}{} + dfs(role, set) + res.roleClosure[role] = set + } + + // Build permission map including inherited permissions. + for role := range cfg.Roles { + res.permMap[role] = make(map[string]struct{}) + } + for role := range cfg.Roles { + closure := res.roleClosure[role] + for implied := range closure { + for _, p := range cfg.Permissions[implied] { + res.permMap[role][p] = struct{}{} + } + } + } + + // Normalise endpoints to "METHOD /path". + for key, perm := range cfg.Endpoints { + parts := strings.SplitN(key, " ", 2) + if len(parts) != 2 { + return nil, fmt.Errorf("invalid endpoint key %q", key) + } + method := strings.TrimSpace(strings.ToUpper(parts[0])) + path := strings.TrimSpace(parts[1]) + res.endpointPerm[method+" "+path] = perm + } + + return res, nil +} + +func (r *RoleResolver) HasRole(userRoles []string, required string) bool { + for _, ur := range userRoles { + if closure, ok := r.roleClosure[ur]; ok { + if _, present := closure[required]; present { + return true + } + } + } + return false +} + +func (r *RoleResolver) HasPermission(userRoles []string, perm string) bool { + for _, ur := range userRoles { + if perms, ok := r.permMap[ur]; ok { + if _, present := perms[perm]; present { + return true + } + } + } + return false +} + +func (r *RoleResolver) PermissionForEndpoint(method, path string) (string, bool) { + key := strings.ToUpper(method) + " " + path + perm, ok := r.endpointPerm[key] + return perm, ok +} + +func (r *RoleResolver) RoleDefined(role string) bool { + _, ok := r.roleClosure[role] + return ok +} + +// RequireRole ensures the authenticated user has the specified role (with inheritance). +func RequireRole(resolver *RoleResolver, role string) fiber.Handler { + return func(c fiber.Ctx) error { + claims, ok := auth.ClaimsFromCtx(c) + if !ok { + return fiber.NewError(fiber.StatusUnauthorized, "missing claims") + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var user models.User + if err := db.Select("roles").Where("email = ?", claims.Username).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusUnauthorized, "user not found") + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to load user roles") + } + + if !resolver.HasRole(user.Roles, role) { + return fiber.NewError(fiber.StatusForbidden, "insufficient permissions") + } + return c.Next() + } +} + +// RequirePermission ensures the authenticated user has the given permission. +func RequirePermission(resolver *RoleResolver, perm string) fiber.Handler { + return func(c fiber.Ctx) error { + claims, ok := auth.ClaimsFromCtx(c) + if !ok { + return fiber.NewError(fiber.StatusUnauthorized, "missing claims") + } + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var user models.User + if err := db.Select("roles").Where("email = ?", claims.Username).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusUnauthorized, "user not found") + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to load user roles") + } + + if !resolver.HasPermission(user.Roles, perm) { + return fiber.NewError(fiber.StatusForbidden, "insufficient permissions") + } + return c.Next() + } +} + +// RequireEndpointPermission enforces permission mapping defined in role config. +// If the endpoint is not configured, or mapped to "*", it allows the request. +func RequireEndpointPermission(resolver *RoleResolver, authService *auth.Service) fiber.Handler { + return func(c fiber.Ctx) error { + perm, ok := resolver.PermissionForEndpoint(c.Method(), c.Path()) + if !ok || perm == "*" { + return c.Next() + } + + tokenString := c.Get("Auth-Token") + if tokenString == "" { + return fiber.NewError(fiber.StatusUnauthorized, "missing token header") + } + + claims, err := authService.ValidateAccessToken(tokenString) + if err != nil { + return fiber.NewError(fiber.StatusUnauthorized, err.Error()) + } + c.Locals("authClaims", claims) + + db, err := dbFromCtx(c) + if err != nil { + return err + } + + var user models.User + if err := db.Select("roles").Where("email = ?", claims.Username).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fiber.NewError(fiber.StatusUnauthorized, "user not found") + } + return fiber.NewError(fiber.StatusInternalServerError, "failed to load user roles") + } + + if !resolver.HasPermission(user.Roles, perm) { + return fiber.NewError(fiber.StatusForbidden, "insufficient permissions") + } + + return c.Next() + } +} diff --git a/backend/internal/http/controllers/helpers.go b/backend/internal/http/controllers/helpers.go new file mode 100644 index 0000000..b4f030a --- /dev/null +++ b/backend/internal/http/controllers/helpers.go @@ -0,0 +1,34 @@ +package controllers + +import ( + "github.com/gofiber/fiber/v3" + "gorm.io/gorm" + + "server/internal/models" +) + +// dbFromCtx extracts *gorm.DB from Fiber context. +func dbFromCtx(c fiber.Ctx) (*gorm.DB, error) { + dbVal := c.Locals("db") + db, ok := dbVal.(*gorm.DB) + if !ok || db == nil { + return nil, fiber.NewError(fiber.StatusInternalServerError, "database unavailable") + } + return db, nil +} + +func toUserDetails(d *models.UserDetailsShort) *models.UserDetails { + if d == nil { + return nil + } + return &models.UserDetails{ + Title: d.Title, + FirstName: d.FirstName, + LastName: d.LastName, + Address: d.Address, + City: d.City, + ZipCode: d.ZipCode, + Country: d.Country, + Phone: d.Phone, + } +} diff --git a/backend/internal/http/controllers/response.go b/backend/internal/http/controllers/response.go new file mode 100644 index 0000000..8baf8a0 --- /dev/null +++ b/backend/internal/http/controllers/response.go @@ -0,0 +1,11 @@ +package controllers + +import "github.com/gofiber/fiber/v3" + +// success wraps a payload in the standard API envelope. +func success(data any) fiber.Map { + return fiber.Map{ + "data": data, + "error": nil, + } +} diff --git a/backend/internal/http/controllers/tokenhash.go b/backend/internal/http/controllers/tokenhash.go new file mode 100644 index 0000000..eea8322 --- /dev/null +++ b/backend/internal/http/controllers/tokenhash.go @@ -0,0 +1,11 @@ +package controllers + +import ( + "crypto/sha256" + "encoding/hex" +) + +func hashToken(token string) string { + sum := sha256.Sum256([]byte(token)) + return hex.EncodeToString(sum[:]) +} diff --git a/backend/internal/http/controllers/validation.go b/backend/internal/http/controllers/validation.go new file mode 100644 index 0000000..34dd67a --- /dev/null +++ b/backend/internal/http/controllers/validation.go @@ -0,0 +1,28 @@ +package controllers + +import ( + "fmt" + "strings" + + "github.com/go-playground/validator/v10" + "github.com/gofiber/fiber/v3" +) + +var validate = validator.New(validator.WithRequiredStructEnabled()) + +// validateStruct runs tag-based validation and returns a Fiber 400 error on failure. +func validateStruct(payload any) error { + if err := validate.Struct(payload); err != nil { + if _, ok := err.(*validator.InvalidValidationError); ok { + return fiber.NewError(fiber.StatusBadRequest, "invalid payload") + } + if verrs, ok := err.(validator.ValidationErrors); ok && len(verrs) > 0 { + fe := verrs[0] + field := strings.ToLower(fe.Field()) + msg := fmt.Sprintf("%s validation failed (%s)", field, fe.ActualTag()) + return fiber.NewError(fiber.StatusBadRequest, msg) + } + return fiber.NewError(fiber.StatusBadRequest, "validation failed") + } + return nil +} diff --git a/backend/internal/http/routes/admin_routes.go b/backend/internal/http/routes/admin_routes.go new file mode 100644 index 0000000..1ab0bbc --- /dev/null +++ b/backend/internal/http/routes/admin_routes.go @@ -0,0 +1,14 @@ +package routes + +import ( + "server/internal/http/controllers" + + "github.com/gofiber/fiber/v3" +) + +func registerAdminRoutes(app *fiber.App) { + adminController := controllers.NewAdminController() + + // Typescript: TSEndpoint= path=/admin/users; name=listUsers; method=POST; request=controllers.ListUsersRequest; response=models.[]UserShort + app.Post("/admin/users", adminController.ListUsers) +} diff --git a/backend/internal/http/routes/auth_routes.go b/backend/internal/http/routes/auth_routes.go new file mode 100644 index 0000000..85ddbe4 --- /dev/null +++ b/backend/internal/http/routes/auth_routes.go @@ -0,0 +1,42 @@ +package routes + +import ( + "time" + + "server/internal/auth" + "server/internal/http/controllers" + "server/internal/mail" + + "github.com/gofiber/fiber/v3" + "github.com/gofiber/fiber/v3/middleware/limiter" +) + +func registerAuthRoutes(app *fiber.App, authService *auth.Service, mailService *mail.Service) { + authController := controllers.NewAuthController(authService, mailService) + authRateLimiter := limiter.New(limiter.Config{ + Max: 10, + Expiration: time.Minute, + LimiterMiddleware: limiter.SlidingWindow{}, + }) + + // Typescript: TSEndpoint= path=/auth/login; name=login; method=POST; request=controllers.LoginRequest; response=auth.TokenPair + app.Post("/auth/login", authRateLimiter, authController.Login) + + // Typescript: TSEndpoint= path=/auth/refresh; name=refresh; method=POST; request=controllers.RefreshRequest; response=auth.TokenPair + app.Post("/auth/refresh", authService.Middleware(), authController.Refresh) + + // Typescript: TSEndpoint= path=/auth/me; name=me; method=GET; response=models.UserShort + app.Get("/auth/me", authService.Middleware(), authController.Me) + + // Typescript: TSEndpoint= path=/auth/register; name=register; method=POST; request=models.UserCreateInput; response=models.UserShort + app.Post("/auth/register", authRateLimiter, authController.Register) + + // Typescript: TSEndpoint= path=/auth/password/forgot; name=forgotPassword; method=POST; request=controllers.ForgotPasswordRequest; response=controllers.SimpleResponse + app.Post("/auth/password/forgot", authRateLimiter, authController.ForgotPassword) + + // Typescript: TSEndpoint= path=/auth/password/reset; name=resetPassword; method=POST; request=controllers.ResetPasswordRequest; response=controllers.SimpleResponse + app.Post("/auth/password/reset", authRateLimiter, authController.ResetPassword) + + // Typescript: TSEndpoint= path=/auth/password/valid; name=validToken; method=POST; request=string; response=controllers.SimpleResponse + app.Post("/auth/password/valid", authRateLimiter, authController.ValidToken) +} diff --git a/backend/internal/http/routes/routes.go b/backend/internal/http/routes/routes.go new file mode 100644 index 0000000..6656da2 --- /dev/null +++ b/backend/internal/http/routes/routes.go @@ -0,0 +1,25 @@ +package routes + +import ( + "server/internal/auth" + "server/internal/mail" + + "github.com/gofiber/fiber/v3" +) + +// Typescript: interface +type FormRequest struct { + Req string `json:"req"` + Count int `json:"count"` +} + +// Typescript: interface +type FormResponse struct { + Test string `json:"test"` +} + +func Register(app *fiber.App, authService *auth.Service, mailService *mail.Service) { + registerSystemRoutes(app) + registerAuthRoutes(app, authService, mailService) + registerAdminRoutes(app) +} diff --git a/backend/internal/http/routes/system_routes.go b/backend/internal/http/routes/system_routes.go new file mode 100644 index 0000000..a1b857c --- /dev/null +++ b/backend/internal/http/routes/system_routes.go @@ -0,0 +1,94 @@ +package routes + +import ( + "fmt" + "os" + "path/filepath" + "sort" + "time" + + "server/internal/tsgenerator" + + "github.com/gofiber/fiber/v3" + "github.com/gofiber/fiber/v3/middleware/static" + "github.com/prometheus/client_golang/prometheus/promhttp" +) + +const spaDistPath = "internal/http/static/spa" + +// Typescript: interface +type MailDebugItem struct { + Name string `json:"name"` + Content string `json:"content"` +} + +// healthHandler returns a simple application health status. +func healthHandler(c fiber.Ctx) error { + return c.JSON(fiber.Map{ + "data": fiber.Map{"status": "ok", "ts": time.Now().UTC()}, + "error": nil, + }) +} + +func registerSystemRoutes(app *fiber.App) { + // Typescript: TSEndpoint= path=/health; name=health; method=GET; response=string + app.Get("/health", healthHandler) + + // Typescript: TSEndpoint= path=/metrics; name=metrics; method=GET; response=string + app.Get("/metrics", promhttp.Handler()) + + app.Get("/tsgenerate", func(c fiber.Ctx) error { + ts, err := tsgenerator.TsGenerate() + if err != nil { + return c.Status(fiber.StatusInternalServerError).SendString(err.Error()) + } + return c.SendString(ts) + }) + + // Typescript: TSEndpoint= path=/maildebug; name=mailDebug; method=GET; response=routes.[]MailDebugItem + app.Get("/maildebug", func(c fiber.Ctx) error { + entries, err := os.ReadDir("data/mail-debug") + if err != nil { + return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ + "data": nil, + "error": fmt.Sprintf("failed to read mail-debug directory: %v", err), + }) + } + + items := make([]MailDebugItem, 0, len(entries)) + for _, entry := range entries { + if entry.IsDir() { + continue + } + + name := entry.Name() + path := filepath.Join("data/mail-debug", name) + b, err := os.ReadFile(path) + if err != nil { + return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ + "data": nil, + "error": fmt.Sprintf("failed to read mail file %s: %v", name, err), + }) + } + + items = append(items, MailDebugItem{ + Name: name, + Content: string(b), + }) + } + + sort.Slice(items, func(i, j int) bool { + return items[i].Name < items[j].Name + }) + + return c.JSON(fiber.Map{ + "data": items, + "error": nil, + }) + }) + + app.Get("/", func(c fiber.Ctx) error { + return c.SendFile(filepath.Join(spaDistPath, "index.html")) + }) + app.Use("/", static.New(spaDistPath)) +} diff --git a/backend/internal/http/static/spa/assets/ApiEndpointsPage-DOm_uCJI.js b/backend/internal/http/static/spa/assets/ApiEndpointsPage-DOm_uCJI.js new file mode 100644 index 0000000..a7f630d --- /dev/null +++ b/backend/internal/http/static/spa/assets/ApiEndpointsPage-DOm_uCJI.js @@ -0,0 +1 @@ +import{s as I,y as $,p as E,B as G,_ as A,a as J,o as c,e as _,w as u,h as s,g as N,k as y,$ as C,a0 as O,f as i,t as m,R as M,X as Q,q as f}from"./index-QUdrNkKl.js";import{d as F}from"./render-B4qP-w0Q.js";import{Q as V,a as k}from"./QCard-D_vcm7k9.js";import{Q as B,f as K,m as X,l as j,a as H,b as W,c as Y,r as Z,h as ee,d as te}from"./api-rhge6pbe.js";import{Q as L}from"./QInput-CEazYqyH.js";import{Q as v}from"./QBtn-AYMizH8c.js";import{Q as q}from"./QCardActions-DlFyQG4S.js";import{g as ae,c as le,Q as se}from"./QDialog-BcbjPBVh.js";import{Q as re}from"./QPage-gf8hzrox.js";import{_ as oe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-dark-BRt0_t6X.js";import"./use-key-composition-TTwP9QMZ.js";import"./use-prevent-scroll-eZQDeoK_.js";import"./use-timeout-Jkrq6Sig.js";const ne=["top","middle","bottom"],ie=I({name:"QBadge",props:{color:String,textColor:String,floating:Boolean,transparent:Boolean,multiLine:Boolean,outline:Boolean,rounded:Boolean,label:[Number,String],align:{type:String,validator:t=>ne.includes(t)}},setup(t,{slots:r}){const o=E(()=>t.align!==void 0?{verticalAlign:t.align}:null),d=E(()=>{const p=t.outline===!0&&t.color||t.textColor;return`q-badge flex inline items-center no-wrap q-badge--${t.multiLine===!0?"multi":"single"}-line`+(t.outline===!0?" q-badge--outline":t.color!==void 0?` bg-${t.color}`:"")+(p!==void 0?` text-${p}`:"")+(t.floating===!0?" q-badge--floating":"")+(t.rounded===!0?" q-badge--rounded":"")+(t.transparent===!0?" q-badge--transparent":"")});return()=>$("div",{class:d.value,style:o.value,role:"status","aria-label":t.label},F(r.default,t.label!==void 0?[t.label]:[]))}});function U(t){if(t===!1)return 0;if(t===!0||t===void 0)return 1;const r=parseInt(t,10);return isNaN(r)?0:r}const de=G({name:"close-popup",beforeMount(t,{value:r}){const o={depth:U(r),handler(d){o.depth!==0&&setTimeout(()=>{const p=ae(t);p!==void 0&&le(p,d,o.depth)})},handlerKey(d){A(d,13)===!0&&o.handler(d)}};t.__qclosepopup=o,t.addEventListener("click",o.handler),t.addEventListener("keyup",o.handlerKey)},updated(t,{value:r,oldValue:o}){r!==o&&(t.__qclosepopup.depth=U(r))},beforeUnmount(t){const r=t.__qclosepopup;t.removeEventListener("click",r.handler),t.removeEventListener("keyup",r.handlerKey),delete t.__qclosepopup}}),ue={class:"page-shell"},pe={class:"cards-grid"},ce={class:"head-main"},me={class:"text-h6"},he={class:"text-caption text-grey-7"},ye={key:0,class:"no-fields"},ge={key:1,class:"field-grid"},fe={class:"text-h6"},ke={class:"text-caption"},be={class:"result-block"},Se={class:"result-block"},_e=J({__name:"ApiEndpointsPage",setup(t){const r=[{key:"forgotPassword",name:"forgotPassword",method:"POST",path:"/auth/password/forgot",signature:"Typescript: TSEndpoint= path=/auth/password/forgot; name=forgotPassword; method=POST",fields:[{key:"email",label:"Email",type:"text",placeholder:"user@example.com"}],defaults:{email:""},call:e=>K(e),buildPayload:e=>({email:String(e.email??"")})},{key:"metrics",name:"metrics",method:"GET",path:"/metrics",signature:"Typescript: TSEndpoint= path=/metrics; name=metrics; method=GET",fields:[],defaults:{},call:()=>X(),buildPayload:()=>null},{key:"login",name:"login",method:"POST",path:"/auth/login",signature:"Typescript: TSEndpoint= path=/auth/login; name=login; method=POST",fields:[{key:"username",label:"Username",type:"text",placeholder:"utente"},{key:"password",label:"Password",type:"password",placeholder:"********"}],defaults:{username:"",password:""},call:e=>j(e),buildPayload:e=>({username:String(e.username??""),password:String(e.password??"")})},{key:"refresh",name:"refresh",method:"POST",path:"/auth/refresh",signature:"Typescript: TSEndpoint= path=/auth/refresh; name=refresh; method=POST",fields:[{key:"refresh_token",label:"Refresh token",type:"textarea",hint:"Incolla il token completo"}],defaults:{refresh_token:""},call:e=>H(e),buildPayload:e=>({refresh_token:String(e.refresh_token??"")})},{key:"listUsers",name:"listUsers",method:"POST",path:"/admin/users",signature:"Typescript: TSEndpoint= path=/admin/users; name=listUsers; method=POST",fields:[{key:"page",label:"Page",type:"number",placeholder:"1"},{key:"pageSize",label:"Page size",type:"number",placeholder:"10"}],defaults:{page:1,pageSize:10},call:e=>W(e),buildPayload:e=>({page:Number(e.page??1),pageSize:Number(e.pageSize??10)})},{key:"me",name:"me",method:"GET",path:"/auth/me",signature:"Typescript: TSEndpoint= path=/auth/me; name=me; method=GET",fields:[],defaults:{},call:()=>Y(),buildPayload:()=>null},{key:"resetPassword",name:"resetPassword",method:"POST",path:"/auth/password/reset",signature:"Typescript: TSEndpoint= path=/auth/password/reset; name=resetPassword; method=POST",fields:[{key:"token",label:"Token",type:"textarea"},{key:"password",label:"Nuova password",type:"password"}],defaults:{token:"",password:""},call:e=>Z(e),buildPayload:e=>({token:String(e.token??""),password:String(e.password??"")})},{key:"health",name:"health",method:"GET",path:"/health",signature:"Typescript: TSEndpoint= path=/health; name=health; method=GET",fields:[],defaults:{},call:()=>ee(),buildPayload:()=>null},{key:"register",name:"register",method:"POST",path:"/auth/register",signature:"Typescript: TSEndpoint= path=/auth/register; name=register; method=POST",fields:[{key:"name",label:"Name",type:"text"},{key:"email",label:"Email",type:"text"},{key:"password",label:"Password",type:"password"},{key:"roles",label:"Roles (comma separated)",type:"text",placeholder:"admin,editor"},{key:"status",label:"Status",type:"text",placeholder:"pending | active | disabled"},{key:"types",label:"Types (comma separated)",type:"text",placeholder:"internal,staff"},{key:"avatar",label:"Avatar URL",type:"text"},{key:"details",label:"Details JSON",type:"textarea",hint:"Lascia vuoto per null",placeholder:'{"title":"Sig.","firstName":"Mario","lastName":"Rossi","address":"Via Roma 1","city":"Roma","zipCode":"00100","country":"IT","phone":"+39..."}'},{key:"preferences",label:"Preferences JSON",type:"textarea",hint:"Lascia vuoto per null",placeholder:'{"useIdle":true,"idleTimeout":15,"useIdlePassword":false,"idlePin":"","useDirectLogin":true,"useQuadcodeLogin":false,"sendNoticesMail":true,"language":"it"}'}],defaults:{name:"",email:"",password:"",roles:"user",status:"pending",types:"default",avatar:"",details:"",preferences:""},call:e=>te(e),buildPayload:e=>({name:String(e.name??""),email:String(e.email??""),password:String(e.password??""),roles:T(String(e.roles??"")),status:String(e.status??"pending"),types:T(String(e.types??"")),avatar:R(String(e.avatar??"")),details:w(String(e.details??"")),preferences:w(String(e.preferences??""))})}],o=Q({}),d=Q({});for(const e of r)o[e.key]={...e.defaults},d[e.key]=!1;const p=f(!1),g=f({name:"",method:"",path:""}),P=f(null),b=f(null);function T(e){return e.split(",").map(l=>l.trim()).filter(l=>l.length>0)}function R(e){return e.trim()===""?null:e}function w(e){if(e.trim()==="")return null;try{return JSON.parse(e)}catch{return{_raw:e}}}function D(e){const l=r.find(a=>a.key===e);l&&(o[e]={...l.defaults})}function h(e){return o[e]||(o[e]={}),o[e]}async function z(e){d[e.key]=!0;const l=e.buildPayload(h(e.key));g.value={name:e.name,method:e.method,path:e.path},P.value=l;try{const a=await e.call(l);b.value=a}catch(a){b.value={error:a instanceof Error?a.message:String(a)}}finally{d[e.key]=!1,p.value=!0}}function x(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}return(e,l)=>(c(),_(re,{class:"api-tester-page"},{default:u(()=>[s("div",ue,[l[1]||(l[1]=s("header",{class:"page-header"},[s("p",{class:"eyebrow"},"Developer tools"),s("h1",null,"API Endpoints Tester"),s("p",{class:"subtitle"},[N(" Lista endpoint generata da "),s("strong",null,"src/api/api.ts"),N(" con form payload, esecuzione rapida e risposta formattata. ")])],-1)),s("section",pe,[(c(),y(C,null,O(r,a=>i(V,{key:a.key,flat:"",bordered:"",class:"endpoint-card"},{default:u(()=>[i(k,{class:"card-head"},{default:u(()=>[s("div",ce,[i(ie,{color:a.method==="GET"?"positive":"primary","text-color":"white",label:a.method},null,8,["color","label"]),s("code",null,m(a.path),1)]),s("div",me,m(a.name),1),s("div",he,m(a.signature),1)]),_:2},1024),i(B),i(k,{class:"card-body"},{default:u(()=>[a.fields.length===0?(c(),y("div",ye," Nessun dato richiesto da questo endpoint. ")):(c(),y("div",ge,[(c(!0),y(C,null,O(a.fields,n=>(c(),y("div",{key:`${a.key}-${n.key}`,class:"field-item"},[n.type!=="number"?(c(),_(L,{key:0,modelValue:h(a.key)[n.key],"onUpdate:modelValue":S=>h(a.key)[n.key]=S,label:n.label,type:n.type,hint:n.hint,placeholder:n.placeholder,dense:"",outlined:"",autogrow:""},null,8,["modelValue","onUpdate:modelValue","label","type","hint","placeholder"])):(c(),_(L,{key:1,modelValue:h(a.key)[n.key],"onUpdate:modelValue":S=>h(a.key)[n.key]=S,modelModifiers:{number:!0},label:n.label,type:"number",hint:n.hint,placeholder:n.placeholder,dense:"",outlined:""},null,8,["modelValue","onUpdate:modelValue","label","hint","placeholder"]))]))),128))]))]),_:2},1024),i(q,{align:"between",class:"card-actions"},{default:u(()=>[i(v,{flat:"",color:"secondary",icon:"restart_alt",label:"Reset",onClick:n=>D(a.key)},null,8,["onClick"]),i(v,{color:"accent",icon:"play_arrow",label:"Test",loading:d[a.key],onClick:n=>z(a)},null,8,["loading","onClick"])]),_:2},1024)]),_:2},1024)),64))])]),i(se,{modelValue:p.value,"onUpdate:modelValue":l[0]||(l[0]=a=>p.value=a),maximized:""},{default:u(()=>[i(V,{class:"result-card"},{default:u(()=>[i(k,{class:"result-header"},{default:u(()=>[l[2]||(l[2]=s("div",{class:"text-overline"},"Risultato endpoint",-1)),s("div",fe,m(g.value.name),1),s("div",ke,m(g.value.method)+" "+m(g.value.path),1)]),_:1}),i(B),i(k,{class:"result-body"},{default:u(()=>[s("div",be,[l[3]||(l[3]=s("h3",null,"Payload inviato",-1)),s("pre",null,m(x(P.value)),1)]),s("div",Se,[l[4]||(l[4]=s("h3",null,"Risposta",-1)),s("pre",null,m(x(b.value)),1)])]),_:1}),i(q,{align:"right"},{default:u(()=>[M(i(v,{flat:"",color:"primary",label:"Chiudi"},null,512),[[de]])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}))}}),Ue=oe(_e,[["__scopeId","data-v-a5a44d8d"]]);export{Ue as default}; diff --git a/backend/internal/http/static/spa/assets/ApiEndpointsPage-gOL3JcKs.css b/backend/internal/http/static/spa/assets/ApiEndpointsPage-gOL3JcKs.css new file mode 100644 index 0000000..f757863 --- /dev/null +++ b/backend/internal/http/static/spa/assets/ApiEndpointsPage-gOL3JcKs.css @@ -0,0 +1 @@ +.api-tester-page[data-v-a5a44d8d]{background:radial-gradient(circle at 15% 20%,#fcecc9 0%,transparent 32%),radial-gradient(circle at 85% 10%,#d8f4f8 0%,transparent 35%),linear-gradient(145deg,#f7f3ec,#eef8f9);min-height:100vh;padding:28px 16px 36px}.page-shell[data-v-a5a44d8d]{max-width:1240px;margin:0 auto}.page-header[data-v-a5a44d8d]{margin-bottom:20px}.eyebrow[data-v-a5a44d8d]{margin:0;letter-spacing:.2em;text-transform:uppercase;color:#395f76;font-weight:700;font-size:11px}.page-header h1[data-v-a5a44d8d]{margin:6px 0;font-family:Space Grotesk,sans-serif;font-size:clamp(1.6rem,2.8vw,2.3rem)}.subtitle[data-v-a5a44d8d]{margin:0;color:#50626f;max-width:760px}.cards-grid[data-v-a5a44d8d]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.endpoint-card[data-v-a5a44d8d]{border-radius:14px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffbf}.card-head[data-v-a5a44d8d]{display:flex;flex-direction:column;gap:8px}.head-main[data-v-a5a44d8d]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.head-main code[data-v-a5a44d8d]{background:#f1f4f7;border:1px solid #dce5eb;border-radius:8px;padding:2px 8px}.card-body[data-v-a5a44d8d]{min-height:160px}.no-fields[data-v-a5a44d8d]{padding:8px;color:#60717f}.field-grid[data-v-a5a44d8d]{display:grid;gap:10px}.card-actions[data-v-a5a44d8d]{padding:12px 16px 16px}.result-card[data-v-a5a44d8d]{background:#0f1a24;color:#e7edf3}.result-header[data-v-a5a44d8d]{background:linear-gradient(90deg,#152434,#244661)}.result-body[data-v-a5a44d8d]{display:grid;grid-template-columns:1fr;gap:16px;max-height:calc(100vh - 210px);overflow-y:auto}.result-block[data-v-a5a44d8d]{background:#162432;border:1px solid #2c465f;border-radius:12px;padding:12px}.result-block h3[data-v-a5a44d8d]{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:#9bc2de}.result-block pre[data-v-a5a44d8d]{margin:0;white-space:pre-wrap;word-break:break-word;font-size:12px}@media(max-width:640px){.api-tester-page[data-v-a5a44d8d]{padding-top:18px}.cards-grid[data-v-a5a44d8d]{grid-template-columns:1fr}} diff --git a/backend/internal/http/static/spa/assets/DevLayout-NkVPqUIU.js b/backend/internal/http/static/spa/assets/DevLayout-NkVPqUIU.js new file mode 100644 index 0000000..3e249f2 --- /dev/null +++ b/backend/internal/http/static/spa/assets/DevLayout-NkVPqUIU.js @@ -0,0 +1 @@ +import{Q as Ve,b as J}from"./QBtn-AYMizH8c.js";import{Q as Ne,a as He,b as Xe,c as Ye,d as Ue}from"./QLayout-DIjK04DF.js";import{b as W,Q as Z,a as E}from"./QItem-F5bzVaJB.js";import{s as Ce,y as $,A as qe,p as f,B as je,C as ee,D as Q,E as te,F as Re,G as V,H as ne,I as he,J as ae,K as Ke,L as Ge,M as Je,N as re,O as Ze,q as D,z as g,P as pe,x as et,Q as tt,R as at,a as rt,b as ot,o as ut,e as nt,w as p,f as d,g as P,h as lt,t as it}from"./index-QUdrNkKl.js";import{u as ke,a as Be}from"./use-dark-BRt0_t6X.js";import{h as _e,b as ye}from"./render-B4qP-w0Q.js";import{u as st,a as dt,b as ct,c as ft,d as vt}from"./use-prevent-scroll-eZQDeoK_.js";import{u as mt}from"./use-timeout-Jkrq6Sig.js";import{c as ht,b as N}from"./format-GjIIeqP4.js";const pt=["ul","ol"],yt=Ce({name:"QList",props:{...ke,bordered:Boolean,dense:Boolean,separator:Boolean,padding:Boolean,tag:{type:String,default:"div"}},setup(t,{slots:o}){const n=qe(),y=Be(t,n.proxy.$q),e=f(()=>pt.includes(t.tag)?null:"list"),r=f(()=>"q-list"+(t.bordered===!0?" q-list--bordered":"")+(t.dense===!0?" q-list--dense":"")+(t.separator===!0?" q-list--separator":"")+(y.value===!0?" q-list--dark":"")+(t.padding===!0?" q-list--padding":""));return()=>$(t.tag,{class:r.value,role:e.value},_e(o.default))}}),le={left:!0,right:!0,up:!0,down:!0,horizontal:!0,vertical:!0},bt=Object.keys(le);le.all=!0;function be(t){const o={};for(const n of bt)t[n]===!0&&(o[n]=!0);return Object.keys(o).length===0?le:(o.horizontal===!0?o.left=o.right=!0:o.left===!0&&o.right===!0&&(o.horizontal=!0),o.vertical===!0?o.up=o.down=!0:o.up===!0&&o.down===!0&&(o.vertical=!0),o.horizontal===!0&&o.vertical===!0&&(o.all=!0),o)}const gt=["INPUT","TEXTAREA"];function ge(t,o){return o.event===void 0&&t.target!==void 0&&t.target.draggable!==!0&&typeof o.handler=="function"&>.includes(t.target.nodeName.toUpperCase())===!1&&(t.qClonedBy===void 0||t.qClonedBy.indexOf(o.uid)===-1)}function oe(t,o,n){const y=ne(t);let e,r=y.left-o.event.x,i=y.top-o.event.y,m=Math.abs(r),h=Math.abs(i);const s=o.direction;s.horizontal===!0&&s.vertical!==!0?e=r<0?"left":"right":s.horizontal!==!0&&s.vertical===!0?e=i<0?"up":"down":s.up===!0&&i<0?(e="up",m>h&&(s.left===!0&&r<0?e="left":s.right===!0&&r>0&&(e="right"))):s.down===!0&&i>0?(e="down",m>h&&(s.left===!0&&r<0?e="left":s.right===!0&&r>0&&(e="right"))):s.left===!0&&r<0?(e="left",m0&&(e="down"))):s.right===!0&&r>0&&(e="right",m0&&(e="down")));let u=!1;if(e===void 0&&n===!1){if(o.event.isFirst===!0||o.event.lastDir===void 0)return{};e=o.event.lastDir,u=!0,e==="left"||e==="right"?(y.left-=r,m=0,r=0):(y.top-=i,h=0,i=0)}return{synthetic:u,payload:{evt:t,touch:o.event.mouse!==!0,mouse:o.event.mouse===!0,position:y,direction:e,isFirst:o.event.isFirst,isFinal:n===!0,duration:Date.now()-o.event.time,distance:{x:m,y:h},offset:{x:r,y:i},delta:{x:y.left-o.event.lastX,y:y.top-o.event.lastY}}}}let wt=0;const ue=je({name:"touch-pan",beforeMount(t,{value:o,modifiers:n}){if(n.mouse!==!0&&Q.has.touch!==!0)return;function y(r,i){n.mouse===!0&&i===!0?Ge(r):(n.stop===!0&&ae(r),n.prevent===!0&&he(r))}const e={uid:"qvtp_"+wt++,handler:o,modifiers:n,direction:be(n),noop:Re,mouseStart(r){ge(r,e)&&Ke(r)&&(V(e,"temp",[[document,"mousemove","move","notPassiveCapture"],[document,"mouseup","end","passiveCapture"]]),e.start(r,!0))},touchStart(r){if(ge(r,e)){const i=r.target;V(e,"temp",[[i,"touchmove","move","notPassiveCapture"],[i,"touchcancel","end","passiveCapture"],[i,"touchend","end","passiveCapture"]]),e.start(r)}},start(r,i){if(Q.is.firefox===!0&&te(t,!0),e.lastEvt=r,i===!0||n.stop===!0){if(e.direction.all!==!0&&(i!==!0||e.modifiers.mouseAllDir!==!0&&e.modifiers.mousealldir!==!0)){const s=r.type.indexOf("mouse")!==-1?new MouseEvent(r.type,r):new TouchEvent(r.type,r);r.defaultPrevented===!0&&he(s),r.cancelBubble===!0&&ae(s),Object.assign(s,{qKeyEvent:r.qKeyEvent,qClickOutside:r.qClickOutside,qAnchorHandled:r.qAnchorHandled,qClonedBy:r.qClonedBy===void 0?[e.uid]:r.qClonedBy.concat(e.uid)}),e.initialEvent={target:r.target,event:s}}ae(r)}const{left:m,top:h}=ne(r);e.event={x:m,y:h,time:Date.now(),mouse:i===!0,detected:!1,isFirst:!0,isFinal:!1,lastX:m,lastY:h}},move(r){if(e.event===void 0)return;const i=ne(r),m=i.left-e.event.x,h=i.top-e.event.y;if(m===0&&h===0)return;e.lastEvt=r;const s=e.event.mouse===!0,u=()=>{y(r,s);let w;n.preserveCursor!==!0&&n.preservecursor!==!0&&(w=document.documentElement.style.cursor||"",document.documentElement.style.cursor="grabbing"),s===!0&&document.body.classList.add("no-pointer-events--children"),document.body.classList.add("non-selectable"),ht(),e.styleCleanup=c=>{if(e.styleCleanup=void 0,w!==void 0&&(document.documentElement.style.cursor=w),document.body.classList.remove("non-selectable"),s===!0){const x=()=>{document.body.classList.remove("no-pointer-events--children")};c!==void 0?setTimeout(()=>{x(),c()},50):x()}else c!==void 0&&c()}};if(e.event.detected===!0){e.event.isFirst!==!0&&y(r,e.event.mouse);const{payload:w,synthetic:c}=oe(r,e,!1);w!==void 0&&(e.handler(w)===!1?e.end(r):(e.styleCleanup===void 0&&e.event.isFirst===!0&&u(),e.event.lastX=w.position.left,e.event.lastY=w.position.top,e.event.lastDir=c===!0?void 0:w.direction,e.event.isFirst=!1));return}if(e.direction.all===!0||s===!0&&(e.modifiers.mouseAllDir===!0||e.modifiers.mousealldir===!0)){u(),e.event.detected=!0,e.move(r);return}const B=Math.abs(m),b=Math.abs(h);B!==b&&(e.direction.horizontal===!0&&B>b||e.direction.vertical===!0&&B0||e.direction.left===!0&&B>b&&m<0||e.direction.right===!0&&B>b&&m>0?(e.event.detected=!0,e.move(r)):e.end(r,!0))},end(r,i){if(e.event!==void 0){if(ee(e,"temp"),Q.is.firefox===!0&&te(t,!1),i===!0)e.styleCleanup?.(),e.event.detected!==!0&&e.initialEvent!==void 0&&e.initialEvent.target.dispatchEvent(e.initialEvent.event);else if(e.event.detected===!0){e.event.isFirst===!0&&e.handler(oe(r===void 0?e.lastEvt:r,e).payload);const{payload:m}=oe(r===void 0?e.lastEvt:r,e,!0),h=()=>{e.handler(m)};e.styleCleanup!==void 0?e.styleCleanup(h):h()}e.event=void 0,e.initialEvent=void 0,e.lastEvt=void 0}}};if(t.__qtouchpan=e,n.mouse===!0){const r=n.mouseCapture===!0||n.mousecapture===!0?"Capture":"";V(e,"main",[[t,"mousedown","mouseStart",`passive${r}`]])}Q.has.touch===!0&&V(e,"main",[[t,"touchstart","touchStart",`passive${n.capture===!0?"Capture":""}`],[t,"touchmove","noop","notPassiveCapture"]])},updated(t,o){const n=t.__qtouchpan;n!==void 0&&(o.oldValue!==o.value&&(typeof value!="function"&&n.end(),n.handler=o.value),n.direction=be(o.modifiers))},beforeUnmount(t){const o=t.__qtouchpan;o!==void 0&&(o.event!==void 0&&o.end(),ee(o,"main"),ee(o,"temp"),Q.is.firefox===!0&&te(t,!1),o.styleCleanup?.(),delete t.__qtouchpan)}}),we=150,Ct=Ce({name:"QDrawer",inheritAttrs:!1,props:{...dt,...ke,side:{type:String,default:"left",validator:t=>["left","right"].includes(t)},width:{type:Number,default:300},mini:Boolean,miniToOverlay:Boolean,miniWidth:{type:Number,default:57},noMiniAnimation:Boolean,breakpoint:{type:Number,default:1023},showIfAbove:Boolean,behavior:{type:String,validator:t=>["default","desktop","mobile"].includes(t),default:"default"},bordered:Boolean,elevated:Boolean,overlay:Boolean,persistent:Boolean,noSwipeOpen:Boolean,noSwipeClose:Boolean,noSwipeBackdrop:Boolean},emits:[...st,"onLayout","miniState"],setup(t,{slots:o,emit:n,attrs:y}){const e=qe(),{proxy:{$q:r}}=e,i=Be(t,r),{preventBodyScroll:m}=vt(),{registerTimeout:h,removeTimeout:s}=mt(),u=Je(Ze,re);if(u===re)return console.error("QDrawer needs to be child of QLayout"),re;let B,b=null,w;const c=D(t.behavior==="mobile"||t.behavior!=="desktop"&&u.totalWidth.value<=t.breakpoint),x=f(()=>t.mini===!0&&c.value!==!0),q=f(()=>x.value===!0?t.miniWidth:t.width),v=D(t.showIfAbove===!0&&c.value===!1?!0:t.modelValue===!0),ie=f(()=>t.persistent!==!0&&(c.value===!0||Se.value===!0));function se(a,l){if(xe(),a!==!1&&u.animate(),k(0),c.value===!0){const C=u.instances[F.value];C?.belowBreakpoint===!0&&C.hide(!1),T(1),u.isContainer.value!==!0&&m(!0)}else T(0),a!==!1&&R(!1);h(()=>{a!==!1&&R(!0),l!==!0&&n("show",a)},we)}function de(a,l){Te(),a!==!1&&u.animate(),T(0),k(L.value*q.value),K(),l!==!0?h(()=>{n("hide",a)},we):s()}const{show:H,hide:O}=ct({showing:v,hideOnRouteChange:ie,handleShow:se,handleHide:de}),{addToHistory:xe,removeFromHistory:Te}=ft(v,O,ie),z={belowBreakpoint:c,hide:O},_=f(()=>t.side==="right"),L=f(()=>(r.lang.rtl===!0?-1:1)*(_.value===!0?1:-1)),ce=D(0),M=D(!1),X=D(!1),fe=D(q.value*L.value),F=f(()=>_.value===!0?"left":"right"),Y=f(()=>v.value===!0&&c.value===!1&&t.overlay===!1?t.miniToOverlay===!0?t.miniWidth:q.value:0),U=f(()=>t.overlay===!0||t.miniToOverlay===!0||u.view.value.indexOf(_.value?"R":"L")!==-1||r.platform.is.ios===!0&&u.isContainer.value===!0),A=f(()=>t.overlay===!1&&v.value===!0&&c.value===!1),Se=f(()=>t.overlay===!0&&v.value===!0&&c.value===!1),De=f(()=>"fullscreen q-drawer__backdrop"+(v.value===!1&&M.value===!1?" hidden":"")),Le=f(()=>({backgroundColor:`rgba(0,0,0,${ce.value*.4})`})),ve=f(()=>_.value===!0?u.rows.value.top[2]==="r":u.rows.value.top[0]==="l"),Me=f(()=>_.value===!0?u.rows.value.bottom[2]==="r":u.rows.value.bottom[0]==="l"),Ee=f(()=>{const a={};return u.header.space===!0&&ve.value===!1&&(U.value===!0?a.top=`${u.header.offset}px`:u.header.space===!0&&(a.top=`${u.header.size}px`)),u.footer.space===!0&&Me.value===!1&&(U.value===!0?a.bottom=`${u.footer.offset}px`:u.footer.space===!0&&(a.bottom=`${u.footer.size}px`)),a}),Oe=f(()=>{const a={width:`${q.value}px`,transform:`translateX(${fe.value}px)`};return c.value===!0?a:Object.assign(a,Ee.value)}),Ae=f(()=>"q-drawer__content fit "+(u.isContainer.value!==!0?"scroll":"overflow-auto")),Qe=f(()=>`q-drawer q-drawer--${t.side}`+(X.value===!0?" q-drawer--mini-animate":"")+(t.bordered===!0?" q-drawer--bordered":"")+(i.value===!0?" q-drawer--dark q-dark":"")+(M.value===!0?" no-transition":v.value===!0?"":" q-layout--prevent-focus")+(c.value===!0?" fixed q-drawer--on-top q-drawer--mobile q-drawer--top-padding":` q-drawer--${x.value===!0?"mini":"standard"}`+(U.value===!0||A.value!==!0?" fixed":"")+(t.overlay===!0||t.miniToOverlay===!0?" q-drawer--on-top":"")+(ve.value===!0?" q-drawer--top-padding":""))),Pe=f(()=>{const a=r.lang.rtl===!0?t.side:F.value;return[[ue,Ie,void 0,{[a]:!0,mouse:!0}]]}),$e=f(()=>{const a=r.lang.rtl===!0?F.value:t.side;return[[ue,me,void 0,{[a]:!0,mouse:!0}]]}),ze=f(()=>{const a=r.lang.rtl===!0?F.value:t.side;return[[ue,me,void 0,{[a]:!0,mouse:!0,mouseAllDir:!0}]]});function j(){We(c,t.behavior==="mobile"||t.behavior!=="desktop"&&u.totalWidth.value<=t.breakpoint)}g(c,a=>{a===!0?(B=v.value,v.value===!0&&O(!1)):t.overlay===!1&&t.behavior!=="mobile"&&B!==!1&&(v.value===!0?(k(0),T(0),K()):H(!1))}),g(()=>t.side,(a,l)=>{u.instances[l]===z&&(u.instances[l]=void 0,u[l].space=!1,u[l].offset=0),u.instances[a]=z,u[a].size=q.value,u[a].space=A.value,u[a].offset=Y.value}),g(u.totalWidth,()=>{(u.isContainer.value===!0||document.qScrollPrevented!==!0)&&j()}),g(()=>t.behavior+t.breakpoint,j),g(u.isContainer,a=>{v.value===!0&&m(a!==!0),a===!0&&j()}),g(u.scrollbarWidth,()=>{k(v.value===!0?0:void 0)}),g(Y,a=>{S("offset",a)}),g(A,a=>{n("onLayout",a),S("space",a)}),g(_,()=>{k()}),g(q,a=>{k(),G(t.miniToOverlay,a)}),g(()=>t.miniToOverlay,a=>{G(a,q.value)}),g(()=>r.lang.rtl,()=>{k()}),g(()=>t.mini,()=>{t.noMiniAnimation||t.modelValue===!0&&(Fe(),u.animate())}),g(x,a=>{n("miniState",a)});function k(a){a===void 0?pe(()=>{a=v.value===!0?0:q.value,k(L.value*a)}):(u.isContainer.value===!0&&_.value===!0&&(c.value===!0||Math.abs(a)===q.value)&&(a+=L.value*u.scrollbarWidth.value),fe.value=a)}function T(a){ce.value=a}function R(a){const l=a===!0?"remove":u.isContainer.value!==!0?"add":"";l!==""&&document.body.classList[l]("q-body--drawer-toggle")}function Fe(){b!==null&&clearTimeout(b),e.proxy&&e.proxy.$el&&e.proxy.$el.classList.add("q-drawer--mini-animate"),X.value=!0,b=setTimeout(()=>{b=null,X.value=!1,e?.proxy?.$el?.classList.remove("q-drawer--mini-animate")},150)}function Ie(a){if(v.value!==!1)return;const l=q.value,C=N(a.distance.x,0,l);if(a.isFinal===!0){C>=Math.min(75,l)===!0?H():(u.animate(),T(0),k(L.value*l)),M.value=!1;return}k((r.lang.rtl===!0?_.value!==!0:_.value)?Math.max(l-C,0):Math.min(0,C-l)),T(N(C/l,0,1)),a.isFirst===!0&&(M.value=!0)}function me(a){if(v.value!==!0)return;const l=q.value,C=a.direction===t.side,I=(r.lang.rtl===!0?C!==!0:C)?N(a.distance.x,0,l):0;if(a.isFinal===!0){Math.abs(I){n("onLayout",A.value),n("miniState",x.value),B=t.showIfAbove===!0;const a=()=>{(v.value===!0?se:de)(!1,!0)};if(u.totalWidth.value!==0){pe(a);return}w=g(u.totalWidth,()=>{w(),w=void 0,v.value===!1&&t.showIfAbove===!0&&c.value===!1?H(!1):a()})}),tt(()=>{w?.(),b!==null&&(clearTimeout(b),b=null),v.value===!0&&K(),u.instances[t.side]===z&&(u.instances[t.side]=void 0,S("size",0),S("offset",0),S("space",!1))}),()=>{const a=[];c.value===!0&&(t.noSwipeOpen===!1&&a.push(at($("div",{key:"open",class:`q-drawer__opener fixed-${t.side}`,"aria-hidden":"true"}),Pe.value)),a.push(ye("div",{ref:"backdrop",class:De.value,style:Le.value,"aria-hidden":"true",onClick:O},void 0,"backdrop",t.noSwipeBackdrop!==!0&&v.value===!0,()=>ze.value)));const l=x.value===!0&&o.mini!==void 0,C=[$("div",{...y,key:""+l,class:[Ae.value,y.class]},l===!0?o.mini():_e(o.default))];return t.elevated===!0&&v.value===!0&&C.push($("div",{class:"q-layout__shadow absolute-full overflow-hidden no-pointer-events"})),a.push(ye("aside",{ref:"content",class:Qe.value,style:Oe.value},C,"contentclose",t.noSwipeClose!==!0&&c.value===!0,()=>$e.value)),$("div",{class:"q-drawer-container"},a)}}}),Et=rt({__name:"DevLayout",setup(t){const o=D(!1);function n(){o.value=!o.value}return(y,e)=>{const r=ot("router-view");return ut(),nt(Ue,{view:"lHh Lpr lFf"},{default:p(()=>[d(Ne,{elevated:""},{default:p(()=>[d(He,null,{default:p(()=>[d(Ve,{flat:"",dense:"",round:"",icon:"menu","aria-label":"Menu",onClick:n}),d(Xe,null,{default:p(()=>[...e[1]||(e[1]=[P(" Quasar App ",-1)])]),_:1}),lt("div",null,"Quasar v"+it(y.$q.version),1)]),_:1})]),_:1}),d(Ct,{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=i=>o.value=i),"show-if-above":"",bordered:""},{default:p(()=>[d(yt,null,{default:p(()=>[d(W,{header:""},{default:p(()=>[...e[2]||(e[2]=[P(" Links ",-1)])]),_:1}),d(Z,{clickable:"",to:"/",exact:""},{default:p(()=>[d(E,{avatar:""},{default:p(()=>[d(J,{name:"home"})]),_:1}),d(E,null,{default:p(()=>[d(W,null,{default:p(()=>[...e[3]||(e[3]=[P("Home",-1)])]),_:1})]),_:1})]),_:1}),d(Z,{clickable:"",to:"/dev/api/endpoints",exact:""},{default:p(()=>[d(E,{avatar:""},{default:p(()=>[d(J,{name:"api"})]),_:1}),d(E,null,{default:p(()=>[d(W,null,{default:p(()=>[...e[4]||(e[4]=[P("API Endpoints Tester",-1)])]),_:1})]),_:1})]),_:1}),d(Z,{clickable:"",to:"/dev/api/mail-debug",exact:""},{default:p(()=>[d(E,{avatar:""},{default:p(()=>[d(J,{name:"mail"})]),_:1}),d(E,null,{default:p(()=>[d(W,null,{default:p(()=>[...e[5]||(e[5]=[P("Mail Debug",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),d(Ye,null,{default:p(()=>[d(r)]),_:1})]),_:1})}}});export{Et as default}; diff --git a/backend/internal/http/static/spa/assets/ErrorNotFound-CYezCx4W.js b/backend/internal/http/static/spa/assets/ErrorNotFound-CYezCx4W.js new file mode 100644 index 0000000..ab35642 --- /dev/null +++ b/backend/internal/http/static/spa/assets/ErrorNotFound-CYezCx4W.js @@ -0,0 +1 @@ +import{Q as o}from"./QBtn-AYMizH8c.js";import{a as s,o as l,k as r,h as t,f as n}from"./index-QUdrNkKl.js";import"./render-B4qP-w0Q.js";const a={class:"fullscreen bg-blue text-white text-center q-pa-md flex flex-center"},f=s({__name:"ErrorNotFound",setup(i){return(c,e)=>(l(),r("div",a,[t("div",null,[e[0]||(e[0]=t("div",{style:{"font-size":"30vh"}},"404",-1)),e[1]||(e[1]=t("div",{class:"text-h2",style:{opacity:"0.4"}},"Oops. Nothing here...",-1)),n(o,{class:"q-mt-xl",color:"white","text-color":"blue",unelevated:"",to:"/",label:"Go Home","no-caps":""})])]))}});export{f as default}; diff --git a/backend/internal/http/static/spa/assets/IndexPage-0Ryt20QD.css b/backend/internal/http/static/spa/assets/IndexPage-0Ryt20QD.css new file mode 100644 index 0000000..27e9b8b --- /dev/null +++ b/backend/internal/http/static/spa/assets/IndexPage-0Ryt20QD.css @@ -0,0 +1 @@ +.my-card[data-v-ab3d870b]{width:100%;max-width:250px} diff --git a/backend/internal/http/static/spa/assets/IndexPage-C3QXgr9t.js b/backend/internal/http/static/spa/assets/IndexPage-C3QXgr9t.js new file mode 100644 index 0000000..33fe335 --- /dev/null +++ b/backend/internal/http/static/spa/assets/IndexPage-C3QXgr9t.js @@ -0,0 +1 @@ +import{Q as e}from"./QPage-gf8hzrox.js";import{a as o,o as t,e as a}from"./index-QUdrNkKl.js";import"./render-B4qP-w0Q.js";const _=o({__name:"IndexPage",setup(r){return(s,n)=>(t(),a(e,{class:"row items-center justify-evenly"}))}});export{_ as default}; diff --git a/backend/internal/http/static/spa/assets/IndexPage-VdxnZT-U.js b/backend/internal/http/static/spa/assets/IndexPage-VdxnZT-U.js new file mode 100644 index 0000000..a00b57b --- /dev/null +++ b/backend/internal/http/static/spa/assets/IndexPage-VdxnZT-U.js @@ -0,0 +1 @@ +import{Q as c,a as x}from"./QCard-D_vcm7k9.js";import{p as s,s as A,q as v,v as K,x as U,y as o,T as X,z as Y,A as Z,a as ee,b as te,o as ae,e as le,w as l,h as n,f as i,g,t as B}from"./index-QUdrNkKl.js";import{a as ie,v as T,u as ne,b as oe,c as re,Q as k}from"./QBtn-AYMizH8c.js";import{h as se,a as ue}from"./render-B4qP-w0Q.js";import{u as N}from"./use-timeout-Jkrq6Sig.js";import{Q as de,a as L,b as p}from"./QItem-F5bzVaJB.js";import{Q as ce}from"./QCardActions-DlFyQG4S.js";import{Q as me}from"./QPage-gf8hzrox.js";import{_ as ge}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-dark-BRt0_t6X.js";const fe={ratio:[String,Number]};function ve(e,r){return s(()=>{const t=Number(e.ratio||(r!==void 0?r.value:void 0));return isNaN(t)!==!0&&t>0?{paddingBottom:`${100/t}%`}:null})}const Se=1.7778,y=A({name:"QImg",props:{...fe,src:String,srcset:String,sizes:String,alt:String,crossorigin:String,decoding:String,referrerpolicy:String,draggable:Boolean,loading:{type:String,default:"lazy"},loadingShowDelay:{type:[Number,String],default:0},fetchpriority:{type:String,default:"auto"},width:String,height:String,initialRatio:{type:[Number,String],default:Se},placeholderSrc:String,errorSrc:String,fit:{type:String,default:"cover"},position:{type:String,default:"50% 50%"},imgClass:String,imgStyle:Object,noSpinner:Boolean,noNativeMenu:Boolean,noTransition:Boolean,spinnerColor:String,spinnerSize:String},emits:["load","error"],setup(e,{slots:r,emit:t}){const f=v(e.initialRatio),b=ve(e,f),S=Z(),{registerTimeout:D,removeTimeout:C}=N(),{registerTimeout:R,removeTimeout:z}=N(),w=s(()=>e.placeholderSrc!==void 0?{src:e.placeholderSrc}:null),$=s(()=>e.errorSrc!==void 0?{src:e.errorSrc,__qerror:!0}:null),u=[v(null),v(w.value)],d=v(0),h=v(!1),_=v(!1),M=s(()=>`q-img q-img--${e.noNativeMenu===!0?"no-":""}menu`),O=s(()=>({width:e.width,height:e.height})),H=s(()=>`q-img__image ${e.imgClass!==void 0?e.imgClass+" ":""}q-img__image--with${e.noTransition===!0?"out":""}-transition q-img__image--`),V=s(()=>({...e.imgStyle,objectFit:e.fit,objectPosition:e.position}));function E(){if(z(),e.loadingShowDelay===0){h.value=!0;return}R(()=>{h.value=!0},e.loadingShowDelay)}function Q(){z(),h.value=!1}function F({target:a}){T(S)===!1&&(C(),f.value=a.naturalHeight===0?.5:a.naturalWidth/a.naturalHeight,I(a,1))}function I(a,m){m===1e3||T(S)===!0||(a.complete===!0?J(a):D(()=>{I(a,m+1)},50))}function J(a){T(S)!==!0&&(d.value=d.value^1,u[d.value].value=null,Q(),a.getAttribute("__qerror")!=="true"&&(_.value=!1),t("load",a.currentSrc||a.src))}function W(a){C(),Q(),_.value=!0,u[d.value].value=$.value,u[d.value^1].value=w.value,t("error",a)}function j(a){const m=u[a].value,q={key:"img_"+a,class:H.value,style:V.value,alt:e.alt,crossorigin:e.crossorigin,decoding:e.decoding,referrerpolicy:e.referrerpolicy,height:e.height,width:e.width,loading:e.loading,fetchpriority:e.fetchpriority,"aria-hidden":"true",draggable:e.draggable,...m};return d.value===a?Object.assign(q,{class:q.class+"current",onLoad:F,onError:W}):q.class+="loaded",o("div",{class:"q-img__container absolute-full",key:"img"+a},o("img",q))}function G(){return h.value===!1?o("div",{key:"content",class:"q-img__content absolute-full q-anchor--skip"},se(r[_.value===!0?"error":"default"])):o("div",{key:"loading",class:"q-img__loading absolute-full flex flex-center"},r.loading!==void 0?r.loading():e.noSpinner===!0?void 0:[o(ie,{color:e.spinnerColor,size:e.spinnerSize})])}{let a=function(){Y(()=>e.src||e.srcset||e.sizes?{src:e.src,srcset:e.srcset,sizes:e.sizes}:null,m=>{C(),_.value=!1,m===null?(Q(),u[d.value^1].value=w.value):E(),u[d.value].value=m},{immediate:!0})};K.value===!0?U(a):a()}return()=>{const a=[];return b.value!==null&&a.push(o("div",{key:"filler",style:b.value})),u[0].value!==null&&a.push(j(0)),u[1].value!==null&&a.push(j(1)),a.push(o(X,{name:"q-transition--fade"},G)),o("div",{key:"main",class:M.value,style:O.value,role:"img","aria-label":e.alt},a)}}}),ye=A({name:"QAvatar",props:{...ne,fontSize:String,color:String,textColor:String,icon:String,square:Boolean,rounded:Boolean},setup(e,{slots:r}){const t=re(e),f=s(()=>"q-avatar"+(e.color?` bg-${e.color}`:"")+(e.textColor?` text-${e.textColor} q-chip--colored`:"")+(e.square===!0?" q-avatar--square":e.rounded===!0?" rounded-borders":"")),b=s(()=>e.fontSize?{fontSize:e.fontSize}:null);return()=>{const S=e.icon!==void 0?[o(oe,{name:e.icon})]:void 0;return o("div",{class:f.value,style:t.value},[o("div",{class:"q-avatar__content row flex-center overflow-hidden",style:b.value},ue(r.default,S))])}}}),be={class:"col-12 col-md-6"},he={class:"q-pa-md row items-start q-gutter-md"},P="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",_e=ee({__name:"IndexPage",setup(e){return(r,t)=>{const f=te("router-link");return ae(),le(me,{class:"row items-center justify-evenly"},{default:l(()=>[n("div",be,[i(c,{class:"q-mt-md"},{default:l(()=>[i(x,null,{default:l(()=>[t[1]||(t[1]=n("div",{class:"text-h6"},"Benvenuto!",-1)),n("p",null,[i(f,{to:"/dev"},{default:l(()=>[...t[0]||(t[0]=[g("Sezione sviluppo",-1)])]),_:1})])]),_:1})]),_:1}),n("div",he,[i(c,{class:"my-card"},{default:l(()=>[t[3]||(t[3]=n("img",{src:"https://cdn.quasar.dev/img/mountains.jpg"},null,-1)),i(x,null,{default:l(()=>[...t[2]||(t[2]=[n("div",{class:"text-h6"},"Our Changing Planet",-1),n("div",{class:"text-subtitle2"},"by John Doe",-1)])]),_:1}),i(x,{class:"q-pt-none"},{default:l(()=>[g(B(P))]),_:1})]),_:1}),i(c,{class:"my-card"},{default:l(()=>[i(y,{src:"https://cdn.quasar.dev/img/parallax2.jpg"},{default:l(()=>[...t[4]||(t[4]=[n("div",{class:"absolute-bottom text-subtitle2 text-center"},"Title",-1)])]),_:1})]),_:1}),i(c,{class:"my-card"},{default:l(()=>[i(y,{src:"https://cdn.quasar.dev/img/parallax2.jpg"},{default:l(()=>[...t[5]||(t[5]=[n("div",{class:"absolute-bottom text-h6"},"Title",-1)])]),_:1}),i(x,null,{default:l(()=>[g(B(P))]),_:1})]),_:1}),i(c,{class:"my-card"},{default:l(()=>[i(y,{src:"https://cdn.quasar.dev/img/parallax2.jpg"},{default:l(()=>[...t[6]||(t[6]=[n("div",{class:"text-subtitle2 absolute-top text-center"},"Title",-1)])]),_:1})]),_:1}),i(c,{class:"my-card"},{default:l(()=>[i(y,{src:"https://cdn.quasar.dev/img/parallax2.jpg"},{default:l(()=>[...t[7]||(t[7]=[n("div",{class:"text-h5 absolute-bottom text-right"},"Title",-1)])]),_:1})]),_:1}),i(c,{class:"my-card"},{default:l(()=>[i(de,null,{default:l(()=>[i(L,{avatar:""},{default:l(()=>[i(ye,null,{default:l(()=>[...t[8]||(t[8]=[n("img",{src:"https://cdn.quasar.dev/img/avatar2.jpg"},null,-1)])]),_:1})]),_:1}),i(L,null,{default:l(()=>[i(p,null,{default:l(()=>[...t[9]||(t[9]=[g("Title",-1)])]),_:1}),i(p,{caption:""},{default:l(()=>[...t[10]||(t[10]=[g("Subhead",-1)])]),_:1})]),_:1})]),_:1}),t[11]||(t[11]=n("img",{src:"https://cdn.quasar.dev/img/parallax2.jpg"},null,-1))]),_:1}),i(c,{class:"my-card"},{default:l(()=>[i(y,{src:"https://cdn.quasar.dev/img/parallax2.jpg"},{default:l(()=>[...t[12]||(t[12]=[n("div",{class:"absolute-bottom"},[n("div",{class:"text-h6"},"Our Changing Planet"),n("div",{class:"text-subtitle2"},"by John Doe")],-1)])]),_:1}),i(ce,null,{default:l(()=>[i(k,{flat:""},{default:l(()=>[...t[13]||(t[13]=[g("Action 1",-1)])]),_:1}),i(k,{flat:""},{default:l(()=>[...t[14]||(t[14]=[g("Action 2",-1)])]),_:1})]),_:1})]),_:1})])])]),_:1})}}}),ke=ge(_e,[["__scopeId","data-v-ab3d870b"]]);export{ke as default}; diff --git a/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjalmUiAw-BepdiOnY.woff b/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjalmUiAw-BepdiOnY.woff new file mode 100644 index 0000000000000000000000000000000000000000..c7f10e0e2b44c98edf474d353d16b0c36d18570b GIT binary patch literal 25552 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

lIIOUL4%7_zFJGdar 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 D@aU{V literal 0 HcmV?d00001 diff --git a/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZtalmUiAw-4ZhHFPot.woff b/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZtalmUiAw-4ZhHFPot.woff new file mode 100644 index 0000000000000000000000000000000000000000..21dcb28653cd18a643e6e285db9ab800dcf510eb GIT binary patch literal 25260 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 literal 0 HcmV?d00001 diff --git a/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmUiAw-CNa4tw4G.woff b/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmUiAw-CNa4tw4G.woff new file mode 100644 index 0000000000000000000000000000000000000000..80fc26d0b1992f5834bcc8ca5b1fa2a9fd2dd798 GIT binary patch literal 25368 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 literal 0 HcmV?d00001 diff --git a/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAw-CHKg1YId.woff b/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAw-CHKg1YId.woff new file mode 100644 index 0000000000000000000000000000000000000000..6c8f9a6ff49337dd5d17834bbf41f6de08bed757 GIT binary patch literal 25396 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 E09h}E7ytkO literal 0 HcmV?d00001 diff --git a/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmUiAw-3fZ6d7DD.woff b/backend/internal/http/static/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmUiAw-3fZ6d7DD.woff new file mode 100644 index 0000000000000000000000000000000000000000..9b7fcd5211b0a4675b1a73355e08defdb949bcd2 GIT binary patch literal 25192 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.value.map((a,e)=>({label:N(a.name||`Mail ${e+1}`).displayName,value:e}))),i=y(()=>s.value===null?null:o.value[s.value]??null),c=y(()=>i.value?N(i.value.name):{displayName:"",email:null,localDate:null}),$=y(()=>S(i.value?.content??""));function S(a){const e='';return/]*>/i.test(a)?a.replace(/]*>/i,l=>`${l}${e}`):`${e}${a}`}function N(a){const e=a.replace(/\.eml$/i,""),l=e.match(/^(\d{10,20})_(.+)$/);let d=e,_=null;l?.[1]&&l[2]&&(_=l[1],d=l[2]);const w=d.replace(/_at_/gi,"@"),h=w.match(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/),V=(_?C(_):null)??L(e);return{displayName:h?.[0]??w,email:h?h[0]:null,localDate:V}}function C(a){const e=Number(a);if(!Number.isFinite(e))return null;let l=e;a.length>=19?l=Math.floor(e/1e6):a.length>=16?l=Math.floor(e/1e3):a.length<=10&&(l=e*1e3);const d=new Date(l);return Number.isNaN(d.getTime())?null:d.toLocaleString()}function L(a){const e=a.match(/(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?)/);if(e)return D(e[0]);const l=a.match(/(\d{4}-\d{2}-\d{2}[ _]\d{2}[-:]\d{2}[-:]\d{2})/);return l?D(l[0]):null}function D(a){const e=a.replace(" ","T").replace(/(T\d{2})-(\d{2})-(\d{2})$/,"$1:$2:$3"),l=new Date(e);return Number.isNaN(l.getTime())?a:l.toLocaleString()}async function T(){p.value=!0,u.value="";try{const a=await Z();if(a.error){u.value=a.error,o.value=[],s.value=null;return}o.value=Array.isArray(a.data)?a.data:[],s.value=o.value.length>0?0:null}catch(a){u.value=a instanceof Error?a.message:String(a),o.value=[],s.value=null}finally{p.value=!1}}async function B(){if(i.value)try{await navigator.clipboard.writeText(i.value.content),M.notify({type:"positive",message:"HTML copiato negli appunti",position:"top-right"})}catch{M.notify({type:"negative",message:"Copia non riuscita",position:"top-right"})}}return I(async()=>{await T()}),(a,e)=>(r(),R(F,{class:"mail-debug-page"},{default:f(()=>[t("div",U,[e[5]||(e[5]=t("header",{class:"mail-debug-header"},[t("p",{class:"eyebrow"},"Developer tools"),t("h1",null,"Mail Debug"),t("p",{class:"subtitle"},[v(" Seleziona una mail da "),t("strong",null,"/maildebug"),v(" e visualizza l'HTML renderizzato. ")])],-1)),n(E,{flat:"",bordered:"",class:"mail-debug-card"},{default:f(()=>[n(x,{class:"controls"},{default:f(()=>[n(k,{color:"primary",icon:"refresh",label:"Aggiorna lista",loading:p.value,onClick:T},null,8,["loading"]),n(A,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=l=>s.value=l),options:Q.value,"option-label":"label","option-value":"value","emit-value":"","map-options":"",outlined:"",dense:"",label:"Seleziona mail",class:"mail-select",disable:p.value||o.value.length===0},null,8,["modelValue","options","disable"])]),_:1}),n(H),n(x,null,{default:f(()=>[u.value?(r(),m("div",G,g(u.value),1)):i.value?(r(),m("div",W,[t("div",X,[e[3]||(e[3]=t("p",{class:"meta-label"},"Nome mail",-1)),t("h2",null,g(c.value.displayName),1),c.value.email?(r(),m("p",Y,[e[1]||(e[1]=t("strong",null,"Email:",-1)),v(" "+g(c.value.email),1)])):z("",!0),c.value.localDate?(r(),m("p",ee,[e[2]||(e[2]=t("strong",null,"Data locale:",-1)),v(" "+g(c.value.localDate),1)])):z("",!0),n(k,{flat:"",color:"secondary",icon:"content_copy",label:"Copia HTML",onClick:B})]),t("div",ae,[e[4]||(e[4]=t("p",{class:"meta-label"},"Render HTML",-1)),t("iframe",{class:"preview-frame",srcdoc:$.value,sandbox:"allow-popups allow-popups-to-escape-sandbox",title:"Mail HTML preview"},null,8,le)])])):(r(),m("div",J,"Nessuna mail selezionata."))]),_:1})]),_:1})])]),_:1}))}}),Ne=K(te,[["__scopeId","data-v-1b5b3a76"]]);export{Ne as default}; diff --git a/backend/internal/http/static/spa/assets/MainLayout-Dnh2wyjy.js b/backend/internal/http/static/spa/assets/MainLayout-Dnh2wyjy.js new file mode 100644 index 0000000..13f37cf --- /dev/null +++ b/backend/internal/http/static/spa/assets/MainLayout-Dnh2wyjy.js @@ -0,0 +1 @@ +import{Q as w}from"./QBtn-AYMizH8c.js";import{Q as x,a as M,b,c as z,d as L}from"./QLayout-DIjK04DF.js";import{Q as H,a as d,b as y}from"./QItem-F5bzVaJB.js";import{Q as k}from"./QSelect-QjDUAbKc.js";import{a as Q,u as S,b as B,o as s,e as C,w as t,f as a,g as f,h as n,t as o,i as F,n as V,j as E,k as r,m as v,p as D,q as I}from"./index-QUdrNkKl.js";import{_ as q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./render-B4qP-w0Q.js";import"./use-prevent-scroll-eZQDeoK_.js";import"./use-dark-BRt0_t6X.js";import"./use-key-composition-TTwP9QMZ.js";import"./format-GjIIeqP4.js";import"./QDialog-BcbjPBVh.js";import"./use-timeout-Jkrq6Sig.js";const N="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-ch'%20viewBox='0%200%20640%20480'%3e%3cg%20fill-rule='evenodd'%20stroke-width='1pt'%3e%3cpath%20fill='red'%20d='M0%200h640v480H0z'/%3e%3cg%20fill='%23fff'%3e%3cpath%20d='M170%20195h300v90H170z'/%3e%3cpath%20d='M275%2090h90v300h-90z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",P="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-de'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23fc0'%20d='M0%20320h640v160H0z'/%3e%3cpath%20fill='%23000001'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='red'%20d='M0%20160h640v160H0z'/%3e%3c/svg%3e",T="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-gb'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23012169'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23FFF'%20d='m75%200%20244%20181L562%200h78v62L400%20241l240%20178v61h-80L320%20301%2081%20480H0v-60l239-178L0%2064V0z'/%3e%3cpath%20fill='%23C8102E'%20d='m424%20281%20216%20159v40L369%20281zm-184%2020%206%2035L54%20480H0zM640%200v3L391%20191l2-44L590%200zM0%200l239%20176h-60L0%2042z'/%3e%3cpath%20fill='%23FFF'%20d='M241%200v480h160V0zM0%20160v160h640V160z'/%3e%3cpath%20fill='%23C8102E'%20d='M0%20193v96h640v-96zM273%200v480h96V0z'/%3e%3c/svg%3e",j="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-us'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23bd3d44'%20d='M0%200h640v480H0'/%3e%3cpath%20stroke='%23fff'%20stroke-width='37'%20d='M0%2055.3h640M0%20129h640M0%20203h640M0%20277h640M0%20351h640M0%20425h640'/%3e%3cpath%20fill='%23192f5d'%20d='M0%200h364.8v258.5H0'/%3e%3cmarker%20id='us-a'%20markerHeight='30'%20markerWidth='30'%3e%3cpath%20fill='%23fff'%20d='m14%200%209%2027L0%2010h28L5%2027z'/%3e%3c/marker%3e%3cpath%20fill='none'%20marker-mid='url(%23us-a)'%20d='m0%200%2016%2011h61%2061%2061%2061%2060L47%2037h61%2061%2060%2061L16%2063h61%2061%2061%2061%2060L47%2089h61%2061%2060%2061L16%20115h61%2061%2061%2061%2060L47%20141h61%2061%2060%2061L16%20166h61%2061%2061%2061%2060L47%20192h61%2061%2060%2061L16%20218h61%2061%2061%2061%2060z'/%3e%3c/svg%3e",U="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-fr'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23fff'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23000091'%20d='M0%200h213.3v480H0z'/%3e%3cpath%20fill='%23e1000f'%20d='M426.7%200H640v480H426.7z'/%3e%3c/svg%3e",R="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-it'%20viewBox='0%200%20640%20480'%3e%3cg%20fill-rule='evenodd'%20stroke-width='1pt'%3e%3cpath%20fill='%23fff'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23009246'%20d='M0%200h213.3v480H0z'/%3e%3cpath%20fill='%23ce2b37'%20d='M426.7%200H640v480H426.7z'/%3e%3c/g%3e%3c/svg%3e",A={class:"q-ml-md"},O={class:"row items-center no-wrap"},$=["src","alt"],W={key:1,class:"lang-fallback"},G={class:"bold text-white q-ml-md"},J=["src","alt"],K={key:1,class:"lang-fallback"},X=Q({__name:"MainLayout",setup(Y){const c=I(!1),h=S(),g=D({get:()=>h.language,set:l=>{h.setLanguage(l)}}),p=Object.assign({"../assets/flags/ch.svg":N,"../assets/flags/de.svg":P,"../assets/flags/en.svg":T,"../assets/flags/en_us.svg":j,"../assets/flags/fr.svg":U,"../assets/flags/it.svg":R}),m=[{code:"it",short_name:"IT",name:"Italiano",flag:"it.svg",style:"width:32px;height:22px;"},{code:"en",short_name:"EN",name:"English",flag:"en.svg",style:"width:32px;height:22px;"},{code:"en_us",short_name:"EN",name:"English USA",flag:"en_us.svg",style:"width:32px;height:22px;"},{code:"de",short_name:"DE",name:"Deutsch",flag:"de.svg",style:"width:32px;height:22px;"},{code:"de_ch",short_name:"DE",name:"Deutsch CH",flag:"ch.svg",style:"width:22px;height:22px;object-fit: cover;"},{code:"fr",short_name:"FR",name:"Français",flag:"fr.svg",style:"width:32px;height:22px;"},{code:"fr_ch",short_name:"FR",name:"Français CH",flag:"ch.svg",style:"width:22px;height:22px;object-fit: cover;"}].map(l=>({label:l.name,value:l.code,flagSrc:p[`../assets/flags/${l.flag}`]??null,flagStyle:l.style,short_name:l.short_name}));function _(){c.value=!c.value}return(l,i)=>{const u=B("router-view");return s(),C(L,{view:"lHh Lpr lFf"},{default:t(()=>[a(x,{elevated:""},{default:t(()=>[a(M,null,{default:t(()=>[a(w,{flat:"",dense:"",round:"",icon:"menu","aria-label":"Menu",onClick:_}),a(b,null,{default:t(()=>[...i[1]||(i[1]=[f(" Quasar App ",-1)])]),_:1}),n("div",null,"Quasar v"+o(l.$q.version),1),n("div",A,[a(k,{modelValue:g.value,"onUpdate:modelValue":i[0]||(i[0]=e=>g.value=e),options:F(m),"option-label":"label","option-value":"value","emit-value":"","map-options":"",class:"q-select",dark:""},{"selected-item":t(e=>[n("div",O,[e.opt.flagSrc?(s(),r("img",{key:0,class:"border",src:e.opt.flagSrc,alt:e.opt.label,style:v(e.opt.flagStyle)},null,12,$)):(s(),r("span",W,o(e.opt.value.toUpperCase()),1)),n("span",G,o(e.opt.short_name),1)])]),option:t(e=>[a(H,V(E(e.itemProps)),{default:t(()=>[a(d,{avatar:""},{default:t(()=>[e.opt.flagSrc?(s(),r("img",{key:0,src:e.opt.flagSrc,alt:e.opt.label,style:v(e.opt.flagStyle)},null,12,J)):(s(),r("span",K,o(e.opt.value.toUpperCase()),1))]),_:2},1024),a(d,null,{default:t(()=>[a(y,null,{default:t(()=>[f(o(e.opt.label),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,["modelValue","options"])])]),_:1})]),_:1}),a(z,null,{default:t(()=>[a(u)]),_:1})]),_:1})}}}),f0=q(X,[["__scopeId","data-v-92823159"]]);export{f0 as default}; diff --git a/backend/internal/http/static/spa/assets/MainLayout-KRjvhj3p.css b/backend/internal/http/static/spa/assets/MainLayout-KRjvhj3p.css new file mode 100644 index 0000000..15a2fbb --- /dev/null +++ b/backend/internal/http/static/spa/assets/MainLayout-KRjvhj3p.css @@ -0,0 +1 @@ +.lang-fallback[data-v-92823159]{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:22px;padding:0 4px;border:1px solid currentColor;border-radius:4px;font-size:10px;line-height:1;font-weight:700}.border[data-v-92823159]{border:1px solid #fff;border-radius:4px}.q-select i.q-icon[data-v-92823159]{color:#fff!important} diff --git a/backend/internal/http/static/spa/assets/QBtn-AYMizH8c.js b/backend/internal/http/static/spa/assets/QBtn-AYMizH8c.js new file mode 100644 index 0000000..45e7db4 --- /dev/null +++ b/backend/internal/http/static/spa/assets/QBtn-AYMizH8c.js @@ -0,0 +1 @@ +import{p as o,s as V,A as H,y as v,i as de,B as fe,C as ve,G as ge,_ as F,J as ae,H as me,Q as be,T as he,R as ye,q as U,L as P,S as ke,I as pe}from"./index-QUdrNkKl.js";import{h as xe,d as z}from"./render-B4qP-w0Q.js";const Q={xs:18,sm:24,md:32,lg:38,xl:46},re={size:String};function ie(e,t=Q){return o(()=>e.size!==void 0?{fontSize:e.size in t?`${t[e.size]}px`:e.size}:null)}const W="0 0 24 24",D=e=>e,N=e=>`ionicons ${e}`,ue={"mdi-":e=>`mdi ${e}`,"icon-":D,"bt-":e=>`bt ${e}`,"eva-":e=>`eva ${e}`,"ion-md":N,"ion-ios":N,"ion-logo":N,"iconfont ":D,"ti-":e=>`themify-icon ${e}`,"bi-":e=>`bootstrap-icons ${e}`,"i-":D},le={o_:"-outlined",r_:"-round",s_:"-sharp"},se={sym_o_:"-outlined",sym_r_:"-rounded",sym_s_:"-sharp"},qe=new RegExp("^("+Object.keys(ue).join("|")+")"),$e=new RegExp("^("+Object.keys(le).join("|")+")"),X=new RegExp("^("+Object.keys(se).join("|")+")"),Ee=/^[Mm]\s?[-+]?\.?\d/,Se=/^img:/,Re=/^svguse:/,we=/^ion-/,Le=/^(fa-(classic|sharp|solid|regular|light|brands|duotone|thin)|[lf]a[srlbdk]?) /,G=V({name:"QIcon",props:{...re,tag:{type:String,default:"i"},name:String,color:String,left:Boolean,right:Boolean},setup(e,{slots:t}){const{proxy:{$q:a}}=H(),n=ie(e),l=o(()=>"q-icon"+(e.left===!0?" on-left":"")+(e.right===!0?" on-right":"")+(e.color!==void 0?` text-${e.color}`:"")),f=o(()=>{let c,i=e.name;if(i==="none"||!i)return{none:!0};if(a.iconMapFn!==null){const s=a.iconMapFn(i);if(s!==void 0)if(s.icon!==void 0){if(i=s.icon,i==="none"||!i)return{none:!0}}else return{cls:s.cls,content:s.content!==void 0?s.content:" "}}if(Ee.test(i)===!0){const[s,y=W]=i.split("|");return{svg:!0,viewBox:y,nodes:s.split("&&").map(u=>{const[k,b,p]=u.split("@@");return v("path",{style:b,d:k,transform:p})})}}if(Se.test(i)===!0)return{img:!0,src:i.substring(4)};if(Re.test(i)===!0){const[s,y=W]=i.split("|");return{svguse:!0,src:s.substring(7),viewBox:y}}let q=" ";const h=i.match(qe);if(h!==null)c=ue[h[1]](i);else if(Le.test(i)===!0)c=i;else if(we.test(i)===!0)c=`ionicons ion-${a.platform.is.ios===!0?"ios":"md"}${i.substring(3)}`;else if(X.test(i)===!0){c="notranslate material-symbols";const s=i.match(X);s!==null&&(i=i.substring(6),c+=se[s[1]]),q=i}else{c="notranslate material-icons";const s=i.match($e);s!==null&&(i=i.substring(2),c+=le[s[1]]),q=i}return{cls:c,content:q}});return()=>{const c={class:l.value,style:n.value,"aria-hidden":"true"};return f.value.none===!0?v(e.tag,c,xe(t.default)):f.value.img===!0?v(e.tag,c,z(t.default,[v("img",{src:f.value.src})])):f.value.svg===!0?v(e.tag,c,z(t.default,[v("svg",{viewBox:f.value.viewBox||"0 0 24 24"},f.value.nodes)])):f.value.svguse===!0?v(e.tag,c,z(t.default,[v("svg",{viewBox:f.value.viewBox},[v("use",{"xlink:href":f.value.src})])])):(f.value.cls!==void 0&&(c.class+=" "+f.value.cls),v(e.tag,c,z(t.default,[f.value.content])))}}}),Be={size:{type:[String,Number],default:"1em"},color:String};function Ce(e){return{cSize:o(()=>e.size in Q?`${Q[e.size]}px`:e.size),classes:o(()=>"q-spinner"+(e.color?` text-${e.color}`:""))}}const _e=V({name:"QSpinner",props:{...Be,thickness:{type:Number,default:5}},setup(e){const{cSize:t,classes:a}=Ce(e);return()=>v("svg",{class:a.value+" q-spinner-mat",width:t.value,height:t.value,viewBox:"25 25 50 50"},[v("circle",{class:"path",cx:"50",cy:"50",r:"20",fill:"none",stroke:"currentColor","stroke-width":e.thickness,"stroke-miterlimit":"10"})])}});function Pe(e,t){const a=e.style;for(const n in t)a[n]=t[n]}function Ze(e){if(e==null)return;if(typeof e=="string")try{return document.querySelector(e)||void 0}catch{return}const t=de(e);if(t)return t.$el||t}function et(e,t){if(e==null||e.contains(t)===!0)return!0;for(let a=e.nextElementSibling;a!==null;a=a.nextElementSibling)if(a.contains(t))return!0;return!1}function Te(e,t=250){let a=!1,n;return function(){return a===!1&&(a=!0,setTimeout(()=>{a=!1},t),n=e.apply(this,arguments)),n}}function J(e,t,a,n){a.modifiers.stop===!0&&ae(e);const l=a.modifiers.color;let f=a.modifiers.center;f=f===!0||n===!0;const c=document.createElement("span"),i=document.createElement("span"),q=me(e),{left:h,top:s,width:y,height:u}=t.getBoundingClientRect(),k=Math.sqrt(y*y+u*u),b=k/2,p=`${(y-k)/2}px`,d=f?p:`${q.left-h-b}px`,x=`${(u-k)/2}px`,_=f?x:`${q.top-s-b}px`;i.className="q-ripple__inner",Pe(i,{height:`${k}px`,width:`${k}px`,transform:`translate3d(${d},${_},0) scale3d(.2,.2,1)`,opacity:0}),c.className=`q-ripple${l?" text-"+l:""}`,c.setAttribute("dir","ltr"),c.appendChild(i),t.appendChild(c);const B=()=>{c.remove(),clearTimeout(C)};a.abort.push(B);let C=setTimeout(()=>{i.classList.add("q-ripple__inner--enter"),i.style.transform=`translate3d(${p},${x},0) scale3d(1,1,1)`,i.style.opacity=.2,C=setTimeout(()=>{i.classList.remove("q-ripple__inner--enter"),i.classList.add("q-ripple__inner--leave"),i.style.opacity=0,C=setTimeout(()=>{c.remove(),a.abort.splice(a.abort.indexOf(B),1)},275)},250)},50)}function Y(e,{modifiers:t,value:a,arg:n}){const l=Object.assign({},e.cfg.ripple,t,a);e.modifiers={early:l.early===!0,stop:l.stop===!0,center:l.center===!0,color:l.color||n,keyCodes:[].concat(l.keyCodes||13)}}const Oe=fe({name:"ripple",beforeMount(e,t){const a=t.instance.$.appContext.config.globalProperties.$q.config||{};if(a.ripple===!1)return;const n={cfg:a,enabled:t.value!==!1,modifiers:{},abort:[],start(l){n.enabled===!0&&l.qSkipRipple!==!0&&l.type===(n.modifiers.early===!0?"pointerdown":"click")&&J(l,e,n,l.qKeyEvent===!0)},keystart:Te(l=>{n.enabled===!0&&l.qSkipRipple!==!0&&F(l,n.modifiers.keyCodes)===!0&&l.type===`key${n.modifiers.early===!0?"down":"up"}`&&J(l,e,n,!0)},300)};Y(n,t),e.__qripple=n,ge(n,"main",[[e,"pointerdown","start","passive"],[e,"click","start","passive"],[e,"keydown","keystart","passive"],[e,"keyup","keystart","passive"]])},updated(e,t){if(t.oldValue!==t.value){const a=e.__qripple;a!==void 0&&(a.enabled=t.value!==!1,a.enabled===!0&&Object(t.value)===t.value&&Y(a,t))}},beforeUnmount(e){const t=e.__qripple;t!==void 0&&(t.abort.forEach(a=>{a()}),ve(t,"main"),delete e._qripple)}}),oe={left:"start",center:"center",right:"end",between:"between",around:"around",evenly:"evenly",stretch:"stretch"},Ae=Object.keys(oe),je={align:{type:String,validator:e=>Ae.includes(e)}};function Me(e){return o(()=>{const t=e.align===void 0?e.vertical===!0?"stretch":"left":e.align;return`${e.vertical===!0?"items":"justify"}-${oe[t]}`})}function tt(e){if(Object(e.$parent)===e.$parent)return e.$parent;let{parent:t}=e.$;for(;Object(t)===t;){if(Object(t.proxy)===t.proxy)return t.proxy;t=t.parent}}function ze(e){return e.appContext.config.globalProperties.$router!==void 0}function nt(e){return e.isUnmounted===!0||e.isDeactivated===!0}function Z(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}function ee(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ie(e,t){for(const a in t){const n=t[a],l=e[a];if(typeof n=="string"){if(n!==l)return!1}else if(Array.isArray(l)===!1||l.length!==n.length||n.some((f,c)=>f!==l[c]))return!1}return!0}function te(e,t){return Array.isArray(t)===!0?e.length===t.length&&e.every((a,n)=>a===t[n]):e.length===1&&e[0]===t}function Ke(e,t){return Array.isArray(e)===!0?te(e,t):Array.isArray(t)===!0?te(t,e):e===t}function De(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const a in e)if(Ke(e[a],t[a])===!1)return!1;return!0}const ce={to:[String,Object],replace:Boolean,href:String,target:String,disable:Boolean},at={...ce,exact:Boolean,activeClass:{type:String,default:"q-router-link--active"},exactActiveClass:{type:String,default:"q-router-link--exact-active"}};function Ne({fallbackTag:e,useDisableForRouterLinkProps:t=!0}={}){const a=H(),{props:n,proxy:l,emit:f}=a,c=ze(a),i=o(()=>n.disable!==!0&&n.href!==void 0),q=t===!0?o(()=>c===!0&&n.disable!==!0&&i.value!==!0&&n.to!==void 0&&n.to!==null&&n.to!==""):o(()=>c===!0&&i.value!==!0&&n.to!==void 0&&n.to!==null&&n.to!==""),h=o(()=>q.value===!0?_(n.to):null),s=o(()=>h.value!==null),y=o(()=>i.value===!0||s.value===!0),u=o(()=>n.type==="a"||y.value===!0?"a":n.tag||e||"div"),k=o(()=>i.value===!0?{href:n.href,target:n.target}:s.value===!0?{href:h.value.href,target:n.target}:{}),b=o(()=>{if(s.value===!1)return-1;const{matched:g}=h.value,{length:$}=g,S=g[$-1];if(S===void 0)return-1;const w=l.$route.matched;if(w.length===0)return-1;const L=w.findIndex(ee.bind(null,S));if(L!==-1)return L;const I=Z(g[$-2]);return $>1&&Z(S)===I&&w[w.length-1].path!==I?w.findIndex(ee.bind(null,g[$-2])):L}),p=o(()=>s.value===!0&&b.value!==-1&&Ie(l.$route.params,h.value.params)),d=o(()=>p.value===!0&&b.value===l.$route.matched.length-1&&De(l.$route.params,h.value.params)),x=o(()=>s.value===!0?d.value===!0?` ${n.exactActiveClass} ${n.activeClass}`:n.exact===!0?"":p.value===!0?` ${n.activeClass}`:"":"");function _(g){try{return l.$router.resolve(g)}catch{}return null}function B(g,{returnRouterError:$,to:S=n.to,replace:w=n.replace}={}){if(n.disable===!0)return g.preventDefault(),Promise.resolve(!1);if(g.metaKey||g.altKey||g.ctrlKey||g.shiftKey||g.button!==void 0&&g.button!==0||n.target==="_blank")return Promise.resolve(!1);g.preventDefault();const L=l.$router[w===!0?"replace":"push"](S);return $===!0?L:L.then(()=>{}).catch(()=>{})}function C(g){if(s.value===!0){const $=S=>B(g,S);f("click",g,$),g.defaultPrevented!==!0&&$()}else f("click",g)}return{hasRouterLink:s,hasHrefLink:i,hasLink:y,linkTag:u,resolvedLink:h,linkIsActive:p,linkIsExactActive:d,linkClass:x,linkAttrs:k,getLink:_,navigateToRouterLink:B,navigateOnClick:C}}const ne={none:0,xs:4,sm:8,md:16,lg:24,xl:32},Fe={xs:8,sm:10,md:14,lg:20,xl:24},Qe=["button","submit","reset"],Ve=/[^\s]\/[^\s]/,He=["flat","outline","push","unelevated"];function Ue(e,t){return e.flat===!0?"flat":e.outline===!0?"outline":e.push===!0?"push":e.unelevated===!0?"unelevated":t}const We={...re,...ce,type:{type:String,default:"button"},label:[Number,String],icon:String,iconRight:String,...He.reduce((e,t)=>(e[t]=Boolean)&&e,{}),square:Boolean,rounded:Boolean,glossy:Boolean,size:String,fab:Boolean,fabMini:Boolean,padding:String,color:String,textColor:String,noCaps:Boolean,noWrap:Boolean,dense:Boolean,tabindex:[Number,String],ripple:{type:[Boolean,Object],default:!0},align:{...je.align,default:"center"},stack:Boolean,stretch:Boolean,loading:{type:Boolean,default:null},disable:Boolean},Xe={...We,round:Boolean};function Ge(e){const t=ie(e,Fe),a=Me(e),{hasRouterLink:n,hasLink:l,linkTag:f,linkAttrs:c,navigateOnClick:i}=Ne({fallbackTag:"button"}),q=o(()=>{const d=e.fab===!1&&e.fabMini===!1?t.value:{};return e.padding!==void 0?Object.assign({},d,{padding:e.padding.split(/\s+/).map(x=>x in ne?ne[x]+"px":x).join(" "),minWidth:"0",minHeight:"0"}):d}),h=o(()=>e.rounded===!0||e.fab===!0||e.fabMini===!0),s=o(()=>e.disable!==!0&&e.loading!==!0),y=o(()=>s.value===!0?e.tabindex||0:-1),u=o(()=>Ue(e,"standard")),k=o(()=>{const d={tabindex:y.value};return l.value===!0?Object.assign(d,c.value):Qe.includes(e.type)===!0&&(d.type=e.type),f.value==="a"?(e.disable===!0?d["aria-disabled"]="true":d.href===void 0&&(d.role="button"),n.value!==!0&&Ve.test(e.type)===!0&&(d.type=e.type)):e.disable===!0&&(d.disabled="",d["aria-disabled"]="true"),e.loading===!0&&e.percentage!==void 0&&Object.assign(d,{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":e.percentage}),d}),b=o(()=>{let d;e.color!==void 0?e.flat===!0||e.outline===!0?d=`text-${e.textColor||e.color}`:d=`bg-${e.color} text-${e.textColor||"white"}`:e.textColor&&(d=`text-${e.textColor}`);const x=e.round===!0?"round":`rectangle${h.value===!0?" q-btn--rounded":e.square===!0?" q-btn--square":""}`;return`q-btn--${u.value} q-btn--${x}`+(d!==void 0?" "+d:"")+(s.value===!0?" q-btn--actionable q-focusable q-hoverable":e.disable===!0?" disabled":"")+(e.fab===!0?" q-btn--fab":e.fabMini===!0?" q-btn--fab-mini":"")+(e.noCaps===!0?" q-btn--no-uppercase":"")+(e.dense===!0?" q-btn--dense":"")+(e.stretch===!0?" no-border-radius self-stretch":"")+(e.glossy===!0?" glossy":"")+(e.square?" q-btn--square":"")}),p=o(()=>a.value+(e.stack===!0?" column":" row")+(e.noWrap===!0?" no-wrap text-no-wrap":"")+(e.loading===!0?" q-btn__content--hidden":""));return{classes:b,style:q,innerClasses:p,attributes:k,hasLink:l,linkTag:f,navigateOnClick:i,isActionable:s}}const{passiveCapture:E}=ke;let T=null,O=null,A=null;const rt=V({name:"QBtn",props:{...Xe,percentage:Number,darkPercentage:Boolean,onTouchstart:[Function,Array]},emits:["click","keydown","mousedown","keyup"],setup(e,{slots:t,emit:a}){const{proxy:n}=H(),{classes:l,style:f,innerClasses:c,attributes:i,hasLink:q,linkTag:h,navigateOnClick:s,isActionable:y}=Ge(e),u=U(null),k=U(null);let b=null,p,d=null;const x=o(()=>e.label!==void 0&&e.label!==null&&e.label!==""),_=o(()=>e.disable===!0||e.ripple===!1?!1:{keyCodes:q.value===!0?[13,32]:[13],...e.ripple===!0?{}:e.ripple}),B=o(()=>({center:e.round})),C=o(()=>{const r=Math.max(0,Math.min(100,e.percentage));return r>0?{transition:"transform 0.6s",transform:`translateX(${r-100}%)`}:{}}),g=o(()=>{if(e.loading===!0)return{onMousedown:M,onTouchstart:M,onClick:M,onKeydown:M,onKeyup:M};if(y.value===!0){const r={onClick:S,onKeydown:w,onMousedown:I};if(n.$q.platform.has.touch===!0){const m=e.onTouchstart!==void 0?"":"Passive";r[`onTouchstart${m}`]=L}return r}return{onClick:P}}),$=o(()=>({ref:u,class:"q-btn q-btn-item non-selectable no-outline "+l.value,style:f.value,...i.value,...g.value}));function S(r){if(u.value!==null){if(r!==void 0){if(r.defaultPrevented===!0)return;const m=document.activeElement;if(e.type==="submit"&&m!==document.body&&u.value.contains(m)===!1&&m.contains(u.value)===!1){r.qAvoidFocus!==!0&&u.value.focus();const K=()=>{document.removeEventListener("keydown",P,!0),document.removeEventListener("keyup",K,E),u.value?.removeEventListener("blur",K,E)};document.addEventListener("keydown",P,!0),document.addEventListener("keyup",K,E),u.value.addEventListener("blur",K,E)}}s(r)}}function w(r){u.value!==null&&(a("keydown",r),F(r,[13,32])===!0&&O!==u.value&&(O!==null&&j(),r.defaultPrevented!==!0&&(r.qAvoidFocus!==!0&&u.value.focus(),O=u.value,u.value.classList.add("q-btn--active"),document.addEventListener("keyup",R,!0),u.value.addEventListener("blur",R,E)),P(r)))}function L(r){u.value!==null&&(a("touchstart",r),r.defaultPrevented!==!0&&(T!==u.value&&(T!==null&&j(),T=u.value,b=r.target,b.addEventListener("touchcancel",R,E),b.addEventListener("touchend",R,E)),p=!0,d!==null&&clearTimeout(d),d=setTimeout(()=>{d=null,p=!1},200)))}function I(r){u.value!==null&&(r.qSkipRipple=p===!0,a("mousedown",r),r.defaultPrevented!==!0&&A!==u.value&&(A!==null&&j(),A=u.value,u.value.classList.add("q-btn--active"),document.addEventListener("mouseup",R,E)))}function R(r){if(u.value!==null&&!(r?.type==="blur"&&document.activeElement===u.value)){if(r?.type==="keyup"){if(O===u.value&&F(r,[13,32])===!0){const m=new MouseEvent("click",r);m.qKeyEvent=!0,r.defaultPrevented===!0&&pe(m),r.cancelBubble===!0&&ae(m),u.value.dispatchEvent(m),P(r),r.qKeyEvent=!0}a("keyup",r)}j()}}function j(r){const m=k.value;r!==!0&&(T===u.value||A===u.value)&&m!==null&&m!==document.activeElement&&(m.setAttribute("tabindex",-1),m.focus()),T===u.value&&(b!==null&&(b.removeEventListener("touchcancel",R,E),b.removeEventListener("touchend",R,E)),T=b=null),A===u.value&&(document.removeEventListener("mouseup",R,E),A=null),O===u.value&&(document.removeEventListener("keyup",R,!0),u.value?.removeEventListener("blur",R,E),O=null),u.value?.classList.remove("q-btn--active")}function M(r){P(r),r.qSkipRipple=!0}return be(()=>{j(!0)}),Object.assign(n,{click:r=>{y.value===!0&&S(r)}}),()=>{let r=[];e.icon!==void 0&&r.push(v(G,{name:e.icon,left:e.stack!==!0&&x.value===!0,role:"img"})),x.value===!0&&r.push(v("span",{class:"block"},[e.label])),r=z(t.default,r),e.iconRight!==void 0&&e.round===!1&&r.push(v(G,{name:e.iconRight,right:e.stack!==!0&&x.value===!0,role:"img"}));const m=[v("span",{class:"q-focus-helper",ref:k})];return e.loading===!0&&e.percentage!==void 0&&m.push(v("span",{class:"q-btn__progress absolute-full overflow-hidden"+(e.darkPercentage===!0?" q-btn__progress--dark":"")},[v("span",{class:"q-btn__progress-indicator fit block",style:C.value})])),m.push(v("span",{class:"q-btn__content text-center col items-center q-anchor--skip "+c.value},r)),e.loading!==null&&m.push(v(he,{name:"q-transition--fade"},()=>e.loading===!0?[v("span",{key:"loading",class:"absolute-full flex flex-center"},t.loading!==void 0?t.loading():[v(_e)])]:null)),ye(v(h.value,$.value,m),[[Oe,_.value,void 0,B.value]])}}});export{rt as Q,Oe as R,_e as a,G as b,ie as c,je as d,Me as e,et as f,at as g,Ne as h,tt as i,ze as j,Ze as k,Pe as l,re as u,nt as v}; diff --git a/backend/internal/http/static/spa/assets/QCard-D_vcm7k9.js b/backend/internal/http/static/spa/assets/QCard-D_vcm7k9.js new file mode 100644 index 0000000..786e86f --- /dev/null +++ b/backend/internal/http/static/spa/assets/QCard-D_vcm7k9.js @@ -0,0 +1 @@ +import{s as t,y as o,p as s,A as c}from"./index-QUdrNkKl.js";import{h as n}from"./render-B4qP-w0Q.js";import{u as l,a as i}from"./use-dark-BRt0_t6X.js";const p=t({name:"QCardSection",props:{tag:{type:String,default:"div"},horizontal:Boolean},setup(a,{slots:r}){const e=s(()=>`q-card__section q-card__section--${a.horizontal===!0?"horiz row no-wrap":"vert"}`);return()=>o(a.tag,{class:e.value},n(r.default))}}),g=t({name:"QCard",props:{...l,tag:{type:String,default:"div"},square:Boolean,flat:Boolean,bordered:Boolean},setup(a,{slots:r}){const{proxy:{$q:e}}=c(),d=i(a,e),u=s(()=>"q-card"+(d.value===!0?" q-card--dark q-dark":"")+(a.bordered===!0?" q-card--bordered":"")+(a.square===!0?" q-card--square no-border-radius":"")+(a.flat===!0?" q-card--flat no-shadow":""));return()=>o(a.tag,{class:u.value},n(r.default))}});export{g as Q,p as a}; diff --git a/backend/internal/http/static/spa/assets/QCardActions-DlFyQG4S.js b/backend/internal/http/static/spa/assets/QCardActions-DlFyQG4S.js new file mode 100644 index 0000000..af4ca54 --- /dev/null +++ b/backend/internal/http/static/spa/assets/QCardActions-DlFyQG4S.js @@ -0,0 +1 @@ +import{d as r,e}from"./QBtn-AYMizH8c.js";import{s as c,y as n,p as i}from"./index-QUdrNkKl.js";import{h as l}from"./render-B4qP-w0Q.js";const d=c({name:"QCardActions",props:{...r,vertical:Boolean},setup(s,{slots:a}){const o=e(s),t=i(()=>`q-card__actions ${o.value} q-card__actions--${s.vertical===!0?"vert column":"horiz row"}`);return()=>n("div",{class:t.value},l(a.default))}});export{d as Q}; diff --git a/backend/internal/http/static/spa/assets/QDialog-BcbjPBVh.js b/backend/internal/http/static/spa/assets/QDialog-BcbjPBVh.js new file mode 100644 index 0000000..7347ac8 --- /dev/null +++ b/backend/internal/http/static/spa/assets/QDialog-BcbjPBVh.js @@ -0,0 +1 @@ +import{ac as I,W as ge,a2 as he,y as g,ad as be,q as P,s as V,p as f,a6 as ke,Q as U,P as we,A as J,D as X,_ as ye,z as K,T as R}from"./index-QUdrNkKl.js";import{u as qe,a as Pe,b as pe,c as xe,d as Se}from"./use-prevent-scroll-eZQDeoK_.js";import{u as Ee}from"./use-timeout-Jkrq6Sig.js";import{i as E,v as _e,f as Ce}from"./QBtn-AYMizH8c.js";import{r as N,i as Te,e as $e}from"./use-key-composition-TTwP9QMZ.js";import{h as Be}from"./render-B4qP-w0Q.js";let Fe=1,De=document.body;function Me(e,n){const o=document.createElement("div");if(o.id=n!==void 0?`q-portal--${n}--${Fe++}`:e,I.globalNodes!==void 0){const a=I.globalNodes.class;a!==void 0&&(o.className=a)}return De.appendChild(o),o}function He(e){e.remove()}const _=[];function tt(e){return _.find(n=>n.contentEl!==null&&n.contentEl.contains(e))}function Qe(e,n){do{if(e.$options.name==="QMenu"){if(e.hide(n),e.$props.separateClosePopup===!0)return E(e)}else if(e.__qPortal===!0){const o=E(e);return o?.$options.name==="QPopupProxy"?(e.hide(n),o):e}e=E(e)}while(e!=null)}function nt(e,n,o){for(;o!==0&&e!==void 0&&e!==null;){if(e.__qPortal===!0){if(o--,e.$options.name==="QMenu"){e=Qe(e,n);continue}e.hide(n)}e=E(e)}}const ze=V({name:"QPortal",setup(e,{slots:n}){return()=>n.default()}});function Oe(e){for(e=e.parent;e!=null;){if(e.type.name==="QGlobalDialog")return!0;if(e.type.name==="QDialog"||e.type.name==="QMenu")return!1;e=e.parent}return!1}function Le(e,n,o,a){const l=P(!1),u=P(!1);let s=null;const c={},r=a==="dialog"&&Oe(e);function d(v){if(v===!0){N(c),u.value=!0;return}u.value=!1,l.value===!1&&(r===!1&&s===null&&(s=Me(!1,a)),l.value=!0,_.push(e.proxy),Te(c))}function m(v){if(u.value=!1,v!==!0)return;N(c),l.value=!1;const y=_.indexOf(e.proxy);y!==-1&&_.splice(y,1),s!==null&&(He(s),s=null)}return ge(()=>{m(!0)}),e.proxy.__qPortal=!0,he(e.proxy,"contentEl",()=>n.value),{showPortal:d,hidePortal:m,portalIsActive:l,portalIsAccessible:u,renderPortal:()=>r===!0?o():l.value===!0?[g(be,{to:s},g(ze,o))]:void 0}}const Ae={transitionShow:{type:String,default:"fade"},transitionHide:{type:String,default:"fade"},transitionDuration:{type:[String,Number],default:300}};function Ie(e,n=()=>{},o=()=>{}){return{transitionProps:f(()=>{const a=`q-transition--${e.transitionShow||n()}`,l=`q-transition--${e.transitionHide||o()}`;return{appear:!0,enterFromClass:`${a}-enter-from`,enterActiveClass:`${a}-enter-active`,enterToClass:`${a}-enter-to`,leaveFromClass:`${l}-leave-from`,leaveActiveClass:`${l}-leave-active`,leaveToClass:`${l}-leave-to`}}),transitionStyle:f(()=>`--q-transition-duration: ${e.transitionDuration}ms`)}}function Ke(){let e;const n=J();function o(){e=void 0}return ke(o),U(o),{removeTick:o,registerTick(a){e=a,we(()=>{e===a&&(_e(n)===!1&&e(),e=void 0)})}}}const h=[];let w;function Re(e){w=e.keyCode===27}function Ne(){w===!0&&(w=!1)}function je(e){w===!0&&(w=!1,ye(e,27)===!0&&h[h.length-1](e))}function Y(e){window[e]("keydown",Re),window[e]("blur",Ne),window[e]("keyup",je),w=!1}function Ge(e){X.is.desktop===!0&&(h.push(e),h.length===1&&Y("addEventListener"))}function j(e){const n=h.indexOf(e);n!==-1&&(h.splice(n,1),h.length===0&&Y("removeEventListener"))}const b=[];function Z(e){b[b.length-1](e)}function We(e){X.is.desktop===!0&&(b.push(e),b.length===1&&document.body.addEventListener("focusin",Z))}function G(e){const n=b.indexOf(e);n!==-1&&(b.splice(n,1),b.length===0&&document.body.removeEventListener("focusin",Z))}let S=0;const Ve={standard:"fixed-full flex-center",top:"fixed-top justify-center",bottom:"fixed-bottom justify-center",right:"fixed-right items-center",left:"fixed-left items-center"},W={standard:["scale","scale"],top:["slide-down","slide-up"],bottom:["slide-up","slide-down"],right:["slide-left","slide-right"],left:["slide-right","slide-left"]},ot=V({name:"QDialog",inheritAttrs:!1,props:{...Pe,...Ae,transitionShow:String,transitionHide:String,persistent:Boolean,autoClose:Boolean,allowFocusOutside:Boolean,noEscDismiss:Boolean,noBackdropDismiss:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,noShake:Boolean,seamless:Boolean,maximized:Boolean,fullWidth:Boolean,fullHeight:Boolean,square:Boolean,backdropFilter:String,position:{type:String,default:"standard",validator:e=>["standard","top","bottom","left","right"].includes(e)}},emits:[...qe,"shake","click","escapeKey"],setup(e,{slots:n,emit:o,attrs:a}){const l=J(),u=P(null),s=P(!1),c=P(!1);let r=null,d=null,m,v;const y=f(()=>e.persistent!==!0&&e.noRouteDismiss!==!0&&e.seamless!==!0),{preventBodyScroll:D}=Se(),{registerTimeout:M}=Ee(),{registerTick:ee,removeTick:H}=Ke(),{transitionProps:te,transitionStyle:Q}=Ie(e,()=>W[e.position][0],()=>W[e.position][1]),ne=f(()=>Q.value+(e.backdropFilter!==void 0?`;backdrop-filter:${e.backdropFilter};-webkit-backdrop-filter:${e.backdropFilter}`:"")),{showPortal:z,hidePortal:O,portalIsAccessible:oe,renderPortal:ie}=Le(l,u,ve,"dialog"),{hide:p}=pe({showing:s,hideOnRouteChange:y,handleShow:ce,handleHide:de,processOnMount:!0}),{addToHistory:ae,removeFromHistory:le}=xe(s,p,y),se=f(()=>`q-dialog__inner flex no-pointer-events q-dialog__inner--${e.maximized===!0?"maximized":"minimized"} q-dialog__inner--${e.position} ${Ve[e.position]}`+(c.value===!0?" q-dialog__inner--animating":"")+(e.fullWidth===!0?" q-dialog__inner--fullwidth":"")+(e.fullHeight===!0?" q-dialog__inner--fullheight":"")+(e.square===!0?" q-dialog__inner--square":"")),x=f(()=>s.value===!0&&e.seamless!==!0),ue=f(()=>e.autoClose===!0?{onClick:fe}:{}),re=f(()=>[`q-dialog fullscreen no-pointer-events q-dialog--${x.value===!0?"modal":"seamless"}`,a.class]);K(()=>e.maximized,t=>{s.value===!0&&$(t)}),K(x,t=>{D(t),t===!0?(We(B),Ge(T)):(G(B),j(T))});function ce(t){ae(),d=e.noRefocus===!1&&document.activeElement!==null?document.activeElement:null,$(e.maximized),z(),c.value=!0,e.noFocus!==!0?(document.activeElement?.blur(),ee(q)):H(),M(()=>{if(l.proxy.$q.platform.is.ios===!0){if(e.seamless!==!0&&document.activeElement){const{top:i,bottom:k}=document.activeElement.getBoundingClientRect(),{innerHeight:A}=window,F=window.visualViewport!==void 0?window.visualViewport.height:A;i>0&&k>F/2&&(document.scrollingElement.scrollTop=Math.min(document.scrollingElement.scrollHeight-F,k>=A?1/0:Math.ceil(document.scrollingElement.scrollTop+k-F/2))),document.activeElement.scrollIntoView()}v=!0,u.value.click(),v=!1}z(!0),c.value=!1,o("show",t)},e.transitionDuration)}function de(t){H(),le(),L(!0),c.value=!0,O(),d!==null&&(((t?.type.indexOf("key")===0?d.closest('[tabindex]:not([tabindex^="-"])'):void 0)||d).focus(),d=null),M(()=>{O(!0),c.value=!1,o("hide",t)},e.transitionDuration)}function q(t){$e(()=>{let i=u.value;if(i!==null){if(t!==void 0){const k=i.querySelector(t);if(k!==null){k.focus({preventScroll:!0});return}}i.contains(document.activeElement)!==!0&&(i=i.querySelector("[autofocus][tabindex], [data-autofocus][tabindex]")||i.querySelector("[autofocus] [tabindex], [data-autofocus] [tabindex]")||i.querySelector("[autofocus], [data-autofocus]")||i,i.focus({preventScroll:!0}))}})}function C(t){t&&typeof t.focus=="function"?t.focus({preventScroll:!0}):q(),o("shake");const i=u.value;i!==null&&(i.classList.remove("q-animate--scale"),i.classList.add("q-animate--scale"),r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null,u.value!==null&&(i.classList.remove("q-animate--scale"),q())},170))}function T(){e.seamless!==!0&&(e.persistent===!0||e.noEscDismiss===!0?e.maximized!==!0&&e.noShake!==!0&&C():(o("escapeKey"),p()))}function L(t){r!==null&&(clearTimeout(r),r=null),(t===!0||s.value===!0)&&($(!1),e.seamless!==!0&&(D(!1),G(B),j(T))),t!==!0&&(d=null)}function $(t){t===!0?m!==!0&&(S<1&&document.body.classList.add("q-body--dialog"),S++,m=!0):m===!0&&(S<2&&document.body.classList.remove("q-body--dialog"),S--,m=!1)}function fe(t){v!==!0&&(p(t),o("click",t))}function me(t){e.persistent!==!0&&e.noBackdropDismiss!==!0?p(t):e.noShake!==!0&&C()}function B(t){e.allowFocusOutside!==!0&&oe.value===!0&&Ce(u.value,t.target)!==!0&&q('[tabindex]:not([tabindex="-1"])')}Object.assign(l.proxy,{focus:q,shake:C,__updateRefocusTarget(t){d=t||null}}),U(L);function ve(){return g("div",{role:"dialog","aria-modal":x.value===!0?"true":"false",...a,class:re.value},[g(R,{name:"q-transition--fade",appear:!0},()=>x.value===!0?g("div",{class:"q-dialog__backdrop fixed-full",style:ne.value,"aria-hidden":"true",tabindex:-1,onClick:me}):null),g(R,te.value,()=>s.value===!0?g("div",{ref:u,class:se.value,style:Q.value,tabindex:-1,...ue.value},Be(n.default)):null)])}return ie}});export{ot as Q,Ke as a,Le as b,nt as c,Ge as d,We as e,G as f,tt as g,Ie as h,Qe as i,_ as p,j as r,Ae as u}; diff --git a/backend/internal/http/static/spa/assets/QInput-CEazYqyH.js b/backend/internal/http/static/spa/assets/QInput-CEazYqyH.js new file mode 100644 index 0000000..24bee89 --- /dev/null +++ b/backend/internal/http/static/spa/assets/QInput-CEazYqyH.js @@ -0,0 +1 @@ +import{u as le,a as ie,b as re,c as oe,f as X,d as ue,e as se,g as fe,h as ce}from"./use-key-composition-TTwP9QMZ.js";import{q as W,z as N,P as B,p as R,a1 as de,s as ge,A as me,Q as ve,x as he,y as Q,a2 as ke,J}from"./index-QUdrNkKl.js";const p={date:"####/##/##",datetime:"####/##/## ##:##",time:"##:##",fulltime:"##:##:##",phone:"(###) ### - ####",card:"#### #### #### ####"},{tokenMap:ee,tokenKeys:Me}=ne({"#":{pattern:"[\\d]",negate:"[^\\d]"},S:{pattern:"[a-zA-Z]",negate:"[^a-zA-Z]"},N:{pattern:"[0-9a-zA-Z]",negate:"[^0-9a-zA-Z]"},A:{pattern:"[a-zA-Z]",negate:"[^a-zA-Z]",transform:e=>e.toLocaleUpperCase()},a:{pattern:"[a-zA-Z]",negate:"[^a-zA-Z]",transform:e=>e.toLocaleLowerCase()},X:{pattern:"[0-9a-zA-Z]",negate:"[^0-9a-zA-Z]",transform:e=>e.toLocaleUpperCase()},x:{pattern:"[0-9a-zA-Z]",negate:"[^0-9a-zA-Z]",transform:e=>e.toLocaleLowerCase()}});function ne(e){const y=Object.keys(e),O={};return y.forEach(x=>{const f=e[x];O[x]={...f,regex:new RegExp(f.pattern)}}),{tokenMap:O,tokenKeys:y}}function ae(e){return new RegExp("\\\\([^.*+?^${}()|([\\]])|([.*+?^${}()|[\\]])|(["+e.join("")+"])|(.)","g")}const te=/[.*+?^${}()|[\]\\]/g,xe=ae(Me),v="",ye={mask:String,reverseFillMask:Boolean,fillMask:[Boolean,String],unmaskedValue:Boolean,maskTokens:Object};function we(e,y,O,x){let f,m,A,S,_,k;const T=R(()=>{if(e.maskTokens===void 0||e.maskTokens===null)return{tokenMap:ee,tokenRegexMask:xe};const{tokenMap:a}=ne(e.maskTokens),n={...ee,...a};return{tokenMap:n,tokenRegexMask:ae(Object.keys(n))}}),g=W(null),V=W(Z());function b(){return e.autogrow===!0||["textarea","text","search","url","tel","password"].includes(e.type)}N(()=>e.type+e.autogrow,j),N(()=>e.mask,a=>{if(a!==void 0)z(V.value,!0);else{const n=I(V.value);j(),e.modelValue!==n&&y("update:modelValue",n)}}),N(()=>e.fillMask+e.reverseFillMask,()=>{g.value===!0&&z(V.value,!0)}),N(()=>e.unmaskedValue,()=>{g.value===!0&&z(V.value)});function Z(){if(j(),g.value===!0){const a=E(I(e.modelValue));return e.fillMask!==!1?H(a):a}return e.modelValue}function q(a){if(a0;o--)n+=v;i=i.slice(0,l)+n+i.slice(l)}return i}function j(){if(g.value=e.mask!==void 0&&e.mask.length!==0&&b(),g.value===!1){S=void 0,f="",m="";return}const a=p[e.mask]===void 0?e.mask:p[e.mask],n=typeof e.fillMask=="string"&&e.fillMask.length!==0?e.fillMask.slice(0,1):"_",i=n.replace(te,"\\$&"),l=[],o=[],u=[];let h=e.reverseFillMask===!0,r="",s="";a.replace(T.value.tokenRegexMask,(t,c,C,F,L)=>{if(F!==void 0){const M=T.value.tokenMap[F];u.push(M),s=M.negate,h===!0&&(o.push("(?:"+s+"+)?("+M.pattern+"+)?(?:"+s+"+)?("+M.pattern+"+)?"),h=!1),o.push("(?:"+s+"+)?("+M.pattern+")?")}else if(C!==void 0)r="\\"+(C==="\\"?"":C),u.push(C),l.push("([^"+r+"]+)?"+r+"?");else{const M=c!==void 0?c:L;r=M==="\\"?"\\\\\\\\":M.replace(te,"\\\\$&"),u.push(M),l.push("([^"+r+"]+)?"+r+"?")}});const P=new RegExp("^"+l.join("")+"("+(r===""?".":"[^"+r+"]")+"+)?"+(r===""?"":"["+r+"]*")+"$"),K=o.length-1,d=o.map((t,c)=>c===0&&e.reverseFillMask===!0?new RegExp("^"+i+"*"+t):c===K?new RegExp("^"+t+"("+(s===""?".":s)+"+)?"+(e.reverseFillMask===!0?"$":i+"*")):new RegExp("^"+t));A=u,S=t=>{const c=P.exec(e.reverseFillMask===!0?t:t.slice(0,u.length+1));c!==null&&(t=c.slice(1).join(""));const C=[],F=d.length;for(let L=0,M=t;Ltypeof t=="string"?t:v).join(""),m=f.split(v).join(n)}function z(a,n,i){const l=x.value,o=l.selectionEnd,u=l.value.length-o,h=I(a);n===!0&&j();const r=E(h,n),s=e.fillMask!==!1?H(r):r,P=V.value!==s;l.value!==s&&(l.value=s),P===!0&&(V.value=s),document.activeElement===l&&B(()=>{if(s===m){const d=e.reverseFillMask===!0?m.length:0;l.setSelectionRange(d,d,"forward");return}if(i==="insertFromPaste"&&e.reverseFillMask!==!0){const d=l.selectionEnd;let t=o-1;for(let c=_;c<=t&&cr.length?1:0:Math.max(0,s.length-(s===m?0:Math.min(r.length,u)+1))+1:o;l.setSelectionRange(d,d,"forward");return}if(e.reverseFillMask===!0)if(P===!0){const d=Math.max(0,s.length-(s===m?0:Math.min(r.length,u+1)));d===1&&o===1?l.setSelectionRange(d,d,"forward"):w.rightReverse(l,d)}else{const d=s.length-u;l.setSelectionRange(d,d,"backward")}else if(P===!0){const d=Math.max(0,f.indexOf(v),Math.min(r.length,o)-1);w.right(l,d)}else{const d=o-1;w.right(l,d)}});const K=e.unmaskedValue===!0?I(s):s;String(e.modelValue)!==K&&(e.modelValue!==null||K!=="")&&O(K,!0)}function Y(a,n,i){const l=E(I(a.value));n=Math.max(0,f.indexOf(v),Math.min(l.length,n)),_=n,a.setSelectionRange(n,i,"forward")}const w={left(a,n){const i=f.slice(n-1).indexOf(v)===-1;let l=Math.max(0,n-1);for(;l>=0;l--)if(f[l]===v){n=l,i===!0&&n++;break}if(l<0&&f[n]!==void 0&&f[n]!==v)return w.right(a,0);n>=0&&a.setSelectionRange(n,n,"backward")},right(a,n){const i=a.value.length;let l=Math.min(i,n+1);for(;l<=i;l++)if(f[l]===v){n=l;break}else f[l-1]===v&&(n=l);if(l>i&&f[n-1]!==void 0&&f[n-1]!==v)return w.left(a,i);a.setSelectionRange(n,n,"forward")},leftReverse(a,n){const i=q(a.value.length);let l=Math.max(0,n-1);for(;l>=0;l--)if(i[l-1]===v){n=l;break}else if(i[l]===v&&(n=l,l===0))break;if(l<0&&i[n]!==void 0&&i[n]!==v)return w.rightReverse(a,0);n>=0&&a.setSelectionRange(n,n,"backward")},rightReverse(a,n){const i=a.value.length,l=q(i),o=l.slice(0,n+1).indexOf(v)===-1;let u=Math.min(i,n+1);for(;u<=i;u++)if(l[u-1]===v){n=u,n>0&&o===!0&&n--;break}if(u>i&&l[n-1]!==void 0&&l[n-1]!==v)return w.leftReverse(a,i);a.setSelectionRange(n,n,"forward")}};function U(a){y("click",a),k=void 0}function $(a){if(y("keydown",a),de(a)===!0||a.altKey===!0)return;const n=x.value,i=n.selectionStart,l=n.selectionEnd;if(a.shiftKey||(k=void 0),a.keyCode===37||a.keyCode===39){a.shiftKey&&k===void 0&&(k=n.selectionDirection==="forward"?i:l);const o=w[(a.keyCode===39?"right":"left")+(e.reverseFillMask===!0?"Reverse":"")];if(a.preventDefault(),o(n,k===i?l:i),a.shiftKey){const u=n.selectionStart;n.setSelectionRange(Math.min(k,u),Math.max(k,u),"forward")}}else a.keyCode===8&&e.reverseFillMask!==!0&&i===l?(w.left(n,i),n.setSelectionRange(n.selectionStart,l,"backward")):a.keyCode===46&&e.reverseFillMask===!0&&i===l&&(w.rightReverse(n,l),n.setSelectionRange(i,n.selectionEnd,"forward"))}function E(a,n){if(a==null||a==="")return"";if(e.reverseFillMask===!0)return D(a,n);const i=A;let l=0,o="";for(let u=0;u=0&&o!==-1;h--){const r=i[h];let s=a[o];if(typeof r=="string")u=r+u,n===!0&&s===r&&o--;else if(s!==void 0&&r.regex.test(s))do u=(r.transform!==void 0?r.transform(s):s)+u,o--,s=a[o];while(l===h&&s!==void 0&&r.regex.test(s));else return u}return u}function I(a){return typeof a!="string"||S===void 0?typeof a=="number"?S(""+a):a:S(a)}function H(a){return m.length-a.length<=0?a:e.reverseFillMask===!0&&a.length!==0?m.slice(0,-a.length)+a:a+m.slice(a.length)}return{innerValue:V,hasMask:g,moveCursorForPaste:Y,updateMaskValue:z,onMaskedKeydown:$,onMaskedClick:U}}function Ce(e,y){function O(){const x=e.modelValue;try{const f="DataTransfer"in window?new DataTransfer:"ClipboardEvent"in window?new ClipboardEvent("").clipboardData:void 0;return Object(x)===x&&("length"in x?Array.from(x):[x]).forEach(m=>{f.items.add(m)}),{files:f.files}}catch{return{files:void 0}}}return R(()=>{if(e.type==="file")return O()})}const Ee=ge({name:"QInput",inheritAttrs:!1,props:{...re,...ye,...ie,modelValue:[String,Number,FileList],shadowText:String,type:{type:String,default:"text"},debounce:[String,Number],autogrow:Boolean,inputClass:[Array,String,Object],inputStyle:[Array,String,Object]},emits:[...le,"paste","change","keydown","click","animationend"],setup(e,{emit:y,attrs:O}){const{proxy:x}=me(),{$q:f}=x,m={};let A=NaN,S,_,k=null,T;const g=W(null),V=ce(e),{innerValue:b,hasMask:Z,moveCursorForPaste:q,updateMaskValue:j,onMaskedKeydown:z,onMaskedClick:Y}=we(e,y,h,g),w=Ce(e),U=R(()=>X(b.value)),$=fe(o),E=oe({changeEvent:!0}),D=R(()=>e.type==="textarea"||e.autogrow===!0),I=R(()=>D.value===!0||["text","search","url","tel","password"].includes(e.type)),H=R(()=>{const t={...E.splitAttrs.listeners.value,onInput:o,onPaste:l,onChange:s,onBlur:P,onFocus:J};return t.onCompositionstart=t.onCompositionupdate=t.onCompositionend=$,Z.value===!0&&(t.onKeydown=z,t.onClick=Y),e.autogrow===!0&&(t.onAnimationend=u),t}),a=R(()=>{const t={tabindex:0,"data-autofocus":e.autofocus===!0||void 0,rows:e.type==="textarea"?6:void 0,"aria-label":e.label,name:V.value,...E.splitAttrs.attributes.value,id:E.targetUid.value,maxlength:e.maxlength,disabled:e.disable===!0,readonly:e.readonly===!0};return D.value===!1&&(t.type=e.type),e.autogrow===!0&&(t.rows=1),t});N(()=>e.type,()=>{g.value&&(g.value.value=e.modelValue)}),N(()=>e.modelValue,t=>{if(Z.value===!0){if(_===!0&&(_=!1,String(t)===A))return;j(t)}else b.value!==t&&(b.value=t,e.type==="number"&&m.hasOwnProperty("value")===!0&&(S===!0?S=!1:delete m.value));e.autogrow===!0&&B(r)}),N(()=>e.autogrow,t=>{t===!0?B(r):g.value!==null&&O.rows>0&&(g.value.style.height="auto")}),N(()=>e.dense,()=>{e.autogrow===!0&&B(r)});function n(){se(()=>{const t=document.activeElement;g.value!==null&&g.value!==t&&(t===null||t.id!==E.targetUid.value)&&g.value.focus({preventScroll:!0})})}function i(){g.value?.select()}function l(t){if(Z.value===!0&&e.reverseFillMask!==!0){const c=t.target;q(c,c.selectionStart,c.selectionEnd)}y("paste",t)}function o(t){if(!t||!t.target)return;if(e.type==="file"){y("update:modelValue",t.target.files);return}const c=t.target.value;if(t.target.qComposing===!0){m.value=c;return}if(Z.value===!0)j(c,!1,t.inputType);else if(h(c),I.value===!0&&t.target===document.activeElement){const{selectionStart:C,selectionEnd:F}=t.target;C!==void 0&&F!==void 0&&B(()=>{t.target===document.activeElement&&c.indexOf(t.target.value)===0&&t.target.setSelectionRange(C,F)})}e.autogrow===!0&&r()}function u(t){y("animationend",t),r()}function h(t,c){T=()=>{k=null,e.type!=="number"&&m.hasOwnProperty("value")===!0&&delete m.value,e.modelValue!==t&&A!==t&&(A=t,c===!0&&(_=!0),y("update:modelValue",t),B(()=>{A===t&&(A=NaN)})),T=void 0},e.type==="number"&&(S=!0,m.value=t),e.debounce!==void 0?(k!==null&&clearTimeout(k),m.value=t,k=setTimeout(T,e.debounce)):T()}function r(){requestAnimationFrame(()=>{const t=g.value;if(t!==null){const c=t.parentNode.style,{scrollTop:C}=t,{overflowY:F,maxHeight:L}=f.platform.is.firefox===!0?{}:window.getComputedStyle(t),M=F!==void 0&&F!=="scroll";M===!0&&(t.style.overflowY="hidden"),c.marginBottom=t.scrollHeight-1+"px",t.style.height="1px",t.style.height=t.scrollHeight+"px",M===!0&&(t.style.overflowY=parseInt(L,10){g.value!==null&&(g.value.value=b.value!==void 0?b.value:"")})}function K(){return m.hasOwnProperty("value")===!0?m.value:b.value!==void 0?b.value:""}ve(()=>{P()}),he(()=>{e.autogrow===!0&&r()}),Object.assign(E,{innerValue:b,fieldClass:R(()=>`q-${D.value===!0?"textarea":"input"}`+(e.autogrow===!0?" q-textarea--autogrow":"")),hasShadow:R(()=>e.type!=="file"&&typeof e.shadowText=="string"&&e.shadowText.length!==0),inputRef:g,emitValue:h,hasValue:U,floatingLabel:R(()=>U.value===!0&&(e.type!=="number"||isNaN(b.value)===!1)||X(e.displayValue)),getControl:()=>Q(D.value===!0?"textarea":"input",{ref:g,class:["q-field__native q-placeholder",e.inputClass],style:e.inputStyle,...a.value,...H.value,...e.type!=="file"?{value:K()}:w.value}),getShadowControl:()=>Q("div",{class:"q-field__native q-field__shadow absolute-bottom no-pointer-events"+(D.value===!0?"":" text-no-wrap")},[Q("span",{class:"invisible"},K()),Q("span",e.shadowText)])});const d=ue(E);return Object.assign(x,{focus:n,select:i,getNativeElement:()=>g.value}),ke(x,"nativeEl",()=>g.value),d}});export{Ee as Q}; diff --git a/backend/internal/http/static/spa/assets/QItem-F5bzVaJB.js b/backend/internal/http/static/spa/assets/QItem-F5bzVaJB.js new file mode 100644 index 0000000..9acb06f --- /dev/null +++ b/backend/internal/http/static/spa/assets/QItem-F5bzVaJB.js @@ -0,0 +1 @@ +import{s as v,y as r,p as a,A as w,q as f,_ as I,L as E}from"./index-QUdrNkKl.js";import{h as q,c as Q}from"./render-B4qP-w0Q.js";import{u as S,a as A}from"./use-dark-BRt0_t6X.js";import{g as K,h as R}from"./QBtn-AYMizH8c.js";const N=v({name:"QItemSection",props:{avatar:Boolean,thumbnail:Boolean,side:Boolean,top:Boolean,noWrap:Boolean},setup(e,{slots:n}){const l=a(()=>`q-item__section column q-item__section--${e.avatar===!0||e.side===!0||e.thumbnail===!0?"side":"main"}`+(e.top===!0?" q-item__section--top justify-start":" justify-center")+(e.avatar===!0?" q-item__section--avatar":"")+(e.thumbnail===!0?" q-item__section--thumbnail":"")+(e.noWrap===!0?" q-item__section--nowrap":""));return()=>r("div",{class:l.value},q(n.default))}}),P=v({name:"QItemLabel",props:{overline:Boolean,caption:Boolean,header:Boolean,lines:[Number,String]},setup(e,{slots:n}){const l=a(()=>parseInt(e.lines,10)),u=a(()=>"q-item__label"+(e.overline===!0?" q-item__label--overline text-overline":"")+(e.caption===!0?" q-item__label--caption text-caption":"")+(e.header===!0?" q-item__label--header":"")+(l.value===1?" ellipsis":"")),c=a(()=>e.lines!==void 0&&l.value>1?{overflow:"hidden",display:"-webkit-box","-webkit-box-orient":"vertical","-webkit-line-clamp":l.value}:null);return()=>r("div",{style:c.value,class:u.value},q(n.default))}}),O=v({name:"QItem",props:{...S,...K,tag:{type:String,default:"div"},active:{type:Boolean,default:null},clickable:Boolean,dense:Boolean,insetLevel:Number,tabindex:[String,Number],focused:Boolean,manualFocus:Boolean},emits:["click","keyup"],setup(e,{slots:n,emit:l}){const{proxy:{$q:u}}=w(),c=A(e,u),{hasLink:m,linkAttrs:k,linkClass:_,linkTag:h,navigateOnClick:y}=R(),s=f(null),o=f(null),d=a(()=>e.clickable===!0||m.value===!0||e.tag==="label"),i=a(()=>e.disable!==!0&&d.value===!0),g=a(()=>"q-item q-item-type row no-wrap"+(e.dense===!0?" q-item--dense":"")+(c.value===!0?" q-item--dark":"")+(m.value===!0&&e.active===null?_.value:e.active===!0?` q-item--active${e.activeClass!==void 0?` ${e.activeClass}`:""}`:"")+(e.disable===!0?" disabled":"")+(i.value===!0?" q-item--clickable q-link cursor-pointer "+(e.manualFocus===!0?"q-manual-focusable":"q-focusable q-hoverable")+(e.focused===!0?" q-manual-focusable--focused":""):"")),B=a(()=>e.insetLevel===void 0?null:{["padding"+(u.lang.rtl===!0?"Right":"Left")]:16+e.insetLevel*56+"px"});function x(t){i.value===!0&&(o.value!==null&&t.qAvoidFocus!==!0&&(t.qKeyEvent!==!0&&document.activeElement===s.value?o.value.focus():document.activeElement===o.value&&s.value.focus()),y(t))}function L(t){if(i.value===!0&&I(t,[13,32])===!0){E(t),t.qKeyEvent=!0;const b=new MouseEvent("click",t);b.qKeyEvent=!0,s.value.dispatchEvent(b)}l("keyup",t)}function C(){const t=Q(n.default,[]);return i.value===!0&&t.unshift(r("div",{class:"q-focus-helper",tabindex:-1,ref:o})),t}return()=>{const t={ref:s,class:g.value,style:B.value,role:"listitem",onClick:x,onKeyup:L};return i.value===!0?(t.tabindex=e.tabindex||"0",Object.assign(t,k.value)):d.value===!0&&(t["aria-disabled"]="true"),r(h.value,t,C())}}});export{O as Q,N as a,P as b}; diff --git a/backend/internal/http/static/spa/assets/QLayout-DIjK04DF.js b/backend/internal/http/static/spa/assets/QLayout-DIjK04DF.js new file mode 100644 index 0000000..42b4806 --- /dev/null +++ b/backend/internal/http/static/spa/assets/QLayout-DIjK04DF.js @@ -0,0 +1 @@ +import{s as q,y as v,p as d,q as w,v as D,x as P,A as Q,Q as C,F as U,P as k,S as B,M as A,N as $,O as N,z as T,U as I,V as X,W as G,X as H}from"./index-QUdrNkKl.js";import{h as W,c as J,d as Y}from"./render-B4qP-w0Q.js";import{s as Z,g as ee,e as te,f as oe,h as E}from"./use-prevent-scroll-eZQDeoK_.js";const ue=q({name:"QToolbarTitle",props:{shrink:Boolean},setup(e,{slots:h}){const o=d(()=>"q-toolbar__title ellipsis"+(e.shrink===!0?" col-shrink":""));return()=>v("div",{class:o.value},W(h.default))}}),ce=q({name:"QToolbar",props:{inset:Boolean},setup(e,{slots:h}){const o=d(()=>"q-toolbar row no-wrap items-center"+(e.inset===!0?" q-toolbar--inset":""));return()=>v("div",{class:o.value,role:"toolbar"},W(h.default))}});function ne(){const e=w(!D.value);return e.value===!1&&P(()=>{e.value=!0}),{isHydrated:e}}const K=typeof ResizeObserver<"u",M=K===!0?{}:{style:"display:block;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;",url:"about:blank"},F=q({name:"QResizeObserver",props:{debounce:{type:[String,Number],default:100}},emits:["resize"],setup(e,{emit:h}){let o=null,t,i={width:-1,height:-1};function s(r){r===!0||e.debounce===0||e.debounce==="0"?u():o===null&&(o=setTimeout(u,e.debounce))}function u(){if(o!==null&&(clearTimeout(o),o=null),t){const{offsetWidth:r,offsetHeight:l}=t;(r!==i.width||l!==i.height)&&(i={width:r,height:l},h("resize",i))}}const{proxy:g}=Q();if(g.trigger=s,K===!0){let r;const l=b=>{t=g.$el.parentNode,t?(r=new ResizeObserver(s),r.observe(t),u()):b!==!0&&k(()=>{l(!0)})};return P(()=>{l()}),C(()=>{o!==null&&clearTimeout(o),r!==void 0&&(r.disconnect!==void 0?r.disconnect():t&&r.unobserve(t))}),U}else{let r=function(){o!==null&&(clearTimeout(o),o=null),f!==void 0&&(f.removeEventListener!==void 0&&f.removeEventListener("resize",s,B.passive),f=void 0)},l=function(){r(),t?.contentDocument&&(f=t.contentDocument.defaultView,f.addEventListener("resize",s,B.passive),u())};const{isHydrated:b}=ne();let f;return P(()=>{k(()=>{t=g.$el,t&&l()})}),C(r),()=>{if(b.value===!0)return v("object",{class:"q--avoid-card-border",style:M.style,tabindex:-1,type:"text/html",data:M.url,"aria-hidden":"true",onLoad:l})}}}}),de=q({name:"QHeader",props:{modelValue:{type:Boolean,default:!0},reveal:Boolean,revealOffset:{type:Number,default:250},bordered:Boolean,elevated:Boolean,heightHint:{type:[String,Number],default:50}},emits:["reveal","focusin"],setup(e,{slots:h,emit:o}){const{proxy:{$q:t}}=Q(),i=A(N,$);if(i===$)return console.error("QHeader needs to be child of QLayout"),$;const s=w(parseInt(e.heightHint,10)),u=w(!0),g=d(()=>e.reveal===!0||i.view.value.indexOf("H")!==-1||t.platform.is.ios&&i.isContainer.value===!0),r=d(()=>{if(e.modelValue!==!0)return 0;if(g.value===!0)return u.value===!0?s.value:0;const n=s.value-i.scroll.value.position;return n>0?n:0}),l=d(()=>e.modelValue!==!0||g.value===!0&&u.value!==!0),b=d(()=>e.modelValue===!0&&l.value===!0&&e.reveal===!0),f=d(()=>"q-header q-layout__section--marginal "+(g.value===!0?"fixed":"absolute")+"-top"+(e.bordered===!0?" q-header--bordered":"")+(l.value===!0?" q-header--hidden":"")+(e.modelValue!==!0?" q-layout--prevent-focus":"")),S=d(()=>{const n=i.rows.value.top,y={};return n[0]==="l"&&i.left.space===!0&&(y[t.lang.rtl===!0?"right":"left"]=`${i.left.size}px`),n[2]==="r"&&i.right.space===!0&&(y[t.lang.rtl===!0?"left":"right"]=`${i.right.size}px`),y});function c(n,y){i.update("header",n,y)}function p(n,y){n.value!==y&&(n.value=y)}function R({height:n}){p(s,n),c("size",n)}function O(n){b.value===!0&&p(u,!0),o("focusin",n)}T(()=>e.modelValue,n=>{c("space",n),p(u,!0),i.animate()}),T(r,n=>{c("offset",n)}),T(()=>e.reveal,n=>{n===!1&&p(u,e.modelValue)}),T(u,n=>{i.animate(),o("reveal",n)}),T(i.scroll,n=>{e.reveal===!0&&p(u,n.direction==="up"||n.position<=e.revealOffset||n.position-n.inflectionPoint<100)});const L={};return i.instances.header=L,e.modelValue===!0&&c("size",s.value),c("space",e.modelValue),c("offset",r.value),C(()=>{i.instances.header===L&&(i.instances.header=void 0,c("size",0),c("offset",0),c("space",!1))}),()=>{const n=J(h.default,[]);return e.elevated===!0&&n.push(v("div",{class:"q-layout__shadow absolute-full overflow-hidden no-pointer-events"})),n.push(v(F,{debounce:0,onResize:R})),v("header",{class:f.value,style:S.value,onFocusin:O},n)}}}),fe=q({name:"QPageContainer",setup(e,{slots:h}){const{proxy:{$q:o}}=Q(),t=A(N,$);if(t===$)return console.error("QPageContainer needs to be child of QLayout"),$;I(X,!0);const i=d(()=>{const s={};return t.header.space===!0&&(s.paddingTop=`${t.header.size}px`),t.right.space===!0&&(s[`padding${o.lang.rtl===!0?"Left":"Right"}`]=`${t.right.size}px`),t.footer.space===!0&&(s.paddingBottom=`${t.footer.size}px`),t.left.space===!0&&(s[`padding${o.lang.rtl===!0?"Right":"Left"}`]=`${t.left.size}px`),s});return()=>v("div",{class:"q-page-container",style:i.value},W(h.default))}}),{passive:j}=B,ie=["both","horizontal","vertical"],le=q({name:"QScrollObserver",props:{axis:{type:String,validator:e=>ie.includes(e),default:"vertical"},debounce:[String,Number],scrollTarget:Z},emits:["scroll"],setup(e,{emit:h}){const o={position:{top:0,left:0},direction:"down",directionChanged:!1,delta:{top:0,left:0},inflectionPoint:{top:0,left:0}};let t=null,i,s;T(()=>e.scrollTarget,()=>{r(),g()});function u(){t?.();const f=Math.max(0,te(i)),S=oe(i),c={top:f-o.position.top,left:S-o.position.left};if(e.axis==="vertical"&&c.top===0||e.axis==="horizontal"&&c.left===0)return;const p=Math.abs(c.top)>=Math.abs(c.left)?c.top<0?"up":"down":c.left<0?"left":"right";o.position={top:f,left:S},o.directionChanged=o.direction!==p,o.delta=c,o.directionChanged===!0&&(o.direction=p,o.inflectionPoint=o.position),h("scroll",{...o})}function g(){i=ee(s,e.scrollTarget),i.addEventListener("scroll",l,j),l(!0)}function r(){i!==void 0&&(i.removeEventListener("scroll",l,j),i=void 0)}function l(f){if(f===!0||e.debounce===0||e.debounce==="0")u();else if(t===null){const[S,c]=e.debounce?[setTimeout(u,e.debounce),clearTimeout]:[requestAnimationFrame(u),cancelAnimationFrame];t=()=>{c(S),t=null}}}const{proxy:b}=Q();return T(()=>b.$q.lang.rtl,u),P(()=>{s=b.$el.parentNode,g()}),C(()=>{t?.(),r()}),Object.assign(b,{trigger:l,getPosition:()=>o}),U}}),ve=q({name:"QLayout",props:{container:Boolean,view:{type:String,default:"hhh lpr fff",validator:e=>/^(h|l)h(h|r) lpr (f|l)f(f|r)$/.test(e.toLowerCase())},onScroll:Function,onScrollHeight:Function,onResize:Function},setup(e,{slots:h,emit:o}){const{proxy:{$q:t}}=Q(),i=w(null),s=w(t.screen.height),u=w(e.container===!0?0:t.screen.width),g=w({position:0,direction:"down",inflectionPoint:0}),r=w(0),l=w(D.value===!0?0:E()),b=d(()=>"q-layout q-layout--"+(e.container===!0?"containerized":"standard")),f=d(()=>e.container===!1?{minHeight:t.screen.height+"px"}:null),S=d(()=>l.value!==0?{[t.lang.rtl===!0?"left":"right"]:`${l.value}px`}:null),c=d(()=>l.value!==0?{[t.lang.rtl===!0?"right":"left"]:0,[t.lang.rtl===!0?"left":"right"]:`-${l.value}px`,width:`calc(100% + ${l.value}px)`}:null);function p(a){if(e.container===!0||document.qScrollPrevented!==!0){const m={position:a.position.top,direction:a.direction,directionChanged:a.directionChanged,inflectionPoint:a.inflectionPoint.top,delta:a.delta.top};g.value=m,e.onScroll!==void 0&&o("scroll",m)}}function R(a){const{height:m,width:x}=a;let z=!1;s.value!==m&&(z=!0,s.value=m,e.onScrollHeight!==void 0&&o("scrollHeight",m),L()),u.value!==x&&(z=!0,u.value=x),z===!0&&e.onResize!==void 0&&o("resize",a)}function O({height:a}){r.value!==a&&(r.value=a,L())}function L(){if(e.container===!0){const a=s.value>r.value?E():0;l.value!==a&&(l.value=a)}}let n=null;const y={instances:{},view:d(()=>e.view),isContainer:d(()=>e.container),rootRef:i,height:s,containerHeight:r,scrollbarWidth:l,totalWidth:d(()=>u.value+l.value),rows:d(()=>{const a=e.view.toLowerCase().split(" ");return{top:a[0].split(""),middle:a[1].split(""),bottom:a[2].split("")}}),header:H({size:0,offset:0,space:!1}),right:H({size:300,offset:0,space:!1}),footer:H({size:0,offset:0,space:!1}),left:H({size:300,offset:0,space:!1}),scroll:g,animate(){n!==null?clearTimeout(n):document.body.classList.add("q-body--layout-animate"),n=setTimeout(()=>{n=null,document.body.classList.remove("q-body--layout-animate")},155)},update(a,m,x){y[a][m]=x}};if(I(N,y),E()>0){let a=function(){z=null,V.classList.remove("hide-scrollbar")},m=function(){if(z===null){if(V.scrollHeight>t.screen.height)return;V.classList.add("hide-scrollbar")}else clearTimeout(z);z=setTimeout(a,300)},x=function(_){z!==null&&_==="remove"&&(clearTimeout(z),a()),window[`${_}EventListener`]("resize",m)},z=null;const V=document.body;T(()=>e.container!==!0?"add":"remove",x),e.container!==!0&&x("add"),G(()=>{x("remove")})}return()=>{const a=Y(h.default,[v(le,{onScroll:p}),v(F,{onResize:R})]),m=v("div",{class:b.value,style:f.value,ref:e.container===!0?void 0:i,tabindex:-1},a);return e.container===!0?v("div",{class:"q-layout-container overflow-hidden",ref:i},[v(F,{onResize:O}),v("div",{class:"absolute-full",style:S.value},[v("div",{class:"scroll",style:c.value},[m])])]):m}}});export{de as Q,ce as a,ue as b,fe as c,ve as d}; diff --git a/backend/internal/http/static/spa/assets/QPage-gf8hzrox.js b/backend/internal/http/static/spa/assets/QPage-gf8hzrox.js new file mode 100644 index 0000000..0a41458 --- /dev/null +++ b/backend/internal/http/static/spa/assets/QPage-gf8hzrox.js @@ -0,0 +1 @@ +import{s as p,A as g,M as r,N as t,O as h,V as d,y,p as s}from"./index-QUdrNkKl.js";import{h as f}from"./render-B4qP-w0Q.js";const Q=p({name:"QPage",props:{padding:Boolean,styleFn:Function},setup(a,{slots:i}){const{proxy:{$q:o}}=g(),e=r(h,t);if(e===t)return console.error("QPage needs to be a deep child of QLayout"),t;if(r(d,t)===t)return console.error("QPage needs to be child of QPageContainer"),t;const c=s(()=>{const n=(e.header.space===!0?e.header.size:0)+(e.footer.space===!0?e.footer.size:0);if(typeof a.styleFn=="function"){const l=e.isContainer.value===!0?e.containerHeight.value:o.screen.height;return a.styleFn(n,l)}return{minHeight:e.isContainer.value===!0?e.containerHeight.value-n+"px":o.screen.height===0?n!==0?`calc(100vh - ${n}px)`:"100vh":o.screen.height-n+"px"}}),u=s(()=>`q-page${a.padding===!0?" q-layout-padding":""}`);return()=>y("main",{class:u.value,style:c.value},f(i.default))}});export{Q}; diff --git a/backend/internal/http/static/spa/assets/QSelect-QjDUAbKc.js b/backend/internal/http/static/spa/assets/QSelect-QjDUAbKc.js new file mode 100644 index 0000000..68b967b --- /dev/null +++ b/backend/internal/http/static/spa/assets/QSelect-QjDUAbKc.js @@ -0,0 +1 @@ +import{u as Mt,b as et,d as Tt,c as zt,e as Zt,a as el,f as ht,h as tl,g as ll}from"./use-key-composition-TTwP9QMZ.js";import{s as $e,A as He,p as x,y as A,L as ae,I as ze,G as gt,P as oe,_ as Ht,z as Y,x as nl,Q as Be,q as O,C as ol,S as Je,D as ul,H as il,T as al,a4 as rl,a5 as sl,a6 as cl,a7 as dl,F as fl,a8 as Me,a9 as vl,aa as ml,J as pe,a1 as hl}from"./index-QUdrNkKl.js";import{u as gl,c as Sl,b as _e,R as yl,f as bl}from"./QBtn-AYMizH8c.js";import{u as Bt,a as Ft}from"./use-dark-BRt0_t6X.js";import{b as wl,a as xl,h as Cl,d as pl}from"./render-B4qP-w0Q.js";import{a as Vl,b as kl,Q as ql}from"./QItem-F5bzVaJB.js";import{c as Al,n as St}from"./format-GjIIeqP4.js";import{h as El,u as Ml,s as Tl,a as zl,b as Hl,g as Bl}from"./use-prevent-scroll-eZQDeoK_.js";import{p as yt,u as Fl,a as Il,b as Ol,d as Ll,r as bt,e as Rl,f as _l,h as Pl,i as Dl,Q as Wl}from"./QDialog-BcbjPBVh.js";import{u as $l}from"./use-timeout-Jkrq6Sig.js";const Kl=$e({name:"QField",inheritAttrs:!1,props:{...et,tag:{type:String,default:"label"}},emits:Mt,setup(){return Tt(zt({tagProp:!0}))}}),jl={xs:8,sm:10,md:14,lg:20,xl:24},Nl=$e({name:"QChip",props:{...Bt,...gl,dense:Boolean,icon:String,iconRight:String,iconRemove:String,iconSelected:String,label:[String,Number],color:String,textColor:String,modelValue:{type:Boolean,default:!0},selected:{type:Boolean,default:null},square:Boolean,outline:Boolean,clickable:Boolean,removable:Boolean,removeAriaLabel:String,tabindex:[String,Number],disable:Boolean,ripple:{type:[Boolean,Object],default:!0}},emits:["update:modelValue","update:selected","remove","click"],setup(e,{slots:l,emit:o}){const{proxy:{$q:u}}=He(),v=Ft(e,u),i=Sl(e,jl),m=x(()=>e.selected===!0||e.icon!==void 0),h=x(()=>e.selected===!0?e.iconSelected||u.iconSet.chip.selected:e.icon),g=x(()=>e.iconRemove||u.iconSet.chip.remove),y=x(()=>e.disable===!1&&(e.clickable===!0||e.selected!==null)),s=x(()=>{const b=e.outline===!0&&e.color||e.textColor;return"q-chip row inline no-wrap items-center"+(e.outline===!1&&e.color!==void 0?` bg-${e.color}`:"")+(b?` text-${b} q-chip--colored`:"")+(e.disable===!0?" disabled":"")+(e.dense===!0?" q-chip--dense":"")+(e.outline===!0?" q-chip--outline":"")+(e.selected===!0?" q-chip--selected":"")+(y.value===!0?" q-chip--clickable cursor-pointer non-selectable q-hoverable":"")+(e.square===!0?" q-chip--square":"")+(v.value===!0?" q-chip--dark q-dark":"")}),w=x(()=>{const b=e.disable===!0?{tabindex:-1,"aria-disabled":"true"}:{tabindex:e.tabindex||0},D={...b,role:"button","aria-hidden":"false","aria-label":e.removeAriaLabel||u.lang.label.remove};return{chip:b,remove:D}});function C(b){b.keyCode===13&&a(b)}function a(b){e.disable||(o("update:selected",!e.selected),o("click",b))}function S(b){(b.keyCode===void 0||b.keyCode===13)&&(ae(b),e.disable===!1&&(o("update:modelValue",!1),o("remove")))}function P(){const b=[];y.value===!0&&b.push(A("div",{class:"q-focus-helper"})),m.value===!0&&b.push(A(_e,{class:"q-chip__icon q-chip__icon--left",name:h.value}));const D=e.label!==void 0?[A("div",{class:"ellipsis"},[e.label])]:void 0;return b.push(A("div",{class:"q-chip__content col row no-wrap items-center q-anchor--skip"},xl(l.default,D))),e.iconRight&&b.push(A(_e,{class:"q-chip__icon q-chip__icon--right",name:e.iconRight})),e.removable===!0&&b.push(A(_e,{class:"q-chip__icon q-chip__icon--remove cursor-pointer",name:g.value,...w.value.remove,onClick:S,onKeyup:S})),b}return()=>{if(e.modelValue===!1)return;const b={class:s.value,style:i.value};return y.value===!0&&Object.assign(b,w.value.chip,{onClick:a,onKeyup:C}),wl("div",b,P(),"ripple",e.ripple!==!1&&e.disable!==!0,()=>[[yl,e.ripple]])}}}),Ql={target:{type:[Boolean,String,Element],default:!0},noParentEvent:Boolean},Ul={...Ql,contextMenu:Boolean};function Xl({showing:e,avoidEmit:l,configureAnchorEl:o}){const{props:u,proxy:v,emit:i}=He(),m=O(null);let h=null;function g(a){return m.value===null?!1:a===void 0||a.touches===void 0||a.touches.length<=1}const y={};o===void 0&&(Object.assign(y,{hide(a){v.hide(a)},toggle(a){v.toggle(a),a.qAnchorHandled=!0},toggleKey(a){Ht(a,13)===!0&&y.toggle(a)},contextClick(a){v.hide(a),ze(a),oe(()=>{v.show(a),a.qAnchorHandled=!0})},prevent:ze,mobileTouch(a){if(y.mobileCleanup(a),g(a)!==!0)return;v.hide(a),m.value.classList.add("non-selectable");const S=a.target;gt(y,"anchor",[[S,"touchmove","mobileCleanup","passive"],[S,"touchend","mobileCleanup","passive"],[S,"touchcancel","mobileCleanup","passive"],[m.value,"contextmenu","prevent","notPassive"]]),h=setTimeout(()=>{h=null,v.show(a),a.qAnchorHandled=!0},300)},mobileCleanup(a){m.value.classList.remove("non-selectable"),h!==null&&(clearTimeout(h),h=null),e.value===!0&&a!==void 0&&Al()}}),o=function(a=u.contextMenu){if(u.noParentEvent===!0||m.value===null)return;let S;a===!0?v.$q.platform.is.mobile===!0?S=[[m.value,"touchstart","mobileTouch","passive"]]:S=[[m.value,"mousedown","hide","passive"],[m.value,"contextmenu","contextClick","notPassive"]]:S=[[m.value,"click","toggle","passive"],[m.value,"keyup","toggleKey","passive"]],gt(y,"anchor",S)});function s(){ol(y,"anchor")}function w(a){for(m.value=a;m.value.classList.contains("q-anchor--skip");)m.value=m.value.parentNode;o()}function C(){if(u.target===!1||u.target===""||v.$el.parentNode===null)m.value=null;else if(u.target===!0)w(v.$el.parentNode);else{let a=u.target;if(typeof u.target=="string")try{a=document.querySelector(u.target)}catch{a=void 0}a!=null?(m.value=a.$el||a,o()):(m.value=null,console.error(`Anchor: target "${u.target}" not found`))}}return Y(()=>u.contextMenu,a=>{m.value!==null&&(s(),o(a))}),Y(()=>u.target,()=>{m.value!==null&&s(),C()}),Y(()=>u.noParentEvent,a=>{m.value!==null&&(a===!0?s():o())}),nl(()=>{C(),l!==!0&&u.modelValue===!0&&m.value===null&&i("update:modelValue",!1)}),Be(()=>{h!==null&&clearTimeout(h),s()}),{anchorEl:m,canShow:g,anchorEvents:y}}function Yl(e,l){const o=O(null);let u;function v(h,g){const y=`${g!==void 0?"add":"remove"}EventListener`,s=g!==void 0?g:u;h!==window&&h[y]("scroll",s,Je.passive),window[y]("scroll",s,Je.passive),u=g}function i(){o.value!==null&&(v(o.value),o.value=null)}const m=Y(()=>e.noParentEvent,()=>{o.value!==null&&(i(),l())});return Be(m),{localScrollTarget:o,unconfigureScrollTarget:i,changeScrollEvent:v}}const{notPassiveCapture:Pe}=Je,he=[];function De(e){const l=e.target;if(l===void 0||l.nodeType===8||l.classList.contains("no-pointer-events")===!0)return;let o=yt.length-1;for(;o>=0;){const u=yt[o].$;if(u.type.name==="QTooltip"){o--;continue}if(u.type.name!=="QDialog")break;if(u.props.seamless!==!0)return;o--}for(let u=he.length-1;u>=0;u--){const v=he[u];if((v.anchorEl.value===null||v.anchorEl.value.contains(l)===!1)&&(l===document.body||v.innerRef.value!==null&&v.innerRef.value.contains(l)===!1))e.qClickOutside=!0,v.onClickOutside(e);else return}}function Gl(e){he.push(e),he.length===1&&(document.addEventListener("mousedown",De,Pe),document.addEventListener("touchstart",De,Pe))}function wt(e){const l=he.findIndex(o=>o===e);l!==-1&&(he.splice(l,1),he.length===0&&(document.removeEventListener("mousedown",De,Pe),document.removeEventListener("touchstart",De,Pe)))}let xt,Ct;function pt(e){const l=e.split(" ");return l.length!==2?!1:["top","center","bottom"].includes(l[0])!==!0?(console.error("Anchor/Self position must start with one of top/center/bottom"),!1):["left","middle","right","start","end"].includes(l[1])!==!0?(console.error("Anchor/Self position must end with one of left/middle/right/start/end"),!1):!0}function Jl(e){return e?!(e.length!==2||typeof e[0]!="number"||typeof e[1]!="number"):!0}const Ze={"start#ltr":"left","start#rtl":"right","end#ltr":"right","end#rtl":"left"};["left","middle","right"].forEach(e=>{Ze[`${e}#ltr`]=e,Ze[`${e}#rtl`]=e});function Vt(e,l){const o=e.split(" ");return{vertical:o[0],horizontal:Ze[`${o[1]}#${l===!0?"rtl":"ltr"}`]}}function Zl(e,l){let{top:o,left:u,right:v,bottom:i,width:m,height:h}=e.getBoundingClientRect();return l!==void 0&&(o-=l[1],u-=l[0],i+=l[1],v+=l[0],m+=l[0],h+=l[1]),{top:o,bottom:i,height:h,left:u,right:v,width:m,middle:u+(v-u)/2,center:o+(i-o)/2}}function en(e,l,o){let{top:u,left:v}=e.getBoundingClientRect();return u+=l.top,v+=l.left,o!==void 0&&(u+=o[1],v+=o[0]),{top:u,bottom:u+1,height:1,left:v,right:v+1,width:1,middle:v,center:u}}function tn(e,l){return{top:0,center:l/2,bottom:l,left:0,middle:e/2,right:e}}function kt(e,l,o,u){return{top:e[o.vertical]-l[u.vertical],left:e[o.horizontal]-l[u.horizontal]}}function It(e,l=0){if(e.targetEl===null||e.anchorEl===null||l>5)return;if(e.targetEl.offsetHeight===0||e.targetEl.offsetWidth===0){setTimeout(()=>{It(e,l+1)},10);return}const{targetEl:o,offset:u,anchorEl:v,anchorOrigin:i,selfOrigin:m,absoluteOffset:h,fit:g,cover:y,maxHeight:s,maxWidth:w}=e;if(ul.is.ios===!0&&window.visualViewport!==void 0){const B=document.body.style,{offsetLeft:_,offsetTop:W}=window.visualViewport;_!==xt&&(B.setProperty("--q-pe-left",_+"px"),xt=_),W!==Ct&&(B.setProperty("--q-pe-top",W+"px"),Ct=W)}const{scrollLeft:C,scrollTop:a}=o,S=h===void 0?Zl(v,y===!0?[0,0]:u):en(v,h,u);Object.assign(o.style,{top:0,left:0,minWidth:null,minHeight:null,maxWidth:w,maxHeight:s,visibility:"visible"});const{offsetWidth:P,offsetHeight:b}=o,{elWidth:D,elHeight:U}=g===!0||y===!0?{elWidth:Math.max(S.width,P),elHeight:y===!0?Math.max(S.height,b):b}:{elWidth:P,elHeight:b};let M={maxWidth:w,maxHeight:s};(g===!0||y===!0)&&(M.minWidth=S.width+"px",y===!0&&(M.minHeight=S.height+"px")),Object.assign(o.style,M);const E=tn(D,U);let F=kt(S,E,i,m);if(h===void 0||u===void 0)Xe(F,S,E,i,m);else{const{top:B,left:_}=F;Xe(F,S,E,i,m);let W=!1;if(F.top!==B){W=!0;const N=2*u[1];S.center=S.top-=N,S.bottom-=N+2}if(F.left!==_){W=!0;const N=2*u[0];S.middle=S.left-=N,S.right-=N+2}W===!0&&(F=kt(S,E,i,m),Xe(F,S,E,i,m))}M={top:F.top+"px",left:F.left+"px"},F.maxHeight!==void 0&&(M.maxHeight=F.maxHeight+"px",S.height>F.maxHeight&&(M.minHeight=M.maxHeight)),F.maxWidth!==void 0&&(M.maxWidth=F.maxWidth+"px",S.width>F.maxWidth&&(M.minWidth=M.maxWidth)),Object.assign(o.style,M),o.scrollTop!==a&&(o.scrollTop=a),o.scrollLeft!==C&&(o.scrollLeft=C)}function Xe(e,l,o,u,v){const i=o.bottom,m=o.right,h=El(),g=window.innerHeight-h,y=document.body.clientWidth;if(e.top<0||e.top+i>g)if(v.vertical==="center")e.top=l[u.vertical]>g/2?Math.max(0,g-i):0,e.maxHeight=Math.min(i,g);else if(l[u.vertical]>g/2){const s=Math.min(g,u.vertical==="center"?l.center:u.vertical===v.vertical?l.bottom:l.top);e.maxHeight=Math.min(i,s),e.top=Math.max(0,s-i)}else e.top=Math.max(0,u.vertical==="center"?l.center:u.vertical===v.vertical?l.top:l.bottom),e.maxHeight=Math.min(i,g-e.top);if(e.left<0||e.left+m>y)if(e.maxWidth=Math.min(m,y),v.horizontal==="middle")e.left=l[u.horizontal]>y/2?Math.max(0,y-m):0;else if(l[u.horizontal]>y/2){const s=Math.min(y,u.horizontal==="middle"?l.middle:u.horizontal===v.horizontal?l.right:l.left);e.maxWidth=Math.min(m,s),e.left=Math.max(0,s-e.maxWidth)}else e.left=Math.max(0,u.horizontal==="middle"?l.middle:u.horizontal===v.horizontal?l.left:l.right),e.maxWidth=Math.min(m,y-e.left)}const ln=$e({name:"QMenu",inheritAttrs:!1,props:{...Ul,...zl,...Bt,...Fl,persistent:Boolean,autoClose:Boolean,separateClosePopup:Boolean,noEscDismiss:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,fit:Boolean,cover:Boolean,square:Boolean,anchor:{type:String,validator:pt},self:{type:String,validator:pt},offset:{type:Array,validator:Jl},scrollTarget:Tl,touchPosition:Boolean,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null}},emits:[...Ml,"click","escapeKey"],setup(e,{slots:l,emit:o,attrs:u}){let v=null,i,m,h;const g=He(),{proxy:y}=g,{$q:s}=y,w=O(null),C=O(!1),a=x(()=>e.persistent!==!0&&e.noRouteDismiss!==!0),S=Ft(e,s),{registerTick:P,removeTick:b}=Il(),{registerTimeout:D}=$l(),{transitionProps:U,transitionStyle:M}=Pl(e),{localScrollTarget:E,changeScrollEvent:F,unconfigureScrollTarget:B}=Yl(e,V),{anchorEl:_,canShow:W}=Xl({showing:C}),{hide:N}=Hl({showing:C,canShow:W,handleShow:ce,handleHide:n,hideOnRouteChange:a,processOnMount:!0}),{showPortal:J,hidePortal:re,renderPortal:j}=Ol(g,w,L,"menu"),le={anchorEl:_,innerRef:w,onClickOutside(r){if(e.persistent!==!0&&C.value===!0)return N(r),(r.type==="touchstart"||r.target.classList.contains("q-dialog__backdrop"))&&ae(r),!0}},se=x(()=>Vt(e.anchor||(e.cover===!0?"center middle":"bottom start"),s.lang.rtl)),ue=x(()=>e.cover===!0?se.value:Vt(e.self||"top start",s.lang.rtl)),X=x(()=>(e.square===!0?" q-menu--square":"")+(S.value===!0?" q-menu--dark q-dark":"")),ke=x(()=>e.autoClose===!0?{onClick:T}:{}),ie=x(()=>C.value===!0&&e.persistent!==!0);Y(ie,r=>{r===!0?(Ll(q),Gl(le)):(bt(q),wt(le))});function Z(){Zt(()=>{let r=w.value;r&&r.contains(document.activeElement)!==!0&&(r=r.querySelector("[autofocus][tabindex], [data-autofocus][tabindex]")||r.querySelector("[autofocus] [tabindex], [data-autofocus] [tabindex]")||r.querySelector("[autofocus], [data-autofocus]")||r,r.focus({preventScroll:!0}))})}function ce(r){if(v=e.noRefocus===!1?document.activeElement:null,Rl(I),J(),V(),i=void 0,r!==void 0&&(e.touchPosition||e.contextMenu)){const $=il(r);if($.left!==void 0){const{top:ee,left:ge}=_.value.getBoundingClientRect();i={left:$.left-ge,top:$.top-ee}}}m===void 0&&(m=Y(()=>s.screen.width+"|"+s.screen.height+"|"+e.self+"|"+e.anchor+"|"+s.lang.rtl,p)),e.noFocus!==!0&&document.activeElement.blur(),P(()=>{p(),e.noFocus!==!0&&Z()}),D(()=>{s.platform.is.ios===!0&&(h=e.autoClose,w.value.click()),p(),J(!0),o("show",r)},e.transitionDuration)}function n(r){b(),re(),c(!0),v!==null&&(r===void 0||r.qClickOutside!==!0)&&(((r?.type.indexOf("key")===0?v.closest('[tabindex]:not([tabindex^="-"])'):void 0)||v).focus(),v=null),D(()=>{re(!0),o("hide",r)},e.transitionDuration)}function c(r){i=void 0,m!==void 0&&(m(),m=void 0),(r===!0||C.value===!0)&&(_l(I),B(),wt(le),bt(q)),r!==!0&&(v=null)}function V(){(_.value!==null||e.scrollTarget!==void 0)&&(E.value=Bl(_.value,e.scrollTarget),F(E.value,p))}function T(r){h!==!0?(Dl(y,r),o("click",r)):h=!1}function I(r){ie.value===!0&&e.noFocus!==!0&&bl(w.value,r.target)!==!0&&Z()}function q(r){e.noEscDismiss!==!0&&(o("escapeKey"),N(r))}function p(){It({targetEl:w.value,offset:e.offset,anchorEl:_.value,anchorOrigin:se.value,selfOrigin:ue.value,absoluteOffset:i,fit:e.fit,cover:e.cover,maxHeight:e.maxHeight,maxWidth:e.maxWidth})}function L(){return A(al,U.value,()=>C.value===!0?A("div",{role:"menu",...u,ref:w,tabindex:-1,class:["q-menu q-position-engine scroll"+X.value,u.class],style:[u.style,M.value],...ke.value},Cl(l.default)):null)}return Be(c),Object.assign(y,{focus:Z,updatePosition:p}),j}});let We=!1;{const e=document.createElement("div");e.setAttribute("dir","rtl"),Object.assign(e.style,{width:"1px",height:"1px",overflow:"auto"});const l=document.createElement("div");Object.assign(l.style,{width:"1000px",height:"1px"}),document.body.appendChild(e),e.appendChild(l),e.scrollLeft=-1e3,We=e.scrollLeft>=0,e.remove()}const G=1e3,nn=["start","center","end","start-force","center-force","end-force"],Ot=Array.prototype.filter,on=window.getComputedStyle(document.body).overflowAnchor===void 0?fl:function(e,l){e!==null&&(e._qOverflowAnimationFrame!==void 0&&cancelAnimationFrame(e._qOverflowAnimationFrame),e._qOverflowAnimationFrame=requestAnimationFrame(()=>{if(e===null)return;e._qOverflowAnimationFrame=void 0;const o=e.children||[];Ot.call(o,v=>v.dataset&&v.dataset.qVsAnchor!==void 0).forEach(v=>{delete v.dataset.qVsAnchor});const u=o[l];u?.dataset&&(u.dataset.qVsAnchor="")}))};function Ve(e,l){return e+l}function Ye(e,l,o,u,v,i,m,h){const g=e===window?document.scrollingElement||document.documentElement:e,y=v===!0?"offsetWidth":"offsetHeight",s={scrollStart:0,scrollViewSize:-m-h,scrollMaxSize:0,offsetStart:-m,offsetEnd:-h};if(v===!0?(e===window?(s.scrollStart=window.pageXOffset||window.scrollX||document.body.scrollLeft||0,s.scrollViewSize+=document.documentElement.clientWidth):(s.scrollStart=g.scrollLeft,s.scrollViewSize+=g.clientWidth),s.scrollMaxSize=g.scrollWidth,i===!0&&(s.scrollStart=(We===!0?s.scrollMaxSize-s.scrollViewSize:0)-s.scrollStart)):(e===window?(s.scrollStart=window.pageYOffset||window.scrollY||document.body.scrollTop||0,s.scrollViewSize+=document.documentElement.clientHeight):(s.scrollStart=g.scrollTop,s.scrollViewSize+=g.clientHeight),s.scrollMaxSize=g.scrollHeight),o!==null)for(let w=o.previousElementSibling;w!==null;w=w.previousElementSibling)w.classList.contains("q-virtual-scroll--skip")===!1&&(s.offsetStart+=w[y]);if(u!==null)for(let w=u.nextElementSibling;w!==null;w=w.nextElementSibling)w.classList.contains("q-virtual-scroll--skip")===!1&&(s.offsetEnd+=w[y]);if(l!==e){const w=g.getBoundingClientRect(),C=l.getBoundingClientRect();v===!0?(s.offsetStart+=C.left-w.left,s.offsetEnd-=C.width):(s.offsetStart+=C.top-w.top,s.offsetEnd-=C.height),e!==window&&(s.offsetStart+=s.scrollStart),s.offsetEnd+=s.scrollMaxSize-s.offsetStart}return s}function qt(e,l,o,u){l==="end"&&(l=(e===window?document.body:e)[o===!0?"scrollWidth":"scrollHeight"]),e===window?o===!0?(u===!0&&(l=(We===!0?document.body.scrollWidth-document.documentElement.clientWidth:0)-l),window.scrollTo(l,window.pageYOffset||window.scrollY||document.body.scrollTop||0)):window.scrollTo(window.pageXOffset||window.scrollX||document.body.scrollLeft||0,l):o===!0?(u===!0&&(l=(We===!0?e.scrollWidth-e.offsetWidth:0)-l),e.scrollLeft=l):e.scrollTop=l}function Te(e,l,o,u){if(o>=u)return 0;const v=l.length,i=Math.floor(o/G),m=Math.floor((u-1)/G)+1;let h=e.slice(i,m).reduce(Ve,0);return o%G!==0&&(h-=l.slice(i*G,o).reduce(Ve,0)),u%G!==0&&u!==v&&(h-=l.slice(u,m*G).reduce(Ve,0)),h}const un={virtualScrollSliceSize:{type:[Number,String],default:10},virtualScrollSliceRatioBefore:{type:[Number,String],default:1},virtualScrollSliceRatioAfter:{type:[Number,String],default:1},virtualScrollItemSize:{type:[Number,String],default:24},virtualScrollStickySizeStart:{type:[Number,String],default:0},virtualScrollStickySizeEnd:{type:[Number,String],default:0},tableColspan:[Number,String]},At={virtualScrollHorizontal:Boolean,onVirtualScroll:Function,...un};function an({virtualScrollLength:e,getVirtualScrollTarget:l,getVirtualScrollEl:o,virtualScrollItemSizeComputed:u}){const v=He(),{props:i,emit:m,proxy:h}=v,{$q:g}=h;let y,s,w,C=[],a;const S=O(0),P=O(0),b=O({}),D=O(null),U=O(null),M=O(null),E=O({from:0,to:0}),F=x(()=>i.tableColspan!==void 0?i.tableColspan:100);u===void 0&&(u=x(()=>i.virtualScrollItemSize));const B=x(()=>u.value+";"+i.virtualScrollHorizontal),_=x(()=>B.value+";"+i.virtualScrollSliceRatioBefore+";"+i.virtualScrollSliceRatioAfter);Y(_,()=>{X()}),Y(B,W);function W(){ue(s,!0)}function N(n){ue(n===void 0?s:n)}function J(n,c){const V=l();if(V==null||V.nodeType===8)return;const T=Ye(V,o(),D.value,U.value,i.virtualScrollHorizontal,g.lang.rtl,i.virtualScrollStickySizeStart,i.virtualScrollStickySizeEnd);w!==T.scrollViewSize&&X(T.scrollViewSize),j(V,T,Math.min(e.value-1,Math.max(0,parseInt(n,10)||0)),0,nn.indexOf(c)!==-1?c:s!==-1&&n>s?"end":"start")}function re(){const n=l();if(n==null||n.nodeType===8)return;const c=Ye(n,o(),D.value,U.value,i.virtualScrollHorizontal,g.lang.rtl,i.virtualScrollStickySizeStart,i.virtualScrollStickySizeEnd),V=e.value-1,T=c.scrollMaxSize-c.offsetStart-c.offsetEnd-P.value;if(y===c.scrollStart)return;if(c.scrollMaxSize<=0){j(n,c,0,0);return}w!==c.scrollViewSize&&X(c.scrollViewSize),le(E.value.from);const I=Math.floor(c.scrollMaxSize-Math.max(c.scrollViewSize,c.offsetEnd)-Math.min(a[V],c.scrollViewSize/2));if(I>0&&Math.ceil(c.scrollStart)>=I){j(n,c,V,c.scrollMaxSize-c.offsetEnd-C.reduce(Ve,0));return}let q=0,p=c.scrollStart-c.offsetStart,L=p;if(p<=T&&p+c.scrollViewSize>=S.value)p-=S.value,q=E.value.from,L=p;else for(let r=0;p>=C[r]&&q0&&q-c.scrollViewSize?(q++,L=p):L=a[q]+p;j(n,c,q,L)}function j(n,c,V,T,I){const q=typeof I=="string"&&I.indexOf("-force")!==-1,p=q===!0?I.replace("-force",""):I,L=p!==void 0?p:"start";let r=Math.max(0,V-b.value[L]),$=r+b.value.total;$>e.value&&($=e.value,r=Math.max(0,$-b.value.total)),y=c.scrollStart;const ee=r!==E.value.from||$!==E.value.to;if(ee===!1&&p===void 0){ie(V);return}const{activeElement:ge}=document,ne=M.value;ee===!0&&ne!==null&&ne!==ge&&ne.contains(ge)===!0&&(ne.addEventListener("focusout",se),setTimeout(()=>{ne?.removeEventListener("focusout",se)})),on(ne,V-r);const Fe=p!==void 0?a.slice(r,V).reduce(Ve,0):0;if(ee===!0){const de=$>=E.value.from&&r<=E.value.to?E.value.to:$;E.value={from:r,to:de},S.value=Te(C,a,0,r),P.value=Te(C,a,$,e.value),requestAnimationFrame(()=>{E.value.to!==$&&y===c.scrollStart&&(E.value={from:E.value.from,to:$},P.value=Te(C,a,$,e.value))})}requestAnimationFrame(()=>{if(y!==c.scrollStart)return;ee===!0&&le(r);const de=a.slice(r,V).reduce(Ve,0),fe=de+c.offsetStart+S.value,Ie=fe+a[V];let qe=fe+T;if(p!==void 0){const Ke=de-Fe,Ae=c.scrollStart+Ke;qe=q!==!0&&Aer.classList&&r.classList.contains("q-virtual-scroll--skip")===!1),T=V.length,I=i.virtualScrollHorizontal===!0?r=>r.getBoundingClientRect().width:r=>r.offsetHeight;let q=n,p,L;for(let r=0;r=T;q--)a[q]=V;const I=Math.floor((e.value-1)/G);C=[];for(let q=0;q<=I;q++){let p=0;const L=Math.min((q+1)*G,e.value);for(let r=q*G;r=0?(le(E.value.from),oe(()=>{J(n)})):Z()}function X(n){if(n===void 0&&typeof window<"u"){const p=l();p!=null&&p.nodeType!==8&&(n=Ye(p,o(),D.value,U.value,i.virtualScrollHorizontal,g.lang.rtl,i.virtualScrollStickySizeStart,i.virtualScrollStickySizeEnd).scrollViewSize)}w=n;const c=parseFloat(i.virtualScrollSliceRatioBefore)||0,V=parseFloat(i.virtualScrollSliceRatioAfter)||0,T=1+c+V,I=n===void 0||n<=0?1:Math.ceil(n/u.value),q=Math.max(1,I,Math.ceil((i.virtualScrollSliceSize>0?i.virtualScrollSliceSize:10)/T));b.value={total:Math.ceil(q*T),start:Math.ceil(q*c),center:Math.ceil(q*(.5+c)),end:Math.ceil(q*(1+c)),view:I}}function ke(n,c){const V=i.virtualScrollHorizontal===!0?"width":"height",T={["--q-virtual-scroll-item-"+V]:u.value+"px"};return[n==="tbody"?A(n,{class:"q-virtual-scroll__padding",key:"before",ref:D},[A("tr",[A("td",{style:{[V]:`${S.value}px`,...T},colspan:F.value})])]):A(n,{class:"q-virtual-scroll__padding",key:"before",ref:D,style:{[V]:`${S.value}px`,...T}}),A(n,{class:"q-virtual-scroll__content",key:"content",ref:M,tabindex:-1},c.flat()),n==="tbody"?A(n,{class:"q-virtual-scroll__padding",key:"after",ref:U},[A("tr",[A("td",{style:{[V]:`${P.value}px`,...T},colspan:F.value})])]):A(n,{class:"q-virtual-scroll__padding",key:"after",ref:U,style:{[V]:`${P.value}px`,...T}})]}function ie(n){s!==n&&(i.onVirtualScroll!==void 0&&m("virtualScroll",{index:n,from:E.value.from,to:E.value.to-1,direction:n{X()});let ce=!1;return cl(()=>{ce=!0}),dl(()=>{if(ce!==!0)return;const n=l();y!==void 0&&n!==void 0&&n!==null&&n.nodeType!==8?qt(n,y,i.virtualScrollHorizontal,g.lang.rtl):J(s)}),Be(()=>{Z.cancel()}),Object.assign(h,{scrollTo:J,reset:W,refresh:N}),{virtualScrollSliceRange:E,virtualScrollSliceSizeComputed:b,setVirtualScrollSize:X,onVirtualScrollEvt:Z,localResetVirtualScroll:ue,padVirtualScroll:ke,scrollTo:J,reset:W,refresh:N}}const Et=e=>["add","add-unique","toggle"].includes(e),rn=".*+?^${}()|[]\\",sn=Object.keys(et);function Ge(e,l){if(typeof e=="function")return e;const o=e!==void 0?e:l;return u=>u!==null&&typeof u=="object"&&o in u?u[o]:u}const wn=$e({name:"QSelect",inheritAttrs:!1,props:{...At,...el,...et,modelValue:{required:!0},multiple:Boolean,displayValue:[String,Number],displayValueHtml:Boolean,dropdownIcon:String,options:{type:Array,default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],hideSelected:Boolean,hideDropdownIcon:Boolean,fillInput:Boolean,maxValues:[Number,String],optionsDense:Boolean,optionsDark:{type:Boolean,default:null},optionsSelectedClass:String,optionsHtml:Boolean,optionsCover:Boolean,menuShrink:Boolean,menuAnchor:String,menuSelf:String,menuOffset:Array,popupContentClass:String,popupContentStyle:[String,Array,Object],popupNoRouteDismiss:Boolean,useInput:Boolean,useChips:Boolean,newValueMode:{type:String,validator:Et},mapOptions:Boolean,emitValue:Boolean,disableTabSelection:Boolean,inputDebounce:{type:[Number,String],default:500},inputClass:[Array,String,Object],inputStyle:[Array,String,Object],tabindex:{type:[String,Number],default:0},autocomplete:String,transitionShow:{},transitionHide:{},transitionDuration:{},behavior:{type:String,validator:e=>["default","menu","dialog"].includes(e),default:"default"},virtualScrollItemSize:At.virtualScrollItemSize.type,onNewValue:Function,onFilter:Function},emits:[...Mt,"add","remove","inputValue","keyup","keypress","keydown","popupShow","popupHide","filterAbort"],setup(e,{slots:l,emit:o}){const{proxy:u}=He(),{$q:v}=u,i=O(!1),m=O(!1),h=O(-1),g=O(""),y=O(!1),s=O(!1);let w=null,C=null,a,S,P,b=null,D,U,M,E;const F=O(null),B=O(null),_=O(null),W=O(null),N=O(null),J=tl(e),re=ll(ct),j=x(()=>Array.isArray(e.options)?e.options.length:0),le=x(()=>e.virtualScrollItemSize===void 0?e.optionsDense===!0?24:48:e.virtualScrollItemSize),{virtualScrollSliceRange:se,virtualScrollSliceSizeComputed:ue,localResetVirtualScroll:X,padVirtualScroll:ke,onVirtualScrollEvt:ie,scrollTo:Z,setVirtualScrollSize:ce}=an({virtualScrollLength:j,getVirtualScrollTarget:Pt,getVirtualScrollEl:rt,virtualScrollItemSizeComputed:le}),n=zt(),c=x(()=>{const t=e.mapOptions===!0&&e.multiple!==!0,d=e.modelValue!==void 0&&(e.modelValue!==null||t===!0)?e.multiple===!0&&Array.isArray(e.modelValue)?e.modelValue:[e.modelValue]:[];if(e.mapOptions===!0&&Array.isArray(e.options)===!0){const f=e.mapOptions===!0&&a!==void 0?a:[],k=d.map(H=>_t(H,f));return e.modelValue===null&&t===!0?k.filter(H=>H!==null):k}return d}),V=x(()=>{const t={};return sn.forEach(d=>{const f=e[d];f!==void 0&&(t[d]=f)}),t}),T=x(()=>e.optionsDark===null?n.isDark.value:e.optionsDark),I=x(()=>ht(c.value)),q=x(()=>{let t="q-field__input q-placeholder col";return e.hideSelected===!0||c.value.length===0?[t,e.inputClass]:(t+=" q-field__input--padding",e.inputClass===void 0?t:[t,e.inputClass])}),p=x(()=>(e.virtualScrollHorizontal===!0?"q-virtual-scroll--horizontal":"")+(e.popupContentClass?" "+e.popupContentClass:"")),L=x(()=>j.value===0),r=x(()=>c.value.map(t=>Q.value(t)).join(", ")),$=x(()=>e.displayValue!==void 0?e.displayValue:r.value),ee=x(()=>e.optionsHtml===!0?()=>!0:t=>t?.html===!0),ge=x(()=>e.displayValueHtml===!0||e.displayValue===void 0&&(e.optionsHtml===!0||c.value.some(ee.value))),ne=x(()=>n.focused.value===!0?e.tabindex:-1),Fe=x(()=>{const t={tabindex:e.tabindex,role:"combobox","aria-label":e.label,"aria-readonly":e.readonly===!0?"true":"false","aria-autocomplete":e.useInput===!0?"list":"none","aria-expanded":i.value===!0?"true":"false","aria-controls":`${n.targetUid.value}_lb`};return h.value>=0&&(t["aria-activedescendant"]=`${n.targetUid.value}_${h.value}`),t}),de=x(()=>({id:`${n.targetUid.value}_lb`,role:"listbox","aria-multiselectable":e.multiple===!0?"true":"false"})),fe=x(()=>c.value.map((t,d)=>({index:d,opt:t,html:ee.value(t),selected:!0,removeAtIndex:Rt,toggleOption:ve,tabindex:ne.value}))),Ie=x(()=>{if(j.value===0)return[];const{from:t,to:d}=se.value;return e.options.slice(t,d).map((f,k)=>{const H=Se.value(f)===!0,z=Ne(f)===!0,K=t+k,R={clickable:!0,active:z,activeClass:Ae.value,manualFocus:!0,focused:!1,disable:H,tabindex:-1,dense:e.optionsDense,dark:T.value,role:"option","aria-selected":z===!0?"true":"false",id:`${n.targetUid.value}_${K}`,onClick:()=>{ve(f)}};return H!==!0&&(h.value===K&&(R.focused=!0),v.platform.is.desktop===!0&&(R.onMousemove=()=>{i.value===!0&&ye(K)})),{index:K,opt:f,html:ee.value(f),label:Q.value(f),selected:R.active,focused:R.focused,toggleOption:ve,setOptionIndex:ye,itemProps:R}})}),qe=x(()=>e.dropdownIcon!==void 0?e.dropdownIcon:v.iconSet.arrow.dropdown),Ke=x(()=>e.optionsCover===!1&&e.outlined!==!0&&e.standout!==!0&&e.borderless!==!0&&e.rounded!==!0),Ae=x(()=>e.optionsSelectedClass!==void 0?e.optionsSelectedClass:e.color!==void 0?`text-${e.color}`:""),te=x(()=>Ge(e.optionValue,"value")),Q=x(()=>Ge(e.optionLabel,"label")),Se=x(()=>Ge(e.optionDisable,"disable")),Oe=x(()=>c.value.map(te.value)),Lt=x(()=>{const t={onInput:ct,onChange:re,onKeydown:at,onKeyup:ut,onKeypress:it,onFocus:nt,onClick(d){S===!0&&pe(d)}};return t.onCompositionstart=t.onCompositionupdate=t.onCompositionend=re,t});Y(c,t=>{a=t,e.useInput===!0&&e.fillInput===!0&&e.multiple!==!0&&n.innerLoading.value!==!0&&(m.value!==!0&&i.value!==!0||I.value!==!0)&&(P!==!0&&Ce(),(m.value===!0||i.value===!0)&&be(""))},{immediate:!0}),Y(()=>e.fillInput,Ce),Y(i,Qe),Y(j,Jt);function tt(t){return e.emitValue===!0?te.value(t):t}function je(t){if(t!==-1&&t=e.maxValues)return;const k=e.modelValue.slice();o("add",{index:k.length,value:f}),k.push(f),o("update:modelValue",k)}function ve(t,d){if(n.editable.value!==!0||t===void 0||Se.value(t)===!0)return;const f=te.value(t);if(e.multiple!==!0){d!==!0&&(Ee(e.fillInput===!0?Q.value(t):"",!0,!0),me()),B.value?.focus(),(c.value.length===0||Me(te.value(c.value[0]),f)!==!0)&&o("update:modelValue",e.emitValue===!0?f:t);return}if((S!==!0||y.value===!0)&&n.focus(),nt(),c.value.length===0){const z=e.emitValue===!0?f:t;o("add",{index:0,value:z}),o("update:modelValue",e.multiple===!0?[z]:z);return}const k=e.modelValue.slice(),H=Oe.value.findIndex(z=>Me(z,f));if(H!==-1)o("remove",{index:H,value:k.splice(H,1)[0]});else{if(e.maxValues!==void 0&&k.length>=e.maxValues)return;const z=e.emitValue===!0?f:t;o("add",{index:k.length,value:z}),k.push(z)}o("update:modelValue",k)}function ye(t){if(v.platform.is.desktop!==!0)return;const d=t!==-1&&t=0?Q.value(e.options[f]):D,!0))}}function _t(t,d){const f=k=>Me(te.value(k),t);return e.options.find(f)||d.find(f)||t}function Ne(t){const d=te.value(t);return Oe.value.find(f=>Me(f,d))!==void 0}function nt(t){e.useInput===!0&&B.value!==null&&(t===void 0||B.value===t.target&&t.target.value===r.value)&&B.value.select()}function ot(t){Ht(t,27)===!0&&i.value===!0&&(pe(t),me(),Ce()),o("keyup",t)}function ut(t){const{value:d}=t.target;if(t.keyCode!==void 0){ot(t);return}if(t.target.value="",w!==null&&(clearTimeout(w),w=null),C!==null&&(clearTimeout(C),C=null),Ce(),typeof d=="string"&&d.length!==0){const f=d.toLocaleLowerCase(),k=z=>{const K=e.options.find(R=>String(z.value(R)).toLocaleLowerCase()===f);return K===void 0?!1:(c.value.indexOf(K)===-1?ve(K):me(),!0)},H=z=>{k(te)!==!0&&z!==!0&&k(Q)!==!0&&be(d,!0,()=>H(!0))};H()}else n.clearValue(t)}function it(t){o("keypress",t)}function at(t){if(o("keydown",t),hl(t)===!0)return;const d=g.value.length!==0&&(e.newValueMode!==void 0||e.onNewValue!==void 0),f=t.shiftKey!==!0&&e.disableTabSelection!==!0&&e.multiple!==!0&&(h.value!==-1||d===!0);if(t.keyCode===27){ze(t);return}if(t.keyCode===9&&f===!1){we();return}if(t.target===void 0||t.target.id!==n.targetUid.value||n.editable.value!==!0)return;if(t.keyCode===40&&n.innerLoading.value!==!0&&i.value===!1){ae(t),xe();return}if(t.keyCode===8&&(e.useChips===!0||e.clearable===!0)&&e.hideSelected!==!0&&g.value.length===0){e.multiple===!0&&Array.isArray(e.modelValue)===!0?je(e.modelValue.length-1):e.multiple!==!0&&e.modelValue!==null&&o("update:modelValue",null);return}(t.keyCode===35||t.keyCode===36)&&(typeof g.value!="string"||g.value.length===0)&&(ae(t),h.value=-1,Le(t.keyCode===36?1:-1,e.multiple)),(t.keyCode===33||t.keyCode===34)&&ue.value!==void 0&&(ae(t),h.value=Math.max(-1,Math.min(j.value,h.value+(t.keyCode===33?-1:1)*ue.value.view)),Le(t.keyCode===33?1:-1,e.multiple)),(t.keyCode===38||t.keyCode===40)&&(ae(t),Le(t.keyCode===38?-1:1,e.multiple));const k=j.value;if((M===void 0||E0&&e.useInput!==!0&&t.key!==void 0&&t.key.length===1&&t.altKey===!1&&t.ctrlKey===!1&&t.metaKey===!1&&(t.keyCode!==32||M.length!==0)){i.value!==!0&&xe(t);const H=t.key.toLocaleLowerCase(),z=M.length===1&&M[0]===H;E=Date.now()+1500,z===!1&&(ae(t),M+=H);const K=new RegExp("^"+M.split("").map(Ue=>rn.indexOf(Ue)!==-1?"\\"+Ue:Ue).join(".*"),"i");let R=h.value;if(z===!0||R<0||K.test(Q.value(e.options[R]))!==!0)do R=St(R+1,-1,k-1);while(R!==h.value&&(Se.value(e.options[R])===!0||K.test(Q.value(e.options[R]))!==!0));h.value!==R&&oe(()=>{ye(R),Z(R),R>=0&&e.useInput===!0&&e.fillInput===!0&&Re(Q.value(e.options[R]),!0)});return}if(!(t.keyCode!==13&&(t.keyCode!==32||e.useInput===!0||M!=="")&&(t.keyCode!==9||f===!1))){if(t.keyCode!==9&&ae(t),h.value!==-1&&h.value{if(K){if(Et(K)!==!0)return}else K=e.newValueMode;if(Ee("",e.multiple!==!0,!0),z==null)return;(K==="toggle"?ve:lt)(z,K==="add-unique"),e.multiple!==!0&&(B.value?.focus(),me())};if(e.onNewValue!==void 0?o("newValue",g.value,H):H(g.value),e.multiple!==!0)return}i.value===!0?we():n.innerLoading.value!==!0&&xe()}}function rt(){return S===!0?N.value:_.value!==null&&_.value.contentEl!==null?_.value.contentEl:void 0}function Pt(){return rt()}function Dt(){return e.hideSelected===!0?[]:l["selected-item"]!==void 0?fe.value.map(t=>l["selected-item"](t)).slice():l.selected!==void 0?[].concat(l.selected()):e.useChips===!0?fe.value.map((t,d)=>A(Nl,{key:"option-"+d,removable:n.editable.value===!0&&Se.value(t.opt)!==!0,dense:!0,textColor:e.color,tabindex:ne.value,onRemove(){t.removeAtIndex(d)}},()=>A("span",{class:"ellipsis",[t.html===!0?"innerHTML":"textContent"]:Q.value(t.opt)}))):[A("span",{class:"ellipsis",[ge.value===!0?"innerHTML":"textContent"]:$.value})]}function st(){if(L.value===!0)return l["no-option"]!==void 0?l["no-option"]({inputValue:g.value}):void 0;const t=l.option!==void 0?l.option:f=>A(ql,{key:f.index,...f.itemProps},()=>A(Vl,()=>A(kl,()=>A("span",{[f.html===!0?"innerHTML":"textContent"]:f.label}))));let d=ke("div",Ie.value.map(t));return l["before-options"]!==void 0&&(d=l["before-options"]().concat(d)),pl(l["after-options"],d)}function Wt(t,d){const f=d===!0?{...Fe.value,...n.splitAttrs.attributes.value}:void 0,k={ref:d===!0?B:void 0,key:"i_t",class:q.value,style:e.inputStyle,value:g.value!==void 0?g.value:"",type:"search",...f,id:d===!0?n.targetUid.value:void 0,maxlength:e.maxlength,autocomplete:e.autocomplete,"data-autofocus":t===!0||e.autofocus===!0||void 0,disabled:e.disable===!0,readonly:e.readonly===!0,...Lt.value};return t!==!0&&S===!0&&(Array.isArray(k.class)===!0?k.class=[...k.class,"no-pointer-events"]:k.class+=" no-pointer-events"),A("input",k)}function ct(t){w!==null&&(clearTimeout(w),w=null),C!==null&&(clearTimeout(C),C=null),!(t&&t.target&&t.target.qComposing===!0)&&(Re(t.target.value||""),P=!0,D=g.value,n.focused.value!==!0&&(S!==!0||y.value===!0)&&n.focus(),e.onFilter!==void 0&&(w=setTimeout(()=>{w=null,be(g.value)},e.inputDebounce)))}function Re(t,d){g.value!==t&&(g.value=t,d===!0||e.inputDebounce===0||e.inputDebounce==="0"?o("inputValue",t):C=setTimeout(()=>{C=null,o("inputValue",t)},e.inputDebounce))}function Ee(t,d,f){P=f!==!0,e.useInput===!0&&(Re(t,!0),(d===!0||f!==!0)&&(D=t),d!==!0&&be(t))}function be(t,d,f){if(e.onFilter===void 0||d!==!0&&n.focused.value!==!0)return;n.innerLoading.value===!0?o("filterAbort"):(n.innerLoading.value=!0,s.value=!0),t!==""&&e.multiple!==!0&&c.value.length!==0&&P!==!0&&t===Q.value(c.value[0])&&(t="");const k=setTimeout(()=>{i.value===!0&&(i.value=!1)},10);b!==null&&clearTimeout(b),b=k,o("filter",t,(H,z)=>{(d===!0||n.focused.value===!0)&&b===k&&(clearTimeout(b),typeof H=="function"&&H(),s.value=!1,oe(()=>{n.innerLoading.value=!1,n.editable.value===!0&&(d===!0?i.value===!0&&me():i.value===!0?Qe(!0):i.value=!0),typeof z=="function"&&oe(()=>{z(u)}),typeof f=="function"&&oe(()=>{f(u)})}))},()=>{n.focused.value===!0&&b===k&&(clearTimeout(b),n.innerLoading.value=!1,s.value=!1),i.value===!0&&(i.value=!1)})}function $t(){return A(ln,{ref:_,class:p.value,style:e.popupContentStyle,modelValue:i.value,fit:e.menuShrink!==!0,cover:e.optionsCover===!0&&L.value!==!0&&e.useInput!==!0,anchor:e.menuAnchor,self:e.menuSelf,offset:e.menuOffset,dark:T.value,noParentEvent:!0,noRefocus:!0,noFocus:!0,noRouteDismiss:e.popupNoRouteDismiss,square:Ke.value,transitionShow:e.transitionShow,transitionHide:e.transitionHide,transitionDuration:e.transitionDuration,separateClosePopup:!0,...de.value,onScrollPassive:ie,onBeforeShow:ft,onBeforeHide:Kt,onShow:jt},st)}function Kt(t){vt(t),we()}function jt(){ce()}function Nt(t){pe(t),B.value?.focus(),y.value=!0,window.scrollTo(window.pageXOffset||window.scrollX||document.body.scrollLeft||0,0)}function Qt(t){pe(t),oe(()=>{y.value=!1})}function Ut(){const t=[A(Kl,{class:`col-auto ${n.fieldClass.value}`,...V.value,for:n.targetUid.value,dark:T.value,square:!0,loading:s.value,itemAligned:!1,filled:!0,stackLabel:g.value.length!==0,...n.splitAttrs.listeners.value,onFocus:Nt,onBlur:Qt},{...l,rawControl:()=>n.getControl(!0),before:void 0,after:void 0})];return i.value===!0&&t.push(A("div",{ref:N,class:p.value+" scroll",style:e.popupContentStyle,...de.value,onClick:ze,onScrollPassive:ie},st())),A(Wl,{ref:W,modelValue:m.value,position:e.useInput===!0?"top":void 0,transitionShow:U,transitionHide:e.transitionHide,transitionDuration:e.transitionDuration,noRouteDismiss:e.popupNoRouteDismiss,onBeforeShow:ft,onBeforeHide:Xt,onHide:Yt,onShow:Gt},()=>A("div",{class:"q-select__dialog"+(T.value===!0?" q-select__dialog--dark q-dark":"")+(y.value===!0?" q-select__dialog--focused":"")},t))}function Xt(t){vt(t),W.value!==null&&W.value.__updateRefocusTarget(n.rootRef.value.querySelector(".q-field__native > [tabindex]:last-child")),n.focused.value=!1}function Yt(t){me(),n.focused.value===!1&&o("blur",t),Ce()}function Gt(){const t=document.activeElement;(t===null||t.id!==n.targetUid.value)&&B.value!==null&&B.value!==t&&B.value.focus(),ce()}function we(){m.value!==!0&&(h.value=-1,i.value===!0&&(i.value=!1),n.focused.value===!1&&(b!==null&&(clearTimeout(b),b=null),n.innerLoading.value===!0&&(o("filterAbort"),n.innerLoading.value=!1,s.value=!1)))}function xe(t){n.editable.value===!0&&(S===!0?(n.onControlFocusin(t),m.value=!0,oe(()=>{n.focus()})):n.focus(),e.onFilter!==void 0?be(g.value):(L.value!==!0||l["no-option"]!==void 0)&&(i.value=!0))}function me(){m.value=!1,we()}function Ce(){e.useInput===!0&&Ee(e.multiple!==!0&&e.fillInput===!0&&c.value.length!==0&&Q.value(c.value[0])||"",!0,!0)}function Qe(t){let d=-1;if(t===!0){if(c.value.length!==0){const f=te.value(c.value[0]);d=e.options.findIndex(k=>Me(te.value(k),f))}X(d)}ye(d)}function Jt(t,d){i.value===!0&&n.innerLoading.value===!1&&(X(-1,!0),oe(()=>{i.value===!0&&n.innerLoading.value===!1&&(t>d?X():Qe(!0))}))}function dt(){m.value===!1&&_.value!==null&&_.value.updatePosition()}function ft(t){t!==void 0&&pe(t),o("popupShow",t),n.hasPopupOpen=!0,n.onControlFocusin(t)}function vt(t){t!==void 0&&pe(t),o("popupHide",t),n.hasPopupOpen=!1,n.onControlFocusout(t)}function mt(){S=v.platform.is.mobile!==!0&&e.behavior!=="dialog"?!1:e.behavior!=="menu"&&(e.useInput===!0?l["no-option"]!==void 0||e.onFilter!==void 0||L.value===!1:!0),U=v.platform.is.ios===!0&&S===!0&&e.useInput===!0?"fade":e.transitionShow}return vl(mt),ml(dt),mt(),Be(()=>{w!==null&&clearTimeout(w),C!==null&&clearTimeout(C)}),Object.assign(u,{showPopup:xe,hidePopup:me,removeAtIndex:je,add:lt,toggleOption:ve,getOptionIndex:()=>h.value,setOptionIndex:ye,moveOptionSelection:Le,filter:be,updateMenuPosition:dt,updateInputValue:Ee,isOptionSelected:Ne,getEmittingOptionValue:tt,isOptionDisabled:(...t)=>Se.value.apply(null,t)===!0,getOptionValue:(...t)=>te.value.apply(null,t),getOptionLabel:(...t)=>Q.value.apply(null,t)}),Object.assign(n,{innerValue:c,fieldClass:x(()=>`q-select q-field--auto-height q-select--with${e.useInput!==!0?"out":""}-input q-select--with${e.useChips!==!0?"out":""}-chips q-select--${e.multiple===!0?"multiple":"single"}`),inputRef:F,targetRef:B,hasValue:I,showPopup:xe,floatingLabel:x(()=>e.hideSelected!==!0&&I.value===!0||typeof g.value=="number"||g.value.length!==0||ht(e.displayValue)),getControlChild:()=>{if(n.editable.value!==!1&&(m.value===!0||L.value!==!0||l["no-option"]!==void 0))return S===!0?Ut():$t();n.hasPopupOpen===!0&&(n.hasPopupOpen=!1)},controlEvents:{onFocusin(t){n.onControlFocusin(t)},onFocusout(t){n.onControlFocusout(t,()=>{Ce(),we()})},onClick(t){if(ze(t),S!==!0&&i.value===!0){we(),B.value?.focus();return}xe(t)}},getControl:t=>{const d=Dt(),f=t===!0||m.value!==!0||S!==!0;if(e.useInput===!0)d.push(Wt(t,f));else if(n.editable.value===!0){const H=f===!0?Fe.value:void 0;d.push(A("input",{ref:f===!0?B:void 0,key:"d_t",class:"q-select__focus-target",id:f===!0?n.targetUid.value:void 0,value:$.value,readonly:!0,"data-autofocus":t===!0||e.autofocus===!0||void 0,...H,onKeydown:at,onKeyup:ot,onKeypress:it})),f===!0&&typeof e.autocomplete=="string"&&e.autocomplete.length!==0&&d.push(A("input",{class:"q-select__autocomplete-input",autocomplete:e.autocomplete,tabindex:-1,onKeyup:ut}))}if(J.value!==void 0&&e.disable!==!0&&Oe.value.length!==0){const H=Oe.value.map(z=>A("option",{value:z,selected:!0}));d.push(A("select",{class:"hidden",name:J.value,multiple:e.multiple},H))}const k=e.useInput===!0||f!==!0?void 0:n.splitAttrs.attributes.value;return A("div",{class:"q-field__native row items-center",...k,...n.splitAttrs.listeners.value},d)},getInnerAppend:()=>e.loading!==!0&&s.value!==!0&&e.hideDropdownIcon!==!0?[A(_e,{class:"q-select__dropdown-icon"+(i.value===!0?" rotate-180":""),name:qe.value})]:null}),Tt(n)}});export{wn as Q}; diff --git a/backend/internal/http/static/spa/assets/ResetPasswordPage-DM3gheQo.js b/backend/internal/http/static/spa/assets/ResetPasswordPage-DM3gheQo.js new file mode 100644 index 0000000..cc7cff8 --- /dev/null +++ b/backend/internal/http/static/spa/assets/ResetPasswordPage-DM3gheQo.js @@ -0,0 +1 @@ +import{Q as R,a as w}from"./QCard-D_vcm7k9.js";import{Q as h,r as I}from"./api-rhge6pbe.js";import{Q as f}from"./QInput-CEazYqyH.js";import{b as y,Q as A}from"./QBtn-AYMizH8c.js";import{Q as B}from"./QCardActions-DlFyQG4S.js";import{Q as S}from"./QPage-gf8hzrox.js";import{a as T,Y as N,q as t,o as g,e as U,w as n,h as m,f as s,k,t as _,Z as b,p as q}from"./index-QUdrNkKl.js";import{_ as L}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./render-B4qP-w0Q.js";import"./use-dark-BRt0_t6X.js";import"./use-key-composition-TTwP9QMZ.js";const E={class:"page-shell"},F={key:0,class:"msg msg-error"},M={key:1,class:"msg msg-success"},$=T({__name:"ResetPasswordPage",setup(D){const Q=N(),u=t(C()),r=t(""),d=t(""),p=t(!1),c=t(!1),v=t(!1),o=t(""),i=t(""),V=q(()=>u.value.trim().length>0?"Token caricato da URL, puoi comunque modificarlo.":"Inserisci il token ricevuto via email.");function C(){const e=Q.query.token;return typeof e=="string"?e:Array.isArray(e)&&e.length>0?String(e[0]):""}function P(){return o.value="",i.value="",u.value.trim()?r.value?r.value.length<8?(o.value="La password deve avere almeno 8 caratteri.",!1):r.value!==d.value?(o.value="Le password non coincidono.",!1):!0:(o.value="Inserisci una nuova password.",!1):(o.value="Token mancante.",!1)}async function x(){if(P()){p.value=!0,o.value="",i.value="";try{const e=await I({token:u.value.trim(),password:r.value});if(e.error){o.value=e.error;return}i.value=e.data?.message||"Password aggiornata con successo.",r.value="",d.value=""}catch(e){o.value=e instanceof Error?e.message:String(e)}finally{p.value=!1}}}return(e,a)=>(g(),U(S,{class:"reset-password-page"},{default:n(()=>[m("div",E,[s(R,{flat:"",bordered:"",class:"reset-card"},{default:n(()=>[s(w,{class:"card-head"},{default:n(()=>[...a[5]||(a[5]=[m("p",{class:"eyebrow"},"Account security",-1),m("h1",null,"Reset Password",-1),m("p",{class:"subtitle"},"Imposta una nuova password usando il token ricevuto via email.",-1)])]),_:1}),s(h),s(w,{class:"card-body"},{default:n(()=>[s(f,{modelValue:u.value,"onUpdate:modelValue":a[0]||(a[0]=l=>u.value=l),label:"Token",outlined:"",autogrow:"",type:"textarea",hint:V.value},null,8,["modelValue","hint"]),s(f,{modelValue:r.value,"onUpdate:modelValue":a[2]||(a[2]=l=>r.value=l),label:"Nuova password",outlined:"",type:c.value?"text":"password"},{append:n(()=>[s(y,{name:c.value?"visibility_off":"visibility",class:"cursor-pointer",onClick:a[1]||(a[1]=l=>c.value=!c.value)},null,8,["name"])]),_:1},8,["modelValue","type"]),s(f,{modelValue:d.value,"onUpdate:modelValue":a[4]||(a[4]=l=>d.value=l),label:"Conferma password",outlined:"",type:v.value?"text":"password"},{append:n(()=>[s(y,{name:v.value?"visibility_off":"visibility",class:"cursor-pointer",onClick:a[3]||(a[3]=l=>v.value=!v.value)},null,8,["name"])]),_:1},8,["modelValue","type"]),o.value?(g(),k("div",F,_(o.value),1)):b("",!0),i.value?(g(),k("div",M,_(i.value),1)):b("",!0)]),_:1}),s(B,{align:"right",class:"card-actions"},{default:n(()=>[s(A,{color:"primary",icon:"lock_reset",label:"Aggiorna password",loading:p.value,onClick:x},null,8,["loading"])]),_:1})]),_:1})])]),_:1}))}}),ee=L($,[["__scopeId","data-v-7f13b293"]]);export{ee as default}; diff --git a/backend/internal/http/static/spa/assets/ResetPasswordPage-DMBJffyk.css b/backend/internal/http/static/spa/assets/ResetPasswordPage-DMBJffyk.css new file mode 100644 index 0000000..2c7dbf1 --- /dev/null +++ b/backend/internal/http/static/spa/assets/ResetPasswordPage-DMBJffyk.css @@ -0,0 +1 @@ +.reset-password-page[data-v-7f13b293]{min-height:100vh;padding:24px 14px;background:radial-gradient(circle at 88% 15%,#f8dfd0 0%,transparent 32%),radial-gradient(circle at 15% 10%,#d9f6f2 0%,transparent 36%),linear-gradient(140deg,#f6f3ee,#edf8f8)}.page-shell[data-v-7f13b293]{max-width:640px;margin:0 auto}.reset-card[data-v-7f13b293]{border-radius:14px;background:#ffffffdb}.card-head[data-v-7f13b293]{padding-bottom:10px}.eyebrow[data-v-7f13b293]{margin:0;letter-spacing:.18em;text-transform:uppercase;color:#345569;font-size:11px;font-weight:700}.card-head h1[data-v-7f13b293]{margin:4px 0;font-family:Space Grotesk,sans-serif;font-size:clamp(1.5rem,2.6vw,2rem)}.subtitle[data-v-7f13b293]{margin:0;color:#536979}.card-body[data-v-7f13b293]{display:grid;gap:12px}.msg[data-v-7f13b293]{border-radius:10px;padding:10px 12px;font-size:.95rem}.msg-error[data-v-7f13b293]{background:#fdeceb;color:#8f2222}.msg-success[data-v-7f13b293]{background:#e9f8ef;color:#1f6a3f}.card-actions[data-v-7f13b293]{padding:8px 16px 16px} diff --git a/backend/internal/http/static/spa/assets/_plugin-vue_export-helper-DlAUqK2U.js b/backend/internal/http/static/spa/assets/_plugin-vue_export-helper-DlAUqK2U.js new file mode 100644 index 0000000..718edd3 --- /dev/null +++ b/backend/internal/http/static/spa/assets/_plugin-vue_export-helper-DlAUqK2U.js @@ -0,0 +1 @@ +const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _}; diff --git a/backend/internal/http/static/spa/assets/api-rhge6pbe.js b/backend/internal/http/static/spa/assets/api-rhge6pbe.js new file mode 100644 index 0000000..5a6e749 --- /dev/null +++ b/backend/internal/http/static/spa/assets/api-rhge6pbe.js @@ -0,0 +1 @@ +import{u as w,a as y}from"./use-dark-BRt0_t6X.js";import{s as T,y as S,A as E,p as h}from"./index-QUdrNkKl.js";const b={true:"inset",item:"item-inset","item-thumbnail":"item-thumbnail-inset"},f={xs:2,sm:4,md:8,lg:16,xl:24},A=T({name:"QSeparator",props:{...w,spaced:[Boolean,String],inset:[Boolean,String],vertical:Boolean,color:String,size:String},setup(r){const t=E(),e=y(r,t.proxy.$q),a=h(()=>r.vertical===!0?"vertical":"horizontal"),s=h(()=>` q-separator--${a.value}`),i=h(()=>r.inset!==!1?`${s.value}-${b[r.inset]}`:""),l=h(()=>`q-separator${s.value}${i.value}`+(r.color!==void 0?` bg-${r.color}`:"")+(e.value===!0?" q-separator--dark":"")),m=h(()=>{const c={};if(r.size!==void 0&&(c[r.vertical===!0?"width":"height"]=r.size),r.spaced!==!1){const u=r.spaced===!0?`${f.md}px`:r.spaced in f?`${f[r.spaced]}px`:r.spaced,o=r.vertical===!0?["Left","Right"]:["Top","Bottom"];c[`margin${o[0]}`]=c[`margin${o[1]}`]=u}return c});return()=>S("hr",{class:l.value,style:m.value,"aria-orientation":a.value})}});function v(r){return typeof r=="object"&&r!==null&&Object.prototype.hasOwnProperty.call(r,"data")&&Object.prototype.hasOwnProperty.call(r,"error")}function g(r){return r instanceof DOMException&&r.name==="AbortError"?new Error("api.error.timeouterror"):r instanceof TypeError&&r.message==="Failed to fetch"?new Error("api.error.connectionerror"):r instanceof Error?r:new Error(String(r))}class O{apiUrl;localStorage;constructor(t){this.apiUrl=t,this.localStorage=window.localStorage}async request(t,e,a,s=7e3,i=!1){const l={"Cache-Control":"no-cache"};if(i||(l["Content-Type"]="application/json"),this.localStorage){const o=this.localStorage.getItem("Auth-Token");o&&(l["Auth-Token"]=o)}const m=new AbortController,c=setTimeout(()=>m.abort(),s),u={method:t,cache:"no-store",mode:"cors",credentials:"include",headers:l,signal:m.signal};i?u.body=a:a!=null&&(u.body=JSON.stringify(a));try{const o=await fetch(e,u);if(!o.ok)throw new Error("api.error."+o.statusText);if(this.localStorage){const d=o.headers.get("Auth-Token");d&&this.localStorage.setItem("Auth-Token",d)}const p=await o.json();if(!v(p))throw new Error("api.error.wrongdatatype");if(p.error)throw new Error(p.error);return p}catch(o){throw g(o)}finally{clearTimeout(c)}}processResult(t){return typeof t.data!="object"?{data:t.data,error:null}:(t.data||(t.data={}),{data:t.data,error:null})}processError(t){const e=g(t);return e.message==="api.error.timeouterror"?(Object.defineProperty(e,"__api_error__",{value:e.message,writable:!1}),{data:null,error:e.message}):e.message==="api.error.connectionerror"?(Object.defineProperty(e,"__api_error__",{value:e.message,writable:!1}),{data:null,error:e.message}):{data:null,error:e.message}}async POST(t,e,a){try{const s=t.includes("/upload/"),i=await this.request("POST",this.apiUrl+t,e,a,s);return this.processResult(i)}catch(s){return this.processError(s)}}async GET(t,e){try{const a=await this.request("GET",this.apiUrl+t,null,e);return this.processResult(a)}catch(a){return this.processError(a)}}async UPLOAD(t,e,a){try{const s=await this.request("POST",this.apiUrl+t,e,a,!0);return this.processResult(s)}catch(s){return this.processError(s)}}}const n=new O("http://localhost:3000"),_=async()=>await n.GET("/maildebug"),j=async r=>await n.POST("/admin/users",r),k=async r=>await n.POST("/auth/register",r),q=async()=>await n.GET("/metrics"),x=async r=>await n.POST("/auth/login",r),C=async r=>await n.POST("/auth/refresh",r),z=async r=>await n.POST("/auth/password/forgot",r),D=async r=>await n.POST("/auth/password/reset",r),R=async()=>await n.GET("/health"),U=async()=>await n.GET("/auth/me");export{A as Q,C as a,j as b,U as c,k as d,_ as e,z as f,R as h,x as l,q as m,D as r}; diff --git a/backend/internal/http/static/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa-Dr0goTwe.woff b/backend/internal/http/static/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa-Dr0goTwe.woff new file mode 100644 index 0000000000000000000000000000000000000000..88fdf4d026a999aa0e5bd310635f5c5a43e716a1 GIT binary patch literal 164912 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 z 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 literal 0 HcmV?d00001 diff --git a/backend/internal/http/static/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-D-x-0Q06.woff2 b/backend/internal/http/static/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-D-x-0Q06.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f1fd22ff1c117e187f088de6746eb1f82187a992 GIT binary patch literal 128616 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�{V5Ux10YTPcjn|+#u(mL`-~}?0-nmK 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�TBx-D<>G7m^i?qG-6W%>!-QfH!oA6h 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 Nw1oHH?|-Rs0009$rq=)f literal 0 HcmV?d00001 diff --git a/backend/internal/http/static/spa/assets/format-GjIIeqP4.js b/backend/internal/http/static/spa/assets/format-GjIIeqP4.js new file mode 100644 index 0000000..7f9aa36 --- /dev/null +++ b/backend/internal/http/static/spa/assets/format-GjIIeqP4.js @@ -0,0 +1 @@ +import{ab as l}from"./index-QUdrNkKl.js";function r(){if(window.getSelection!==void 0){const t=window.getSelection();t.empty!==void 0?t.empty():t.removeAllRanges!==void 0&&(t.removeAllRanges(),l.is.mobile!==!0&&t.addRange(document.createRange()))}else document.selection!==void 0&&document.selection.empty()}function a(t,e,o){return o<=e?e:Math.min(o,Math.max(e,t))}function s(t,e,o){if(o<=e)return e;const i=o-e+1;let n=e+(t-e)%i;return n{const s=o({locale:c(n()),messages:l});e.use(s)});export{d as default}; diff --git a/backend/internal/http/static/spa/assets/index-BQveqNql.css b/backend/internal/http/static/spa/assets/index-BQveqNql.css new file mode 100644 index 0000000..476cb14 --- /dev/null +++ b/backend/internal/http/static/spa/assets/index-BQveqNql.css @@ -0,0 +1 @@ +@charset "UTF-8";@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-stretch:normal;src:url(/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbFmUiAw-yBxCyPWP.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-stretch:normal;src:url(/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmUiAw-CNa4tw4G.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-stretch:normal;src:url(/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmUiAw-3fZ6d7DD.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-stretch:normal;src:url(/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAw-CHKg1YId.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-stretch:normal;src:url(/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjalmUiAw-BepdiOnY.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-stretch:normal;src:url(/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZtalmUiAw-4ZhHFPot.woff) format("woff")}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;font-display:block;src:url(/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-D-x-0Q06.woff2) format("woff2"),url(/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa-Dr0goTwe.woff) format("woff")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}*,*:before,*:after{box-sizing:inherit;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent}html,body,#q-app{width:100%;direction:ltr}body.platform-ios.within-iframe,body.platform-ios.within-iframe #q-app{width:100px;min-width:100%}html,body{margin:0;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}img{border-style:none}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;font-family:inherit;margin:0}optgroup{font-weight:700}button,input,select{overflow:visible;text-transform:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button:-moz-focusring,input:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.q-icon{line-height:1;width:1em;height:1em;flex-shrink:0;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;text-align:center;position:relative;box-sizing:content-box;fill:currentColor}.q-icon:before,.q-icon:after{width:100%;height:100%;display:flex!important;align-items:center;justify-content:center}.q-icon>svg,.q-icon>img{width:100%;height:100%}.q-icon>div{box-sizing:border-box}.q-icon,.material-icons,.material-icons-outlined,.material-icons-round,.material-icons-sharp,.material-symbols-outlined,.material-symbols-rounded,.material-symbols-sharp{-webkit-user-select:none;user-select:none;cursor:inherit;font-size:inherit;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.q-panel{height:100%;width:100%}.q-panel>div{height:100%;width:100%}.q-panel-parent{overflow:hidden;position:relative}.q-loading-bar{position:fixed;z-index:9998;transition:transform .5s cubic-bezier(0,0,.2,1),opacity .5s;background:#f44336}.q-loading-bar--top{left:0;right:0;top:0;width:100%}.q-loading-bar--bottom{left:0;right:0;bottom:0;width:100%}.q-loading-bar--right{top:0;bottom:0;right:0;height:100%}.q-loading-bar--left{top:0;bottom:0;left:0;height:100%}.q-avatar{position:relative;vertical-align:middle;display:inline-block;border-radius:50%;font-size:48px;height:1em;width:1em}.q-avatar__content{font-size:.5em;line-height:.5em}.q-avatar__content,.q-avatar img:not(.q-icon):not(.q-img__image){border-radius:inherit;height:inherit;width:inherit}.q-avatar--square{border-radius:0}.q-badge{background-color:var(--q-primary);color:#fff;padding:2px 6px;border-radius:4px;font-size:12px;line-height:1;min-height:12px;font-weight:400;vertical-align:baseline}.q-badge--single-line{white-space:nowrap}.q-badge--multi-line{word-break:break-all;word-wrap:break-word}.q-badge--floating{position:absolute;top:-4px;right:-3px;cursor:inherit}.q-badge--transparent{opacity:.8}.q-badge--outline{background-color:transparent;border:1px solid currentColor}.q-badge--rounded{border-radius:1em}.q-banner{min-height:54px;padding:8px 16px;background:#fff}.q-banner--top-padding{padding-top:14px}.q-banner__avatar{min-width:1px!important}.q-banner__avatar>.q-avatar{font-size:46px}.q-banner__avatar>.q-icon{font-size:40px}.q-banner__avatar:not(:empty)+.q-banner__content{padding-left:16px}.q-banner__actions.col-auto{padding-left:16px}.q-banner__actions.col-all .q-btn-item{margin:4px 0 0 4px}.q-banner--dense{min-height:32px;padding:8px}.q-banner--dense.q-banner--top-padding{padding-top:12px}.q-banner--dense .q-banner__avatar>.q-avatar,.q-banner--dense .q-banner__avatar>.q-icon{font-size:28px}.q-banner--dense .q-banner__avatar:not(:empty)+.q-banner__content{padding-left:8px}.q-banner--dense .q-banner__actions.col-auto{padding-left:8px}.q-bar{background:#0003}.q-bar>.q-icon{margin-left:2px}.q-bar>div,.q-bar>div+.q-icon{margin-left:8px}.q-bar>.q-btn{margin-left:2px}.q-bar>.q-icon:first-child,.q-bar>.q-btn:first-child,.q-bar>div:first-child{margin-left:0}.q-bar--standard{padding:0 12px;height:32px;font-size:18px}.q-bar--standard>div{font-size:16px}.q-bar--standard .q-btn{font-size:11px}.q-bar--dense{padding:0 8px;height:24px;font-size:14px}.q-bar--dense .q-btn{font-size:8px}.q-bar--dark{background:#ffffff26}.q-breadcrumbs__el{color:inherit}.q-breadcrumbs__el-icon{font-size:125%}.q-breadcrumbs__el-icon--with-label{margin-right:8px}[dir=rtl] .q-breadcrumbs__separator .q-icon{transform:scaleX(-1)}.q-btn{display:inline-flex;flex-direction:column;align-items:stretch;position:relative;outline:0;border:0;vertical-align:middle;font-size:14px;line-height:1.715em;text-decoration:none;color:inherit;background:transparent;font-weight:500;text-transform:uppercase;text-align:center;width:auto;height:auto;cursor:default;padding:4px 16px;min-height:2.572em}.q-btn .q-icon,.q-btn .q-spinner{font-size:1.715em}.q-btn.disabled{opacity:.7!important}.q-btn:before{content:"";display:block;position:absolute;left:0;right:0;top:0;bottom:0;border-radius:inherit;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}.q-btn--actionable{cursor:pointer}.q-btn--actionable.q-btn--standard:before{transition:box-shadow .3s cubic-bezier(.25,.8,.5,1)}.q-btn--actionable.q-btn--standard:active:before,.q-btn--actionable.q-btn--standard.q-btn--active:before{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.q-btn--no-uppercase{text-transform:none}.q-btn--rectangle{border-radius:3px}.q-btn--outline{background:transparent!important}.q-btn--outline:before{border:1px solid currentColor}.q-btn--push{border-radius:7px}.q-btn--push:before{border-bottom:3px solid rgba(0,0,0,.15)}.q-btn--push.q-btn--actionable{transition:transform .3s cubic-bezier(.25,.8,.5,1)}.q-btn--push.q-btn--actionable:before{transition:border-width .3s cubic-bezier(.25,.8,.5,1)}.q-btn--push.q-btn--actionable:active,.q-btn--push.q-btn--actionable.q-btn--active{transform:translateY(2px)}.q-btn--push.q-btn--actionable:active:before,.q-btn--push.q-btn--actionable.q-btn--active:before{border-bottom-width:0}.q-btn--rounded{border-radius:28px}.q-btn--round{border-radius:50%;padding:0;min-width:3em;min-height:3em}.q-btn--square{border-radius:0}.q-btn--flat:before,.q-btn--outline:before,.q-btn--unelevated:before{box-shadow:none}.q-btn--dense{padding:.285em;min-height:2em}.q-btn--dense.q-btn--round{padding:0;min-height:2.4em;min-width:2.4em}.q-btn--dense .on-left{margin-right:6px}.q-btn--dense .on-right{margin-left:6px}.q-btn--fab .q-icon,.q-btn--fab-mini .q-icon{font-size:24px}.q-btn--fab{padding:16px;min-height:56px;min-width:56px}.q-btn--fab .q-icon{margin:auto}.q-btn--fab-mini{padding:8px;min-height:40px;min-width:40px}.q-btn__content{transition:opacity .3s;z-index:0}.q-btn__content--hidden{opacity:0;pointer-events:none}.q-btn__progress{border-radius:inherit;z-index:0}.q-btn__progress-indicator{z-index:-1;transform:translate(-100%);background:#ffffff40}.q-btn__progress--dark .q-btn__progress-indicator{background:#0003}.q-btn--flat .q-btn__progress-indicator,.q-btn--outline .q-btn__progress-indicator{opacity:.2;background:currentColor}.q-btn-dropdown--split .q-btn-dropdown__arrow-container{padding:0 4px}.q-btn-dropdown--split .q-btn-dropdown__arrow-container.q-btn--outline{border-left:1px solid currentColor}.q-btn-dropdown--split .q-btn-dropdown__arrow-container:not(.q-btn--outline){border-left:1px solid rgba(255,255,255,.3)}.q-btn-dropdown--simple *+.q-btn-dropdown__arrow{margin-left:8px}.q-btn-dropdown__arrow{transition:transform .28s}.q-btn-dropdown--current{flex-grow:1}.q-btn-group{border-radius:3px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;vertical-align:middle}.q-btn-group>.q-btn-item{border-radius:inherit;align-self:stretch}.q-btn-group>.q-btn-item:before{box-shadow:none}.q-btn-group>.q-btn-item .q-badge--floating{right:0}.q-btn-group>.q-btn-group{box-shadow:none}.q-btn-group>.q-btn-group:first-child>.q-btn:first-child{border-top-left-radius:inherit;border-bottom-left-radius:inherit}.q-btn-group>.q-btn-group:last-child>.q-btn:last-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}.q-btn-group>.q-btn-group:not(:first-child)>.q-btn:first-child:before{border-left:0}.q-btn-group>.q-btn-group:not(:last-child)>.q-btn:last-child:before{border-right:0}.q-btn-group>.q-btn-item:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.q-btn-group>.q-btn-item:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.q-btn-group>.q-btn-item.q-btn--standard:before{z-index:-1}.q-btn-group--push{border-radius:7px}.q-btn-group--push>.q-btn--push.q-btn--actionable{transform:none}.q-btn-group--push>.q-btn--push.q-btn--actionable .q-btn__content{transition:margin-top .3s cubic-bezier(.25,.8,.5,1),margin-bottom .3s cubic-bezier(.25,.8,.5,1)}.q-btn-group--push>.q-btn--push.q-btn--actionable:active .q-btn__content,.q-btn-group--push>.q-btn--push.q-btn--actionable.q-btn--active .q-btn__content{margin-top:2px;margin-bottom:-2px}.q-btn-group--rounded{border-radius:28px}.q-btn-group--square{border-radius:0}.q-btn-group--flat,.q-btn-group--outline,.q-btn-group--unelevated{box-shadow:none}.q-btn-group--outline>.q-separator{display:none}.q-btn-group--outline>.q-btn-item+.q-btn-item:before{border-left:0}.q-btn-group--outline>.q-btn-item:not(:last-child):before{border-right:0}.q-btn-group--stretch{align-self:stretch;border-radius:0}.q-btn-group--glossy>.q-btn-item{background-image:linear-gradient(to bottom,#ffffff4d,#fff0 50%,#0000001f 51%,#0000000a)!important}.q-btn-group--spread>.q-btn-group{display:flex!important}.q-btn-group--spread>.q-btn-item,.q-btn-group--spread>.q-btn-group>.q-btn-item:not(.q-btn-dropdown__arrow-container){width:auto;min-width:0;max-width:100%;flex:10000 1 0%}.q-btn-toggle{position:relative}.q-card{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;border-radius:4px;vertical-align:top;background:#fff;position:relative}.q-card>div:not(.q--avoid-card-border),.q-card>img:not(.q--avoid-card-border){border-radius:0}.q-card>div:nth-child(1 of:not(.q--avoid-card-border)),.q-card>img:nth-child(1 of:not(.q--avoid-card-border)){border-top:0;border-top-left-radius:inherit;border-top-right-radius:inherit}.q-card>div:nth-last-child(1 of:not(.q--avoid-card-border)),.q-card>img:nth-last-child(1 of:not(.q--avoid-card-border)){border-bottom:0;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.q-card>div:not(.q--avoid-card-border){border-left:0;border-right:0;box-shadow:none}.q-card--bordered{border:1px solid rgba(0,0,0,.12)}.q-card--dark{border-color:#ffffff47;box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-card__section{position:relative}.q-card__section--vert{padding:16px}.q-card__section--horiz>div:not(.q--avoid-card-border),.q-card__section--horiz>img:not(.q--avoid-card-border){border-radius:0}.q-card__section--horiz>div:nth-child(1 of:not(.q--avoid-card-border)),.q-card__section--horiz>img:nth-child(1 of:not(.q--avoid-card-border)){border-top-left-radius:inherit;border-bottom-left-radius:inherit}.q-card__section--horiz>div:nth-last-child(1 of:not(.q--avoid-card-border)),.q-card__section--horiz>img:nth-last-child(1 of:not(.q--avoid-card-border)){border-top-right-radius:inherit;border-bottom-right-radius:inherit}.q-card__section--horiz>div:not(.q--avoid-card-border){border-top:0;border-bottom:0;box-shadow:none}.q-card__actions{padding:8px;align-items:center}.q-card__actions .q-btn--rectangle{padding:0 8px}.q-card__actions--horiz>.q-btn-item+.q-btn-item,.q-card__actions--horiz>.q-btn-group+.q-btn-item,.q-card__actions--horiz>.q-btn-item+.q-btn-group{margin-left:8px}.q-card__actions--vert>.q-btn-item.q-btn--round{align-self:center}.q-card__actions--vert>.q-btn-item+.q-btn-item,.q-card__actions--vert>.q-btn-group+.q-btn-item,.q-card__actions--vert>.q-btn-item+.q-btn-group{margin-top:4px}.q-card__actions--vert>.q-btn-group>.q-btn-item{flex-grow:1}.q-card>img{display:block;width:100%;max-width:100%;border:0}.q-carousel{background-color:#fff;height:400px}.q-carousel__slide{min-height:100%;background-size:cover;background-position:50%}.q-carousel__slide,.q-carousel .q-carousel--padding{padding:16px}.q-carousel__slides-container{height:100%}.q-carousel__control{color:#fff}.q-carousel__arrow{pointer-events:none}.q-carousel__arrow .q-icon{font-size:28px}.q-carousel__arrow .q-btn{pointer-events:all}.q-carousel__prev-arrow--horizontal,.q-carousel__next-arrow--horizontal{top:16px;bottom:16px}.q-carousel__prev-arrow--horizontal{left:16px}.q-carousel__next-arrow--horizontal{right:16px}.q-carousel__prev-arrow--vertical,.q-carousel__next-arrow--vertical{left:16px;right:16px}.q-carousel__prev-arrow--vertical{top:16px}.q-carousel__next-arrow--vertical{bottom:16px}.q-carousel__navigation--top,.q-carousel__navigation--bottom{left:16px;right:16px;overflow-x:auto;overflow-y:hidden}.q-carousel__navigation--top{top:16px}.q-carousel__navigation--bottom{bottom:16px}.q-carousel__navigation--left,.q-carousel__navigation--right{top:16px;bottom:16px;overflow-x:hidden;overflow-y:auto}.q-carousel__navigation--left>.q-carousel__navigation-inner,.q-carousel__navigation--right>.q-carousel__navigation-inner{flex-direction:column}.q-carousel__navigation--left{left:16px}.q-carousel__navigation--right{right:16px}.q-carousel__navigation-inner{flex:1 1 auto}.q-carousel__navigation .q-btn{margin:6px 4px;padding:5px}.q-carousel__navigation-icon--inactive{opacity:.7}.q-carousel .q-carousel__thumbnail{margin:2px;height:50px;width:auto;display:inline-block;cursor:pointer;border:1px solid transparent;border-radius:4px;vertical-align:middle;opacity:.7;transition:opacity .3s}.q-carousel .q-carousel__thumbnail:hover,.q-carousel .q-carousel__thumbnail--active{opacity:1}.q-carousel .q-carousel__thumbnail--active{border-color:currentColor;cursor:default}.q-carousel--navigation-top.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-top .q-carousel--padding,.q-carousel--arrows-vertical.q-carousel--with-padding .q-carousel__slide,.q-carousel--arrows-vertical .q-carousel--padding{padding-top:60px}.q-carousel--navigation-bottom.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-bottom .q-carousel--padding,.q-carousel--arrows-vertical.q-carousel--with-padding .q-carousel__slide,.q-carousel--arrows-vertical .q-carousel--padding{padding-bottom:60px}.q-carousel--navigation-left.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-left .q-carousel--padding,.q-carousel--arrows-horizontal.q-carousel--with-padding .q-carousel__slide,.q-carousel--arrows-horizontal .q-carousel--padding{padding-left:60px}.q-carousel--navigation-right.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-right .q-carousel--padding,.q-carousel--arrows-horizontal.q-carousel--with-padding .q-carousel__slide,.q-carousel--arrows-horizontal .q-carousel--padding{padding-right:60px}.q-carousel.fullscreen{height:100%}.q-message-name{font-size:small}.q-message-label{margin:24px 0;text-align:center;font-size:small}.q-message-stamp{color:inherit;margin-top:4px;opacity:.6;display:none;font-size:small}.q-message-avatar{border-radius:50%;width:48px;height:48px;min-width:48px}.q-message{margin-bottom:8px}.q-message:first-child .q-message-label{margin-top:0}.q-message-avatar--received{margin-right:8px}.q-message-text--received{color:#81c784;border-radius:4px 4px 4px 0}.q-message-text--received:last-child:before{right:100%;border-right:0 solid transparent;border-left:8px solid transparent;border-bottom:8px solid currentColor}.q-message-text-content--received{color:#000}.q-message-name--sent{text-align:right}.q-message-avatar--sent{margin-left:8px}.q-message-container--sent{flex-direction:row-reverse}.q-message-text--sent{color:#e0e0e0;border-radius:4px 4px 0}.q-message-text--sent:last-child:before{left:100%;border-left:0 solid transparent;border-right:8px solid transparent;border-bottom:8px solid currentColor}.q-message-text-content--sent{color:#000}.q-message-text{background:currentColor;padding:8px;line-height:1.2;word-break:break-word;position:relative}.q-message-text+.q-message-text{margin-top:3px}.q-message-text:last-child{min-height:48px}.q-message-text:last-child .q-message-stamp{display:block}.q-message-text:last-child:before{content:"";position:absolute;bottom:0;width:0;height:0}.q-checkbox{vertical-align:middle}.q-checkbox__native{width:1px;height:1px}.q-checkbox__bg,.q-checkbox__icon-container{-webkit-user-select:none;user-select:none}.q-checkbox__bg{top:25%;left:25%;width:50%;height:50%;border:2px solid currentColor;border-radius:2px;transition:background .22s cubic-bezier(0,0,.2,1) 0ms;-webkit-print-color-adjust:exact}.q-checkbox__icon{color:currentColor;font-size:.5em}.q-checkbox__svg{color:#fff}.q-checkbox__truthy{stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.78334;stroke-dasharray:29.78334}.q-checkbox__indet{fill:currentColor;transform-origin:50% 50%;transform:rotate(-280deg) scale(0)}.q-checkbox__inner{font-size:40px;width:1em;min-width:1em;height:1em;outline:0;border-radius:50%;color:#0000008a}.q-checkbox__inner--truthy,.q-checkbox__inner--indet{color:var(--q-primary)}.q-checkbox__inner--truthy .q-checkbox__bg,.q-checkbox__inner--indet .q-checkbox__bg{background:currentColor}.q-checkbox__inner--truthy path{stroke-dashoffset:0;transition:stroke-dashoffset .18s cubic-bezier(.4,0,.6,1) 0ms}.q-checkbox__inner--indet .q-checkbox__indet{transform:rotate(0) scale(1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}.q-checkbox.disabled{opacity:.75!important}.q-checkbox--dark .q-checkbox__inner{color:#ffffffb3}.q-checkbox--dark .q-checkbox__inner:before{opacity:.32!important}.q-checkbox--dark .q-checkbox__inner--truthy,.q-checkbox--dark .q-checkbox__inner--indet{color:var(--q-primary)}.q-checkbox--dense .q-checkbox__inner{width:.5em;min-width:.5em;height:.5em}.q-checkbox--dense .q-checkbox__bg{left:5%;top:5%;width:90%;height:90%}.q-checkbox--dense .q-checkbox__label{padding-left:.5em}.q-checkbox--dense.reverse .q-checkbox__label{padding-left:0;padding-right:.5em}body.desktop .q-checkbox:not(.disabled) .q-checkbox__inner:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;opacity:.12;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1)}body.desktop .q-checkbox:not(.disabled):focus .q-checkbox__inner:before,body.desktop .q-checkbox:not(.disabled):hover .q-checkbox__inner:before{transform:scaleZ(1)}body.desktop .q-checkbox--dense:not(.disabled):focus .q-checkbox__inner:before,body.desktop .q-checkbox--dense:not(.disabled):hover .q-checkbox__inner:before{transform:scale3d(1.4,1.4,1)}.q-chip{vertical-align:middle;border-radius:16px;outline:0;position:relative;height:2em;max-width:100%;margin:4px;background:#e0e0e0;color:#000000de;font-size:14px;padding:.5em .9em}.q-chip--colored .q-chip__icon,.q-chip--dark .q-chip__icon{color:inherit}.q-chip .q-avatar{font-size:2em;margin-left:-.45em;margin-right:.2em;border-radius:16px}.q-chip--outline{background:transparent!important;border:1px solid currentColor}.q-chip--outline .q-avatar{margin-left:calc(-.45em - 1px)}.q-chip--selected .q-avatar{display:none}.q-chip__icon{color:#0000008a;font-size:1.5em;margin:-.2em}.q-chip__icon--left{margin-right:.2em}.q-chip__icon--right{margin-left:.2em}.q-chip__icon--remove{margin-left:.1em;margin-right:-.5em;opacity:.6;outline:0}.q-chip__icon--remove:hover,.q-chip__icon--remove:focus{opacity:1}.q-chip__content{white-space:nowrap}.q-chip--dense{border-radius:12px;padding:0 .4em;height:1.5em}.q-chip--dense .q-avatar{font-size:1.5em;margin-left:-.27em;margin-right:.1em;border-radius:12px}.q-chip--dense .q-chip__icon{font-size:1.25em}.q-chip--dense .q-chip__icon--left{margin-right:.195em}.q-chip--dense .q-chip__icon--remove{margin-right:-.25em}.q-chip--square{border-radius:4px}.q-chip--square .q-avatar{border-radius:3px 0 0 3px}body.desktop .q-chip--clickable:focus{box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f}body.desktop.body--dark .q-chip--clickable:focus{box-shadow:0 1px 3px #fff3,0 1px 1px #ffffff24,0 2px 1px -1px #ffffff1f}.q-circular-progress{display:inline-block;position:relative;vertical-align:middle;width:1em;height:1em;line-height:1}.q-circular-progress.q-focusable{border-radius:50%}.q-circular-progress__svg{width:100%;height:100%}.q-circular-progress__text{font-size:.25em}.q-circular-progress--indeterminate .q-circular-progress__svg{transform-origin:50% 50%;animation:q-spin 2s linear infinite}.q-circular-progress--indeterminate .q-circular-progress__circle{stroke-dasharray:1 400;stroke-dashoffset:0;animation:q-circular-progress-circle 1.5s ease-in-out infinite}@keyframes q-circular-progress-circle{0%{stroke-dasharray:1,400;stroke-dashoffset:0}50%{stroke-dasharray:400,400;stroke-dashoffset:-100}to{stroke-dasharray:400,400;stroke-dashoffset:-300}}.q-color-picker{overflow:hidden;background:#fff;max-width:350px;vertical-align:top;min-width:180px;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}.q-color-picker .q-tab{padding:0!important}.q-color-picker--bordered{border:1px solid rgba(0,0,0,.12)}.q-color-picker__header-tabs{height:32px}.q-color-picker__header input{line-height:24px;border:0}.q-color-picker__header .q-tab{min-height:32px!important;height:32px!important}.q-color-picker__header .q-tab--inactive{background:linear-gradient(to top,#0000004d,#00000026 25%,#0000001a)}.q-color-picker__error-icon{bottom:2px;right:2px;font-size:24px;opacity:0;transition:opacity .3s ease-in}.q-color-picker__header-content{position:relative;background:#fff}.q-color-picker__header-content--light{color:#000}.q-color-picker__header-content--dark{color:#fff}.q-color-picker__header-content--dark .q-tab--inactive:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#fff3}.q-color-picker__header-banner{height:36px}.q-color-picker__header-bg{background:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAH0lEQVQoU2NkYGAwZkAFZ5G5jPRRgOYEVDeB3EBjBQBOZwTVugIGyAAAAABJRU5ErkJggg==)!important}.q-color-picker__footer{height:36px}.q-color-picker__footer .q-tab{min-height:36px!important;height:36px!important}.q-color-picker__footer .q-tab--inactive{background:linear-gradient(to bottom,#0000004d,#00000026 25%,#0000001a)}.q-color-picker__spectrum{width:100%;height:100%}.q-color-picker__spectrum-tab{padding:0!important}.q-color-picker__spectrum-white{background:linear-gradient(to right,#fff,#fff0)}.q-color-picker__spectrum-black{background:linear-gradient(to top,#000,#0000)}.q-color-picker__spectrum-circle{width:10px;height:10px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;border-radius:50%;transform:translate(-5px,-5px)}.q-color-picker__hue .q-slider__track{background:linear-gradient(to right,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)!important;opacity:1}.q-color-picker__alpha .q-slider__track-container{padding-top:0}.q-color-picker__alpha .q-slider__track:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(90deg,#fff0,#757575)}.q-color-picker__sliders{padding:0 16px}.q-color-picker__sliders .q-slider__thumb{color:#424242}.q-color-picker__sliders .q-slider__thumb path{stroke-width:2px;fill:transparent}.q-color-picker__sliders .q-slider--active path{stroke-width:3px}.q-color-picker__tune-tab .q-slider{margin-left:18px;margin-right:18px}.q-color-picker__tune-tab input{font-size:11px;border:1px solid #e0e0e0;border-radius:4px;width:3.5em}.q-color-picker__palette-tab{padding:0!important}.q-color-picker__palette-rows--editable .q-color-picker__cube{cursor:pointer}.q-color-picker__cube{padding-bottom:10%;width:10%!important}.q-color-picker input{color:inherit;background:transparent;outline:0;text-align:center}.q-color-picker .q-tabs{overflow:hidden}.q-color-picker .q-tab--active{box-shadow:0 0 14px 3px #0003}.q-color-picker .q-tab--active .q-focus-helper,.q-color-picker .q-tab__indicator{display:none}.q-color-picker .q-tab-panels{background:inherit}.q-color-picker--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-color-picker--dark .q-color-picker__tune-tab input{border:1px solid rgba(255,255,255,.3)}.q-color-picker--dark .q-slider__thumb{color:#fafafa}.q-date{display:inline-flex;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;border-radius:4px;background:#fff;width:290px;min-width:290px;max-width:100%}.q-date--bordered{border:1px solid rgba(0,0,0,.12)}.q-date__header{border-top-left-radius:inherit;color:#fff;background-color:var(--q-primary);padding:16px}.q-date__actions{padding:0 16px 16px}.q-date__content,.q-date__main{outline:0}.q-date__content .q-btn{font-weight:400}.q-date__header-link{opacity:.64;outline:0;transition:opacity .3s ease-out}.q-date__header-link--active,.q-date__header-link:hover,.q-date__header-link:focus{opacity:1}.q-date__header-subtitle{font-size:14px;line-height:1.75;letter-spacing:.00938em}.q-date__header-title-label{font-size:24px;line-height:1.2;letter-spacing:.00735em}.q-date__view{height:100%;width:100%;min-height:290px;padding:16px}.q-date__navigation{height:12.5%}.q-date__navigation>div:first-child{width:8%;min-width:24px;justify-content:flex-end}.q-date__navigation>div:last-child{width:8%;min-width:24px;justify-content:flex-start}.q-date__calendar-weekdays{height:12.5%}.q-date__calendar-weekdays>div{opacity:.38;font-size:12px}.q-date__calendar-item{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:14.285%!important;height:12.5%!important;position:relative;padding:1px}.q-date__calendar-item:after{content:"";position:absolute;pointer-events:none;top:1px;right:0;bottom:1px;left:0;border-style:dashed;border-color:transparent;border-width:1px}.q-date__calendar-item>div,.q-date__calendar-item button{width:30px;height:30px;border-radius:50%}.q-date__calendar-item>div{line-height:30px;text-align:center}.q-date__calendar-item>button{line-height:22px}.q-date__calendar-item--out{opacity:.18}.q-date__calendar-item--fill{visibility:hidden}.q-date__range:before,.q-date__range-from:before,.q-date__range-to:before{content:"";background-color:currentColor;position:absolute;top:1px;bottom:1px;left:0;right:0;opacity:.3}.q-date__range:nth-child(7n-6):before,.q-date__range-from:nth-child(7n-6):before,.q-date__range-to:nth-child(7n-6):before{border-top-left-radius:0;border-bottom-left-radius:0}.q-date__range:nth-child(7n):before,.q-date__range-from:nth-child(7n):before,.q-date__range-to:nth-child(7n):before{border-top-right-radius:0;border-bottom-right-radius:0}.q-date__range-from:before{left:50%}.q-date__range-to:before{right:50%}.q-date__edit-range:after{border-color:currentColor transparent}.q-date__edit-range:nth-child(7n-6):after{border-top-left-radius:0;border-bottom-left-radius:0}.q-date__edit-range:nth-child(7n):after{border-top-right-radius:0;border-bottom-right-radius:0}.q-date__edit-range-from:after,.q-date__edit-range-from-to:after{left:4px;border-left-color:currentColor;border-top-color:currentColor;border-bottom-color:currentColor;border-top-left-radius:28px;border-bottom-left-radius:28px}.q-date__edit-range-to:after,.q-date__edit-range-from-to:after{right:4px;border-right-color:currentColor;border-top-color:currentColor;border-bottom-color:currentColor;border-top-right-radius:28px;border-bottom-right-radius:28px}.q-date__calendar-days-container{height:75%;min-height:192px}.q-date__calendar-days>div{height:16.66%!important}.q-date__event{position:absolute;bottom:2px;left:50%;height:5px;width:8px;border-radius:5px;background-color:var(--q-secondary);transform:translate3d(-50%,0,0)}.q-date__today{box-shadow:0 0 1px 0 currentColor}.q-date__years-content{padding:0 8px}.q-date__years-item,.q-date__months-item{flex:0 0 33.3333%}.q-date.disabled .q-date__header,.q-date.disabled .q-date__content,.q-date--readonly .q-date__header,.q-date--readonly .q-date__content{pointer-events:none}.q-date--readonly .q-date__navigation{display:none}.q-date--portrait{flex-direction:column}.q-date--portrait-standard .q-date__content{height:calc(100% - 86px)}.q-date--portrait-standard .q-date__header{border-top-right-radius:inherit;height:86px}.q-date--portrait-standard .q-date__header-title{align-items:center;height:30px}.q-date--portrait-minimal .q-date__content{height:100%}.q-date--landscape{flex-direction:row;align-items:stretch;min-width:420px}.q-date--landscape>div{display:flex;flex-direction:column}.q-date--landscape .q-date__content{height:100%}.q-date--landscape-standard{min-width:420px}.q-date--landscape-standard .q-date__header{border-bottom-left-radius:inherit;min-width:110px;width:110px}.q-date--landscape-standard .q-date__header-title{flex-direction:column}.q-date--landscape-standard .q-date__header-today{margin-top:12px;margin-left:-8px}.q-date--landscape-minimal{width:310px}.q-date--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f;border-color:#ffffff47}.q-dialog__title{font-size:1.25rem;font-weight:500;line-height:1.6;letter-spacing:.0125em}.q-dialog__progress{font-size:4rem}.q-dialog__inner{outline:0}.q-dialog__inner>div{pointer-events:all;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position;border-radius:4px}.q-dialog__inner--square>div{border-radius:0!important}.q-dialog__inner>.q-card>.q-card__actions .q-btn--rectangle{min-width:64px}.q-dialog__inner--minimized{padding:24px}.q-dialog__inner--minimized>div{max-height:calc(100vh - 48px)}.q-dialog__inner--maximized>div{height:100%;width:100%;max-height:100vh;max-width:100vw;border-radius:0!important;top:0!important;left:0!important}.q-dialog__inner--top,.q-dialog__inner--bottom{padding-top:0!important;padding-bottom:0!important}.q-dialog__inner--right,.q-dialog__inner--left{padding-right:0!important;padding-left:0!important}.q-dialog__inner--left:not(.q-dialog__inner--animating)>div,.q-dialog__inner--top:not(.q-dialog__inner--animating)>div{border-top-left-radius:0}.q-dialog__inner--right:not(.q-dialog__inner--animating)>div,.q-dialog__inner--top:not(.q-dialog__inner--animating)>div{border-top-right-radius:0}.q-dialog__inner--left:not(.q-dialog__inner--animating)>div,.q-dialog__inner--bottom:not(.q-dialog__inner--animating)>div{border-bottom-left-radius:0}.q-dialog__inner--right:not(.q-dialog__inner--animating)>div,.q-dialog__inner--bottom:not(.q-dialog__inner--animating)>div{border-bottom-right-radius:0}.q-dialog__inner--fullwidth>div{width:100%!important;max-width:100%!important}.q-dialog__inner--fullheight>div{height:100%!important;max-height:100%!important}.q-dialog__backdrop{z-index:-1;pointer-events:all;outline:0;background:#0006}body.platform-ios .q-dialog__inner--minimized>div,body.platform-android:not(.native-mobile) .q-dialog__inner--minimized>div{max-height:calc(100vh - 108px)}body.q-ios-padding .q-dialog__inner{padding-top:20px!important;padding-top:env(safe-area-inset-top)!important;padding-bottom:env(safe-area-inset-bottom)!important}body.q-ios-padding .q-dialog__inner>div{max-height:calc(100vh - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important}@media(max-width:599.98px){.q-dialog__inner--top,.q-dialog__inner--bottom{padding-left:0;padding-right:0}.q-dialog__inner--top>div,.q-dialog__inner--bottom>div{width:100%!important}}@media(min-width:600px){.q-dialog__inner--minimized>div{max-width:560px}}.q-body--dialog{overflow:hidden}.q-editor{border:1px solid rgba(0,0,0,.12);border-radius:4px;background-color:#fff}.q-editor.disabled{border-style:dashed}.q-editor>div:first-child,.q-editor__toolbars-container,.q-editor__toolbars-container>div:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-editor__content{outline:0;padding:10px;min-height:10em;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;overflow:auto;max-width:100%}.q-editor__content pre{white-space:pre-wrap}.q-editor__content hr{border:0;outline:0;margin:1px;height:1px;background:#0000001f}.q-editor__content:empty:not(:focus):before{content:attr(placeholder);opacity:.7}.q-editor__toolbar{border-bottom:1px solid rgba(0,0,0,.12);min-height:32px}.q-editor__toolbars-container{max-width:100%}.q-editor .q-btn{margin:4px}.q-editor__toolbar-group{position:relative;margin:0 4px}.q-editor__toolbar-group+.q-editor__toolbar-group:before{content:"";position:absolute;left:-4px;top:4px;bottom:4px;width:1px;background:#0000001f}.q-editor__link-input{color:inherit;text-decoration:none;text-transform:none;border:none;border-radius:0;background:none;outline:0}.q-editor--flat,.q-editor--flat .q-editor__toolbar{border:0}.q-editor--dense .q-editor__toolbar-group{display:flex;align-items:center;flex-wrap:nowrap}.q-editor--dark{border-color:#ffffff47}.q-editor--dark .q-editor__content hr{background:#ffffff47}.q-editor--dark .q-editor__toolbar{border-color:#ffffff47}.q-editor--dark .q-editor__toolbar-group+.q-editor__toolbar-group:before{background:#ffffff47}.q-expansion-item__border{opacity:0}.q-expansion-item__toggle-icon{position:relative;transition:transform .3s}.q-expansion-item__toggle-icon--rotated{transform:rotate(180deg)}.q-expansion-item__toggle-focus{width:1em!important;height:1em!important;position:relative!important}.q-expansion-item__toggle-focus+.q-expansion-item__toggle-icon{margin-top:-1em}.q-expansion-item--standard.q-expansion-item--expanded>div>.q-expansion-item__border{opacity:1}.q-expansion-item--popup{transition:padding .5s}.q-expansion-item--popup>.q-expansion-item__container{border:1px solid rgba(0,0,0,.12)}.q-expansion-item--popup>.q-expansion-item__container>.q-separator{display:none}.q-expansion-item--popup.q-expansion-item--collapsed{padding:0 15px}.q-expansion-item--popup.q-expansion-item--expanded{padding:15px 0}.q-expansion-item--popup.q-expansion-item--expanded+.q-expansion-item--popup.q-expansion-item--expanded{padding-top:0}.q-expansion-item--popup.q-expansion-item--collapsed:not(:first-child)>.q-expansion-item__container{border-top-width:0}.q-expansion-item--popup.q-expansion-item--expanded+.q-expansion-item--popup.q-expansion-item--collapsed>.q-expansion-item__container{border-top-width:1px}.q-expansion-item__content>.q-card{box-shadow:none;border-radius:0}.q-expansion-item:first-child>div>.q-expansion-item__border--top{opacity:0}.q-expansion-item:last-child>div>.q-expansion-item__border--bottom{opacity:0}.q-expansion-item--expanded+.q-expansion-item--expanded>div>.q-expansion-item__border--top{opacity:0}.q-expansion-item--expanded .q-textarea--autogrow textarea{animation:q-expansion-done 0s}@keyframes q-expansion-done{0%{--q-exp-done: 1}}.z-fab{z-index:990}.q-fab{position:relative;vertical-align:middle}.q-fab>.q-btn{width:100%}.q-fab--form-rounded{border-radius:28px}.q-fab--form-square{border-radius:4px}.q-fab__icon,.q-fab__active-icon{transition:opacity .4s,transform .4s}.q-fab__icon{opacity:1;transform:rotate(0)}.q-fab__active-icon{opacity:0;transform:rotate(-180deg)}.q-fab__label--external{position:absolute;padding:0 8px;transition:opacity .18s cubic-bezier(.65,.815,.735,.395)}.q-fab__label--external-hidden{opacity:0;pointer-events:none}.q-fab__label--external-left{top:50%;left:-12px;transform:translate(-100%,-50%)}.q-fab__label--external-right{top:50%;right:-12px;transform:translate(100%,-50%)}.q-fab__label--external-bottom{bottom:-12px;left:50%;transform:translate(-50%,100%)}.q-fab__label--external-top{top:-12px;left:50%;transform:translate(-50%,-100%)}.q-fab__label--internal{padding:0;transition:font-size .12s cubic-bezier(.65,.815,.735,.395),max-height .12s cubic-bezier(.65,.815,.735,.395),opacity .07s cubic-bezier(.65,.815,.735,.395);max-height:30px}.q-fab__label--internal-hidden{font-size:0;opacity:0}.q-fab__label--internal-top{padding-bottom:.12em}.q-fab__label--internal-bottom{padding-top:.12em}.q-fab__label--internal-top.q-fab__label--internal-hidden,.q-fab__label--internal-bottom.q-fab__label--internal-hidden{max-height:0}.q-fab__label--internal-left{padding-left:.285em;padding-right:.571em}.q-fab__label--internal-right{padding-right:.285em;padding-left:.571em}.q-fab__icon-holder{min-width:24px;min-height:24px;position:relative}.q-fab__icon-holder--opened .q-fab__icon{transform:rotate(180deg);opacity:0}.q-fab__icon-holder--opened .q-fab__active-icon{transform:rotate(0);opacity:1}.q-fab__actions{position:absolute;opacity:0;transition:transform .18s ease-in,opacity .18s ease-in;pointer-events:none;align-items:center;justify-content:center;align-self:center;padding:3px}.q-fab__actions .q-btn{margin:5px}.q-fab__actions--right{transform-origin:0 50%;transform:scale(.4) translate(-62px);height:56px;left:100%;margin-left:9px}.q-fab__actions--left{transform-origin:100% 50%;transform:scale(.4) translate(62px);height:56px;right:100%;margin-right:9px;flex-direction:row-reverse}.q-fab__actions--up{transform-origin:50% 100%;transform:scale(.4) translateY(62px);width:56px;bottom:100%;margin-bottom:9px;flex-direction:column-reverse}.q-fab__actions--down{transform-origin:50% 0;transform:scale(.4) translateY(-62px);width:56px;top:100%;margin-top:9px;flex-direction:column}.q-fab__actions--up,.q-fab__actions--down{left:50%;margin-left:-28px}.q-fab__actions--opened{opacity:1;transform:scale(1) translate(.1px);pointer-events:all}.q-fab--align-left>.q-fab__actions--up,.q-fab--align-left>.q-fab__actions--down{align-items:flex-start;left:28px}.q-fab--align-right>.q-fab__actions--up,.q-fab--align-right>.q-fab__actions--down{align-items:flex-end;left:auto;right:0}.q-field{font-size:14px}.q-field ::-ms-clear,.q-field ::-ms-reveal{display:none}.q-field--with-bottom{padding-bottom:20px}.q-field__marginal{height:56px;color:#0000008a;font-size:24px}.q-field__marginal>*+*{margin-left:2px}.q-field__marginal .q-avatar{font-size:32px}.q-field__before,.q-field__prepend{padding-right:12px}.q-field__after,.q-field__append{padding-left:12px}.q-field__after:empty,.q-field__append:empty{display:none}.q-field__append+.q-field__append{padding-left:2px}.q-field__inner{text-align:left}.q-field__bottom{font-size:12px;min-height:20px;line-height:1;color:#0000008a;padding:8px 12px 0;backface-visibility:hidden}.q-field__bottom--animated{transform:translateY(100%);position:absolute;left:0;right:0;bottom:0}.q-field__messages{line-height:1}.q-field__messages>div{word-break:break-word;word-wrap:break-word;overflow-wrap:break-word}.q-field__messages>div+div{margin-top:4px}.q-field__counter{padding-left:8px;line-height:1}.q-field--item-aligned{padding:8px 16px}.q-field--item-aligned .q-field__before{min-width:56px}.q-field__control-container{height:inherit}.q-field__control{color:var(--q-primary);height:56px;max-width:100%;outline:none}.q-field__control:before,.q-field__control:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.q-field__control:before{border-radius:inherit}.q-field__shadow{top:8px;opacity:0;overflow:hidden;white-space:pre-wrap;transition:opacity .36s cubic-bezier(.4,0,.2,1)}.q-field__shadow+.q-field__native::placeholder{transition:opacity .36s cubic-bezier(.4,0,.2,1)}.q-field__shadow+.q-field__native:focus::placeholder{opacity:0}.q-field__native,.q-field__prefix,.q-field__suffix,.q-field__input{font-weight:400;line-height:28px;letter-spacing:.00937em;text-decoration:inherit;text-transform:inherit;border:none;border-radius:0;background:none;color:#000000de;outline:0;padding:6px 0}.q-field__native,.q-field__input{width:100%;min-width:0;outline:0!important;-webkit-user-select:auto;user-select:auto}.q-field__native:-webkit-autofill,.q-field__input:-webkit-autofill{-webkit-animation-name:q-autofill;-webkit-animation-fill-mode:both}.q-field__native:invalid,.q-field__input:invalid{box-shadow:none}.q-field__native[type=file]{line-height:1em}.q-field__input{padding:0;height:0;min-height:24px;line-height:24px}.q-field__prefix,.q-field__suffix{transition:opacity .36s cubic-bezier(.4,0,.2,1);white-space:nowrap}.q-field__prefix{padding-right:4px}.q-field__suffix{padding-left:4px}.q-field--readonly .q-placeholder,.q-field--disabled .q-placeholder{opacity:1!important}.q-field--readonly.q-field--labeled .q-field__native,.q-field--readonly.q-field--labeled .q-field__input{cursor:default}.q-field--readonly.q-field--float .q-field__native,.q-field--readonly.q-field--float .q-field__input{cursor:text}.q-field--disabled .q-field__inner{cursor:not-allowed}.q-field--disabled .q-field__control{pointer-events:none}.q-field--disabled .q-field__control>div{opacity:.6!important}.q-field--disabled .q-field__control>div,.q-field--disabled .q-field__control>div *{outline:0!important}.q-field__label{left:0;top:18px;max-width:100%;color:#0009;font-size:16px;line-height:1.25;font-weight:400;letter-spacing:.00937em;text-decoration:inherit;text-transform:inherit;transform-origin:left top;transition:transform .36s cubic-bezier(.4,0,.2,1),max-width .324s cubic-bezier(.4,0,.2,1);backface-visibility:hidden}.q-field__label:has(+:is(.q-field__native,.q-field__input):is(:-webkit-autofill,[type=color],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])){transform:translateY(-40%) scale(.75)}.q-field--float .q-field__label{max-width:133%;transform:translateY(-40%) scale(.75);transition:transform .36s cubic-bezier(.4,0,.2,1),max-width .396s cubic-bezier(.4,0,.2,1)}.q-field--highlighted .q-field__label{color:currentColor}.q-field--highlighted .q-field__shadow{opacity:.5}.q-field--filled .q-field__control{padding:0 12px;background:#0000000d;border-radius:4px 4px 0 0}.q-field--filled .q-field__control:before{background:#0000000d;border-bottom:1px solid rgba(0,0,0,.42);opacity:0;transition:opacity .36s cubic-bezier(.4,0,.2,1),background .36s cubic-bezier(.4,0,.2,1)}.q-field--filled .q-field__control:hover:before{opacity:1}.q-field--filled .q-field__control:after{height:2px;top:auto;transform-origin:center bottom;transform:scale3d(0,1,1);background:currentColor;transition:transform .36s cubic-bezier(.4,0,.2,1)}.q-field--filled.q-field--rounded .q-field__control{border-radius:28px 28px 0 0}.q-field--filled.q-field--highlighted .q-field__control:before{opacity:1;background:#0000001f}.q-field--filled.q-field--highlighted .q-field__control:after{transform:scaleZ(1)}.q-field--filled.q-field--dark .q-field__control,.q-field--filled.q-field--dark .q-field__control:before{background:#ffffff12}.q-field--filled.q-field--dark.q-field--highlighted .q-field__control:before{background:#ffffff1a}.q-field--filled.q-field--readonly .q-field__control:before{opacity:1;background:transparent;border-bottom-style:dashed}.q-field--outlined .q-field__control{border-radius:4px;padding:0 12px}.q-field--outlined .q-field__control:before{border:1px solid rgba(0,0,0,.24);transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--outlined .q-field__control:hover:before{border-color:#000}.q-field--outlined .q-field__control:after{height:inherit;border-radius:inherit;border:2px solid transparent;transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--outlined .q-field__native:-webkit-autofill,.q-field--outlined .q-field__input:-webkit-autofill{margin-top:1px;margin-bottom:1px}.q-field--outlined.q-field--rounded .q-field__control{border-radius:28px}.q-field--outlined.q-field--highlighted .q-field__control:hover:before{border-color:transparent}.q-field--outlined.q-field--highlighted .q-field__control:after{border-color:currentColor;border-width:2px;transform:scaleZ(1)}.q-field--outlined.q-field--readonly .q-field__control:before{border-style:dashed}.q-field--standard .q-field__control:before{border-bottom:1px solid rgba(0,0,0,.24);transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--standard .q-field__control:hover:before{border-color:#000}.q-field--standard .q-field__control:after{height:2px;top:auto;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;transform-origin:center bottom;transform:scale3d(0,1,1);background:currentColor;transition:transform .36s cubic-bezier(.4,0,.2,1)}.q-field--standard.q-field--highlighted .q-field__control:after{transform:scaleZ(1)}.q-field--standard.q-field--readonly .q-field__control:before{border-bottom-style:dashed}.q-field--dark .q-field__control:before{border-color:#fff9}.q-field--dark .q-field__control:hover:before{border-color:#fff}.q-field--dark .q-field__native,.q-field--dark .q-field__prefix,.q-field--dark .q-field__suffix,.q-field--dark .q-field__input{color:#fff}.q-field--dark:not(.q-field--highlighted) .q-field__label,.q-field--dark .q-field__marginal,.q-field--dark .q-field__bottom{color:#ffffffb3}.q-field--standout .q-field__control{padding:0 12px;background:#0000000d;border-radius:4px;transition:box-shadow .36s cubic-bezier(.4,0,.2,1),background-color .36s cubic-bezier(.4,0,.2,1)}.q-field--standout .q-field__control:before{background:#00000012;opacity:0;transition:opacity .36s cubic-bezier(.4,0,.2,1),background .36s cubic-bezier(.4,0,.2,1)}.q-field--standout .q-field__control:hover:before{opacity:1}.q-field--standout.q-field--rounded .q-field__control{border-radius:28px}.q-field--standout.q-field--highlighted .q-field__control{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;background:#000}.q-field--standout.q-field--highlighted .q-field__native,.q-field--standout.q-field--highlighted .q-field__prefix,.q-field--standout.q-field--highlighted .q-field__suffix,.q-field--standout.q-field--highlighted .q-field__prepend,.q-field--standout.q-field--highlighted .q-field__append,.q-field--standout.q-field--highlighted .q-field__input{color:#fff}.q-field--standout.q-field--readonly .q-field__control:before{opacity:1;background:transparent;border:1px dashed rgba(0,0,0,.24)}.q-field--standout.q-field--dark .q-field__control{background:#ffffff12}.q-field--standout.q-field--dark .q-field__control:before{background:#ffffff12}.q-field--standout.q-field--dark.q-field--highlighted .q-field__control{background:#fff}.q-field--standout.q-field--dark.q-field--highlighted .q-field__native,.q-field--standout.q-field--dark.q-field--highlighted .q-field__prefix,.q-field--standout.q-field--dark.q-field--highlighted .q-field__suffix,.q-field--standout.q-field--dark.q-field--highlighted .q-field__prepend,.q-field--standout.q-field--dark.q-field--highlighted .q-field__append,.q-field--standout.q-field--dark.q-field--highlighted .q-field__input{color:#000}.q-field--standout.q-field--dark.q-field--readonly .q-field__control:before{border-color:#ffffff3d}.q-field--labeled .q-field__native,.q-field--labeled .q-field__prefix,.q-field--labeled .q-field__suffix{line-height:24px;padding-top:24px;padding-bottom:8px}.q-field--labeled .q-field__shadow{top:0}.q-field--labeled:not(.q-field--float) .q-field__prefix,.q-field--labeled:not(.q-field--float) .q-field__suffix{opacity:0}.q-field--labeled:not(.q-field--float) .q-field__native::placeholder,.q-field--labeled:not(.q-field--float) .q-field__input::placeholder{color:transparent}.q-field--labeled.q-field--dense .q-field__native,.q-field--labeled.q-field--dense .q-field__prefix,.q-field--labeled.q-field--dense .q-field__suffix{padding-top:14px;padding-bottom:2px}.q-field--dense .q-field--with-bottom{padding-bottom:19px}.q-field--dense .q-field__shadow{top:0}.q-field--dense .q-field__control,.q-field--dense .q-field__marginal{height:40px}.q-field--dense .q-field__bottom{font-size:11px}.q-field--dense .q-field__label{font-size:14px;top:10px}.q-field--dense .q-field__before,.q-field--dense .q-field__prepend{padding-right:6px}.q-field--dense .q-field__after,.q-field--dense .q-field__append{padding-left:6px}.q-field--dense .q-field__append+.q-field__append{padding-left:2px}.q-field--dense .q-field__marginal .q-avatar{font-size:24px}.q-field--dense.q-field--float .q-field__label{transform:translateY(-30%) scale(.75)}.q-field--dense .q-field__label:has(+:is(.q-field__native,.q-field__input):is(:-webkit-autofill,[type=color],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])){transform:translateY(-30%) scale(.75)}.q-field--borderless .q-field__bottom,.q-field--borderless.q-field--dense .q-field__control,.q-field--standard .q-field__bottom,.q-field--standard.q-field--dense .q-field__control{padding-left:0;padding-right:0}.q-field--error .q-field__label{animation:q-field-label .36s}.q-field--error .q-field__bottom{color:var(--q-negative)}.q-field__focusable-action{opacity:.6;cursor:pointer;outline:0!important;border:0;color:inherit;background:transparent;padding:0}.q-field__focusable-action:hover,.q-field__focusable-action:focus{opacity:1}.q-field--auto-height .q-field__control{height:auto}.q-field--auto-height .q-field__control,.q-field--auto-height .q-field__native{min-height:56px}.q-field--auto-height .q-field__native{align-items:center}.q-field--auto-height .q-field__control-container{padding-top:0}.q-field--auto-height .q-field__native,.q-field--auto-height .q-field__prefix,.q-field--auto-height .q-field__suffix{line-height:18px}.q-field--auto-height.q-field--labeled .q-field__control-container{padding-top:24px}.q-field--auto-height.q-field--labeled .q-field__shadow{top:24px}.q-field--auto-height.q-field--labeled .q-field__native,.q-field--auto-height.q-field--labeled .q-field__prefix,.q-field--auto-height.q-field--labeled .q-field__suffix{padding-top:0}.q-field--auto-height.q-field--labeled .q-field__native{min-height:24px}.q-field--auto-height.q-field--dense .q-field__control,.q-field--auto-height.q-field--dense .q-field__native{min-height:40px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__control-container{padding-top:14px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__shadow{top:14px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__native{min-height:24px}.q-field--square .q-field__control{border-radius:0!important}.q-transition--field-message-enter-active,.q-transition--field-message-leave-active{transition:transform .6s cubic-bezier(.86,0,.07,1),opacity .6s cubic-bezier(.86,0,.07,1)}.q-transition--field-message-enter-from,.q-transition--field-message-leave-to{opacity:0;transform:translateY(-10px)}.q-transition--field-message-leave-from,.q-transition--field-message-leave-active{position:absolute}@keyframes q-field-label{40%{margin-left:2px}60%,80%{margin-left:-2px}70%,90%{margin-left:2px}}@keyframes q-autofill{to{background:transparent;color:inherit}}.q-file .q-field__native{word-break:break-all;overflow:hidden}.q-file .q-field__input{opacity:0!important}.q-file .q-field__input::-webkit-file-upload-button{cursor:pointer}.q-file__filler{visibility:hidden;width:100%;border:none;padding:0}.q-file__dnd{outline:1px dashed currentColor;outline-offset:-4px}.q-form{position:relative}.q-img{position:relative;width:100%;display:inline-block;vertical-align:middle;overflow:hidden}.q-img__loading .q-spinner{font-size:50px}.q-img__container{border-radius:inherit;font-size:0}.q-img__image{border-radius:inherit;width:100%;height:100%;opacity:0}.q-img__image--with-transition{transition:opacity .28s ease-in}.q-img__image--loaded{opacity:1}.q-img__content{border-radius:inherit;pointer-events:none}.q-img__content>div{pointer-events:all;position:absolute;padding:16px;color:#fff;background:#00000078}.q-img--no-menu .q-img__image,.q-img--no-menu .q-img__placeholder{pointer-events:none}.q-inner-loading{background:#fff9;border-radius:inherit}.q-inner-loading--dark{background:#0006}.q-inner-loading__label{margin-top:8px}.q-textarea .q-field__control{min-height:56px;height:auto}.q-textarea .q-field__control-container{padding-top:2px;padding-bottom:2px}.q-textarea .q-field__shadow{top:2px;bottom:2px}.q-textarea .q-field__native,.q-textarea .q-field__prefix,.q-textarea .q-field__suffix{line-height:18px}.q-textarea .q-field__native{resize:vertical;padding-top:17px;min-height:52px}.q-textarea.q-field--labeled .q-field__control-container{padding-top:26px}.q-textarea.q-field--labeled .q-field__shadow{top:26px}.q-textarea.q-field--labeled .q-field__native,.q-textarea.q-field--labeled .q-field__prefix,.q-textarea.q-field--labeled .q-field__suffix{padding-top:0}.q-textarea.q-field--labeled .q-field__native{min-height:26px;padding-top:1px}.q-textarea--autogrow .q-field__native{resize:none}.q-textarea.q-field--dense .q-field__control,.q-textarea.q-field--dense .q-field__native{min-height:36px}.q-textarea.q-field--dense .q-field__native{padding-top:9px}.q-textarea.q-field--dense.q-field--labeled .q-field__control-container{padding-top:14px}.q-textarea.q-field--dense.q-field--labeled .q-field__shadow{top:14px}.q-textarea.q-field--dense.q-field--labeled .q-field__native{min-height:24px;padding-top:3px}.q-textarea.q-field--dense.q-field--labeled .q-field__prefix,.q-textarea.q-field--dense.q-field--labeled .q-field__suffix{padding-top:2px}body.mobile .q-textarea .q-field__native,.q-textarea.disabled .q-field__native{resize:none}.q-intersection{position:relative}.q-item{min-height:48px;padding:8px 16px;color:inherit;transition:color .3s,background-color .3s}.q-item__section--side{color:#757575;align-items:flex-start;padding-right:16px;width:auto;min-width:0;max-width:100%}.q-item__section--side>.q-icon{font-size:24px}.q-item__section--side>.q-avatar{font-size:40px}.q-item__section--avatar{color:inherit;min-width:56px}.q-item__section--thumbnail img{width:100px;height:56px}.q-item__section--nowrap{white-space:nowrap}.q-item>.q-item__section--thumbnail:first-child,.q-item>.q-focus-helper+.q-item__section--thumbnail{margin-left:-16px}.q-item>.q-item__section--thumbnail:last-of-type{margin-right:-16px}.q-item__label{line-height:1.2em!important;max-width:100%}.q-item__label--overline{color:#000000b3}.q-item__label--caption{color:#0000008a}.q-item__label--header{color:#757575;padding:16px;font-size:.875rem;line-height:1.25rem;letter-spacing:.01786em}.q-separator--spaced+.q-item__label--header,.q-list--padding .q-item__label--header{padding-top:8px}.q-item__label+.q-item__label{margin-top:4px}.q-item__section--main{width:auto;min-width:0;max-width:100%;flex:10000 1 0%}.q-item__section--main+.q-item__section--main{margin-left:8px}.q-item__section--main~.q-item__section--side{align-items:flex-end;padding-right:0;padding-left:16px}.q-item__section--main.q-item__section--thumbnail{margin-left:0;margin-right:-16px}.q-list--bordered{border:1px solid rgba(0,0,0,.12)}.q-list--separator>.q-item-type+.q-item-type,.q-list--separator>.q-virtual-scroll__content>.q-item-type+.q-item-type{border-top:1px solid rgba(0,0,0,.12)}.q-list--padding{padding:8px 0}.q-list--dense>.q-item,.q-item--dense{min-height:32px;padding:2px 16px}.q-list--dark.q-list--separator>.q-item-type+.q-item-type,.q-list--dark.q-list--separator>.q-virtual-scroll__content>.q-item-type+.q-item-type{border-top-color:#ffffff47}.q-list--dark,.q-item--dark{color:#fff;border-color:#ffffff47}.q-list--dark .q-item__section--side:not(.q-item__section--avatar),.q-item--dark .q-item__section--side:not(.q-item__section--avatar){color:#ffffffb3}.q-list--dark .q-item__label--header,.q-item--dark .q-item__label--header{color:#ffffffa3}.q-list--dark .q-item__label--overline,.q-list--dark .q-item__label--caption,.q-item--dark .q-item__label--overline,.q-item--dark .q-item__label--caption{color:#fffc}.q-item{position:relative}.q-item.q-router-link--active,.q-item--active{color:var(--q-primary)}.q-knob{font-size:48px}.q-knob--editable{cursor:pointer;outline:0}.q-knob--editable:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;box-shadow:none;transition:box-shadow .24s ease-in-out}.q-knob--editable:focus:before{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}body.body--dark .q-knob--editable:focus:before{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-layout{width:100%;outline:0}.q-layout-container{position:relative;width:100%;height:100%}.q-layout-container .q-layout{min-height:100%}.q-layout-container>div{transform:translateZ(0)}.q-layout-container>div>div{min-height:0;max-height:100%}.q-layout__shadow{width:100%}.q-layout__shadow:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:0 0 10px 2px #0003,0 0 10px #0000003d}.q-layout__section--marginal{background-color:var(--q-primary);color:#fff}.q-header--hidden{transform:translateY(-110%)}.q-header--bordered{border-bottom:1px solid rgba(0,0,0,.12)}.q-header .q-layout__shadow{bottom:-10px}.q-header .q-layout__shadow:after{bottom:10px}.q-footer--hidden{transform:translateY(110%)}.q-footer--bordered{border-top:1px solid rgba(0,0,0,.12)}.q-footer .q-layout__shadow{top:-10px}.q-footer .q-layout__shadow:after{top:10px}.q-header,.q-footer{z-index:2000}.q-drawer{position:absolute;top:0;bottom:0;background:#fff;z-index:1000}.q-drawer--on-top{z-index:3000}.q-drawer--left{left:0;transform:translate(-100%)}.q-drawer--left.q-drawer--bordered{border-right:1px solid rgba(0,0,0,.12)}.q-drawer--left .q-layout__shadow{left:10px;right:-10px}.q-drawer--left .q-layout__shadow:after{right:10px}.q-drawer--right{right:0;transform:translate(100%)}.q-drawer--right.q-drawer--bordered{border-left:1px solid rgba(0,0,0,.12)}.q-drawer--right .q-layout__shadow{left:-10px}.q-drawer--right .q-layout__shadow:after{left:10px}.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini{padding:0!important}.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section{text-align:center;justify-content:center;padding-left:0;padding-right:0;min-width:0}.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__label,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section--main,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section--side~.q-item__section--side{display:none}.q-drawer--mini .q-mini-drawer-hide,.q-drawer--mini .q-expansion-item__content{display:none}.q-drawer--mini-animate .q-drawer__content{overflow-x:hidden!important;white-space:nowrap}.q-drawer--standard .q-mini-drawer-only,.q-drawer--mobile .q-mini-drawer-only,.q-drawer--mobile .q-mini-drawer-hide{display:none}.q-drawer__backdrop{z-index:2999!important;will-change:background-color}.q-drawer__opener{z-index:2001;height:100%;width:15px;-webkit-user-select:none;user-select:none}.q-layout,.q-header,.q-footer,.q-page{position:relative}.q-page-sticky--shrink{pointer-events:none}.q-page-sticky--shrink>div{display:inline-block;pointer-events:auto}body.q-ios-padding .q-layout--standard .q-header>.q-toolbar:nth-child(1),body.q-ios-padding .q-layout--standard .q-header>.q-tabs:nth-child(1) .q-tabs__content,body.q-ios-padding .q-layout--standard .q-drawer--top-padding .q-drawer__content{padding-top:20px;min-height:70px;padding-top:env(safe-area-inset-top);min-height:calc(env(safe-area-inset-top) + 50px)}body.q-ios-padding .q-layout--standard .q-footer>.q-toolbar:last-child,body.q-ios-padding .q-layout--standard .q-footer>.q-tabs:nth-last-child(1 of:not(.q-layout__shadow)) .q-tabs__content,body.q-ios-padding .q-layout--standard .q-drawer--top-padding .q-drawer__content{padding-bottom:env(safe-area-inset-bottom);min-height:calc(env(safe-area-inset-bottom) + 50px)}.q-body--layout-animate .q-drawer__backdrop{transition:background-color .12s!important}.q-body--layout-animate .q-drawer{transition:transform .12s,width .12s,top .12s,bottom .12s!important}.q-body--layout-animate .q-layout__section--marginal{transition:transform .12s,left .12s,right .12s!important}.q-body--layout-animate .q-page-container{transition:padding-top .12s,padding-right .12s,padding-bottom .12s,padding-left .12s!important}.q-body--layout-animate .q-page-sticky{transition:transform .12s,left .12s,right .12s,top .12s,bottom .12s!important}body:not(.q-body--layout-animate) .q-layout--prevent-focus{visibility:hidden}.q-body--drawer-toggle{overflow-x:hidden!important}@media(max-width:599.98px){.q-layout-padding{padding:8px}}@media(min-width:600px)and (max-width:1439.98px){.q-layout-padding{padding:16px}}@media(min-width:1440px){.q-layout-padding{padding:24px}}body.body--dark .q-header,body.body--dark .q-footer,body.body--dark .q-drawer{border-color:#ffffff47}body.body--dark .q-layout__shadow:after{box-shadow:0 0 10px 2px #fff3,0 0 10px #ffffff3d}body.platform-ios .q-layout--containerized{position:unset!important}.q-linear-progress{--q-linear-progress-speed: .3s;position:relative;width:100%;overflow:hidden;font-size:4px;height:1em;color:var(--q-primary);transform:scaleZ(1)}.q-linear-progress__model,.q-linear-progress__track{transform-origin:0 0}.q-linear-progress__model--with-transition,.q-linear-progress__track--with-transition{transition:transform var(--q-linear-progress-speed)}.q-linear-progress--reverse .q-linear-progress__model,.q-linear-progress--reverse .q-linear-progress__track{transform-origin:0 100%}.q-linear-progress__model--determinate{background:currentColor}.q-linear-progress__model--indeterminate,.q-linear-progress__model--query{transition:none}.q-linear-progress__model--indeterminate:before,.q-linear-progress__model--indeterminate:after,.q-linear-progress__model--query:before,.q-linear-progress__model--query:after{background:currentColor;content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:0 0}.q-linear-progress__model--indeterminate:before,.q-linear-progress__model--query:before{animation:q-linear-progress--indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.q-linear-progress__model--indeterminate:after,.q-linear-progress__model--query:after{transform:translate3d(-101%,0,0) scaleZ(1);animation:q-linear-progress--indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}.q-linear-progress__track{opacity:.4}.q-linear-progress__track--light{background:#00000042}.q-linear-progress__track--dark{background:#fff9}.q-linear-progress__stripe{background-image:linear-gradient(45deg,#ffffff26 25%,#fff0 25% 50%,#ffffff26 50% 75%,#fff0 75%,#fff0)!important;background-size:40px 40px!important}.q-linear-progress__stripe--with-transition{transition:width var(--q-linear-progress-speed)}@keyframes q-linear-progress--indeterminate{0%{transform:translate3d(-35%,0,0) scale3d(.35,1,1)}60%{transform:translate3d(100%,0,0) scale3d(.9,1,1)}to{transform:translate3d(100%,0,0) scale3d(.9,1,1)}}@keyframes q-linear-progress--indeterminate-short{0%{transform:translate3d(-101%,0,0) scaleZ(1)}60%{transform:translate3d(107%,0,0) scale3d(.01,1,1)}to{transform:translate3d(107%,0,0) scale3d(.01,1,1)}}.q-menu{position:fixed!important;display:inline-block;max-width:95vw;max-height:65vh;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;background:#fff;border-radius:4px;overflow-y:auto;overflow-x:hidden;outline:0;z-index:6000}.q-menu--square{border-radius:0}.q-menu--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-option-group--inline>div{display:inline-block}.q-pagination input{text-align:center;-moz-appearance:textfield}.q-pagination input::-webkit-outer-spin-button,.q-pagination input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.q-pagination__content{--q-pagination-gutter-parent: -2px;--q-pagination-gutter-child: 2px;margin-top:var(--q-pagination-gutter-parent);margin-left:var(--q-pagination-gutter-parent)}.q-pagination__content>.q-btn,.q-pagination__content>.q-input,.q-pagination__middle>.q-btn{margin-top:var(--q-pagination-gutter-child);margin-left:var(--q-pagination-gutter-child)}.q-parallax{position:relative;width:100%;overflow:hidden;border-radius:inherit}.q-parallax__media>img,.q-parallax__media>video{position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;will-change:transform;display:none}.q-popup-edit{padding:8px 16px}.q-popup-edit__buttons{margin-top:8px}.q-popup-edit__buttons .q-btn+.q-btn{margin-left:8px}.q-pull-to-refresh{position:relative}.q-pull-to-refresh__puller{border-radius:50%;width:40px;height:40px;color:var(--q-primary);background:#fff;box-shadow:0 0 4px #0000004d}.q-pull-to-refresh__puller--animating{transition:transform .3s,opacity .3s}.q-radio{vertical-align:middle}.q-radio__native{width:1px;height:1px}.q-radio__bg,.q-radio__icon-container{-webkit-user-select:none;user-select:none}.q-radio__bg{top:25%;left:25%;width:50%;height:50%;-webkit-print-color-adjust:exact}.q-radio__bg path{fill:currentColor}.q-radio__icon{color:currentColor;font-size:.5em}.q-radio__check{transform-origin:50% 50%;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}.q-radio__inner{font-size:40px;width:1em;min-width:1em;height:1em;outline:0;border-radius:50%;color:#0000008a}.q-radio__inner--truthy{color:var(--q-primary)}.q-radio__inner--truthy .q-radio__check{transform:scaleZ(1)}.q-radio.disabled{opacity:.75!important}.q-radio--dark .q-radio__inner{color:#ffffffb3}.q-radio--dark .q-radio__inner:before{opacity:.32!important}.q-radio--dark .q-radio__inner--truthy{color:var(--q-primary)}.q-radio--dense .q-radio__inner{width:.5em;min-width:.5em;height:.5em}.q-radio--dense .q-radio__bg{left:0;top:0;width:100%;height:100%}.q-radio--dense .q-radio__label{padding-left:.5em}.q-radio--dense.reverse .q-radio__label{padding-left:0;padding-right:.5em}body.desktop .q-radio:not(.disabled) .q-radio__inner:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;opacity:.12;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}body.desktop .q-radio:not(.disabled):focus .q-radio__inner:before,body.desktop .q-radio:not(.disabled):hover .q-radio__inner:before{transform:scaleZ(1)}body.desktop .q-radio--dense:not(.disabled):focus .q-radio__inner:before,body.desktop .q-radio--dense:not(.disabled):hover .q-radio__inner:before{transform:scale3d(1.5,1.5,1)}.q-rating{color:#ffeb3b;vertical-align:middle}.q-rating__icon-container{height:1em;outline:0}.q-rating__icon-container+.q-rating__icon-container{margin-left:2px}.q-rating__icon{color:currentColor;text-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);position:relative;opacity:.4;transition:transform .2s ease-in,opacity .2s ease-in,color .2s ease-in}.q-rating__icon--hovered{transform:scale(1.3)}.q-rating__icon--active{opacity:1}.q-rating__icon--exselected{opacity:.7}.q-rating--no-dimming .q-rating__icon{opacity:1}.q-rating--editable .q-rating__icon-container{cursor:pointer}.q-responsive{position:relative;max-width:100%;max-height:100%}.q-responsive__filler{width:inherit;max-width:inherit;height:inherit;max-height:inherit}.q-responsive__content{border-radius:inherit}.q-responsive__content>*{width:100%!important;height:100%!important;max-height:100%!important;max-width:100%!important}.q-scrollarea{position:relative;contain:strict}.q-scrollarea__bar,.q-scrollarea__thumb{opacity:.2;transition:opacity .3s;will-change:opacity;cursor:grab}.q-scrollarea__bar--v,.q-scrollarea__thumb--v{right:0;width:10px}.q-scrollarea__bar--h,.q-scrollarea__thumb--h{bottom:0;height:10px}.q-scrollarea__bar--invisible,.q-scrollarea__thumb--invisible{opacity:0!important;pointer-events:none}.q-scrollarea__thumb{background:#000;border-radius:3px}.q-scrollarea__thumb:hover{opacity:.3}.q-scrollarea__thumb:active{opacity:.5}.q-scrollarea__content{min-height:100%;min-width:100%}.q-scrollarea--dark .q-scrollarea__thumb{background:#fff}.q-select--without-input .q-field__control{cursor:pointer}.q-select--with-input .q-field__control{cursor:text}.q-select .q-field__input{min-width:50px!important;cursor:text}.q-select .q-field__input--padding{padding-left:4px}.q-select__focus-target,.q-select__autocomplete-input{position:absolute;outline:0!important;width:1px;height:1px;padding:0;border:0;opacity:0}.q-select__dropdown-icon{cursor:pointer;transition:transform .28s}.q-select.q-field--readonly .q-field__control,.q-select.q-field--readonly .q-select__dropdown-icon{cursor:default}.q-select__dialog{width:90vw!important;max-width:90vw!important;max-height:calc(100vh - 70px)!important;background:#fff;display:flex;flex-direction:column}.q-select__dialog>.scroll{position:relative;background:inherit}body.mobile:not(.native-mobile) .q-select__dialog{max-height:calc(100vh - 108px)!important}body.platform-android.native-mobile .q-dialog__inner--top .q-select__dialog{max-height:calc(100vh - 24px)!important}body.platform-android:not(.native-mobile) .q-dialog__inner--top .q-select__dialog{max-height:calc(100vh - 80px)!important}body.platform-ios.native-mobile .q-dialog__inner--top>div{border-radius:4px}body.platform-ios.native-mobile .q-dialog__inner--top .q-select__dialog--focused{max-height:47vh!important}body.platform-ios:not(.native-mobile) .q-dialog__inner--top .q-select__dialog--focused{max-height:50vh!important}.q-separator{border:0;background:#0000001f;margin:0;transition:background .3s,opacity .3s;flex-shrink:0}.q-separator--dark{background:#ffffff47}.q-separator--horizontal{display:block;height:1px}.q-separator--horizontal-inset{margin-left:16px;margin-right:16px}.q-separator--horizontal-item-inset{margin-left:72px;margin-right:0}.q-separator--horizontal-item-thumbnail-inset{margin-left:116px;margin-right:0}.q-separator--vertical{width:1px;height:auto;align-self:stretch}.q-separator--vertical-inset{margin-top:8px;margin-bottom:8px}.q-skeleton{--q-skeleton-speed: 1.5s;background:#0000001f;border-radius:4px;box-sizing:border-box}.q-skeleton--anim{cursor:wait}.q-skeleton:before{content:" "}.q-skeleton--type-text{transform:scaleY(.5)}.q-skeleton--type-circle,.q-skeleton--type-QAvatar{height:48px;width:48px;border-radius:50%}.q-skeleton--type-QBtn{width:90px;height:36px}.q-skeleton--type-QBadge{width:70px;height:16px}.q-skeleton--type-QChip{width:90px;height:28px;border-radius:16px}.q-skeleton--type-QToolbar{height:50px}.q-skeleton--type-QCheckbox,.q-skeleton--type-QRadio{width:40px;height:40px;border-radius:50%}.q-skeleton--type-QToggle{width:56px;height:40px;border-radius:7px}.q-skeleton--type-QSlider,.q-skeleton--type-QRange{height:40px}.q-skeleton--type-QInput{height:56px}.q-skeleton--bordered{border:1px solid rgba(0,0,0,.05)}.q-skeleton--square{border-radius:0}.q-skeleton--anim-fade{animation:q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite}.q-skeleton--anim-pulse{animation:q-skeleton--pulse var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-pulse-x{animation:q-skeleton--pulse-x var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-pulse-y{animation:q-skeleton--pulse-y var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-wave,.q-skeleton--anim-blink,.q-skeleton--anim-pop{position:relative;overflow:hidden;z-index:1}.q-skeleton--anim-wave:after,.q-skeleton--anim-blink:after,.q-skeleton--anim-pop:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.q-skeleton--anim-blink:after{background:#ffffffb3;animation:q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite}.q-skeleton--anim-wave:after{background:linear-gradient(90deg,#fff0,#ffffff80,#fff0);animation:q-skeleton--wave var(--q-skeleton-speed) linear .5s infinite}.q-skeleton--dark{background:#ffffff0d}.q-skeleton--dark.q-skeleton--bordered{border:1px solid rgba(255,255,255,.25)}.q-skeleton--dark.q-skeleton--anim-wave:after{background:linear-gradient(90deg,#fff0,#ffffff1a,#fff0)}.q-skeleton--dark.q-skeleton--anim-blink:after{background:#fff3}@keyframes q-skeleton--fade{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes q-skeleton--pulse{0%{transform:scale(1)}50%{transform:scale(.85)}to{transform:scale(1)}}@keyframes q-skeleton--pulse-x{0%{transform:scaleX(1)}50%{transform:scaleX(.75)}to{transform:scaleX(1)}}@keyframes q-skeleton--pulse-y{0%{transform:scaleY(1)}50%{transform:scaleY(.75)}to{transform:scaleY(1)}}@keyframes q-skeleton--wave{0%{transform:translate(-100%)}to{transform:translate(100%)}}.q-slide-item{position:relative;background:#fff}.q-slide-item__left,.q-slide-item__right,.q-slide-item__top,.q-slide-item__bottom{visibility:hidden;font-size:14px;color:#fff}.q-slide-item__left .q-icon,.q-slide-item__right .q-icon,.q-slide-item__top .q-icon,.q-slide-item__bottom .q-icon{font-size:1.714em}.q-slide-item__left{background:#4caf50;padding:8px 16px}.q-slide-item__left>div{transform-origin:left center}.q-slide-item__right{background:#ff9800;padding:8px 16px}.q-slide-item__right>div{transform-origin:right center}.q-slide-item__top{background:#2196f3;padding:16px 8px}.q-slide-item__top>div{transform-origin:top center}.q-slide-item__bottom{background:#9c27b0;padding:16px 8px}.q-slide-item__bottom>div{transform-origin:bottom center}.q-slide-item__content{background:inherit;transition:transform .2s ease-in;-webkit-user-select:none;user-select:none;cursor:pointer}.q-slider{position:relative}.q-slider--h{width:100%}.q-slider--v{height:200px}.q-slider--editable .q-slider__track-container{cursor:grab}.q-slider__track-container{outline:0}.q-slider__track-container--h{width:100%;padding:12px 0}.q-slider__track-container--h .q-slider__selection{will-change:width,left}.q-slider__track-container--v{height:100%;padding:0 12px}.q-slider__track-container--v .q-slider__selection{will-change:height,top}.q-slider__track{color:var(--q-primary);background:#0000001a;border-radius:4px;width:inherit;height:inherit}.q-slider__inner{background:#0000001a;border-radius:inherit;width:100%;height:100%}.q-slider__selection{background:currentColor;border-radius:inherit;width:100%;height:100%}.q-slider__markers{color:#0000004d;border-radius:inherit;width:100%;height:100%}.q-slider__markers:after{content:"";position:absolute;background:currentColor}.q-slider__markers--h{background-image:repeating-linear-gradient(to right,currentColor,currentColor 2px,rgba(255,255,255,0) 0,rgba(255,255,255,0))}.q-slider__markers--h:after{height:100%;width:2px;top:0;right:0}.q-slider__markers--v{background-image:repeating-linear-gradient(to bottom,currentColor,currentColor 2px,rgba(255,255,255,0) 0,rgba(255,255,255,0))}.q-slider__markers--v:after{width:100%;height:2px;left:0;bottom:0}.q-slider__marker-labels-container{position:relative;width:100%;height:100%;min-height:24px;min-width:24px}.q-slider__marker-labels{position:absolute}.q-slider__marker-labels--h-standard{top:0}.q-slider__marker-labels--h-switched{bottom:0}.q-slider__marker-labels--h-ltr{transform:translate(-50%)}.q-slider__marker-labels--h-rtl{transform:translate(50%)}.q-slider__marker-labels--v-standard{left:4px}.q-slider__marker-labels--v-switched{right:4px}.q-slider__marker-labels--v-ltr{transform:translateY(-50%)}.q-slider__marker-labels--v-rtl{transform:translateY(50%)}.q-slider__thumb{z-index:1;outline:0;color:var(--q-primary);transition:transform .18s ease-out,fill .18s ease-out,stroke .18s ease-out}.q-slider__thumb.q-slider--focus{opacity:1!important}.q-slider__thumb--h{top:50%;will-change:left}.q-slider__thumb--h-ltr{transform:scale(1) translate(-50%,-50%)}.q-slider__thumb--h-rtl{transform:scale(1) translate(50%,-50%)}.q-slider__thumb--v{left:50%;will-change:top}.q-slider__thumb--v-ltr{transform:scale(1) translate(-50%,-50%)}.q-slider__thumb--v-rtl{transform:scale(1) translate(-50%,50%)}.q-slider__thumb-shape{top:0;left:0;stroke-width:3.5;stroke:currentColor;transition:transform .28s}.q-slider__thumb-shape path{stroke:currentColor;fill:currentColor}.q-slider__focus-ring{border-radius:50%;opacity:0;transition:transform .26667s ease-out,opacity .26667s ease-out,background-color .26667s ease-out;transition-delay:.14s}.q-slider__pin{opacity:0;white-space:nowrap;transition:opacity .28s ease-out;transition-delay:.14s}.q-slider__pin:before{content:"";width:0;height:0;position:absolute}.q-slider__pin--h:before{border-left:6px solid transparent;border-right:6px solid transparent;left:50%;transform:translate(-50%)}.q-slider__pin--h-standard{bottom:100%}.q-slider__pin--h-standard:before{bottom:2px;border-top:6px solid currentColor}.q-slider__pin--h-switched{top:100%}.q-slider__pin--h-switched:before{top:2px;border-bottom:6px solid currentColor}.q-slider__pin--v{top:0}.q-slider__pin--v:before{top:50%;transform:translateY(-50%);border-top:6px solid transparent;border-bottom:6px solid transparent}.q-slider__pin--v-standard{left:100%}.q-slider__pin--v-standard:before{left:2px;border-right:6px solid currentColor}.q-slider__pin--v-switched{right:100%}.q-slider__pin--v-switched:before{right:2px;border-left:6px solid currentColor}.q-slider__label{z-index:1;white-space:nowrap;position:absolute}.q-slider__label--h{left:50%;transform:translate(-50%)}.q-slider__label--h-standard{bottom:7px}.q-slider__label--h-switched{top:7px}.q-slider__label--v{top:50%;transform:translateY(-50%)}.q-slider__label--v-standard{left:7px}.q-slider__label--v-switched{right:7px}.q-slider__text-container{min-height:25px;padding:2px 8px;border-radius:4px;background:currentColor;position:relative;text-align:center}.q-slider__text{color:#fff;font-size:12px}.q-slider--no-value .q-slider__thumb,.q-slider--no-value .q-slider__inner,.q-slider--no-value .q-slider__selection{opacity:0}.q-slider--focus .q-slider__focus-ring,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__focus-ring{background:currentColor;transform:scale3d(1.55,1.55,1);opacity:.25}.q-slider--focus .q-slider__thumb,.q-slider--focus .q-slider__inner,.q-slider--focus .q-slider__selection,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__thumb,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__inner,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__selection{opacity:1}.q-slider--inactive .q-slider__thumb--h{transition:left .28s,right .28s}.q-slider--inactive .q-slider__thumb--v{transition:top .28s,bottom .28s}.q-slider--inactive .q-slider__selection{transition:width .28s,left .28s,right .28s,height .28s,top .28s,bottom .28s}.q-slider--inactive .q-slider__text-container{transition:transform .28s}.q-slider--active{cursor:grabbing}.q-slider--active .q-slider__thumb-shape{transform:scale(1.5)}.q-slider--active .q-slider__focus-ring,.q-slider--active.q-slider--label .q-slider__thumb-shape{transform:scale(0)!important}body.desktop .q-slider.q-slider--enabled .q-slider__track-container:hover .q-slider__pin,.q-slider--label.q-slider--active .q-slider__pin,.q-slider--label .q-slider--focus .q-slider__pin,.q-slider--label.q-slider--label-always .q-slider__pin{opacity:1}.q-slider--dark .q-slider__track,.q-slider--dark .q-slider__inner{background:#ffffff1a}.q-slider--dark .q-slider__markers{color:#ffffff4d}.q-slider--dense .q-slider__track-container--h{padding:6px 0}.q-slider--dense .q-slider__track-container--v{padding:0 6px}.q-space{flex-grow:1!important}.q-spinner{vertical-align:middle}.q-spinner-mat{animation:q-spin 2s linear infinite;transform-origin:center center}.q-spinner-mat .path{stroke-dasharray:1,200;stroke-dashoffset:0;animation:q-mat-dash 1.5s ease-in-out infinite}@keyframes q-spin{0%{transform:rotate3d(0,0,1,0)}25%{transform:rotate3d(0,0,1,90deg)}50%{transform:rotate3d(0,0,1,180deg)}75%{transform:rotate3d(0,0,1,270deg)}to{transform:rotate3d(0,0,1,359deg)}}@keyframes q-mat-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.q-splitter__panel{position:relative;z-index:0}.q-splitter__panel>.q-splitter{width:100%;height:100%}.q-splitter__separator{background-color:#0000001f;-webkit-user-select:none;user-select:none;position:relative;z-index:1}.q-splitter__separator-area>*{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.q-splitter--dark .q-splitter__separator{background-color:#ffffff47}.q-splitter--vertical>.q-splitter__panel{height:100%}.q-splitter--vertical.q-splitter--active{cursor:col-resize}.q-splitter--vertical>.q-splitter__separator{width:1px}.q-splitter--vertical>.q-splitter__separator>div{left:-6px;right:-6px}.q-splitter--vertical.q-splitter--workable>.q-splitter__separator{cursor:col-resize}.q-splitter--horizontal>.q-splitter__panel{width:100%}.q-splitter--horizontal.q-splitter--active{cursor:row-resize}.q-splitter--horizontal>.q-splitter__separator{height:1px}.q-splitter--horizontal>.q-splitter__separator>div{top:-6px;bottom:-6px}.q-splitter--horizontal.q-splitter--workable>.q-splitter__separator{cursor:row-resize}.q-splitter__before,.q-splitter__after{overflow:auto}.q-stepper{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;border-radius:4px;background:#fff}.q-stepper__title{font-size:14px;line-height:1.285714;letter-spacing:.1px}.q-stepper__caption{font-size:12px;line-height:1.16667}.q-stepper__dot{contain:layout;margin-right:8px;font-size:14px;width:24px;min-width:24px;height:24px;border-radius:50%;background:currentColor}.q-stepper__dot span{color:#fff}.q-stepper__tab{padding:8px 24px;font-size:14px;color:#9e9e9e;flex-direction:row}.q-stepper--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-stepper--dark .q-stepper__dot span{color:#000}.q-stepper__tab--navigation{-webkit-user-select:none;user-select:none;cursor:pointer}.q-stepper__tab--active,.q-stepper__tab--done{color:var(--q-primary)}.q-stepper__tab--active .q-stepper__dot,.q-stepper__tab--active .q-stepper__label,.q-stepper__tab--done .q-stepper__dot,.q-stepper__tab--done .q-stepper__label{text-shadow:0 0 0 currentColor}.q-stepper__tab--disabled .q-stepper__dot{background:#00000038}.q-stepper__tab--disabled .q-stepper__label{color:#00000052}.q-stepper__tab--error{color:var(--q-negative)}.q-stepper__tab--error-with-icon .q-stepper__dot{background:transparent!important}.q-stepper__tab--error-with-icon .q-stepper__dot span{color:currentColor;font-size:24px}.q-stepper__header{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-stepper__header--border{border-bottom:1px solid rgba(0,0,0,.12)}.q-stepper__header--standard-labels .q-stepper__tab{min-height:72px;justify-content:center}.q-stepper__header--standard-labels .q-stepper__tab:first-child{justify-content:flex-start}.q-stepper__header--standard-labels .q-stepper__tab:last-child{justify-content:flex-end}.q-stepper__header--standard-labels .q-stepper__tab:only-child{justify-content:center}.q-stepper__header--standard-labels .q-stepper__dot:after{display:none}.q-stepper__header--alternative-labels .q-stepper__tab{min-height:104px;padding:24px 32px;flex-direction:column;justify-content:flex-start}.q-stepper__header--alternative-labels .q-stepper__dot{margin-right:0}.q-stepper__header--alternative-labels .q-stepper__label{margin-top:8px;text-align:center}.q-stepper__header--alternative-labels .q-stepper__label:before,.q-stepper__header--alternative-labels .q-stepper__label:after{display:none}.q-stepper__header--contracted,.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab{min-height:72px}.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab:first-child{align-items:flex-start}.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab:last-child{align-items:flex-end}.q-stepper__header--contracted .q-stepper__tab{padding:24px 0}.q-stepper__header--contracted .q-stepper__tab:first-child .q-stepper__dot{transform:translate(24px)}.q-stepper__header--contracted .q-stepper__tab:last-child .q-stepper__dot{transform:translate(-24px)}.q-stepper__header--contracted .q-stepper__tab:not(:last-child) .q-stepper__dot:after{display:block!important}.q-stepper__header--contracted .q-stepper__dot{margin:0}.q-stepper__header--contracted .q-stepper__label{display:none}.q-stepper__nav{padding-top:24px}.q-stepper--flat{box-shadow:none}.q-stepper--bordered{border:1px solid rgba(0,0,0,.12)}.q-stepper--horizontal .q-stepper__step-inner{padding:24px}.q-stepper--horizontal .q-stepper__tab:first-child{border-top-left-radius:inherit}.q-stepper--horizontal .q-stepper__tab:last-child{border-top-right-radius:inherit}.q-stepper--horizontal .q-stepper__tab:first-child .q-stepper__dot:before,.q-stepper--horizontal .q-stepper__tab:last-child .q-stepper__label:after,.q-stepper--horizontal .q-stepper__tab:last-child .q-stepper__dot:after{display:none}.q-stepper--horizontal .q-stepper__tab{overflow:hidden}.q-stepper--horizontal .q-stepper__line{contain:layout}.q-stepper--horizontal .q-stepper__line:before,.q-stepper--horizontal .q-stepper__line:after{position:absolute;top:50%;height:1px;width:100vw;background:#0000001f}.q-stepper--horizontal .q-stepper__label:after,.q-stepper--horizontal .q-stepper__dot:after{content:"";left:100%;margin-left:8px}.q-stepper--horizontal .q-stepper__dot:before{content:"";right:100%;margin-right:8px}.q-stepper--horizontal>.q-stepper__nav{padding:0 24px 24px}.q-stepper--vertical{padding:16px 0}.q-stepper--vertical .q-stepper__tab{padding:12px 24px}.q-stepper--vertical .q-stepper__title{line-height:18px}.q-stepper--vertical .q-stepper__step-inner{padding:0 24px 32px 60px}.q-stepper--vertical>.q-stepper__nav{padding:24px 24px 0}.q-stepper--vertical .q-stepper__step{overflow:hidden}.q-stepper--vertical .q-stepper__dot{margin-right:12px}.q-stepper--vertical .q-stepper__dot:before,.q-stepper--vertical .q-stepper__dot:after{content:"";position:absolute;left:50%;width:1px;height:99999px;background:#0000001f}.q-stepper--vertical .q-stepper__dot:before{bottom:100%;margin-bottom:8px}.q-stepper--vertical .q-stepper__dot:after{top:100%;margin-top:8px}.q-stepper--vertical .q-stepper__step:first-child .q-stepper__dot:before,.q-stepper--vertical .q-stepper__step:last-child .q-stepper__dot:after{display:none}.q-stepper--vertical .q-stepper__step:last-child .q-stepper__step-inner{padding-bottom:8px}.q-stepper--dark.q-stepper--bordered,.q-stepper--dark .q-stepper__header--border{border-color:#ffffff47}.q-stepper--dark.q-stepper--horizontal .q-stepper__line:before,.q-stepper--dark.q-stepper--horizontal .q-stepper__line:after{background:#ffffff47}.q-stepper--dark.q-stepper--vertical .q-stepper__dot:before,.q-stepper--dark.q-stepper--vertical .q-stepper__dot:after{background:#ffffff47}.q-stepper--dark .q-stepper__tab--disabled{color:#ffffff47}.q-stepper--dark .q-stepper__tab--disabled .q-stepper__dot{background:#ffffff47}.q-stepper--dark .q-stepper__tab--disabled .q-stepper__label{color:#ffffff8a}.q-tab-panels{background:#fff}.q-tab-panel{padding:16px}.q-markup-table{overflow:auto;background:#fff}.q-table{width:100%;max-width:100%;border-collapse:separate;border-spacing:0}.q-table thead tr,.q-table tbody td{height:48px}.q-table th{font-weight:500;font-size:12px;-webkit-user-select:none;user-select:none}.q-table th.sortable{cursor:pointer}.q-table th.sortable:hover .q-table__sort-icon{opacity:.64}.q-table th.sorted .q-table__sort-icon{opacity:.86!important}.q-table th.sort-desc .q-table__sort-icon{transform:rotate(180deg)}.q-table th,.q-table td{padding:7px 16px;background-color:inherit}.q-table thead,.q-table td,.q-table th{border-style:solid;border-width:0}.q-table tbody td{font-size:13px}.q-table__card{color:#000;background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}.q-table__card .q-table__middle{flex:1 1 auto}.q-table__card .q-table__top,.q-table__card .q-table__bottom{flex:0 0 auto}.q-table__container{position:relative}.q-table__container>div:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-table__container>div:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.q-table__container>.q-inner-loading{border-radius:inherit!important}.q-table__top{padding:12px 16px}.q-table__top .q-table__control{flex-wrap:wrap}.q-table__title{font-size:20px;letter-spacing:.005em;font-weight:400}.q-table__separator{min-width:8px!important}.q-table__progress{height:0!important}.q-table__progress th{padding:0!important;border:0!important}.q-table__progress .q-linear-progress{position:absolute;bottom:0}.q-table__middle{max-width:100%}.q-table__bottom{min-height:50px;padding:4px 14px 4px 16px;font-size:12px}.q-table__bottom .q-table__control{min-height:24px}.q-table__bottom-nodata-icon{font-size:200%;margin-right:8px}.q-table__bottom-item{margin-right:16px}.q-table__control{display:flex;align-items:center}.q-table__sort-icon{transition:transform .3s cubic-bezier(.25,.8,.5,1);opacity:0;font-size:120%}.q-table__sort-icon--left,.q-table__sort-icon--center{margin-left:4px}.q-table__sort-icon--right{margin-right:4px}.q-table--col-auto-width{width:1px}.q-table__card--dark,.q-table--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-table--flat{box-shadow:none}.q-table--bordered{border:1px solid rgba(0,0,0,.12)}.q-table--square{border-radius:0}.q-table__linear-progress{height:2px}.q-table--no-wrap th,.q-table--no-wrap td{white-space:nowrap}.q-table--grid{box-shadow:none;border-radius:4px}.q-table--grid .q-table__top{padding-bottom:4px}.q-table--grid .q-table__middle{min-height:2px;margin-bottom:4px}.q-table--grid .q-table__middle thead,.q-table--grid .q-table__middle thead th{border:0!important}.q-table--grid .q-table__linear-progress{bottom:0}.q-table--grid .q-table__bottom{border-top:0}.q-table--grid .q-table__grid-content{flex:1 1 auto}.q-table--grid.fullscreen{background:inherit}.q-table__grid-item-card{vertical-align:top;padding:12px}.q-table__grid-item-card .q-separator{margin:12px 0}.q-table__grid-item-row+.q-table__grid-item-row{margin-top:8px}.q-table__grid-item-title{opacity:.54;font-weight:500;font-size:12px}.q-table__grid-item-value{font-size:13px}.q-table__grid-item{padding:4px;transition:transform .3s cubic-bezier(.25,.8,.5,1)}.q-table__grid-item--selected{transform:scale(.95)}.q-table--horizontal-separator thead th,.q-table--horizontal-separator tbody tr:not(:last-child)>td,.q-table--cell-separator thead th,.q-table--cell-separator tbody tr:not(:last-child)>td{border-bottom-width:1px}.q-table--vertical-separator td,.q-table--vertical-separator th,.q-table--cell-separator td,.q-table--cell-separator th{border-left-width:1px}.q-table--vertical-separator thead tr:last-child th,.q-table--vertical-separator.q-table--loading tr:nth-last-child(2) th,.q-table--cell-separator thead tr:last-child th,.q-table--cell-separator.q-table--loading tr:nth-last-child(2) th{border-bottom-width:1px}.q-table--vertical-separator td:first-child,.q-table--vertical-separator th:first-child,.q-table--cell-separator td:first-child,.q-table--cell-separator th:first-child{border-left:0}.q-table--vertical-separator .q-table__top,.q-table--cell-separator .q-table__top{border-bottom:1px solid rgba(0,0,0,.12)}.q-table--dense .q-table__top{padding:6px 16px}.q-table--dense .q-table__bottom{min-height:33px}.q-table--dense .q-table__sort-icon{font-size:110%}.q-table--dense .q-table th,.q-table--dense .q-table td{padding:4px 8px}.q-table--dense .q-table thead tr,.q-table--dense .q-table tbody tr,.q-table--dense .q-table tbody td{height:28px}.q-table--dense .q-table th:first-child,.q-table--dense .q-table td:first-child{padding-left:16px}.q-table--dense .q-table th:last-child,.q-table--dense .q-table td:last-child{padding-right:16px}.q-table--dense .q-table__bottom-item{margin-right:8px}.q-table--dense .q-table__select .q-field__control,.q-table--dense .q-table__select .q-field__native{min-height:24px;padding:0}.q-table--dense .q-table__select .q-field__marginal{height:24px}.q-table__bottom:not(.q-table__bottom--nodata){border-top:1px solid rgba(0,0,0,.12)}.q-table thead,.q-table tr,.q-table th,.q-table td{border-color:#0000001f}.q-table tbody td{position:relative}.q-table tbody td:before,.q-table tbody td:after{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.q-table tbody td:before{background:#00000008}.q-table tbody td:after{background:#0000000f}.q-table tbody tr.selected td:after{content:""}body.desktop .q-table>tbody>tr:not(.q-tr--no-hover):hover>td:not(.q-td--no-hover):before{content:""}.q-table__card--dark,.q-table--dark,.q-table--dark .q-table__bottom,.q-table--dark thead,.q-table--dark tr,.q-table--dark th,.q-table--dark td{border-color:#ffffff47}.q-table--dark tbody td:before{background:#ffffff12}.q-table--dark tbody td:after{background:#ffffff1a}.q-table--dark.q-table--vertical-separator .q-table__top,.q-table--dark.q-table--cell-separator .q-table__top{border-color:#ffffff47}.q-tab{padding:0 16px;min-height:48px;transition:color .3s,background-color .3s;text-transform:uppercase;white-space:nowrap;color:inherit;text-decoration:none}.q-tab--full{min-height:72px}.q-tab--no-caps{text-transform:none}.q-tab__content{height:inherit;padding:4px 0;min-width:40px}.q-tab__content--inline .q-tab__icon+.q-tab__label{padding-left:8px}.q-tab__content .q-chip--floating{top:0;right:-16px}.q-tab__icon{width:24px;height:24px;font-size:24px}.q-tab__label{font-size:14px;line-height:1.715em;font-weight:500}.q-tab .q-badge{top:3px;right:-12px}.q-tab__alert,.q-tab__alert-icon{position:absolute}.q-tab__alert{top:7px;right:-9px;height:10px;width:10px;border-radius:50%;background:currentColor}.q-tab__alert-icon{top:2px;right:-12px;font-size:18px}.q-tab__indicator{opacity:0;height:2px;background:currentColor}.q-tab--active .q-tab__indicator{opacity:1;transform-origin:left}.q-tab--inactive{opacity:.85}.q-tabs{position:relative;transition:color .3s,background-color .3s}.q-tabs--scrollable.q-tabs__arrows--outside.q-tabs--horizontal{padding-left:36px;padding-right:36px}.q-tabs--scrollable.q-tabs__arrows--outside.q-tabs--vertical{padding-top:36px;padding-bottom:36px}.q-tabs--scrollable.q-tabs__arrows--outside .q-tabs__arrow--faded{opacity:.3;pointer-events:none}.q-tabs--scrollable.q-tabs__arrows--inside .q-tabs__arrow--faded{display:none}.q-tabs--not-scrollable.q-tabs__arrows--outside,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows.q-tabs__arrows--outside{padding-left:0;padding-right:0}.q-tabs--not-scrollable .q-tabs__arrow,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__arrow{display:none}.q-tabs--not-scrollable .q-tabs__content,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__content{border-radius:inherit}.q-tabs__arrow{cursor:pointer;font-size:32px;min-width:36px;text-shadow:0 0 3px #fff,0 0 1px #fff,0 0 1px #000;transition:opacity .3s}.q-tabs__content{overflow:hidden;flex:1 1 auto}.q-tabs__content--align-center{justify-content:center}.q-tabs__content--align-right{justify-content:flex-end}.q-tabs__content--align-justify .q-tab{flex:1 1 auto}.q-tabs__offset{display:none}.q-tabs--horizontal .q-tabs__arrow{height:100%}.q-tabs--horizontal .q-tabs__arrow--left{top:0;left:0;bottom:0}.q-tabs--horizontal .q-tabs__arrow--right{top:0;right:0;bottom:0}.q-tabs--vertical,.q-tabs--vertical .q-tabs__content{display:block!important;height:100%}.q-tabs--vertical .q-tabs__arrow{width:100%;height:36px;text-align:center}.q-tabs--vertical .q-tabs__arrow--left{top:0;left:0;right:0}.q-tabs--vertical .q-tabs__arrow--right{left:0;right:0;bottom:0}.q-tabs--vertical .q-tab{padding:0 8px}.q-tabs--vertical .q-tab__indicator{height:unset;width:2px}.q-tabs--vertical.q-tabs--not-scrollable .q-tabs__content{height:100%}.q-tabs--vertical.q-tabs--dense .q-tab__content{min-width:24px}.q-tabs--dense .q-tab{min-height:36px}.q-tabs--dense .q-tab--full{min-height:52px}.q-time{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;border-radius:4px;background:#fff;outline:0;width:290px;min-width:290px;max-width:100%}.q-time--bordered{border:1px solid rgba(0,0,0,.12)}.q-time__header{border-top-left-radius:inherit;color:#fff;background-color:var(--q-primary);padding:16px;font-weight:300}.q-time__actions{padding:0 16px 16px}.q-time__header-label{font-size:28px;line-height:1;letter-spacing:-.00833em}.q-time__header-label>div+div{margin-left:4px}.q-time__link{opacity:.56;outline:0;transition:opacity .3s ease-out}.q-time__link--active,.q-time__link:hover,.q-time__link:focus{opacity:1}.q-time__header-ampm{font-size:16px;letter-spacing:.1em}.q-time__content{padding:16px}.q-time__content:before{content:"";display:block;padding-bottom:100%}.q-time__container-parent{padding:16px}.q-time__container-child{border-radius:50%;background:#0000001f}.q-time__clock{padding:24px;width:100%;height:100%;max-width:100%;max-height:100%;font-size:14px}.q-time__clock-circle{position:relative}.q-time__clock-center{height:6px;width:6px;margin:auto;border-radius:50%;min-height:0;background:currentColor}.q-time__clock-pointer{width:2px;height:50%;transform-origin:0 0;min-height:0;position:absolute;left:50%;right:0;bottom:0;color:var(--q-primary);background:currentColor;transform:translate(-50%)}.q-time__clock-pointer:before,.q-time__clock-pointer:after{content:"";position:absolute;left:50%;border-radius:50%;background:currentColor;transform:translate(-50%)}.q-time__clock-pointer:before{bottom:-4px;width:8px;height:8px}.q-time__clock-pointer:after{top:-3px;height:6px;width:6px}.q-time__clock-position{position:absolute;min-height:32px;width:32px;height:32px;font-size:12px;line-height:32px;margin:0;padding:0;transform:translate(-50%,-50%);border-radius:50%}.q-time__clock-position--disable{opacity:.4}.q-time__clock-position--active{background-color:var(--q-primary);color:#fff}.q-time__clock-pos-0{top:0%;left:50%}.q-time__clock-pos-1{top:6.7%;left:75%}.q-time__clock-pos-2{top:25%;left:93.3%}.q-time__clock-pos-3{top:50%;left:100%}.q-time__clock-pos-4{top:75%;left:93.3%}.q-time__clock-pos-5{top:93.3%;left:75%}.q-time__clock-pos-6{top:100%;left:50%}.q-time__clock-pos-7{top:93.3%;left:25%}.q-time__clock-pos-8{top:75%;left:6.7%}.q-time__clock-pos-9{top:50%;left:0%}.q-time__clock-pos-10{top:25%;left:6.7%}.q-time__clock-pos-11{top:6.7%;left:25%}.q-time__clock-pos-12{top:15%;left:50%}.q-time__clock-pos-13{top:19.69%;left:67.5%}.q-time__clock-pos-14{top:32.5%;left:80.31%}.q-time__clock-pos-15{top:50%;left:85%}.q-time__clock-pos-16{top:67.5%;left:80.31%}.q-time__clock-pos-17{top:80.31%;left:67.5%}.q-time__clock-pos-18{top:85%;left:50%}.q-time__clock-pos-19{top:80.31%;left:32.5%}.q-time__clock-pos-20{top:67.5%;left:19.69%}.q-time__clock-pos-21{top:50%;left:15%}.q-time__clock-pos-22{top:32.5%;left:19.69%}.q-time__clock-pos-23{top:19.69%;left:32.5%}.q-time__now-button{background-color:var(--q-primary);color:#fff;top:12px;right:12px}.q-time.disabled .q-time__header-ampm,.q-time.disabled .q-time__content,.q-time--readonly .q-time__header-ampm,.q-time--readonly .q-time__content{pointer-events:none}.q-time--portrait{display:inline-flex;flex-direction:column}.q-time--portrait .q-time__header{border-top-right-radius:inherit;min-height:86px}.q-time--portrait .q-time__header-ampm{margin-left:12px}.q-time--portrait.q-time--bordered .q-time__content{margin:1px 0}.q-time--landscape{display:inline-flex;align-items:stretch;min-width:420px}.q-time--landscape>div{display:flex;flex-direction:column;justify-content:center}.q-time--landscape .q-time__header{border-bottom-left-radius:inherit;min-width:156px}.q-time--landscape .q-time__header-ampm{margin-top:12px}.q-time--dark{border-color:#ffffff47;box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-timeline{padding:0;width:100%;list-style:none}.q-timeline h6{line-height:inherit}.q-timeline--dark{color:#fff}.q-timeline--dark .q-timeline__subtitle{opacity:.7}.q-timeline__content{padding-bottom:24px}.q-timeline__title{margin-top:0;margin-bottom:16px}.q-timeline__subtitle{font-size:12px;margin-bottom:8px;opacity:.6;text-transform:uppercase;letter-spacing:1px;font-weight:700}.q-timeline__dot{position:absolute;top:0;bottom:0;width:15px}.q-timeline__dot:before,.q-timeline__dot:after{content:"";background:currentColor;display:block;position:absolute}.q-timeline__dot:before{border:3px solid transparent;border-radius:100%;height:15px;width:15px;top:4px;left:0;transition:background .3s ease-in-out,border .3s ease-in-out}.q-timeline__dot:after{width:3px;opacity:.4;top:24px;bottom:0;left:6px}.q-timeline__dot .q-icon{position:absolute;top:0;left:0;right:0;font-size:16px;height:38px;line-height:38px;width:100%;color:#fff}.q-timeline__dot .q-icon>svg,.q-timeline__dot .q-icon>img{width:1em;height:1em}.q-timeline__dot-img{position:absolute;top:4px;left:0;right:0;height:31px;width:31px;background:currentColor;border-radius:50%}.q-timeline__heading{position:relative}.q-timeline__heading:first-child .q-timeline__heading-title{padding-top:0}.q-timeline__heading:last-child .q-timeline__heading-title{padding-bottom:0}.q-timeline__heading-title{padding:32px 0;margin:0}.q-timeline__entry{position:relative;line-height:22px}.q-timeline__entry:last-child{padding-bottom:0!important}.q-timeline__entry:last-child .q-timeline__dot:after{content:none}.q-timeline__entry--icon .q-timeline__dot{width:31px}.q-timeline__entry--icon .q-timeline__dot:before{height:31px;width:31px}.q-timeline__entry--icon .q-timeline__dot:after{top:41px;left:14px}.q-timeline__entry--icon .q-timeline__subtitle{padding-top:8px}.q-timeline--dense--right .q-timeline__entry{padding-left:40px}.q-timeline--dense--right .q-timeline__entry--icon .q-timeline__dot{left:-8px}.q-timeline--dense--right .q-timeline__dot{left:0}.q-timeline--dense--left .q-timeline__heading{text-align:right}.q-timeline--dense--left .q-timeline__entry{padding-right:40px}.q-timeline--dense--left .q-timeline__entry--icon .q-timeline__dot{right:-8px}.q-timeline--dense--left .q-timeline__content,.q-timeline--dense--left .q-timeline__title,.q-timeline--dense--left .q-timeline__subtitle{text-align:right}.q-timeline--dense--left .q-timeline__dot{right:0}.q-timeline--comfortable{display:table}.q-timeline--comfortable .q-timeline__heading{display:table-row;font-size:200%}.q-timeline--comfortable .q-timeline__heading>div{display:table-cell}.q-timeline--comfortable .q-timeline__entry{display:table-row;padding:0}.q-timeline--comfortable .q-timeline__entry--icon .q-timeline__content{padding-top:8px}.q-timeline--comfortable .q-timeline__subtitle,.q-timeline--comfortable .q-timeline__dot,.q-timeline--comfortable .q-timeline__content{display:table-cell;vertical-align:top}.q-timeline--comfortable .q-timeline__subtitle{width:35%}.q-timeline--comfortable .q-timeline__dot{position:relative;min-width:31px}.q-timeline--comfortable--right .q-timeline__heading .q-timeline__heading-title{margin-left:-50px}.q-timeline--comfortable--right .q-timeline__subtitle{text-align:right;padding-right:30px}.q-timeline--comfortable--right .q-timeline__content{padding-left:30px}.q-timeline--comfortable--right .q-timeline__entry--icon .q-timeline__dot{left:-8px}.q-timeline--comfortable--left .q-timeline__heading{text-align:right}.q-timeline--comfortable--left .q-timeline__heading .q-timeline__heading-title{margin-right:-50px}.q-timeline--comfortable--left .q-timeline__subtitle{padding-left:30px}.q-timeline--comfortable--left .q-timeline__content{padding-right:30px}.q-timeline--comfortable--left .q-timeline__content,.q-timeline--comfortable--left .q-timeline__title{text-align:right}.q-timeline--comfortable--left .q-timeline__entry--icon .q-timeline__dot{right:0}.q-timeline--comfortable--left .q-timeline__dot{right:-8px}.q-timeline--loose .q-timeline__heading-title{text-align:center;margin-left:0}.q-timeline--loose .q-timeline__entry,.q-timeline--loose .q-timeline__subtitle,.q-timeline--loose .q-timeline__dot,.q-timeline--loose .q-timeline__content{display:block;margin:0;padding:0}.q-timeline--loose .q-timeline__dot{position:absolute;left:50%;margin-left:-7.15px}.q-timeline--loose .q-timeline__entry{padding-bottom:24px;overflow:hidden}.q-timeline--loose .q-timeline__entry--icon .q-timeline__dot{margin-left:-15px}.q-timeline--loose .q-timeline__entry--icon .q-timeline__subtitle{line-height:38px}.q-timeline--loose .q-timeline__entry--icon .q-timeline__content{padding-top:8px}.q-timeline--loose .q-timeline__entry--left .q-timeline__content,.q-timeline--loose .q-timeline__entry--right .q-timeline__subtitle{float:left;padding-right:30px;text-align:right}.q-timeline--loose .q-timeline__entry--left .q-timeline__subtitle,.q-timeline--loose .q-timeline__entry--right .q-timeline__content{float:right;text-align:left;padding-left:30px}.q-timeline--loose .q-timeline__subtitle,.q-timeline--loose .q-timeline__content{width:50%}.q-toggle{vertical-align:middle}.q-toggle__native{width:1px;height:1px}.q-toggle__track{height:.35em;border-radius:.175em;opacity:.38;background:currentColor}.q-toggle__thumb{top:.25em;left:.25em;width:.5em;height:.5em;transition:left .22s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none;z-index:0}.q-toggle__thumb:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:#fff;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.q-toggle__thumb .q-icon{font-size:.3em;min-width:1em;color:#000;opacity:.54;z-index:1}.q-toggle__inner{font-size:40px;width:1.4em;min-width:1.4em;height:1em;padding:.325em .3em;-webkit-print-color-adjust:exact}.q-toggle__inner--indet .q-toggle__thumb{left:.45em}.q-toggle__inner--truthy{color:var(--q-primary)}.q-toggle__inner--truthy .q-toggle__track{opacity:.54}.q-toggle__inner--truthy .q-toggle__thumb{left:.65em}.q-toggle__inner--truthy .q-toggle__thumb:after{background-color:currentColor}.q-toggle__inner--truthy .q-toggle__thumb .q-icon{color:#fff;opacity:1}.q-toggle.disabled{opacity:.75!important}.q-toggle--dark .q-toggle__inner{color:#fff}.q-toggle--dark .q-toggle__inner--truthy{color:var(--q-primary)}.q-toggle--dark .q-toggle__thumb:after{box-shadow:none}.q-toggle--dark .q-toggle__thumb:before{opacity:.32!important}.q-toggle--dense .q-toggle__inner{width:.8em;min-width:.8em;height:.5em;padding:.07625em 0}.q-toggle--dense .q-toggle__thumb{top:0;left:0}.q-toggle--dense .q-toggle__inner--indet .q-toggle__thumb{left:.15em}.q-toggle--dense .q-toggle__inner--truthy .q-toggle__thumb{left:.3em}.q-toggle--dense .q-toggle__label{padding-left:.5em}.q-toggle--dense.reverse .q-toggle__label{padding-left:0;padding-right:.5em}body.desktop .q-toggle:not(.disabled) .q-toggle__thumb:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;opacity:.12;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1)}body.desktop .q-toggle:not(.disabled):focus .q-toggle__thumb:before,body.desktop .q-toggle:not(.disabled):hover .q-toggle__thumb:before{transform:scale3d(2,2,1)}body.desktop .q-toggle--dense:not(.disabled):focus .q-toggle__thumb:before,body.desktop .q-toggle--dense:not(.disabled):hover .q-toggle__thumb:before{transform:scale3d(1.5,1.5,1)}.q-toolbar{position:relative;padding:0 12px;min-height:50px;width:100%}.q-toolbar--inset{padding-left:58px}.q-toolbar .q-avatar{font-size:38px}.q-toolbar__title{flex:1 1 0%;min-width:1px;max-width:100%;font-size:21px;font-weight:400;letter-spacing:.01em;padding:0 12px}.q-toolbar__title:first-child{padding-left:0}.q-toolbar__title:last-child{padding-right:0}.q-tooltip--style{font-size:10px;color:#fafafa;background:#757575;border-radius:4px;text-transform:none;font-weight:400}.q-tooltip{z-index:9000;position:fixed!important;overflow-y:auto;overflow-x:hidden;padding:6px 10px;max-width:95vw;max-height:65vh}@media(max-width:599.98px){.q-tooltip{font-size:14px;padding:8px 16px}}.q-tree{position:relative;color:#9e9e9e}.q-tree__node{padding:0 0 3px 22px}.q-tree__node:after{content:"";position:absolute;top:-3px;bottom:0;width:2px;right:auto;left:-13px;border-left:1px solid currentColor}.q-tree__node:last-child:after{display:none}.q-tree__node--disabled{pointer-events:none}.q-tree__node--disabled .disabled{opacity:1!important}.q-tree__node--disabled>div,.q-tree__node--disabled>i,.q-tree__node--disabled>.disabled{opacity:.6!important}.q-tree__node--disabled>div .q-tree__node--disabled>div,.q-tree__node--disabled>div .q-tree__node--disabled>i,.q-tree__node--disabled>div .q-tree__node--disabled>.disabled,.q-tree__node--disabled>i .q-tree__node--disabled>div,.q-tree__node--disabled>i .q-tree__node--disabled>i,.q-tree__node--disabled>i .q-tree__node--disabled>.disabled,.q-tree__node--disabled>.disabled .q-tree__node--disabled>div,.q-tree__node--disabled>.disabled .q-tree__node--disabled>i,.q-tree__node--disabled>.disabled .q-tree__node--disabled>.disabled{opacity:1!important}.q-tree__node-header:before{content:"";position:absolute;top:-3px;bottom:50%;width:31px;left:-35px;border-left:1px solid currentColor;border-bottom:1px solid currentColor}.q-tree__children{padding-left:25px}.q-tree__node-body{padding:5px 0 8px 5px}.q-tree__node--parent{padding-left:2px}.q-tree__node--parent>.q-tree__node-header:before{width:15px;left:-15px}.q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body{padding:5px 0 8px 27px}.q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body:after{content:"";position:absolute;top:0;width:2px;height:100%;right:auto;left:12px;border-left:1px solid currentColor;bottom:50px}.q-tree__node--link{cursor:pointer}.q-tree__node-header{padding:4px;margin-top:3px;border-radius:4px;outline:0}.q-tree__node-header-content{color:#000;transition:color .3s}.q-tree__node--selected .q-tree__node-header-content{color:#9e9e9e}.q-tree__icon,.q-tree__node-header-content .q-icon{font-size:21px}.q-tree__img{height:42px;border-radius:2px}.q-tree__avatar,.q-tree__node-header-content .q-avatar{font-size:28px;border-radius:50%;width:28px;height:28px}.q-tree__arrow,.q-tree__spinner{font-size:16px;margin-right:4px}.q-tree__arrow{transition:transform .3s}.q-tree__arrow--rotate{transform:rotate3d(0,0,1,90deg)}.q-tree__tickbox{margin-right:4px}.q-tree>.q-tree__node{padding:0}.q-tree>.q-tree__node:after,.q-tree>.q-tree__node>.q-tree__node-header:before{display:none}.q-tree>.q-tree__node--child>.q-tree__node-header{padding-left:24px}.q-tree--dark .q-tree__node-header-content{color:#fff}.q-tree--no-connectors .q-tree__node:after,.q-tree--no-connectors .q-tree__node-header:before,.q-tree--no-connectors .q-tree__node-body:after{display:none!important}.q-tree--dense>.q-tree__node--child>.q-tree__node-header{padding-left:1px}.q-tree--dense .q-tree__arrow,.q-tree--dense .q-tree__spinner{margin-right:1px}.q-tree--dense .q-tree__img{height:32px}.q-tree--dense .q-tree__tickbox{margin-right:3px}.q-tree--dense .q-tree__node{padding:0}.q-tree--dense .q-tree__node:after{top:0;left:-8px}.q-tree--dense .q-tree__node-header{margin-top:0;padding:1px}.q-tree--dense .q-tree__node-header:before{top:0;left:-8px;width:8px}.q-tree--dense .q-tree__node--child{padding-left:17px}.q-tree--dense .q-tree__node--child>.q-tree__node-header:before{left:-25px;width:21px}.q-tree--dense .q-tree__node-body{padding:0 0 2px}.q-tree--dense .q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body{padding:0 0 2px 20px}.q-tree--dense .q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body:after{left:8px}.q-tree--dense .q-tree__children{padding-left:16px}[dir=rtl] .q-tree__arrow{transform:rotate3d(0,0,1,180deg)}[dir=rtl] .q-tree__arrow--rotate{transform:rotate3d(0,0,1,90deg)}.q-uploader{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;border-radius:4px;vertical-align:top;background:#fff;position:relative;width:320px;max-height:320px}.q-uploader--bordered{border:1px solid rgba(0,0,0,.12)}.q-uploader__input{opacity:0;width:100%;height:100%;cursor:pointer!important;z-index:1}.q-uploader__input::-webkit-file-upload-button{cursor:pointer}.q-uploader__file:before{content:"";border-top-left-radius:inherit;border-top-right-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:currentColor;opacity:.04}.q-uploader__header{position:relative;border-top-left-radius:inherit;border-top-right-radius:inherit;background-color:var(--q-primary);color:#fff;width:100%}.q-uploader__spinner{font-size:24px;margin-right:4px}.q-uploader__header-content{padding:8px}.q-uploader__dnd{outline:1px dashed currentColor;outline-offset:-4px;background:#fff9}.q-uploader__overlay{font-size:36px;color:#000;background-color:#fff9}.q-uploader__list{position:relative;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;padding:8px;min-height:60px;flex:1 1 auto}.q-uploader__file{border-radius:4px 4px 0 0;border:1px solid rgba(0,0,0,.12)}.q-uploader__file .q-circular-progress{font-size:24px}.q-uploader__file--img{color:#fff;height:200px;min-width:200px;background-position:50% 50%;background-repeat:no-repeat}.q-uploader__file--img:before{content:none}.q-uploader__file--img .q-circular-progress{color:#fff}.q-uploader__file--img .q-uploader__file-header{padding-bottom:24px;background:linear-gradient(to bottom,#000000b3 20%,#fff0)}.q-uploader__file+.q-uploader__file{margin-top:8px}.q-uploader__file-header{position:relative;padding:4px 8px;border-top-left-radius:inherit;border-top-right-radius:inherit}.q-uploader__file-header-content{padding-right:8px}.q-uploader__file-status{font-size:24px;margin-right:4px}.q-uploader__title{font-size:14px;font-weight:700;line-height:1.285714;word-break:break-word}.q-uploader__subtitle{font-size:12px;line-height:1.5}.q-uploader--disable .q-uploader__header,.q-uploader--disable .q-uploader__list{pointer-events:none}.q-uploader--dark{border-color:#ffffff47;box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-uploader--dark .q-uploader__file{border-color:#ffffff47}.q-uploader--dark .q-uploader__dnd,.q-uploader--dark .q-uploader__overlay{background:#ffffff4d}.q-uploader--dark .q-uploader__overlay{color:#fff}.q-video{position:relative;overflow:hidden;border-radius:inherit}.q-video iframe,.q-video object,.q-video embed{width:100%;height:100%}.q-video--responsive{height:0}.q-video--responsive iframe,.q-video--responsive object,.q-video--responsive embed{position:absolute;top:0;left:0}.q-virtual-scroll:focus{outline:0}.q-virtual-scroll__content{outline:none;contain:content}.q-virtual-scroll__content>*{overflow-anchor:none}.q-virtual-scroll__content>[data-q-vs-anchor]{overflow-anchor:auto}.q-virtual-scroll__padding{background:linear-gradient(#fff0,#fff0 20%,#80808008 20%,#80808014,#80808008 80%,#fff0 80%,#fff0);background-size:var(--q-virtual-scroll-item-width, 100%) var(--q-virtual-scroll-item-height, 50px)}.q-table .q-virtual-scroll__padding tr{height:0!important}.q-table .q-virtual-scroll__padding td{padding:0!important}.q-virtual-scroll--horizontal{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch}.q-virtual-scroll--horizontal .q-virtual-scroll__content{display:flex;flex-direction:row;flex-wrap:nowrap}.q-virtual-scroll--horizontal .q-virtual-scroll__padding,.q-virtual-scroll--horizontal .q-virtual-scroll__content,.q-virtual-scroll--horizontal .q-virtual-scroll__content>*{flex:0 0 auto}.q-virtual-scroll--horizontal .q-virtual-scroll__padding{background:linear-gradient(to left,#fff0,#fff0 20%,#80808008 20%,#80808014,#80808008 80%,#fff0 80%,#fff0);background-size:var(--q-virtual-scroll-item-width, 50px) var(--q-virtual-scroll-item-height, 100%)}.q-ripple{position:absolute;top:0;left:0;width:100%;height:100%;color:inherit;border-radius:inherit;z-index:0;pointer-events:none;overflow:hidden;contain:strict}.q-ripple__inner{position:absolute;top:0;left:0;opacity:0;color:inherit;border-radius:50%;background:currentColor;pointer-events:none;will-change:transform,opacity}.q-ripple__inner--enter{transition:transform .225s cubic-bezier(.4,0,.2,1),opacity .1s cubic-bezier(.4,0,.2,1)}.q-ripple__inner--leave{transition:opacity .25s cubic-bezier(.4,0,.2,1)}.q-morph--invisible,.q-morph--internal{opacity:0!important;pointer-events:none!important;position:fixed!important;right:200vw!important;bottom:200vh!important}.q-bottom-sheet{padding-bottom:8px}.q-bottom-sheet__avatar{border-radius:50%}.q-bottom-sheet--list{width:400px}.q-bottom-sheet--list .q-icon,.q-bottom-sheet--list img{font-size:24px;width:24px;height:24px}.q-bottom-sheet--grid{width:700px}.q-bottom-sheet--grid .q-bottom-sheet__item{padding:8px;text-align:center;min-width:100px}.q-bottom-sheet--grid .q-icon,.q-bottom-sheet--grid img,.q-bottom-sheet--grid .q-bottom-sheet__empty-icon{font-size:48px;width:48px;height:48px;margin-bottom:8px}.q-bottom-sheet--grid .q-separator{margin:12px 0}.q-bottom-sheet__item{flex:0 0 33.3333%}@media(min-width:600px){.q-bottom-sheet__item{flex:0 0 25%}}.q-dialog-plugin{width:400px}.q-dialog-plugin__form{max-height:50vh}.q-dialog-plugin .q-card__section+.q-card__section{padding-top:0}.q-dialog-plugin--progress{text-align:center}.q-loading{color:#000;position:fixed!important}.q-loading__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;opacity:.5;z-index:-1;background-color:#000;transition:background-color .28s}.q-loading__box{border-radius:4px;padding:18px;color:#fff;max-width:450px}.q-loading__message{margin:40px 20px 0;text-align:center}.q-notifications__list{z-index:9500;pointer-events:none;left:0;right:0;margin-bottom:10px;position:relative}.q-notifications__list--center{top:0;bottom:0}.q-notifications__list--top{top:0}.q-notifications__list--bottom{bottom:0}body.q-ios-padding .q-notifications__list--center,body.q-ios-padding .q-notifications__list--top{top:20px;top:env(safe-area-inset-top)}body.q-ios-padding .q-notifications__list--center,body.q-ios-padding .q-notifications__list--bottom{bottom:env(safe-area-inset-bottom)}.q-notification{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;border-radius:4px;pointer-events:all;display:inline-flex;margin:10px 10px 0;transition:transform 1s,opacity 1s;z-index:9500;flex-shrink:0;max-width:95vw;background:#323232;color:#fff;font-size:14px}.q-notification__icon{font-size:24px;flex:0 0 1em}.q-notification__icon--additional{margin-right:16px}.q-notification__avatar{font-size:32px}.q-notification__avatar--additional{margin-right:8px}.q-notification__spinner{font-size:32px}.q-notification__spinner--additional{margin-right:8px}.q-notification__message{padding:8px 0}.q-notification__caption{font-size:.9em;opacity:.7}.q-notification__actions{color:var(--q-primary)}.q-notification__badge{animation:q-notif-badge .42s;padding:4px 8px;position:absolute;box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f;background-color:var(--q-negative);color:#fff;border-radius:4px;font-size:12px;line-height:12px}.q-notification__badge--top-left,.q-notification__badge--top-right{top:-6px}.q-notification__badge--bottom-left,.q-notification__badge--bottom-right{bottom:-6px}.q-notification__badge--top-left,.q-notification__badge--bottom-left{left:-22px}.q-notification__badge--top-right,.q-notification__badge--bottom-right{right:-22px}.q-notification__progress{z-index:-1;position:absolute;height:3px;bottom:0;left:-10px;right:-10px;animation:q-notif-progress linear;background:currentColor;opacity:.3;border-radius:4px 4px 0 0;transform-origin:0 50%;transform:scaleX(0)}.q-notification--standard{padding:0 16px;min-height:48px}.q-notification--standard .q-notification__actions{padding:6px 0 6px 8px;margin-right:-8px}.q-notification--multi-line{min-height:68px;padding:8px 16px}.q-notification--multi-line .q-notification__badge--top-left,.q-notification--multi-line .q-notification__badge--top-right{top:-15px}.q-notification--multi-line .q-notification__badge--bottom-left,.q-notification--multi-line .q-notification__badge--bottom-right{bottom:-15px}.q-notification--multi-line .q-notification__progress{bottom:-8px}.q-notification--multi-line .q-notification__actions{padding:0}.q-notification--multi-line .q-notification__actions--with-media{padding-left:25px}.q-notification--top-left-enter-from,.q-notification--top-left-leave-to,.q-notification--top-enter-from,.q-notification--top-leave-to,.q-notification--top-right-enter-from,.q-notification--top-right-leave-to{opacity:0;transform:translateY(-50px);z-index:9499}.q-notification--left-enter-from,.q-notification--left-leave-to,.q-notification--center-enter-from,.q-notification--center-leave-to,.q-notification--right-enter-from,.q-notification--right-leave-to{opacity:0;transform:rotateX(90deg);z-index:9499}.q-notification--bottom-left-enter-from,.q-notification--bottom-left-leave-to,.q-notification--bottom-enter-from,.q-notification--bottom-leave-to,.q-notification--bottom-right-enter-from,.q-notification--bottom-right-leave-to{opacity:0;transform:translateY(50px);z-index:9499}.q-notification--top-left-leave-active,.q-notification--top-leave-active,.q-notification--top-right-leave-active,.q-notification--left-leave-active,.q-notification--center-leave-active,.q-notification--right-leave-active,.q-notification--bottom-left-leave-active,.q-notification--bottom-leave-active,.q-notification--bottom-right-leave-active{position:absolute;z-index:9499;margin-left:0;margin-right:0}.q-notification--top-leave-active,.q-notification--center-leave-active{top:0}.q-notification--bottom-left-leave-active,.q-notification--bottom-leave-active,.q-notification--bottom-right-leave-active{bottom:0}@media(min-width:600px){.q-notification{max-width:65vw}}@keyframes q-notif-badge{15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}}@keyframes q-notif-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}:root{--animate-duration: .3s;--animate-delay: .3s;--animate-repeat: 1}.animated{animation-duration:var(--animate-duration);animation-fill-mode:both}.animated.infinite{animation-iteration-count:infinite}.animated.hinge{animation-duration:2s}.animated.repeat-1{animation-iteration-count:var(--animate-repeat)}.animated.repeat-2{animation-iteration-count:calc(var(--animate-repeat) * 2)}.animated.repeat-3{animation-iteration-count:calc(var(--animate-repeat) * 3)}.animated.delay-1s{animation-delay:var(--animate-delay)}.animated.delay-2s{animation-delay:calc(var(--animate-delay) * 2)}.animated.delay-3s{animation-delay:calc(var(--animate-delay) * 3)}.animated.delay-4s{animation-delay:calc(var(--animate-delay) * 4)}.animated.delay-5s{animation-delay:calc(var(--animate-delay) * 5)}.animated.faster{animation-duration:calc(var(--animate-duration) / 2)}.animated.fast{animation-duration:calc(var(--animate-duration) * .8)}.animated.slow{animation-duration:calc(var(--animate-duration) * 2)}.animated.slower{animation-duration:calc(var(--animate-duration) * 3)}@media print,(prefers-reduced-motion:reduce){.animated{animation-duration:1ms!important;transition-duration:1ms!important;animation-iteration-count:1!important}.animated[class*=Out]{opacity:0}}.q-animate--scale{animation:q-scale .15s;animation-timing-function:cubic-bezier(.25,.8,.25,1)}@keyframes q-scale{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}.q-animate--fade{animation:q-fade .2s}@keyframes q-fade{0%{opacity:0}to{opacity:1}}:root{--q-primary: #1976d2;--q-secondary: #26a69a;--q-accent: #9c27b0;--q-positive: #21ba45;--q-negative: #c10015;--q-info: #31ccec;--q-warning: #f2c037;--q-dark: #1d1d1d;--q-dark-page: #121212}.text-dark{color:var(--q-dark)!important}.bg-dark{background:var(--q-dark)!important}.text-primary{color:var(--q-primary)!important}.bg-primary{background:var(--q-primary)!important}.text-secondary{color:var(--q-secondary)!important}.bg-secondary{background:var(--q-secondary)!important}.text-accent{color:var(--q-accent)!important}.bg-accent{background:var(--q-accent)!important}.text-positive{color:var(--q-positive)!important}.bg-positive{background:var(--q-positive)!important}.text-negative{color:var(--q-negative)!important}.bg-negative{background:var(--q-negative)!important}.text-info{color:var(--q-info)!important}.bg-info{background:var(--q-info)!important}.text-warning{color:var(--q-warning)!important}.bg-warning{background:var(--q-warning)!important}.text-white{color:#fff!important}.bg-white{background:#fff!important}.text-black{color:#000!important}.bg-black{background:#000!important}.text-transparent{color:transparent!important}.bg-transparent{background:transparent!important}.text-separator{color:#0000001f!important}.bg-separator{background:#0000001f!important}.text-dark-separator{color:#ffffff47!important}.bg-dark-separator{background:#ffffff47!important}.text-red{color:#f44336!important}.text-red-1{color:#ffebee!important}.text-red-2{color:#ffcdd2!important}.text-red-3{color:#ef9a9a!important}.text-red-4{color:#e57373!important}.text-red-5{color:#ef5350!important}.text-red-6{color:#f44336!important}.text-red-7{color:#e53935!important}.text-red-8{color:#d32f2f!important}.text-red-9{color:#c62828!important}.text-red-10{color:#b71c1c!important}.text-red-11{color:#ff8a80!important}.text-red-12{color:#ff5252!important}.text-red-13{color:#ff1744!important}.text-red-14{color:#d50000!important}.text-pink{color:#e91e63!important}.text-pink-1{color:#fce4ec!important}.text-pink-2{color:#f8bbd0!important}.text-pink-3{color:#f48fb1!important}.text-pink-4{color:#f06292!important}.text-pink-5{color:#ec407a!important}.text-pink-6{color:#e91e63!important}.text-pink-7{color:#d81b60!important}.text-pink-8{color:#c2185b!important}.text-pink-9{color:#ad1457!important}.text-pink-10{color:#880e4f!important}.text-pink-11{color:#ff80ab!important}.text-pink-12{color:#ff4081!important}.text-pink-13{color:#f50057!important}.text-pink-14{color:#c51162!important}.text-purple{color:#9c27b0!important}.text-purple-1{color:#f3e5f5!important}.text-purple-2{color:#e1bee7!important}.text-purple-3{color:#ce93d8!important}.text-purple-4{color:#ba68c8!important}.text-purple-5{color:#ab47bc!important}.text-purple-6{color:#9c27b0!important}.text-purple-7{color:#8e24aa!important}.text-purple-8{color:#7b1fa2!important}.text-purple-9{color:#6a1b9a!important}.text-purple-10{color:#4a148c!important}.text-purple-11{color:#ea80fc!important}.text-purple-12{color:#e040fb!important}.text-purple-13{color:#d500f9!important}.text-purple-14{color:#a0f!important}.text-deep-purple{color:#673ab7!important}.text-deep-purple-1{color:#ede7f6!important}.text-deep-purple-2{color:#d1c4e9!important}.text-deep-purple-3{color:#b39ddb!important}.text-deep-purple-4{color:#9575cd!important}.text-deep-purple-5{color:#7e57c2!important}.text-deep-purple-6{color:#673ab7!important}.text-deep-purple-7{color:#5e35b1!important}.text-deep-purple-8{color:#512da8!important}.text-deep-purple-9{color:#4527a0!important}.text-deep-purple-10{color:#311b92!important}.text-deep-purple-11{color:#b388ff!important}.text-deep-purple-12{color:#7c4dff!important}.text-deep-purple-13{color:#651fff!important}.text-deep-purple-14{color:#6200ea!important}.text-indigo{color:#3f51b5!important}.text-indigo-1{color:#e8eaf6!important}.text-indigo-2{color:#c5cae9!important}.text-indigo-3{color:#9fa8da!important}.text-indigo-4{color:#7986cb!important}.text-indigo-5{color:#5c6bc0!important}.text-indigo-6{color:#3f51b5!important}.text-indigo-7{color:#3949ab!important}.text-indigo-8{color:#303f9f!important}.text-indigo-9{color:#283593!important}.text-indigo-10{color:#1a237e!important}.text-indigo-11{color:#8c9eff!important}.text-indigo-12{color:#536dfe!important}.text-indigo-13{color:#3d5afe!important}.text-indigo-14{color:#304ffe!important}.text-blue{color:#2196f3!important}.text-blue-1{color:#e3f2fd!important}.text-blue-2{color:#bbdefb!important}.text-blue-3{color:#90caf9!important}.text-blue-4{color:#64b5f6!important}.text-blue-5{color:#42a5f5!important}.text-blue-6{color:#2196f3!important}.text-blue-7{color:#1e88e5!important}.text-blue-8{color:#1976d2!important}.text-blue-9{color:#1565c0!important}.text-blue-10{color:#0d47a1!important}.text-blue-11{color:#82b1ff!important}.text-blue-12{color:#448aff!important}.text-blue-13{color:#2979ff!important}.text-blue-14{color:#2962ff!important}.text-light-blue{color:#03a9f4!important}.text-light-blue-1{color:#e1f5fe!important}.text-light-blue-2{color:#b3e5fc!important}.text-light-blue-3{color:#81d4fa!important}.text-light-blue-4{color:#4fc3f7!important}.text-light-blue-5{color:#29b6f6!important}.text-light-blue-6{color:#03a9f4!important}.text-light-blue-7{color:#039be5!important}.text-light-blue-8{color:#0288d1!important}.text-light-blue-9{color:#0277bd!important}.text-light-blue-10{color:#01579b!important}.text-light-blue-11{color:#80d8ff!important}.text-light-blue-12{color:#40c4ff!important}.text-light-blue-13{color:#00b0ff!important}.text-light-blue-14{color:#0091ea!important}.text-cyan{color:#00bcd4!important}.text-cyan-1{color:#e0f7fa!important}.text-cyan-2{color:#b2ebf2!important}.text-cyan-3{color:#80deea!important}.text-cyan-4{color:#4dd0e1!important}.text-cyan-5{color:#26c6da!important}.text-cyan-6{color:#00bcd4!important}.text-cyan-7{color:#00acc1!important}.text-cyan-8{color:#0097a7!important}.text-cyan-9{color:#00838f!important}.text-cyan-10{color:#006064!important}.text-cyan-11{color:#84ffff!important}.text-cyan-12{color:#18ffff!important}.text-cyan-13{color:#00e5ff!important}.text-cyan-14{color:#00b8d4!important}.text-teal{color:#009688!important}.text-teal-1{color:#e0f2f1!important}.text-teal-2{color:#b2dfdb!important}.text-teal-3{color:#80cbc4!important}.text-teal-4{color:#4db6ac!important}.text-teal-5{color:#26a69a!important}.text-teal-6{color:#009688!important}.text-teal-7{color:#00897b!important}.text-teal-8{color:#00796b!important}.text-teal-9{color:#00695c!important}.text-teal-10{color:#004d40!important}.text-teal-11{color:#a7ffeb!important}.text-teal-12{color:#64ffda!important}.text-teal-13{color:#1de9b6!important}.text-teal-14{color:#00bfa5!important}.text-green{color:#4caf50!important}.text-green-1{color:#e8f5e9!important}.text-green-2{color:#c8e6c9!important}.text-green-3{color:#a5d6a7!important}.text-green-4{color:#81c784!important}.text-green-5{color:#66bb6a!important}.text-green-6{color:#4caf50!important}.text-green-7{color:#43a047!important}.text-green-8{color:#388e3c!important}.text-green-9{color:#2e7d32!important}.text-green-10{color:#1b5e20!important}.text-green-11{color:#b9f6ca!important}.text-green-12{color:#69f0ae!important}.text-green-13{color:#00e676!important}.text-green-14{color:#00c853!important}.text-light-green{color:#8bc34a!important}.text-light-green-1{color:#f1f8e9!important}.text-light-green-2{color:#dcedc8!important}.text-light-green-3{color:#c5e1a5!important}.text-light-green-4{color:#aed581!important}.text-light-green-5{color:#9ccc65!important}.text-light-green-6{color:#8bc34a!important}.text-light-green-7{color:#7cb342!important}.text-light-green-8{color:#689f38!important}.text-light-green-9{color:#558b2f!important}.text-light-green-10{color:#33691e!important}.text-light-green-11{color:#ccff90!important}.text-light-green-12{color:#b2ff59!important}.text-light-green-13{color:#76ff03!important}.text-light-green-14{color:#64dd17!important}.text-lime{color:#cddc39!important}.text-lime-1{color:#f9fbe7!important}.text-lime-2{color:#f0f4c3!important}.text-lime-3{color:#e6ee9c!important}.text-lime-4{color:#dce775!important}.text-lime-5{color:#d4e157!important}.text-lime-6{color:#cddc39!important}.text-lime-7{color:#c0ca33!important}.text-lime-8{color:#afb42b!important}.text-lime-9{color:#9e9d24!important}.text-lime-10{color:#827717!important}.text-lime-11{color:#f4ff81!important}.text-lime-12{color:#eeff41!important}.text-lime-13{color:#c6ff00!important}.text-lime-14{color:#aeea00!important}.text-yellow{color:#ffeb3b!important}.text-yellow-1{color:#fffde7!important}.text-yellow-2{color:#fff9c4!important}.text-yellow-3{color:#fff59d!important}.text-yellow-4{color:#fff176!important}.text-yellow-5{color:#ffee58!important}.text-yellow-6{color:#ffeb3b!important}.text-yellow-7{color:#fdd835!important}.text-yellow-8{color:#fbc02d!important}.text-yellow-9{color:#f9a825!important}.text-yellow-10{color:#f57f17!important}.text-yellow-11{color:#ffff8d!important}.text-yellow-12{color:#ff0!important}.text-yellow-13{color:#ffea00!important}.text-yellow-14{color:#ffd600!important}.text-amber{color:#ffc107!important}.text-amber-1{color:#fff8e1!important}.text-amber-2{color:#ffecb3!important}.text-amber-3{color:#ffe082!important}.text-amber-4{color:#ffd54f!important}.text-amber-5{color:#ffca28!important}.text-amber-6{color:#ffc107!important}.text-amber-7{color:#ffb300!important}.text-amber-8{color:#ffa000!important}.text-amber-9{color:#ff8f00!important}.text-amber-10{color:#ff6f00!important}.text-amber-11{color:#ffe57f!important}.text-amber-12{color:#ffd740!important}.text-amber-13{color:#ffc400!important}.text-amber-14{color:#ffab00!important}.text-orange{color:#ff9800!important}.text-orange-1{color:#fff3e0!important}.text-orange-2{color:#ffe0b2!important}.text-orange-3{color:#ffcc80!important}.text-orange-4{color:#ffb74d!important}.text-orange-5{color:#ffa726!important}.text-orange-6{color:#ff9800!important}.text-orange-7{color:#fb8c00!important}.text-orange-8{color:#f57c00!important}.text-orange-9{color:#ef6c00!important}.text-orange-10{color:#e65100!important}.text-orange-11{color:#ffd180!important}.text-orange-12{color:#ffab40!important}.text-orange-13{color:#ff9100!important}.text-orange-14{color:#ff6d00!important}.text-deep-orange{color:#ff5722!important}.text-deep-orange-1{color:#fbe9e7!important}.text-deep-orange-2{color:#ffccbc!important}.text-deep-orange-3{color:#ffab91!important}.text-deep-orange-4{color:#ff8a65!important}.text-deep-orange-5{color:#ff7043!important}.text-deep-orange-6{color:#ff5722!important}.text-deep-orange-7{color:#f4511e!important}.text-deep-orange-8{color:#e64a19!important}.text-deep-orange-9{color:#d84315!important}.text-deep-orange-10{color:#bf360c!important}.text-deep-orange-11{color:#ff9e80!important}.text-deep-orange-12{color:#ff6e40!important}.text-deep-orange-13{color:#ff3d00!important}.text-deep-orange-14{color:#dd2c00!important}.text-brown{color:#795548!important}.text-brown-1{color:#efebe9!important}.text-brown-2{color:#d7ccc8!important}.text-brown-3{color:#bcaaa4!important}.text-brown-4{color:#a1887f!important}.text-brown-5{color:#8d6e63!important}.text-brown-6{color:#795548!important}.text-brown-7{color:#6d4c41!important}.text-brown-8{color:#5d4037!important}.text-brown-9{color:#4e342e!important}.text-brown-10{color:#3e2723!important}.text-brown-11{color:#d7ccc8!important}.text-brown-12{color:#bcaaa4!important}.text-brown-13{color:#8d6e63!important}.text-brown-14{color:#5d4037!important}.text-grey{color:#9e9e9e!important}.text-grey-1{color:#fafafa!important}.text-grey-2{color:#f5f5f5!important}.text-grey-3{color:#eee!important}.text-grey-4{color:#e0e0e0!important}.text-grey-5{color:#bdbdbd!important}.text-grey-6{color:#9e9e9e!important}.text-grey-7{color:#757575!important}.text-grey-8{color:#616161!important}.text-grey-9{color:#424242!important}.text-grey-10{color:#212121!important}.text-grey-11{color:#f5f5f5!important}.text-grey-12{color:#eee!important}.text-grey-13{color:#bdbdbd!important}.text-grey-14{color:#616161!important}.text-blue-grey{color:#607d8b!important}.text-blue-grey-1{color:#eceff1!important}.text-blue-grey-2{color:#cfd8dc!important}.text-blue-grey-3{color:#b0bec5!important}.text-blue-grey-4{color:#90a4ae!important}.text-blue-grey-5{color:#78909c!important}.text-blue-grey-6{color:#607d8b!important}.text-blue-grey-7{color:#546e7a!important}.text-blue-grey-8{color:#455a64!important}.text-blue-grey-9{color:#37474f!important}.text-blue-grey-10{color:#263238!important}.text-blue-grey-11{color:#cfd8dc!important}.text-blue-grey-12{color:#b0bec5!important}.text-blue-grey-13{color:#78909c!important}.text-blue-grey-14{color:#455a64!important}.bg-red{background:#f44336!important}.bg-red-1{background:#ffebee!important}.bg-red-2{background:#ffcdd2!important}.bg-red-3{background:#ef9a9a!important}.bg-red-4{background:#e57373!important}.bg-red-5{background:#ef5350!important}.bg-red-6{background:#f44336!important}.bg-red-7{background:#e53935!important}.bg-red-8{background:#d32f2f!important}.bg-red-9{background:#c62828!important}.bg-red-10{background:#b71c1c!important}.bg-red-11{background:#ff8a80!important}.bg-red-12{background:#ff5252!important}.bg-red-13{background:#ff1744!important}.bg-red-14{background:#d50000!important}.bg-pink{background:#e91e63!important}.bg-pink-1{background:#fce4ec!important}.bg-pink-2{background:#f8bbd0!important}.bg-pink-3{background:#f48fb1!important}.bg-pink-4{background:#f06292!important}.bg-pink-5{background:#ec407a!important}.bg-pink-6{background:#e91e63!important}.bg-pink-7{background:#d81b60!important}.bg-pink-8{background:#c2185b!important}.bg-pink-9{background:#ad1457!important}.bg-pink-10{background:#880e4f!important}.bg-pink-11{background:#ff80ab!important}.bg-pink-12{background:#ff4081!important}.bg-pink-13{background:#f50057!important}.bg-pink-14{background:#c51162!important}.bg-purple{background:#9c27b0!important}.bg-purple-1{background:#f3e5f5!important}.bg-purple-2{background:#e1bee7!important}.bg-purple-3{background:#ce93d8!important}.bg-purple-4{background:#ba68c8!important}.bg-purple-5{background:#ab47bc!important}.bg-purple-6{background:#9c27b0!important}.bg-purple-7{background:#8e24aa!important}.bg-purple-8{background:#7b1fa2!important}.bg-purple-9{background:#6a1b9a!important}.bg-purple-10{background:#4a148c!important}.bg-purple-11{background:#ea80fc!important}.bg-purple-12{background:#e040fb!important}.bg-purple-13{background:#d500f9!important}.bg-purple-14{background:#a0f!important}.bg-deep-purple{background:#673ab7!important}.bg-deep-purple-1{background:#ede7f6!important}.bg-deep-purple-2{background:#d1c4e9!important}.bg-deep-purple-3{background:#b39ddb!important}.bg-deep-purple-4{background:#9575cd!important}.bg-deep-purple-5{background:#7e57c2!important}.bg-deep-purple-6{background:#673ab7!important}.bg-deep-purple-7{background:#5e35b1!important}.bg-deep-purple-8{background:#512da8!important}.bg-deep-purple-9{background:#4527a0!important}.bg-deep-purple-10{background:#311b92!important}.bg-deep-purple-11{background:#b388ff!important}.bg-deep-purple-12{background:#7c4dff!important}.bg-deep-purple-13{background:#651fff!important}.bg-deep-purple-14{background:#6200ea!important}.bg-indigo{background:#3f51b5!important}.bg-indigo-1{background:#e8eaf6!important}.bg-indigo-2{background:#c5cae9!important}.bg-indigo-3{background:#9fa8da!important}.bg-indigo-4{background:#7986cb!important}.bg-indigo-5{background:#5c6bc0!important}.bg-indigo-6{background:#3f51b5!important}.bg-indigo-7{background:#3949ab!important}.bg-indigo-8{background:#303f9f!important}.bg-indigo-9{background:#283593!important}.bg-indigo-10{background:#1a237e!important}.bg-indigo-11{background:#8c9eff!important}.bg-indigo-12{background:#536dfe!important}.bg-indigo-13{background:#3d5afe!important}.bg-indigo-14{background:#304ffe!important}.bg-blue{background:#2196f3!important}.bg-blue-1{background:#e3f2fd!important}.bg-blue-2{background:#bbdefb!important}.bg-blue-3{background:#90caf9!important}.bg-blue-4{background:#64b5f6!important}.bg-blue-5{background:#42a5f5!important}.bg-blue-6{background:#2196f3!important}.bg-blue-7{background:#1e88e5!important}.bg-blue-8{background:#1976d2!important}.bg-blue-9{background:#1565c0!important}.bg-blue-10{background:#0d47a1!important}.bg-blue-11{background:#82b1ff!important}.bg-blue-12{background:#448aff!important}.bg-blue-13{background:#2979ff!important}.bg-blue-14{background:#2962ff!important}.bg-light-blue{background:#03a9f4!important}.bg-light-blue-1{background:#e1f5fe!important}.bg-light-blue-2{background:#b3e5fc!important}.bg-light-blue-3{background:#81d4fa!important}.bg-light-blue-4{background:#4fc3f7!important}.bg-light-blue-5{background:#29b6f6!important}.bg-light-blue-6{background:#03a9f4!important}.bg-light-blue-7{background:#039be5!important}.bg-light-blue-8{background:#0288d1!important}.bg-light-blue-9{background:#0277bd!important}.bg-light-blue-10{background:#01579b!important}.bg-light-blue-11{background:#80d8ff!important}.bg-light-blue-12{background:#40c4ff!important}.bg-light-blue-13{background:#00b0ff!important}.bg-light-blue-14{background:#0091ea!important}.bg-cyan{background:#00bcd4!important}.bg-cyan-1{background:#e0f7fa!important}.bg-cyan-2{background:#b2ebf2!important}.bg-cyan-3{background:#80deea!important}.bg-cyan-4{background:#4dd0e1!important}.bg-cyan-5{background:#26c6da!important}.bg-cyan-6{background:#00bcd4!important}.bg-cyan-7{background:#00acc1!important}.bg-cyan-8{background:#0097a7!important}.bg-cyan-9{background:#00838f!important}.bg-cyan-10{background:#006064!important}.bg-cyan-11{background:#84ffff!important}.bg-cyan-12{background:#18ffff!important}.bg-cyan-13{background:#00e5ff!important}.bg-cyan-14{background:#00b8d4!important}.bg-teal{background:#009688!important}.bg-teal-1{background:#e0f2f1!important}.bg-teal-2{background:#b2dfdb!important}.bg-teal-3{background:#80cbc4!important}.bg-teal-4{background:#4db6ac!important}.bg-teal-5{background:#26a69a!important}.bg-teal-6{background:#009688!important}.bg-teal-7{background:#00897b!important}.bg-teal-8{background:#00796b!important}.bg-teal-9{background:#00695c!important}.bg-teal-10{background:#004d40!important}.bg-teal-11{background:#a7ffeb!important}.bg-teal-12{background:#64ffda!important}.bg-teal-13{background:#1de9b6!important}.bg-teal-14{background:#00bfa5!important}.bg-green{background:#4caf50!important}.bg-green-1{background:#e8f5e9!important}.bg-green-2{background:#c8e6c9!important}.bg-green-3{background:#a5d6a7!important}.bg-green-4{background:#81c784!important}.bg-green-5{background:#66bb6a!important}.bg-green-6{background:#4caf50!important}.bg-green-7{background:#43a047!important}.bg-green-8{background:#388e3c!important}.bg-green-9{background:#2e7d32!important}.bg-green-10{background:#1b5e20!important}.bg-green-11{background:#b9f6ca!important}.bg-green-12{background:#69f0ae!important}.bg-green-13{background:#00e676!important}.bg-green-14{background:#00c853!important}.bg-light-green{background:#8bc34a!important}.bg-light-green-1{background:#f1f8e9!important}.bg-light-green-2{background:#dcedc8!important}.bg-light-green-3{background:#c5e1a5!important}.bg-light-green-4{background:#aed581!important}.bg-light-green-5{background:#9ccc65!important}.bg-light-green-6{background:#8bc34a!important}.bg-light-green-7{background:#7cb342!important}.bg-light-green-8{background:#689f38!important}.bg-light-green-9{background:#558b2f!important}.bg-light-green-10{background:#33691e!important}.bg-light-green-11{background:#ccff90!important}.bg-light-green-12{background:#b2ff59!important}.bg-light-green-13{background:#76ff03!important}.bg-light-green-14{background:#64dd17!important}.bg-lime{background:#cddc39!important}.bg-lime-1{background:#f9fbe7!important}.bg-lime-2{background:#f0f4c3!important}.bg-lime-3{background:#e6ee9c!important}.bg-lime-4{background:#dce775!important}.bg-lime-5{background:#d4e157!important}.bg-lime-6{background:#cddc39!important}.bg-lime-7{background:#c0ca33!important}.bg-lime-8{background:#afb42b!important}.bg-lime-9{background:#9e9d24!important}.bg-lime-10{background:#827717!important}.bg-lime-11{background:#f4ff81!important}.bg-lime-12{background:#eeff41!important}.bg-lime-13{background:#c6ff00!important}.bg-lime-14{background:#aeea00!important}.bg-yellow{background:#ffeb3b!important}.bg-yellow-1{background:#fffde7!important}.bg-yellow-2{background:#fff9c4!important}.bg-yellow-3{background:#fff59d!important}.bg-yellow-4{background:#fff176!important}.bg-yellow-5{background:#ffee58!important}.bg-yellow-6{background:#ffeb3b!important}.bg-yellow-7{background:#fdd835!important}.bg-yellow-8{background:#fbc02d!important}.bg-yellow-9{background:#f9a825!important}.bg-yellow-10{background:#f57f17!important}.bg-yellow-11{background:#ffff8d!important}.bg-yellow-12{background:#ff0!important}.bg-yellow-13{background:#ffea00!important}.bg-yellow-14{background:#ffd600!important}.bg-amber{background:#ffc107!important}.bg-amber-1{background:#fff8e1!important}.bg-amber-2{background:#ffecb3!important}.bg-amber-3{background:#ffe082!important}.bg-amber-4{background:#ffd54f!important}.bg-amber-5{background:#ffca28!important}.bg-amber-6{background:#ffc107!important}.bg-amber-7{background:#ffb300!important}.bg-amber-8{background:#ffa000!important}.bg-amber-9{background:#ff8f00!important}.bg-amber-10{background:#ff6f00!important}.bg-amber-11{background:#ffe57f!important}.bg-amber-12{background:#ffd740!important}.bg-amber-13{background:#ffc400!important}.bg-amber-14{background:#ffab00!important}.bg-orange{background:#ff9800!important}.bg-orange-1{background:#fff3e0!important}.bg-orange-2{background:#ffe0b2!important}.bg-orange-3{background:#ffcc80!important}.bg-orange-4{background:#ffb74d!important}.bg-orange-5{background:#ffa726!important}.bg-orange-6{background:#ff9800!important}.bg-orange-7{background:#fb8c00!important}.bg-orange-8{background:#f57c00!important}.bg-orange-9{background:#ef6c00!important}.bg-orange-10{background:#e65100!important}.bg-orange-11{background:#ffd180!important}.bg-orange-12{background:#ffab40!important}.bg-orange-13{background:#ff9100!important}.bg-orange-14{background:#ff6d00!important}.bg-deep-orange{background:#ff5722!important}.bg-deep-orange-1{background:#fbe9e7!important}.bg-deep-orange-2{background:#ffccbc!important}.bg-deep-orange-3{background:#ffab91!important}.bg-deep-orange-4{background:#ff8a65!important}.bg-deep-orange-5{background:#ff7043!important}.bg-deep-orange-6{background:#ff5722!important}.bg-deep-orange-7{background:#f4511e!important}.bg-deep-orange-8{background:#e64a19!important}.bg-deep-orange-9{background:#d84315!important}.bg-deep-orange-10{background:#bf360c!important}.bg-deep-orange-11{background:#ff9e80!important}.bg-deep-orange-12{background:#ff6e40!important}.bg-deep-orange-13{background:#ff3d00!important}.bg-deep-orange-14{background:#dd2c00!important}.bg-brown{background:#795548!important}.bg-brown-1{background:#efebe9!important}.bg-brown-2{background:#d7ccc8!important}.bg-brown-3{background:#bcaaa4!important}.bg-brown-4{background:#a1887f!important}.bg-brown-5{background:#8d6e63!important}.bg-brown-6{background:#795548!important}.bg-brown-7{background:#6d4c41!important}.bg-brown-8{background:#5d4037!important}.bg-brown-9{background:#4e342e!important}.bg-brown-10{background:#3e2723!important}.bg-brown-11{background:#d7ccc8!important}.bg-brown-12{background:#bcaaa4!important}.bg-brown-13{background:#8d6e63!important}.bg-brown-14{background:#5d4037!important}.bg-grey{background:#9e9e9e!important}.bg-grey-1{background:#fafafa!important}.bg-grey-2{background:#f5f5f5!important}.bg-grey-3{background:#eee!important}.bg-grey-4{background:#e0e0e0!important}.bg-grey-5{background:#bdbdbd!important}.bg-grey-6{background:#9e9e9e!important}.bg-grey-7{background:#757575!important}.bg-grey-8{background:#616161!important}.bg-grey-9{background:#424242!important}.bg-grey-10{background:#212121!important}.bg-grey-11{background:#f5f5f5!important}.bg-grey-12{background:#eee!important}.bg-grey-13{background:#bdbdbd!important}.bg-grey-14{background:#616161!important}.bg-blue-grey{background:#607d8b!important}.bg-blue-grey-1{background:#eceff1!important}.bg-blue-grey-2{background:#cfd8dc!important}.bg-blue-grey-3{background:#b0bec5!important}.bg-blue-grey-4{background:#90a4ae!important}.bg-blue-grey-5{background:#78909c!important}.bg-blue-grey-6{background:#607d8b!important}.bg-blue-grey-7{background:#546e7a!important}.bg-blue-grey-8{background:#455a64!important}.bg-blue-grey-9{background:#37474f!important}.bg-blue-grey-10{background:#263238!important}.bg-blue-grey-11{background:#cfd8dc!important}.bg-blue-grey-12{background:#b0bec5!important}.bg-blue-grey-13{background:#78909c!important}.bg-blue-grey-14{background:#455a64!important}.shadow-transition{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)!important}.shadow-1{box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f}.shadow-up-1{box-shadow:0 -1px 3px #0003,0 -1px 1px #00000024,0 -2px 1px -1px #0000001f}.shadow-2{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}.shadow-up-2{box-shadow:0 -1px 5px #0003,0 -2px 2px #00000024,0 -3px 1px -2px #0000001f}.shadow-3{box-shadow:0 1px 8px #0003,0 3px 4px #00000024,0 3px 3px -2px #0000001f}.shadow-up-3{box-shadow:0 -1px 8px #0003,0 -3px 4px #00000024,0 -3px 3px -2px #0000001f}.shadow-4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.shadow-up-4{box-shadow:0 -2px 4px -1px #0003,0 -4px 5px #00000024,0 -1px 10px #0000001f}.shadow-5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.shadow-up-5{box-shadow:0 -3px 5px -1px #0003,0 -5px 8px #00000024,0 -1px 14px #0000001f}.shadow-6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.shadow-up-6{box-shadow:0 -3px 5px -1px #0003,0 -6px 10px #00000024,0 -1px 18px #0000001f}.shadow-7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.shadow-up-7{box-shadow:0 -4px 5px -2px #0003,0 -7px 10px 1px #00000024,0 -2px 16px 1px #0000001f}.shadow-8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.shadow-up-8{box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.shadow-9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.shadow-up-9{box-shadow:0 -5px 6px -3px #0003,0 -9px 12px 1px #00000024,0 -3px 16px 2px #0000001f}.shadow-10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.shadow-up-10{box-shadow:0 -6px 6px -3px #0003,0 -10px 14px 1px #00000024,0 -4px 18px 3px #0000001f}.shadow-11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.shadow-up-11{box-shadow:0 -6px 7px -4px #0003,0 -11px 15px 1px #00000024,0 -4px 20px 3px #0000001f}.shadow-12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.shadow-up-12{box-shadow:0 -7px 8px -4px #0003,0 -12px 17px 2px #00000024,0 -5px 22px 4px #0000001f}.shadow-13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.shadow-up-13{box-shadow:0 -7px 8px -4px #0003,0 -13px 19px 2px #00000024,0 -5px 24px 4px #0000001f}.shadow-14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.shadow-up-14{box-shadow:0 -7px 9px -4px #0003,0 -14px 21px 2px #00000024,0 -5px 26px 4px #0000001f}.shadow-15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.shadow-up-15{box-shadow:0 -8px 9px -5px #0003,0 -15px 22px 2px #00000024,0 -6px 28px 5px #0000001f}.shadow-16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.shadow-up-16{box-shadow:0 -8px 10px -5px #0003,0 -16px 24px 2px #00000024,0 -6px 30px 5px #0000001f}.shadow-17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.shadow-up-17{box-shadow:0 -8px 11px -5px #0003,0 -17px 26px 2px #00000024,0 -6px 32px 5px #0000001f}.shadow-18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.shadow-up-18{box-shadow:0 -9px 11px -5px #0003,0 -18px 28px 2px #00000024,0 -7px 34px 6px #0000001f}.shadow-19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.shadow-up-19{box-shadow:0 -9px 12px -6px #0003,0 -19px 29px 2px #00000024,0 -7px 36px 6px #0000001f}.shadow-20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.shadow-up-20{box-shadow:0 -10px 13px -6px #0003,0 -20px 31px 3px #00000024,0 -8px 38px 7px #0000001f}.shadow-21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.shadow-up-21{box-shadow:0 -10px 13px -6px #0003,0 -21px 33px 3px #00000024,0 -8px 40px 7px #0000001f}.shadow-22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.shadow-up-22{box-shadow:0 -10px 14px -6px #0003,0 -22px 35px 3px #00000024,0 -8px 42px 7px #0000001f}.shadow-23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.shadow-up-23{box-shadow:0 -11px 14px -7px #0003,0 -23px 36px 3px #00000024,0 -9px 44px 8px #0000001f}.shadow-24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.shadow-up-24{box-shadow:0 -11px 15px -7px #0003,0 -24px 38px 3px #00000024,0 -9px 46px 8px #0000001f}.inset-shadow{box-shadow:0 7px 9px -7px #000000b3 inset}.inset-shadow-down{box-shadow:0 -7px 9px -7px #000000b3 inset}body.body--dark .shadow-1{box-shadow:0 1px 3px #fff3,0 1px 1px #ffffff24,0 2px 1px -1px #ffffff1f}body.body--dark .shadow-up-1{box-shadow:0 -1px 3px #fff3,0 -1px 1px #ffffff24,0 -2px 1px -1px #ffffff1f}body.body--dark .shadow-2{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}body.body--dark .shadow-up-2{box-shadow:0 -1px 5px #fff3,0 -2px 2px #ffffff24,0 -3px 1px -2px #ffffff1f}body.body--dark .shadow-3{box-shadow:0 1px 8px #fff3,0 3px 4px #ffffff24,0 3px 3px -2px #ffffff1f}body.body--dark .shadow-up-3{box-shadow:0 -1px 8px #fff3,0 -3px 4px #ffffff24,0 -3px 3px -2px #ffffff1f}body.body--dark .shadow-4{box-shadow:0 2px 4px -1px #fff3,0 4px 5px #ffffff24,0 1px 10px #ffffff1f}body.body--dark .shadow-up-4{box-shadow:0 -2px 4px -1px #fff3,0 -4px 5px #ffffff24,0 -1px 10px #ffffff1f}body.body--dark .shadow-5{box-shadow:0 3px 5px -1px #fff3,0 5px 8px #ffffff24,0 1px 14px #ffffff1f}body.body--dark .shadow-up-5{box-shadow:0 -3px 5px -1px #fff3,0 -5px 8px #ffffff24,0 -1px 14px #ffffff1f}body.body--dark .shadow-6{box-shadow:0 3px 5px -1px #fff3,0 6px 10px #ffffff24,0 1px 18px #ffffff1f}body.body--dark .shadow-up-6{box-shadow:0 -3px 5px -1px #fff3,0 -6px 10px #ffffff24,0 -1px 18px #ffffff1f}body.body--dark .shadow-7{box-shadow:0 4px 5px -2px #fff3,0 7px 10px 1px #ffffff24,0 2px 16px 1px #ffffff1f}body.body--dark .shadow-up-7{box-shadow:0 -4px 5px -2px #fff3,0 -7px 10px 1px #ffffff24,0 -2px 16px 1px #ffffff1f}body.body--dark .shadow-8{box-shadow:0 5px 5px -3px #fff3,0 8px 10px 1px #ffffff24,0 3px 14px 2px #ffffff1f}body.body--dark .shadow-up-8{box-shadow:0 -5px 5px -3px #fff3,0 -8px 10px 1px #ffffff24,0 -3px 14px 2px #ffffff1f}body.body--dark .shadow-9{box-shadow:0 5px 6px -3px #fff3,0 9px 12px 1px #ffffff24,0 3px 16px 2px #ffffff1f}body.body--dark .shadow-up-9{box-shadow:0 -5px 6px -3px #fff3,0 -9px 12px 1px #ffffff24,0 -3px 16px 2px #ffffff1f}body.body--dark .shadow-10{box-shadow:0 6px 6px -3px #fff3,0 10px 14px 1px #ffffff24,0 4px 18px 3px #ffffff1f}body.body--dark .shadow-up-10{box-shadow:0 -6px 6px -3px #fff3,0 -10px 14px 1px #ffffff24,0 -4px 18px 3px #ffffff1f}body.body--dark .shadow-11{box-shadow:0 6px 7px -4px #fff3,0 11px 15px 1px #ffffff24,0 4px 20px 3px #ffffff1f}body.body--dark .shadow-up-11{box-shadow:0 -6px 7px -4px #fff3,0 -11px 15px 1px #ffffff24,0 -4px 20px 3px #ffffff1f}body.body--dark .shadow-12{box-shadow:0 7px 8px -4px #fff3,0 12px 17px 2px #ffffff24,0 5px 22px 4px #ffffff1f}body.body--dark .shadow-up-12{box-shadow:0 -7px 8px -4px #fff3,0 -12px 17px 2px #ffffff24,0 -5px 22px 4px #ffffff1f}body.body--dark .shadow-13{box-shadow:0 7px 8px -4px #fff3,0 13px 19px 2px #ffffff24,0 5px 24px 4px #ffffff1f}body.body--dark .shadow-up-13{box-shadow:0 -7px 8px -4px #fff3,0 -13px 19px 2px #ffffff24,0 -5px 24px 4px #ffffff1f}body.body--dark .shadow-14{box-shadow:0 7px 9px -4px #fff3,0 14px 21px 2px #ffffff24,0 5px 26px 4px #ffffff1f}body.body--dark .shadow-up-14{box-shadow:0 -7px 9px -4px #fff3,0 -14px 21px 2px #ffffff24,0 -5px 26px 4px #ffffff1f}body.body--dark .shadow-15{box-shadow:0 8px 9px -5px #fff3,0 15px 22px 2px #ffffff24,0 6px 28px 5px #ffffff1f}body.body--dark .shadow-up-15{box-shadow:0 -8px 9px -5px #fff3,0 -15px 22px 2px #ffffff24,0 -6px 28px 5px #ffffff1f}body.body--dark .shadow-16{box-shadow:0 8px 10px -5px #fff3,0 16px 24px 2px #ffffff24,0 6px 30px 5px #ffffff1f}body.body--dark .shadow-up-16{box-shadow:0 -8px 10px -5px #fff3,0 -16px 24px 2px #ffffff24,0 -6px 30px 5px #ffffff1f}body.body--dark .shadow-17{box-shadow:0 8px 11px -5px #fff3,0 17px 26px 2px #ffffff24,0 6px 32px 5px #ffffff1f}body.body--dark .shadow-up-17{box-shadow:0 -8px 11px -5px #fff3,0 -17px 26px 2px #ffffff24,0 -6px 32px 5px #ffffff1f}body.body--dark .shadow-18{box-shadow:0 9px 11px -5px #fff3,0 18px 28px 2px #ffffff24,0 7px 34px 6px #ffffff1f}body.body--dark .shadow-up-18{box-shadow:0 -9px 11px -5px #fff3,0 -18px 28px 2px #ffffff24,0 -7px 34px 6px #ffffff1f}body.body--dark .shadow-19{box-shadow:0 9px 12px -6px #fff3,0 19px 29px 2px #ffffff24,0 7px 36px 6px #ffffff1f}body.body--dark .shadow-up-19{box-shadow:0 -9px 12px -6px #fff3,0 -19px 29px 2px #ffffff24,0 -7px 36px 6px #ffffff1f}body.body--dark .shadow-20{box-shadow:0 10px 13px -6px #fff3,0 20px 31px 3px #ffffff24,0 8px 38px 7px #ffffff1f}body.body--dark .shadow-up-20{box-shadow:0 -10px 13px -6px #fff3,0 -20px 31px 3px #ffffff24,0 -8px 38px 7px #ffffff1f}body.body--dark .shadow-21{box-shadow:0 10px 13px -6px #fff3,0 21px 33px 3px #ffffff24,0 8px 40px 7px #ffffff1f}body.body--dark .shadow-up-21{box-shadow:0 -10px 13px -6px #fff3,0 -21px 33px 3px #ffffff24,0 -8px 40px 7px #ffffff1f}body.body--dark .shadow-22{box-shadow:0 10px 14px -6px #fff3,0 22px 35px 3px #ffffff24,0 8px 42px 7px #ffffff1f}body.body--dark .shadow-up-22{box-shadow:0 -10px 14px -6px #fff3,0 -22px 35px 3px #ffffff24,0 -8px 42px 7px #ffffff1f}body.body--dark .shadow-23{box-shadow:0 11px 14px -7px #fff3,0 23px 36px 3px #ffffff24,0 9px 44px 8px #ffffff1f}body.body--dark .shadow-up-23{box-shadow:0 -11px 14px -7px #fff3,0 -23px 36px 3px #ffffff24,0 -9px 44px 8px #ffffff1f}body.body--dark .shadow-24{box-shadow:0 11px 15px -7px #fff3,0 24px 38px 3px #ffffff24,0 9px 46px 8px #ffffff1f}body.body--dark .shadow-up-24{box-shadow:0 -11px 15px -7px #fff3,0 -24px 38px 3px #ffffff24,0 -9px 46px 8px #ffffff1f}body.body--dark .inset-shadow{box-shadow:0 7px 9px -7px #ffffffb3 inset}body.body--dark .inset-shadow-down{box-shadow:0 -7px 9px -7px #ffffffb3 inset}.no-shadow,.shadow-0{box-shadow:none!important}.z-marginals{z-index:2000}.z-notify{z-index:9500}.z-fullscreen{z-index:6000}.z-inherit{z-index:inherit!important}.row,.column,.flex{display:flex;flex-wrap:wrap}.row.inline,.column.inline,.flex.inline{display:inline-flex}.row.reverse{flex-direction:row-reverse}.column{flex-direction:column}.column.reverse{flex-direction:column-reverse}.wrap{flex-wrap:wrap}.no-wrap{flex-wrap:nowrap}.reverse-wrap{flex-wrap:wrap-reverse}.order-first{order:-10000}.order-last{order:10000}.order-none{order:0}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center,.flex-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center,.flex-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-stretch{align-content:stretch}.content-between{align-content:space-between}.content-around{align-content:space-around}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.q-gutter-x-none,.q-gutter-none{margin-left:0}.q-gutter-x-none>*,.q-gutter-none>*{margin-left:0}.q-gutter-y-none,.q-gutter-none{margin-top:0}.q-gutter-y-none>*,.q-gutter-none>*{margin-top:0}.q-col-gutter-x-none,.q-col-gutter-none{margin-left:0}.q-col-gutter-x-none>*,.q-col-gutter-none>*{padding-left:0}.q-col-gutter-y-none,.q-col-gutter-none{margin-top:0}.q-col-gutter-y-none>*,.q-col-gutter-none>*{padding-top:0}.q-gutter-x-xs,.q-gutter-xs{margin-left:-4px}.q-gutter-x-xs>*,.q-gutter-xs>*{margin-left:4px}.q-gutter-y-xs,.q-gutter-xs{margin-top:-4px}.q-gutter-y-xs>*,.q-gutter-xs>*{margin-top:4px}.q-col-gutter-x-xs,.q-col-gutter-xs{margin-left:-4px}.q-col-gutter-x-xs>*,.q-col-gutter-xs>*{padding-left:4px}.q-col-gutter-y-xs,.q-col-gutter-xs{margin-top:-4px}.q-col-gutter-y-xs>*,.q-col-gutter-xs>*{padding-top:4px}.q-gutter-x-sm,.q-gutter-sm{margin-left:-8px}.q-gutter-x-sm>*,.q-gutter-sm>*{margin-left:8px}.q-gutter-y-sm,.q-gutter-sm{margin-top:-8px}.q-gutter-y-sm>*,.q-gutter-sm>*{margin-top:8px}.q-col-gutter-x-sm,.q-col-gutter-sm{margin-left:-8px}.q-col-gutter-x-sm>*,.q-col-gutter-sm>*{padding-left:8px}.q-col-gutter-y-sm,.q-col-gutter-sm{margin-top:-8px}.q-col-gutter-y-sm>*,.q-col-gutter-sm>*{padding-top:8px}.q-gutter-x-md,.q-gutter-md{margin-left:-16px}.q-gutter-x-md>*,.q-gutter-md>*{margin-left:16px}.q-gutter-y-md,.q-gutter-md{margin-top:-16px}.q-gutter-y-md>*,.q-gutter-md>*{margin-top:16px}.q-col-gutter-x-md,.q-col-gutter-md{margin-left:-16px}.q-col-gutter-x-md>*,.q-col-gutter-md>*{padding-left:16px}.q-col-gutter-y-md,.q-col-gutter-md{margin-top:-16px}.q-col-gutter-y-md>*,.q-col-gutter-md>*{padding-top:16px}.q-gutter-x-lg,.q-gutter-lg{margin-left:-24px}.q-gutter-x-lg>*,.q-gutter-lg>*{margin-left:24px}.q-gutter-y-lg,.q-gutter-lg{margin-top:-24px}.q-gutter-y-lg>*,.q-gutter-lg>*{margin-top:24px}.q-col-gutter-x-lg,.q-col-gutter-lg{margin-left:-24px}.q-col-gutter-x-lg>*,.q-col-gutter-lg>*{padding-left:24px}.q-col-gutter-y-lg,.q-col-gutter-lg{margin-top:-24px}.q-col-gutter-y-lg>*,.q-col-gutter-lg>*{padding-top:24px}.q-gutter-x-xl,.q-gutter-xl{margin-left:-48px}.q-gutter-x-xl>*,.q-gutter-xl>*{margin-left:48px}.q-gutter-y-xl,.q-gutter-xl{margin-top:-48px}.q-gutter-y-xl>*,.q-gutter-xl>*{margin-top:48px}.q-col-gutter-x-xl,.q-col-gutter-xl{margin-left:-48px}.q-col-gutter-x-xl>*,.q-col-gutter-xl>*{padding-left:48px}.q-col-gutter-y-xl,.q-col-gutter-xl{margin-top:-48px}.q-col-gutter-y-xl>*,.q-col-gutter-xl>*{padding-top:48px}@media(min-width:0){.row>.col,.flex>.col,.row>.col-auto,.flex>.col-auto,.row>.col-grow,.flex>.col-grow,.row>.col-shrink,.flex>.col-shrink,.row>.col-xs,.flex>.col-xs,.row>.col-xs-auto,.row>.col-12,.row>.col-xs-12,.row>.col-11,.row>.col-xs-11,.row>.col-10,.row>.col-xs-10,.row>.col-9,.row>.col-xs-9,.row>.col-8,.row>.col-xs-8,.row>.col-7,.row>.col-xs-7,.row>.col-6,.row>.col-xs-6,.row>.col-5,.row>.col-xs-5,.row>.col-4,.row>.col-xs-4,.row>.col-3,.row>.col-xs-3,.row>.col-2,.row>.col-xs-2,.row>.col-1,.row>.col-xs-1,.row>.col-0,.row>.col-xs-0,.flex>.col-xs-auto,.flex>.col-12,.flex>.col-xs-12,.flex>.col-11,.flex>.col-xs-11,.flex>.col-10,.flex>.col-xs-10,.flex>.col-9,.flex>.col-xs-9,.flex>.col-8,.flex>.col-xs-8,.flex>.col-7,.flex>.col-xs-7,.flex>.col-6,.flex>.col-xs-6,.flex>.col-5,.flex>.col-xs-5,.flex>.col-4,.flex>.col-xs-4,.flex>.col-3,.flex>.col-xs-3,.flex>.col-2,.flex>.col-xs-2,.flex>.col-1,.flex>.col-xs-1,.flex>.col-0,.flex>.col-xs-0,.row>.col-xs-grow,.flex>.col-xs-grow,.row>.col-xs-shrink,.flex>.col-xs-shrink{width:auto;min-width:0;max-width:100%}.column>.col,.flex>.col,.column>.col-auto,.flex>.col-auto,.column>.col-grow,.flex>.col-grow,.column>.col-shrink,.flex>.col-shrink,.column>.col-xs,.flex>.col-xs,.column>.col-xs-auto,.column>.col-12,.column>.col-xs-12,.column>.col-11,.column>.col-xs-11,.column>.col-10,.column>.col-xs-10,.column>.col-9,.column>.col-xs-9,.column>.col-8,.column>.col-xs-8,.column>.col-7,.column>.col-xs-7,.column>.col-6,.column>.col-xs-6,.column>.col-5,.column>.col-xs-5,.column>.col-4,.column>.col-xs-4,.column>.col-3,.column>.col-xs-3,.column>.col-2,.column>.col-xs-2,.column>.col-1,.column>.col-xs-1,.column>.col-0,.column>.col-xs-0,.flex>.col-xs-auto,.flex>.col-12,.flex>.col-xs-12,.flex>.col-11,.flex>.col-xs-11,.flex>.col-10,.flex>.col-xs-10,.flex>.col-9,.flex>.col-xs-9,.flex>.col-8,.flex>.col-xs-8,.flex>.col-7,.flex>.col-xs-7,.flex>.col-6,.flex>.col-xs-6,.flex>.col-5,.flex>.col-xs-5,.flex>.col-4,.flex>.col-xs-4,.flex>.col-3,.flex>.col-xs-3,.flex>.col-2,.flex>.col-xs-2,.flex>.col-1,.flex>.col-xs-1,.flex>.col-0,.flex>.col-xs-0,.column>.col-xs-grow,.flex>.col-xs-grow,.column>.col-xs-shrink,.flex>.col-xs-shrink{height:auto;min-height:0;max-height:100%}.col,.col-xs{flex:10000 1 0%}.col-auto,.col-xs-auto,.col-12,.col-xs-12,.col-11,.col-xs-11,.col-10,.col-xs-10,.col-9,.col-xs-9,.col-8,.col-xs-8,.col-7,.col-xs-7,.col-6,.col-xs-6,.col-5,.col-xs-5,.col-4,.col-xs-4,.col-3,.col-xs-3,.col-2,.col-xs-2,.col-1,.col-xs-1,.col-0,.col-xs-0{flex:0 0 auto}.col-grow,.col-xs-grow{flex:1 0 auto}.col-shrink,.col-xs-shrink{flex:0 1 auto}.row>.col-0,.row>.col-xs-0{height:auto;width:0%}.row>.offset-0,.row>.offset-xs-0{margin-left:0%}.column>.col-0,.column>.col-xs-0{height:0%;width:auto}.row>.col-1,.row>.col-xs-1{height:auto;width:8.3333%}.row>.offset-1,.row>.offset-xs-1{margin-left:8.3333%}.column>.col-1,.column>.col-xs-1{height:8.3333%;width:auto}.row>.col-2,.row>.col-xs-2{height:auto;width:16.6667%}.row>.offset-2,.row>.offset-xs-2{margin-left:16.6667%}.column>.col-2,.column>.col-xs-2{height:16.6667%;width:auto}.row>.col-3,.row>.col-xs-3{height:auto;width:25%}.row>.offset-3,.row>.offset-xs-3{margin-left:25%}.column>.col-3,.column>.col-xs-3{height:25%;width:auto}.row>.col-4,.row>.col-xs-4{height:auto;width:33.3333%}.row>.offset-4,.row>.offset-xs-4{margin-left:33.3333%}.column>.col-4,.column>.col-xs-4{height:33.3333%;width:auto}.row>.col-5,.row>.col-xs-5{height:auto;width:41.6667%}.row>.offset-5,.row>.offset-xs-5{margin-left:41.6667%}.column>.col-5,.column>.col-xs-5{height:41.6667%;width:auto}.row>.col-6,.row>.col-xs-6{height:auto;width:50%}.row>.offset-6,.row>.offset-xs-6{margin-left:50%}.column>.col-6,.column>.col-xs-6{height:50%;width:auto}.row>.col-7,.row>.col-xs-7{height:auto;width:58.3333%}.row>.offset-7,.row>.offset-xs-7{margin-left:58.3333%}.column>.col-7,.column>.col-xs-7{height:58.3333%;width:auto}.row>.col-8,.row>.col-xs-8{height:auto;width:66.6667%}.row>.offset-8,.row>.offset-xs-8{margin-left:66.6667%}.column>.col-8,.column>.col-xs-8{height:66.6667%;width:auto}.row>.col-9,.row>.col-xs-9{height:auto;width:75%}.row>.offset-9,.row>.offset-xs-9{margin-left:75%}.column>.col-9,.column>.col-xs-9{height:75%;width:auto}.row>.col-10,.row>.col-xs-10{height:auto;width:83.3333%}.row>.offset-10,.row>.offset-xs-10{margin-left:83.3333%}.column>.col-10,.column>.col-xs-10{height:83.3333%;width:auto}.row>.col-11,.row>.col-xs-11{height:auto;width:91.6667%}.row>.offset-11,.row>.offset-xs-11{margin-left:91.6667%}.column>.col-11,.column>.col-xs-11{height:91.6667%;width:auto}.row>.col-12,.row>.col-xs-12{height:auto;width:100%}.row>.offset-12,.row>.offset-xs-12{margin-left:100%}.column>.col-12,.column>.col-xs-12{height:100%;width:auto}.row>.col-all{height:auto;flex:0 0 100%}}@media(min-width:600px){.row>.col-sm,.flex>.col-sm,.row>.col-sm-auto,.row>.col-sm-12,.row>.col-sm-11,.row>.col-sm-10,.row>.col-sm-9,.row>.col-sm-8,.row>.col-sm-7,.row>.col-sm-6,.row>.col-sm-5,.row>.col-sm-4,.row>.col-sm-3,.row>.col-sm-2,.row>.col-sm-1,.row>.col-sm-0,.flex>.col-sm-auto,.flex>.col-sm-12,.flex>.col-sm-11,.flex>.col-sm-10,.flex>.col-sm-9,.flex>.col-sm-8,.flex>.col-sm-7,.flex>.col-sm-6,.flex>.col-sm-5,.flex>.col-sm-4,.flex>.col-sm-3,.flex>.col-sm-2,.flex>.col-sm-1,.flex>.col-sm-0,.row>.col-sm-grow,.flex>.col-sm-grow,.row>.col-sm-shrink,.flex>.col-sm-shrink{width:auto;min-width:0;max-width:100%}.column>.col-sm,.flex>.col-sm,.column>.col-sm-auto,.column>.col-sm-12,.column>.col-sm-11,.column>.col-sm-10,.column>.col-sm-9,.column>.col-sm-8,.column>.col-sm-7,.column>.col-sm-6,.column>.col-sm-5,.column>.col-sm-4,.column>.col-sm-3,.column>.col-sm-2,.column>.col-sm-1,.column>.col-sm-0,.flex>.col-sm-auto,.flex>.col-sm-12,.flex>.col-sm-11,.flex>.col-sm-10,.flex>.col-sm-9,.flex>.col-sm-8,.flex>.col-sm-7,.flex>.col-sm-6,.flex>.col-sm-5,.flex>.col-sm-4,.flex>.col-sm-3,.flex>.col-sm-2,.flex>.col-sm-1,.flex>.col-sm-0,.column>.col-sm-grow,.flex>.col-sm-grow,.column>.col-sm-shrink,.flex>.col-sm-shrink{height:auto;min-height:0;max-height:100%}.col-sm{flex:10000 1 0%}.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col-sm-0{flex:0 0 auto}.col-sm-grow{flex:1 0 auto}.col-sm-shrink{flex:0 1 auto}.row>.col-sm-0{height:auto;width:0%}.row>.offset-sm-0{margin-left:0%}.column>.col-sm-0{height:0%;width:auto}.row>.col-sm-1{height:auto;width:8.3333%}.row>.offset-sm-1{margin-left:8.3333%}.column>.col-sm-1{height:8.3333%;width:auto}.row>.col-sm-2{height:auto;width:16.6667%}.row>.offset-sm-2{margin-left:16.6667%}.column>.col-sm-2{height:16.6667%;width:auto}.row>.col-sm-3{height:auto;width:25%}.row>.offset-sm-3{margin-left:25%}.column>.col-sm-3{height:25%;width:auto}.row>.col-sm-4{height:auto;width:33.3333%}.row>.offset-sm-4{margin-left:33.3333%}.column>.col-sm-4{height:33.3333%;width:auto}.row>.col-sm-5{height:auto;width:41.6667%}.row>.offset-sm-5{margin-left:41.6667%}.column>.col-sm-5{height:41.6667%;width:auto}.row>.col-sm-6{height:auto;width:50%}.row>.offset-sm-6{margin-left:50%}.column>.col-sm-6{height:50%;width:auto}.row>.col-sm-7{height:auto;width:58.3333%}.row>.offset-sm-7{margin-left:58.3333%}.column>.col-sm-7{height:58.3333%;width:auto}.row>.col-sm-8{height:auto;width:66.6667%}.row>.offset-sm-8{margin-left:66.6667%}.column>.col-sm-8{height:66.6667%;width:auto}.row>.col-sm-9{height:auto;width:75%}.row>.offset-sm-9{margin-left:75%}.column>.col-sm-9{height:75%;width:auto}.row>.col-sm-10{height:auto;width:83.3333%}.row>.offset-sm-10{margin-left:83.3333%}.column>.col-sm-10{height:83.3333%;width:auto}.row>.col-sm-11{height:auto;width:91.6667%}.row>.offset-sm-11{margin-left:91.6667%}.column>.col-sm-11{height:91.6667%;width:auto}.row>.col-sm-12{height:auto;width:100%}.row>.offset-sm-12{margin-left:100%}.column>.col-sm-12{height:100%;width:auto}}@media(min-width:1024px){.row>.col-md,.flex>.col-md,.row>.col-md-auto,.row>.col-md-12,.row>.col-md-11,.row>.col-md-10,.row>.col-md-9,.row>.col-md-8,.row>.col-md-7,.row>.col-md-6,.row>.col-md-5,.row>.col-md-4,.row>.col-md-3,.row>.col-md-2,.row>.col-md-1,.row>.col-md-0,.flex>.col-md-auto,.flex>.col-md-12,.flex>.col-md-11,.flex>.col-md-10,.flex>.col-md-9,.flex>.col-md-8,.flex>.col-md-7,.flex>.col-md-6,.flex>.col-md-5,.flex>.col-md-4,.flex>.col-md-3,.flex>.col-md-2,.flex>.col-md-1,.flex>.col-md-0,.row>.col-md-grow,.flex>.col-md-grow,.row>.col-md-shrink,.flex>.col-md-shrink{width:auto;min-width:0;max-width:100%}.column>.col-md,.flex>.col-md,.column>.col-md-auto,.column>.col-md-12,.column>.col-md-11,.column>.col-md-10,.column>.col-md-9,.column>.col-md-8,.column>.col-md-7,.column>.col-md-6,.column>.col-md-5,.column>.col-md-4,.column>.col-md-3,.column>.col-md-2,.column>.col-md-1,.column>.col-md-0,.flex>.col-md-auto,.flex>.col-md-12,.flex>.col-md-11,.flex>.col-md-10,.flex>.col-md-9,.flex>.col-md-8,.flex>.col-md-7,.flex>.col-md-6,.flex>.col-md-5,.flex>.col-md-4,.flex>.col-md-3,.flex>.col-md-2,.flex>.col-md-1,.flex>.col-md-0,.column>.col-md-grow,.flex>.col-md-grow,.column>.col-md-shrink,.flex>.col-md-shrink{height:auto;min-height:0;max-height:100%}.col-md{flex:10000 1 0%}.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-md-0{flex:0 0 auto}.col-md-grow{flex:1 0 auto}.col-md-shrink{flex:0 1 auto}.row>.col-md-0{height:auto;width:0%}.row>.offset-md-0{margin-left:0%}.column>.col-md-0{height:0%;width:auto}.row>.col-md-1{height:auto;width:8.3333%}.row>.offset-md-1{margin-left:8.3333%}.column>.col-md-1{height:8.3333%;width:auto}.row>.col-md-2{height:auto;width:16.6667%}.row>.offset-md-2{margin-left:16.6667%}.column>.col-md-2{height:16.6667%;width:auto}.row>.col-md-3{height:auto;width:25%}.row>.offset-md-3{margin-left:25%}.column>.col-md-3{height:25%;width:auto}.row>.col-md-4{height:auto;width:33.3333%}.row>.offset-md-4{margin-left:33.3333%}.column>.col-md-4{height:33.3333%;width:auto}.row>.col-md-5{height:auto;width:41.6667%}.row>.offset-md-5{margin-left:41.6667%}.column>.col-md-5{height:41.6667%;width:auto}.row>.col-md-6{height:auto;width:50%}.row>.offset-md-6{margin-left:50%}.column>.col-md-6{height:50%;width:auto}.row>.col-md-7{height:auto;width:58.3333%}.row>.offset-md-7{margin-left:58.3333%}.column>.col-md-7{height:58.3333%;width:auto}.row>.col-md-8{height:auto;width:66.6667%}.row>.offset-md-8{margin-left:66.6667%}.column>.col-md-8{height:66.6667%;width:auto}.row>.col-md-9{height:auto;width:75%}.row>.offset-md-9{margin-left:75%}.column>.col-md-9{height:75%;width:auto}.row>.col-md-10{height:auto;width:83.3333%}.row>.offset-md-10{margin-left:83.3333%}.column>.col-md-10{height:83.3333%;width:auto}.row>.col-md-11{height:auto;width:91.6667%}.row>.offset-md-11{margin-left:91.6667%}.column>.col-md-11{height:91.6667%;width:auto}.row>.col-md-12{height:auto;width:100%}.row>.offset-md-12{margin-left:100%}.column>.col-md-12{height:100%;width:auto}}@media(min-width:1440px){.row>.col-lg,.flex>.col-lg,.row>.col-lg-auto,.row>.col-lg-12,.row>.col-lg-11,.row>.col-lg-10,.row>.col-lg-9,.row>.col-lg-8,.row>.col-lg-7,.row>.col-lg-6,.row>.col-lg-5,.row>.col-lg-4,.row>.col-lg-3,.row>.col-lg-2,.row>.col-lg-1,.row>.col-lg-0,.flex>.col-lg-auto,.flex>.col-lg-12,.flex>.col-lg-11,.flex>.col-lg-10,.flex>.col-lg-9,.flex>.col-lg-8,.flex>.col-lg-7,.flex>.col-lg-6,.flex>.col-lg-5,.flex>.col-lg-4,.flex>.col-lg-3,.flex>.col-lg-2,.flex>.col-lg-1,.flex>.col-lg-0,.row>.col-lg-grow,.flex>.col-lg-grow,.row>.col-lg-shrink,.flex>.col-lg-shrink{width:auto;min-width:0;max-width:100%}.column>.col-lg,.flex>.col-lg,.column>.col-lg-auto,.column>.col-lg-12,.column>.col-lg-11,.column>.col-lg-10,.column>.col-lg-9,.column>.col-lg-8,.column>.col-lg-7,.column>.col-lg-6,.column>.col-lg-5,.column>.col-lg-4,.column>.col-lg-3,.column>.col-lg-2,.column>.col-lg-1,.column>.col-lg-0,.flex>.col-lg-auto,.flex>.col-lg-12,.flex>.col-lg-11,.flex>.col-lg-10,.flex>.col-lg-9,.flex>.col-lg-8,.flex>.col-lg-7,.flex>.col-lg-6,.flex>.col-lg-5,.flex>.col-lg-4,.flex>.col-lg-3,.flex>.col-lg-2,.flex>.col-lg-1,.flex>.col-lg-0,.column>.col-lg-grow,.flex>.col-lg-grow,.column>.col-lg-shrink,.flex>.col-lg-shrink{height:auto;min-height:0;max-height:100%}.col-lg{flex:10000 1 0%}.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-lg-0{flex:0 0 auto}.col-lg-grow{flex:1 0 auto}.col-lg-shrink{flex:0 1 auto}.row>.col-lg-0{height:auto;width:0%}.row>.offset-lg-0{margin-left:0%}.column>.col-lg-0{height:0%;width:auto}.row>.col-lg-1{height:auto;width:8.3333%}.row>.offset-lg-1{margin-left:8.3333%}.column>.col-lg-1{height:8.3333%;width:auto}.row>.col-lg-2{height:auto;width:16.6667%}.row>.offset-lg-2{margin-left:16.6667%}.column>.col-lg-2{height:16.6667%;width:auto}.row>.col-lg-3{height:auto;width:25%}.row>.offset-lg-3{margin-left:25%}.column>.col-lg-3{height:25%;width:auto}.row>.col-lg-4{height:auto;width:33.3333%}.row>.offset-lg-4{margin-left:33.3333%}.column>.col-lg-4{height:33.3333%;width:auto}.row>.col-lg-5{height:auto;width:41.6667%}.row>.offset-lg-5{margin-left:41.6667%}.column>.col-lg-5{height:41.6667%;width:auto}.row>.col-lg-6{height:auto;width:50%}.row>.offset-lg-6{margin-left:50%}.column>.col-lg-6{height:50%;width:auto}.row>.col-lg-7{height:auto;width:58.3333%}.row>.offset-lg-7{margin-left:58.3333%}.column>.col-lg-7{height:58.3333%;width:auto}.row>.col-lg-8{height:auto;width:66.6667%}.row>.offset-lg-8{margin-left:66.6667%}.column>.col-lg-8{height:66.6667%;width:auto}.row>.col-lg-9{height:auto;width:75%}.row>.offset-lg-9{margin-left:75%}.column>.col-lg-9{height:75%;width:auto}.row>.col-lg-10{height:auto;width:83.3333%}.row>.offset-lg-10{margin-left:83.3333%}.column>.col-lg-10{height:83.3333%;width:auto}.row>.col-lg-11{height:auto;width:91.6667%}.row>.offset-lg-11{margin-left:91.6667%}.column>.col-lg-11{height:91.6667%;width:auto}.row>.col-lg-12{height:auto;width:100%}.row>.offset-lg-12{margin-left:100%}.column>.col-lg-12{height:100%;width:auto}}@media(min-width:1920px){.row>.col-xl,.flex>.col-xl,.row>.col-xl-auto,.row>.col-xl-12,.row>.col-xl-11,.row>.col-xl-10,.row>.col-xl-9,.row>.col-xl-8,.row>.col-xl-7,.row>.col-xl-6,.row>.col-xl-5,.row>.col-xl-4,.row>.col-xl-3,.row>.col-xl-2,.row>.col-xl-1,.row>.col-xl-0,.flex>.col-xl-auto,.flex>.col-xl-12,.flex>.col-xl-11,.flex>.col-xl-10,.flex>.col-xl-9,.flex>.col-xl-8,.flex>.col-xl-7,.flex>.col-xl-6,.flex>.col-xl-5,.flex>.col-xl-4,.flex>.col-xl-3,.flex>.col-xl-2,.flex>.col-xl-1,.flex>.col-xl-0,.row>.col-xl-grow,.flex>.col-xl-grow,.row>.col-xl-shrink,.flex>.col-xl-shrink{width:auto;min-width:0;max-width:100%}.column>.col-xl,.flex>.col-xl,.column>.col-xl-auto,.column>.col-xl-12,.column>.col-xl-11,.column>.col-xl-10,.column>.col-xl-9,.column>.col-xl-8,.column>.col-xl-7,.column>.col-xl-6,.column>.col-xl-5,.column>.col-xl-4,.column>.col-xl-3,.column>.col-xl-2,.column>.col-xl-1,.column>.col-xl-0,.flex>.col-xl-auto,.flex>.col-xl-12,.flex>.col-xl-11,.flex>.col-xl-10,.flex>.col-xl-9,.flex>.col-xl-8,.flex>.col-xl-7,.flex>.col-xl-6,.flex>.col-xl-5,.flex>.col-xl-4,.flex>.col-xl-3,.flex>.col-xl-2,.flex>.col-xl-1,.flex>.col-xl-0,.column>.col-xl-grow,.flex>.col-xl-grow,.column>.col-xl-shrink,.flex>.col-xl-shrink{height:auto;min-height:0;max-height:100%}.col-xl{flex:10000 1 0%}.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-xl-0{flex:0 0 auto}.col-xl-grow{flex:1 0 auto}.col-xl-shrink{flex:0 1 auto}.row>.col-xl-0{height:auto;width:0%}.row>.offset-xl-0{margin-left:0%}.column>.col-xl-0{height:0%;width:auto}.row>.col-xl-1{height:auto;width:8.3333%}.row>.offset-xl-1{margin-left:8.3333%}.column>.col-xl-1{height:8.3333%;width:auto}.row>.col-xl-2{height:auto;width:16.6667%}.row>.offset-xl-2{margin-left:16.6667%}.column>.col-xl-2{height:16.6667%;width:auto}.row>.col-xl-3{height:auto;width:25%}.row>.offset-xl-3{margin-left:25%}.column>.col-xl-3{height:25%;width:auto}.row>.col-xl-4{height:auto;width:33.3333%}.row>.offset-xl-4{margin-left:33.3333%}.column>.col-xl-4{height:33.3333%;width:auto}.row>.col-xl-5{height:auto;width:41.6667%}.row>.offset-xl-5{margin-left:41.6667%}.column>.col-xl-5{height:41.6667%;width:auto}.row>.col-xl-6{height:auto;width:50%}.row>.offset-xl-6{margin-left:50%}.column>.col-xl-6{height:50%;width:auto}.row>.col-xl-7{height:auto;width:58.3333%}.row>.offset-xl-7{margin-left:58.3333%}.column>.col-xl-7{height:58.3333%;width:auto}.row>.col-xl-8{height:auto;width:66.6667%}.row>.offset-xl-8{margin-left:66.6667%}.column>.col-xl-8{height:66.6667%;width:auto}.row>.col-xl-9{height:auto;width:75%}.row>.offset-xl-9{margin-left:75%}.column>.col-xl-9{height:75%;width:auto}.row>.col-xl-10{height:auto;width:83.3333%}.row>.offset-xl-10{margin-left:83.3333%}.column>.col-xl-10{height:83.3333%;width:auto}.row>.col-xl-11{height:auto;width:91.6667%}.row>.offset-xl-11{margin-left:91.6667%}.column>.col-xl-11{height:91.6667%;width:auto}.row>.col-xl-12{height:auto;width:100%}.row>.offset-xl-12{margin-left:100%}.column>.col-xl-12{height:100%;width:auto}}.rounded-borders{border-radius:4px}.border-radius-inherit{border-radius:inherit}.no-transition{transition:none!important}.transition-0{transition:0s!important}.glossy{background-image:linear-gradient(to bottom,#ffffff4d,#fff0 50%,#0000001f 51%,#0000000a)!important}.q-placeholder::placeholder{color:inherit;opacity:.7}.q-body--fullscreen-mixin,.q-body--prevent-scroll{position:fixed!important}.q-body--force-scrollbar-x{overflow-x:scroll}.q-body--force-scrollbar-y{overflow-y:scroll}.q-no-input-spinner{-moz-appearance:textfield!important}.q-no-input-spinner::-webkit-outer-spin-button,.q-no-input-spinner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.q-link{outline:0;text-decoration:none}.q-link--focusable:focus-visible{-webkit-text-decoration:underline dashed currentColor 1px;text-decoration:underline dashed currentColor 1px}body.electron .q-electron-drag{-webkit-user-select:none;-webkit-app-region:drag}body.electron .q-electron-drag .q-btn-item,body.electron .q-electron-drag--exception{-webkit-app-region:no-drag}img.responsive{max-width:100%;height:auto}.non-selectable{-webkit-user-select:none!important;user-select:none!important}.scroll,body.mobile .scroll--mobile{overflow:auto}.scroll,.scroll-x,.scroll-y{-webkit-overflow-scrolling:touch;will-change:scroll-position}.scroll-x{overflow-x:auto}.scroll-y{overflow-y:auto}.no-scroll{overflow:hidden!important}.no-pointer-events,.no-pointer-events--children,.no-pointer-events--children *{pointer-events:none!important}.all-pointer-events{pointer-events:all!important}.cursor-pointer{cursor:pointer!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-inherit{cursor:inherit!important}.cursor-none{cursor:none!important}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.rotate-45{transform:rotate(45deg)}.rotate-90{transform:rotate(90deg)}.rotate-135{transform:rotate(135deg)}.rotate-180{transform:rotate(180deg)}.rotate-225{transform:rotate(225deg)}.rotate-270{transform:rotate(270deg)}.rotate-315{transform:rotate(315deg)}.flip-horizontal{transform:scaleX(-1)}.flip-vertical{transform:scaleY(-1)}.float-left{float:left}.float-right{float:right}.relative-position{position:relative}.fixed,.fixed-full,.fullscreen,.fixed-center,.fixed-bottom,.fixed-left,.fixed-right,.fixed-top,.fixed-top-left,.fixed-top-right,.fixed-bottom-left,.fixed-bottom-right{position:fixed}.absolute,.absolute-full,.absolute-center,.absolute-bottom,.absolute-left,.absolute-right,.absolute-top,.absolute-top-left,.absolute-top-right,.absolute-bottom-left,.absolute-bottom-right{position:absolute}.fixed-top,.absolute-top{top:0;left:0;right:0}.fixed-right,.absolute-right{top:0;right:0;bottom:0}.fixed-bottom,.absolute-bottom{right:0;bottom:0;left:0}.fixed-left,.absolute-left{top:0;bottom:0;left:0}.fixed-top-left,.absolute-top-left{top:0;left:0}.fixed-top-right,.absolute-top-right{top:0;right:0}.fixed-bottom-left,.absolute-bottom-left{bottom:0;left:0}.fixed-bottom-right,.absolute-bottom-right{bottom:0;right:0}.fullscreen{z-index:6000;border-radius:0!important;max-width:100vw;max-height:100vh}body.q-ios-padding .fullscreen{padding-top:20px!important;padding-top:env(safe-area-inset-top)!important;padding-bottom:env(safe-area-inset-bottom)!important}.absolute-full,.fullscreen,.fixed-full{top:0;right:0;bottom:0;left:0}.fixed-center,.absolute-center{top:50%;left:50%;transform:translate(-50%,-50%)}.vertical-top{vertical-align:top!important}.vertical-middle{vertical-align:middle!important}.vertical-bottom{vertical-align:bottom!important}.on-left{margin-right:12px}.on-right{margin-left:12px}.q-position-engine{margin-top:var(--q-pe-top, 0)!important;margin-left:var(--q-pe-left, 0)!important;will-change:auto;visibility:collapse}:root{--q-size-xs: 0;--q-size-sm: 600px;--q-size-md: 1024px;--q-size-lg: 1440px;--q-size-xl: 1920px}.fit{width:100%!important;height:100%!important}.full-height{height:100%!important}.full-width{width:100%!important;margin-left:0!important;margin-right:0!important}.window-height{margin-top:0!important;margin-bottom:0!important;height:100vh!important}.window-width{margin-left:0!important;margin-right:0!important;width:100vw!important}.block{display:block!important}.inline-block{display:inline-block!important}.q-pa-none{padding:0}.q-pl-none{padding-left:0}.q-pr-none{padding-right:0}.q-pt-none{padding-top:0}.q-pb-none{padding-bottom:0}.q-px-none{padding-left:0;padding-right:0}.q-py-none{padding-top:0;padding-bottom:0}.q-ma-none{margin:0}.q-ml-none{margin-left:0}.q-mr-none{margin-right:0}.q-mt-none{margin-top:0}.q-mb-none{margin-bottom:0}.q-mx-none{margin-left:0;margin-right:0}.q-my-none{margin-top:0;margin-bottom:0}.q-pa-xs{padding:4px}.q-pl-xs{padding-left:4px}.q-pr-xs{padding-right:4px}.q-pt-xs{padding-top:4px}.q-pb-xs{padding-bottom:4px}.q-px-xs{padding-left:4px;padding-right:4px}.q-py-xs{padding-top:4px;padding-bottom:4px}.q-ma-xs{margin:4px}.q-ml-xs{margin-left:4px}.q-mr-xs{margin-right:4px}.q-mt-xs{margin-top:4px}.q-mb-xs{margin-bottom:4px}.q-mx-xs{margin-left:4px;margin-right:4px}.q-my-xs{margin-top:4px;margin-bottom:4px}.q-pa-sm{padding:8px}.q-pl-sm{padding-left:8px}.q-pr-sm{padding-right:8px}.q-pt-sm{padding-top:8px}.q-pb-sm{padding-bottom:8px}.q-px-sm{padding-left:8px;padding-right:8px}.q-py-sm{padding-top:8px;padding-bottom:8px}.q-ma-sm{margin:8px}.q-ml-sm{margin-left:8px}.q-mr-sm{margin-right:8px}.q-mt-sm{margin-top:8px}.q-mb-sm{margin-bottom:8px}.q-mx-sm{margin-left:8px;margin-right:8px}.q-my-sm{margin-top:8px;margin-bottom:8px}.q-pa-md{padding:16px}.q-pl-md{padding-left:16px}.q-pr-md{padding-right:16px}.q-pt-md{padding-top:16px}.q-pb-md{padding-bottom:16px}.q-px-md{padding-left:16px;padding-right:16px}.q-py-md{padding-top:16px;padding-bottom:16px}.q-ma-md{margin:16px}.q-ml-md{margin-left:16px}.q-mr-md{margin-right:16px}.q-mt-md{margin-top:16px}.q-mb-md{margin-bottom:16px}.q-mx-md{margin-left:16px;margin-right:16px}.q-my-md{margin-top:16px;margin-bottom:16px}.q-pa-lg{padding:24px}.q-pl-lg{padding-left:24px}.q-pr-lg{padding-right:24px}.q-pt-lg{padding-top:24px}.q-pb-lg{padding-bottom:24px}.q-px-lg{padding-left:24px;padding-right:24px}.q-py-lg{padding-top:24px;padding-bottom:24px}.q-ma-lg{margin:24px}.q-ml-lg{margin-left:24px}.q-mr-lg{margin-right:24px}.q-mt-lg{margin-top:24px}.q-mb-lg{margin-bottom:24px}.q-mx-lg{margin-left:24px;margin-right:24px}.q-my-lg{margin-top:24px;margin-bottom:24px}.q-pa-xl{padding:48px}.q-pl-xl{padding-left:48px}.q-pr-xl{padding-right:48px}.q-pt-xl{padding-top:48px}.q-pb-xl{padding-bottom:48px}.q-px-xl{padding-left:48px;padding-right:48px}.q-py-xl{padding-top:48px;padding-bottom:48px}.q-ma-xl{margin:48px}.q-ml-xl{margin-left:48px}.q-mr-xl{margin-right:48px}.q-mt-xl{margin-top:48px}.q-mb-xl{margin-bottom:48px}.q-mx-xl{margin-left:48px;margin-right:48px}.q-my-xl{margin-top:48px;margin-bottom:48px}.q-mt-auto,.q-my-auto{margin-top:auto}.q-ml-auto{margin-left:auto}.q-mb-auto,.q-my-auto{margin-bottom:auto}.q-mr-auto{margin-right:auto}.q-mx-auto{margin-left:auto;margin-right:auto}.q-touch{-webkit-user-select:none;user-select:none;user-drag:none;-khtml-user-drag:none;-webkit-user-drag:none}.q-touch-x{touch-action:pan-x}.q-touch-y{touch-action:pan-y}:root{--q-transition-duration: .3s}.q-transition--slide-right-enter-active,.q-transition--slide-right-leave-active,.q-transition--slide-left-enter-active,.q-transition--slide-left-leave-active,.q-transition--slide-up-enter-active,.q-transition--slide-up-leave-active,.q-transition--slide-down-enter-active,.q-transition--slide-down-leave-active,.q-transition--jump-right-enter-active,.q-transition--jump-right-leave-active,.q-transition--jump-left-enter-active,.q-transition--jump-left-leave-active,.q-transition--jump-up-enter-active,.q-transition--jump-up-leave-active,.q-transition--jump-down-enter-active,.q-transition--jump-down-leave-active,.q-transition--fade-enter-active,.q-transition--fade-leave-active,.q-transition--scale-enter-active,.q-transition--scale-leave-active,.q-transition--rotate-enter-active,.q-transition--rotate-leave-active,.q-transition--flip-enter-active,.q-transition--flip-leave-active{--q-transition-duration: .3s;--q-transition-easing: cubic-bezier(.215,.61,.355,1)}.q-transition--slide-right-leave-active,.q-transition--slide-left-leave-active,.q-transition--slide-up-leave-active,.q-transition--slide-down-leave-active,.q-transition--jump-right-leave-active,.q-transition--jump-left-leave-active,.q-transition--jump-up-leave-active,.q-transition--jump-down-leave-active,.q-transition--fade-leave-active,.q-transition--scale-leave-active,.q-transition--rotate-leave-active,.q-transition--flip-leave-active{position:absolute}.q-transition--slide-right-enter-active,.q-transition--slide-right-leave-active,.q-transition--slide-left-enter-active,.q-transition--slide-left-leave-active,.q-transition--slide-up-enter-active,.q-transition--slide-up-leave-active,.q-transition--slide-down-enter-active,.q-transition--slide-down-leave-active{transition:transform var(--q-transition-duration) var(--q-transition-easing)}.q-transition--slide-right-enter-from{transform:translate3d(-100%,0,0)}.q-transition--slide-right-leave-to,.q-transition--slide-left-enter-from{transform:translate3d(100%,0,0)}.q-transition--slide-left-leave-to{transform:translate3d(-100%,0,0)}.q-transition--slide-up-enter-from{transform:translate3d(0,100%,0)}.q-transition--slide-up-leave-to,.q-transition--slide-down-enter-from{transform:translate3d(0,-100%,0)}.q-transition--slide-down-leave-to{transform:translate3d(0,100%,0)}.q-transition--jump-right-enter-active,.q-transition--jump-right-leave-active,.q-transition--jump-left-enter-active,.q-transition--jump-left-leave-active,.q-transition--jump-up-enter-active,.q-transition--jump-up-leave-active,.q-transition--jump-down-enter-active,.q-transition--jump-down-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration)}.q-transition--jump-right-enter-from,.q-transition--jump-right-leave-to,.q-transition--jump-left-enter-from,.q-transition--jump-left-leave-to,.q-transition--jump-up-enter-from,.q-transition--jump-up-leave-to,.q-transition--jump-down-enter-from,.q-transition--jump-down-leave-to{opacity:0}.q-transition--jump-right-enter-from{transform:translate3d(-15px,0,0)}.q-transition--jump-right-leave-to,.q-transition--jump-left-enter-from{transform:translate3d(15px,0,0)}.q-transition--jump-left-leave-to{transform:translate(-15px)}.q-transition--jump-up-enter-from{transform:translate3d(0,15px,0)}.q-transition--jump-up-leave-to,.q-transition--jump-down-enter-from{transform:translate3d(0,-15px,0)}.q-transition--jump-down-leave-to{transform:translate3d(0,15px,0)}.q-transition--fade-enter-active,.q-transition--fade-leave-active{transition:opacity var(--q-transition-duration) ease-out}.q-transition--fade-enter-from,.q-transition--fade-leave-to{opacity:0}.q-transition--scale-enter-active,.q-transition--scale-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration) var(--q-transition-easing)}.q-transition--scale-enter-from,.q-transition--scale-leave-to{opacity:0;transform:scale3d(0,0,1)}.q-transition--rotate-enter-active,.q-transition--rotate-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration) var(--q-transition-easing);transform-style:preserve-3d}.q-transition--rotate-enter-from,.q-transition--rotate-leave-to{opacity:0;transform:scale3d(0,0,1) rotate3d(0,0,1,90deg)}.q-transition--flip-right-enter-active,.q-transition--flip-right-leave-active,.q-transition--flip-left-enter-active,.q-transition--flip-left-leave-active,.q-transition--flip-up-enter-active,.q-transition--flip-up-leave-active,.q-transition--flip-down-enter-active,.q-transition--flip-down-leave-active{transition:transform var(--q-transition-duration);backface-visibility:hidden}.q-transition--flip-right-enter-to,.q-transition--flip-right-leave-from,.q-transition--flip-left-enter-to,.q-transition--flip-left-leave-from,.q-transition--flip-up-enter-to,.q-transition--flip-up-leave-from,.q-transition--flip-down-enter-to,.q-transition--flip-down-leave-from{transform:perspective(400px) rotate3d(1,1,0,0)}.q-transition--flip-right-enter-from{transform:perspective(400px) rotateY(-180deg)}.q-transition--flip-right-leave-to,.q-transition--flip-left-enter-from{transform:perspective(400px) rotateY(180deg)}.q-transition--flip-left-leave-to{transform:perspective(400px) rotateY(-180deg)}.q-transition--flip-up-enter-from{transform:perspective(400px) rotateX(-180deg)}.q-transition--flip-up-leave-to,.q-transition--flip-down-enter-from{transform:perspective(400px) rotateX(180deg)}.q-transition--flip-down-leave-to{transform:perspective(400px) rotateX(-180deg)}body{min-width:100px;min-height:100%;font-family:Roboto,-apple-system,Helvetica Neue,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;line-height:1.5;font-size:14px}h1{font-size:6rem;font-weight:300;line-height:6rem;letter-spacing:-.01562em}h2{font-size:3.75rem;font-weight:300;line-height:3.75rem;letter-spacing:-.00833em}h3{font-size:3rem;font-weight:400;line-height:3.125rem;letter-spacing:normal}h4{font-size:2.125rem;font-weight:400;line-height:2.5rem;letter-spacing:.00735em}h5{font-size:1.5rem;font-weight:400;line-height:2rem;letter-spacing:normal}h6{font-size:1.25rem;font-weight:500;line-height:2rem;letter-spacing:.0125em}p{margin:0 0 16px}.text-h1{font-size:6rem;font-weight:300;line-height:6rem;letter-spacing:-.01562em}.text-h2{font-size:3.75rem;font-weight:300;line-height:3.75rem;letter-spacing:-.00833em}.text-h3{font-size:3rem;font-weight:400;line-height:3.125rem;letter-spacing:normal}.text-h4{font-size:2.125rem;font-weight:400;line-height:2.5rem;letter-spacing:.00735em}.text-h5{font-size:1.5rem;font-weight:400;line-height:2rem;letter-spacing:normal}.text-h6{font-size:1.25rem;font-weight:500;line-height:2rem;letter-spacing:.0125em}.text-subtitle1{font-size:1rem;font-weight:400;line-height:1.75rem;letter-spacing:.00937em}.text-subtitle2{font-size:.875rem;font-weight:500;line-height:1.375rem;letter-spacing:.00714em}.text-body1{font-size:1rem;font-weight:400;line-height:1.5rem;letter-spacing:.03125em}.text-body2{font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.01786em}.text-overline{font-size:.75rem;font-weight:500;line-height:2rem;letter-spacing:.16667em}.text-caption{font-size:.75rem;font-weight:400;line-height:1.25rem;letter-spacing:.03333em}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-justify{text-align:justify;-webkit-hyphens:auto;hyphens:auto}.text-italic{font-style:italic}.text-bold{font-weight:700}.text-no-wrap{white-space:nowrap}.text-strike{text-decoration:line-through}.text-weight-thin{font-weight:100}.text-weight-light{font-weight:300}.text-weight-regular{font-weight:400}.text-weight-medium{font-weight:500}.text-weight-bold{font-weight:700}.text-weight-bolder{font-weight:900}small{font-size:80%}big{font-size:170%}sub{bottom:-.25em}sup{top:-.5em}.no-margin{margin:0!important}.no-padding{padding:0!important}.no-border{border:0!important}.no-border-radius{border-radius:0!important}.no-box-shadow{box-shadow:none!important}.no-outline{outline:0!important}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ellipsis-2-lines,.ellipsis-3-lines{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.ellipsis-2-lines{-webkit-line-clamp:2}.ellipsis-3-lines{-webkit-line-clamp:3}.readonly{cursor:default!important}.disabled,.disabled *,[disabled],[disabled] *{outline:0!important;cursor:not-allowed!important}.disabled,[disabled]{opacity:.6!important}.hidden{display:none!important}.invisible,.invisible *{visibility:hidden!important;transition:none!important;animation:none!important}.transparent{background:transparent!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-hidden-y{overflow-y:hidden!important}.hide-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar::-webkit-scrollbar{width:0;height:0;display:none}.dimmed:after,.light-dimmed:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.dimmed:after{background:#0006!important}.light-dimmed:after{background:#fff9!important}.z-top{z-index:7000!important}.z-max{z-index:9998!important}body:not(.desktop) .desktop-only,body.desktop .desktop-hide{display:none!important}body:not(.mobile) .mobile-only,body.mobile .mobile-hide{display:none!important}body:not(.native-mobile) .native-mobile-only,body.native-mobile .native-mobile-hide{display:none!important}body:not(.cordova) .cordova-only,body.cordova .cordova-hide{display:none!important}body:not(.capacitor) .capacitor-only,body.capacitor .capacitor-hide{display:none!important}body:not(.electron) .electron-only,body.electron .electron-hide{display:none!important}body:not(.touch) .touch-only,body.touch .touch-hide{display:none!important}body:not(.within-iframe) .within-iframe-only,body.within-iframe .within-iframe-hide{display:none!important}body:not(.platform-ios) .platform-ios-only,body.platform-ios .platform-ios-hide{display:none!important}body:not(.platform-android) .platform-android-only,body.platform-android .platform-android-hide{display:none!important}@media all and (orientation:portrait){.orientation-landscape{display:none!important}}@media all and (orientation:landscape){.orientation-portrait{display:none!important}}@media screen{.print-only{display:none!important}}@media print{.print-hide{display:none!important}}@media(max-width:599.98px){.xs-hide,.gt-xs,.sm,.gt-sm,.md,.gt-md,.lg,.gt-lg,.xl{display:none!important}}@media(min-width:600px)and (max-width:1023.98px){.sm-hide,.xs,.lt-sm,.gt-sm,.md,.gt-md,.lg,.gt-lg,.xl{display:none!important}}@media(min-width:1024px)and (max-width:1439.98px){.md-hide,.xs,.lt-sm,.sm,.lt-md,.gt-md,.lg,.gt-lg,.xl{display:none!important}}@media(min-width:1440px)and (max-width:1919.98px){.lg-hide,.xs,.lt-sm,.sm,.lt-md,.md,.lt-lg,.gt-lg,.xl{display:none!important}}@media(min-width:1920px){.xl-hide,.xs,.lt-sm,.sm,.lt-md,.md,.lt-lg,.lg,.lt-xl{display:none!important}}.q-focus-helper,.q-focusable,.q-manual-focusable,.q-hoverable{outline:0}body.desktop .q-focus-helper{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;border-radius:inherit;opacity:0;transition:background-color .3s cubic-bezier(.25,.8,.5,1),opacity .4s cubic-bezier(.25,.8,.5,1)}body.desktop .q-focus-helper:before,body.desktop .q-focus-helper:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;border-radius:inherit;transition:background-color .3s cubic-bezier(.25,.8,.5,1),opacity .6s cubic-bezier(.25,.8,.5,1)}body.desktop .q-focus-helper:before{background:#000}body.desktop .q-focus-helper:after{background:#fff}body.desktop .q-focus-helper--rounded{border-radius:4px}body.desktop .q-focus-helper--round{border-radius:50%}body.desktop .q-focusable:focus>.q-focus-helper,body.desktop .q-manual-focusable--focused>.q-focus-helper,body.desktop .q-hoverable:hover>.q-focus-helper{background:currentColor;opacity:.15}body.desktop .q-focusable:focus>.q-focus-helper:before,body.desktop .q-manual-focusable--focused>.q-focus-helper:before,body.desktop .q-hoverable:hover>.q-focus-helper:before{opacity:.1}body.desktop .q-focusable:focus>.q-focus-helper:after,body.desktop .q-manual-focusable--focused>.q-focus-helper:after,body.desktop .q-hoverable:hover>.q-focus-helper:after{opacity:.4}body.desktop .q-focusable:focus>.q-focus-helper,body.desktop .q-manual-focusable--focused>.q-focus-helper{opacity:.22}body.body--dark{color:#fff;background:var(--q-dark-page)}.q-dark{color:#fff;background:var(--q-dark)} diff --git a/backend/internal/http/static/spa/assets/index-QUdrNkKl.js b/backend/internal/http/static/spa/assets/index-QUdrNkKl.js new file mode 100644 index 0000000..bf8aa2c --- /dev/null +++ b/backend/internal/http/static/spa/assets/index-QUdrNkKl.js @@ -0,0 +1,4 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MainLayout-Dnh2wyjy.js","assets/QBtn-AYMizH8c.js","assets/render-B4qP-w0Q.js","assets/QLayout-DIjK04DF.js","assets/use-prevent-scroll-eZQDeoK_.js","assets/QItem-F5bzVaJB.js","assets/use-dark-BRt0_t6X.js","assets/QSelect-QjDUAbKc.js","assets/use-key-composition-TTwP9QMZ.js","assets/format-GjIIeqP4.js","assets/QDialog-BcbjPBVh.js","assets/use-timeout-Jkrq6Sig.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/MainLayout-KRjvhj3p.css","assets/IndexPage-VdxnZT-U.js","assets/QCard-D_vcm7k9.js","assets/QCardActions-DlFyQG4S.js","assets/QPage-gf8hzrox.js","assets/IndexPage-0Ryt20QD.css","assets/DevLayout-NkVPqUIU.js","assets/IndexPage-C3QXgr9t.js","assets/ResetPasswordPage-DM3gheQo.js","assets/api-rhge6pbe.js","assets/QInput-CEazYqyH.js","assets/ResetPasswordPage-DMBJffyk.css","assets/ApiEndpointsPage-DOm_uCJI.js","assets/ApiEndpointsPage-gOL3JcKs.css","assets/MailDebugPage-dW3_TCwt.js","assets/MailDebugPage-_Fae84OI.css","assets/ErrorNotFound-CYezCx4W.js"])))=>i.map(i=>d[i]); +const Jc=(function(){const t=typeof document<"u"&&document.createElement("link").relList;return t&&t.supports&&t.supports("modulepreload")?"modulepreload":"preload"})(),Qc=function(e){return"/"+e},Yo={},It=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){let a=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=i?.nonce||i?.getAttribute("nonce");s=a(n.map(c=>{if(c=Qc(c),c in Yo)return;Yo[c]=!0;const u=c.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":Jc,u||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),u)return new Promise((_,A)=>{d.addEventListener("load",_),d.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return s.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})};function ho(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ue={},An=[],St=()=>{},Ul=()=>!1,Vr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),po=e=>e.startsWith("onUpdate:"),Se=Object.assign,mo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},zc=Object.prototype.hasOwnProperty,le=(e,t)=>zc.call(e,t),q=Array.isArray,Tn=e=>cr(e)==="[object Map]",jl=e=>cr(e)==="[object Set]",Xo=e=>cr(e)==="[object Date]",Q=e=>typeof e=="function",pe=e=>typeof e=="string",Rt=e=>typeof e=="symbol",ae=e=>e!==null&&typeof e=="object",Vl=e=>(ae(e)||Q(e))&&Q(e.then)&&Q(e.catch),Hl=Object.prototype.toString,cr=e=>Hl.call(e),Zc=e=>cr(e).slice(8,-1),Wl=e=>cr(e)==="[object Object]",Hr=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Vn=ho(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Wr=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},eu=/-\w/g,je=Wr(e=>e.replace(eu,t=>t.slice(1).toUpperCase())),tu=/\B([A-Z])/g,gn=Wr(e=>e.replace(tu,"-$1").toLowerCase()),Br=Wr(e=>e.charAt(0).toUpperCase()+e.slice(1)),cs=Wr(e=>e?`on${Br(e)}`:""),Et=(e,t)=>!Object.is(e,t),us=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},nu=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ru=e=>{const t=pe(e)?Number(e):NaN;return isNaN(t)?e:t};let Jo;const Kr=()=>Jo||(Jo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Gr(e){if(q(e)){const t={};for(let n=0;n{if(n){const r=n.split(ou);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function qr(e){let t="";if(pe(e))t=e;else if(q(e))for(let n=0;n!!(e&&e.__v_isRef===!0),fu=e=>pe(e)?e:e==null?"":q(e)||ae(e)&&(e.toString===Hl||!Q(e.toString))?Gl(e)?fu(e.value):JSON.stringify(e,ql,2):String(e),ql=(e,t)=>Gl(t)?ql(e,t.value):Tn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[fs(r,o)+" =>"]=s,n),{})}:jl(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>fs(n))}:Rt(t)?fs(t):ae(t)&&!q(t)&&!Wl(t)?String(t):t,fs=(e,t="")=>{var n;return Rt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Oe;class Yl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=Oe,!t&&Oe&&(this.index=(Oe.scopes||(Oe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Oe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(Wn){let t=Wn;for(Wn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Hn;){let t=Hn;for(Hn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Zl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ea(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),vo(r),hu(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Ds(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ta(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ta(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Qn)||(e.globalVersion=Qn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ds(e))))return;e.flags|=2;const t=e.dep,n=fe,r=ot;fe=e,ot=!0;try{Zl(e);const s=e.fn(e._value);(t.version===0||Et(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{fe=n,ot=r,ea(e),e.flags&=-3}}function vo(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)vo(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function hu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ot=!0;const na=[];function Wt(){na.push(ot),ot=!1}function Bt(){const e=na.pop();ot=e===void 0?!0:e}function Qo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=fe;fe=void 0;try{t()}finally{fe=n}}}let Qn=0;class pu{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Eo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!fe||!ot||fe===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==fe)n=this.activeLink=new pu(fe,this),fe.deps?(n.prevDep=fe.depsTail,fe.depsTail.nextDep=n,fe.depsTail=n):fe.deps=fe.depsTail=n,ra(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=fe.depsTail,n.nextDep=void 0,fe.depsTail.nextDep=n,fe.depsTail=n,fe.deps===n&&(fe.deps=r)}return n}trigger(t){this.version++,Qn++,this.notify(t)}notify(t){bo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{yo()}}}function ra(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)ra(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Rr=new WeakMap,dn=Symbol(""),Ms=Symbol(""),zn=Symbol("");function Ne(e,t,n){if(ot&&fe){let r=Rr.get(e);r||Rr.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Eo),s.map=r,s.key=n),s.track()}}function Mt(e,t,n,r,s,o){const i=Rr.get(e);if(!i){Qn++;return}const l=a=>{a&&a.trigger()};if(bo(),t==="clear")i.forEach(l);else{const a=q(e),c=a&&Hr(n);if(a&&n==="length"){const u=Number(r);i.forEach((f,d)=>{(d==="length"||d===zn||!Rt(d)&&d>=u)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),c&&l(i.get(zn)),t){case"add":a?c&&l(i.get("length")):(l(i.get(dn)),Tn(e)&&l(i.get(Ms)));break;case"delete":a||(l(i.get(dn)),Tn(e)&&l(i.get(Ms)));break;case"set":Tn(e)&&l(i.get(dn));break}}yo()}function mu(e,t){const n=Rr.get(e);return n&&n.get(t)}function vn(e){const t=re(e);return t===e?t:(Ne(t,"iterate",zn),Je(e)?t:t.map(it))}function Yr(e){return Ne(e=re(e),"iterate",zn),e}function yt(e,t){return Kt(e)?Pn(jt(e)?it(t):t):it(t)}const gu={__proto__:null,[Symbol.iterator](){return hs(this,Symbol.iterator,e=>yt(this,e))},concat(...e){return vn(this).concat(...e.map(t=>q(t)?vn(t):t))},entries(){return hs(this,"entries",e=>(e[1]=yt(this,e[1]),e))},every(e,t){return Pt(this,"every",e,t,void 0,arguments)},filter(e,t){return Pt(this,"filter",e,t,n=>n.map(r=>yt(this,r)),arguments)},find(e,t){return Pt(this,"find",e,t,n=>yt(this,n),arguments)},findIndex(e,t){return Pt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Pt(this,"findLast",e,t,n=>yt(this,n),arguments)},findLastIndex(e,t){return Pt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Pt(this,"forEach",e,t,void 0,arguments)},includes(...e){return ps(this,"includes",e)},indexOf(...e){return ps(this,"indexOf",e)},join(e){return vn(this).join(e)},lastIndexOf(...e){return ps(this,"lastIndexOf",e)},map(e,t){return Pt(this,"map",e,t,void 0,arguments)},pop(){return Dn(this,"pop")},push(...e){return Dn(this,"push",e)},reduce(e,...t){return zo(this,"reduce",e,t)},reduceRight(e,...t){return zo(this,"reduceRight",e,t)},shift(){return Dn(this,"shift")},some(e,t){return Pt(this,"some",e,t,void 0,arguments)},splice(...e){return Dn(this,"splice",e)},toReversed(){return vn(this).toReversed()},toSorted(e){return vn(this).toSorted(e)},toSpliced(...e){return vn(this).toSpliced(...e)},unshift(...e){return Dn(this,"unshift",e)},values(){return hs(this,"values",e=>yt(this,e))}};function hs(e,t,n){const r=Yr(e),s=r[t]();return r!==e&&!Je(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const _u=Array.prototype;function Pt(e,t,n,r,s,o){const i=Yr(e),l=i!==e&&!Je(e),a=i[t];if(a!==_u[t]){const f=a.apply(e,o);return l?it(f):f}let c=n;i!==e&&(l?c=function(f,d){return n.call(this,yt(e,f),d,e)}:n.length>2&&(c=function(f,d){return n.call(this,f,d,e)}));const u=a.call(i,c,r);return l&&s?s(u):u}function zo(e,t,n,r){const s=Yr(e),o=s!==e&&!Je(e);let i=n,l=!1;s!==e&&(o?(l=r.length===0,i=function(c,u,f){return l&&(l=!1,c=yt(e,c)),n.call(this,c,yt(e,u),f,e)}):n.length>3&&(i=function(c,u,f){return n.call(this,c,u,f,e)}));const a=s[t](i,...r);return l?yt(e,a):a}function ps(e,t,n){const r=re(e);Ne(r,"iterate",zn);const s=r[t](...n);return(s===-1||s===!1)&&Xr(n[0])?(n[0]=re(n[0]),r[t](...n)):s}function Dn(e,t,n=[]){Wt(),bo();const r=re(e)[t].apply(e,n);return yo(),Bt(),r}const bu=ho("__proto__,__v_isRef,__isVue"),sa=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Rt));function yu(e){Rt(e)||(e=String(e));const t=re(this);return Ne(t,"has",e),t.hasOwnProperty(e)}class oa{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Lu:ca:o?aa:la).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=q(t);if(!s){let a;if(i&&(a=gu[n]))return a;if(n==="hasOwnProperty")return yu}const l=Reflect.get(t,n,he(t)?t:r);if((Rt(n)?sa.has(n):bu(n))||(s||Ne(t,"get",n),o))return l;if(he(l)){const a=i&&Hr(n)?l:l.value;return s&&ae(a)?$s(a):a}return ae(l)?s?$s(l):_n(l):l}}class ia extends oa{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=q(t)&&Hr(n);if(!this._isShallow){const c=Kt(o);if(!Je(r)&&!Kt(r)&&(o=re(o),r=re(r)),!i&&he(o)&&!he(r))return c||(o.value=r),!0}const l=i?Number(n)e,pr=e=>Reflect.getPrototypeOf(e);function wu(e,t,n){return function(...r){const s=this.__v_raw,o=re(s),i=Tn(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,c=s[e](...r),u=n?Fs:t?Pn:it;return!t&&Ne(o,"iterate",a?Ms:dn),Se(Object.create(c),{next(){const{value:f,done:d}=c.next();return d?{value:f,done:d}:{value:l?[u(f[0]),u(f[1])]:u(f),done:d}}})}}function mr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Au(e,t){const n={get(s){const o=this.__v_raw,i=re(o),l=re(s);e||(Et(s,l)&&Ne(i,"get",s),Ne(i,"get",l));const{has:a}=pr(i),c=t?Fs:e?Pn:it;if(a.call(i,s))return c(o.get(s));if(a.call(i,l))return c(o.get(l));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&Ne(re(s),"iterate",dn),s.size},has(s){const o=this.__v_raw,i=re(o),l=re(s);return e||(Et(s,l)&&Ne(i,"has",s),Ne(i,"has",l)),s===l?o.has(s):o.has(s)||o.has(l)},forEach(s,o){const i=this,l=i.__v_raw,a=re(l),c=t?Fs:e?Pn:it;return!e&&Ne(a,"iterate",dn),l.forEach((u,f)=>s.call(o,c(u),c(f),i))}};return Se(n,e?{add:mr("add"),set:mr("set"),delete:mr("delete"),clear:mr("clear")}:{add(s){const o=re(this),i=pr(o),l=re(s),a=!t&&!Je(s)&&!Kt(s)?l:s;return i.has.call(o,a)||Et(s,a)&&i.has.call(o,s)||Et(l,a)&&i.has.call(o,l)||(o.add(a),Mt(o,"add",a,a)),this},set(s,o){!t&&!Je(o)&&!Kt(o)&&(o=re(o));const i=re(this),{has:l,get:a}=pr(i);let c=l.call(i,s);c||(s=re(s),c=l.call(i,s));const u=a.call(i,s);return i.set(s,o),c?Et(o,u)&&Mt(i,"set",s,o):Mt(i,"add",s,o),this},delete(s){const o=re(this),{has:i,get:l}=pr(o);let a=i.call(o,s);a||(s=re(s),a=i.call(o,s)),l&&l.call(o,s);const c=o.delete(s);return a&&Mt(o,"delete",s,void 0),c},clear(){const s=re(this),o=s.size!==0,i=s.clear();return o&&Mt(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=wu(s,e,t)}),n}function So(e,t){const n=Au(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(le(n,s)&&s in r?n:r,s,o)}const Tu={get:So(!1,!1)},Ru={get:So(!1,!0)},Pu={get:So(!0,!1)};const la=new WeakMap,aa=new WeakMap,ca=new WeakMap,Lu=new WeakMap;function Ou(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Nu(e){return e.__v_skip||!Object.isExtensible(e)?0:Ou(Zc(e))}function _n(e){return Kt(e)?e:Co(e,!1,Eu,Tu,la)}function ua(e){return Co(e,!1,Cu,Ru,aa)}function $s(e){return Co(e,!0,Su,Pu,ca)}function Co(e,t,n,r,s){if(!ae(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Nu(e);if(o===0)return e;const i=s.get(e);if(i)return i;const l=new Proxy(e,o===2?r:n);return s.set(e,l),l}function jt(e){return Kt(e)?jt(e.__v_raw):!!(e&&e.__v_isReactive)}function Kt(e){return!!(e&&e.__v_isReadonly)}function Je(e){return!!(e&&e.__v_isShallow)}function Xr(e){return e?!!e.__v_raw:!1}function re(e){const t=e&&e.__v_raw;return t?re(t):e}function xn(e){return!le(e,"__v_skip")&&Object.isExtensible(e)&&Bl(e,"__v_skip",!0),e}const it=e=>ae(e)?_n(e):e,Pn=e=>ae(e)?$s(e):e;function he(e){return e?e.__v_isRef===!0:!1}function Jr(e){return da(e,!1)}function fa(e){return da(e,!0)}function da(e,t){return he(e)?e:new Iu(e,t)}class Iu{constructor(t,n){this.dep=new Eo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:re(t),this._value=n?t:it(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Je(t)||Kt(t);t=r?t:re(t),Et(t,n)&&(this._rawValue=t,this._value=r?t:it(t),this.dep.trigger())}}function hn(e){return he(e)?e.value:e}const xu={get:(e,t,n)=>t==="__v_raw"?e:hn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return he(s)&&!he(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function ha(e){return jt(e)?e:new Proxy(e,xu)}function ku(e){const t=q(e)?new Array(e.length):{};for(const n in e)t[n]=Mu(e,n);return t}class Du{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._raw=re(t);let s=!0,o=t;if(!q(t)||!Hr(String(n)))do s=!Xr(o)||Je(o);while(s&&(o=o.__v_raw));this._shallow=s}get value(){let t=this._object[this._key];return this._shallow&&(t=hn(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&he(this._raw[this._key])){const n=this._object[this._key];if(he(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return mu(this._raw,this._key)}}function Mu(e,t,n){return new Du(e,t,n)}class Fu{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Eo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Qn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&fe!==this)return zl(this,!0),!0}get value(){const t=this.dep.track();return ta(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function $u(e,t,n=!1){let r,s;return Q(e)?r=e:(r=e.get,s=e.set),new Fu(r,s,n)}const gr={},Pr=new WeakMap;let cn;function Uu(e,t=!1,n=cn){if(n){let r=Pr.get(n);r||Pr.set(n,r=[]),r.push(e)}}function ju(e,t,n=ue){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:l,call:a}=n,c=w=>s?w:Je(w)||s===!1||s===0?Ft(w,1):Ft(w);let u,f,d,_,A=!1,T=!1;if(he(e)?(f=()=>e.value,A=Je(e)):jt(e)?(f=()=>c(e),A=!0):q(e)?(T=!0,A=e.some(w=>jt(w)||Je(w)),f=()=>e.map(w=>{if(he(w))return w.value;if(jt(w))return c(w);if(Q(w))return a?a(w,2):w()})):Q(e)?t?f=a?()=>a(e,2):e:f=()=>{if(d){Wt();try{d()}finally{Bt()}}const w=cn;cn=u;try{return a?a(e,3,[_]):e(_)}finally{cn=w}}:f=St,t&&s){const w=f,I=s===!0?1/0:s;f=()=>Ft(w(),I)}const N=Xl(),b=()=>{u.stop(),N&&N.active&&mo(N.effects,u)};if(o&&t){const w=t;t=(...I)=>{w(...I),b()}}let E=T?new Array(e.length).fill(gr):gr;const R=w=>{if(!(!(u.flags&1)||!u.dirty&&!w))if(t){const I=u.run();if(s||A||(T?I.some(($,L)=>Et($,E[L])):Et(I,E))){d&&d();const $=cn;cn=u;try{const L=[I,E===gr?void 0:T&&E[0]===gr?[]:E,_];E=I,a?a(t,3,L):t(...L)}finally{cn=$}}}else u.run()};return l&&l(R),u=new Jl(f),u.scheduler=i?()=>i(R,!1):R,_=w=>Uu(w,!1,u),d=u.onStop=()=>{const w=Pr.get(u);if(w){if(a)a(w,4);else for(const I of w)I();Pr.delete(u)}},t?r?R(!0):E=u.run():i?i(R.bind(null,!0),!0):u.run(),b.pause=u.pause.bind(u),b.resume=u.resume.bind(u),b.stop=b,b}function Ft(e,t=1/0,n){if(t<=0||!ae(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,he(e))Ft(e.value,t,n);else if(q(e))for(let r=0;r{Ft(r,t,n)});else if(Wl(e)){for(const r in e)Ft(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Ft(e[r],t,n)}return e}function ur(e,t,n,r){try{return r?e(...r):e()}catch(s){Qr(s,t,n)}}function lt(e,t,n,r){if(Q(e)){const s=ur(e,t,n,r);return s&&Vl(s)&&s.catch(o=>{Qr(o,t,n)}),s}if(q(e)){const s=[];for(let o=0;o>>1,s=Fe[r],o=Zn(s);o=Zn(n)?Fe.push(e):Fe.splice(Hu(t),0,e),e.flags|=1,ma()}}function ma(){Lr||(Lr=pa.then(_a))}function Wu(e){q(e)?Rn.push(...e):Jt&&e.id===-1?Jt.splice(Sn+1,0,e):e.flags&1||(Rn.push(e),e.flags|=1),ma()}function Zo(e,t,n=_t+1){for(;nZn(n)-Zn(r));if(Rn.length=0,Jt){Jt.push(...t);return}for(Jt=t,Sn=0;Sne.id==null?e.flags&2?-1:1/0:e.id;function _a(e){try{for(_t=0;_t{r._d&&xr(-1);const o=Or(t);let i;try{i=e(...s)}finally{Or(o),r._d&&xr(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function wg(e,t){if(qe===null)return e;const n=ns(qe),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&Q(t)?t.call(r&&r.proxy):t}}function Ku(){return!!(ts()||pn)}const Gu=Symbol.for("v-scx"),qu=()=>et(Gu);function Vt(e,t,n){return ya(e,t,n)}function ya(e,t,n=ue){const{immediate:r,deep:s,flush:o,once:i}=n,l=Se({},n),a=t&&r||!t&&o!=="post";let c;if(nr){if(o==="sync"){const _=qu();c=_.__watcherHandles||(_.__watcherHandles=[])}else if(!a){const _=()=>{};return _.stop=St,_.resume=St,_.pause=St,_}}const u=Ie;l.call=(_,A,T)=>lt(_,u,A,T);let f=!1;o==="post"?l.scheduler=_=>{Le(_,u&&u.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(_,A)=>{A?_():Ao(_)}),l.augmentJob=_=>{t&&(_.flags|=4),f&&(_.flags|=2,u&&(_.id=u.uid,_.i=u))};const d=ju(e,t,l);return nr&&(c?c.push(d):a&&d()),d}function Yu(e,t,n){const r=this.proxy,s=pe(e)?e.includes(".")?va(r,e):()=>r[e]:e.bind(r,r);let o;Q(t)?o=t:(o=t.handler,n=t);const i=dr(this),l=ya(s,o.bind(r),n);return i(),l}function va(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,Bn=e=>e&&(e.disabled||e.disabled===""),ei=e=>e&&(e.defer||e.defer===""),ti=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ni=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Us=(e,t)=>{const n=e&&e.to;return pe(n)?t?t(n):null:n},Ca={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,a,c){const{mc:u,pc:f,pbc:d,o:{insert:_,querySelector:A,createText:T,createComment:N}}=c,b=Bn(t.props);let{shapeFlag:E,children:R,dynamicChildren:w}=t;if(e==null){const I=t.el=T(""),$=t.anchor=T("");_(I,n,r),_($,n,r);const L=(M,B)=>{E&16&&u(R,M,B,s,o,i,l,a)},H=()=>{const M=t.target=Us(t.props,A),B=js(M,t,T,_);M&&(i!=="svg"&&ti(M)?i="svg":i!=="mathml"&&ni(M)&&(i="mathml"),s&&s.isCE&&(s.ce._teleportTargets||(s.ce._teleportTargets=new Set)).add(M),b||(L(M,B),Cr(t,!1)))};b&&(L(n,$),Cr(t,!0)),ei(t.props)?(t.el.__isMounted=!1,Le(()=>{H(),delete t.el.__isMounted},o)):H()}else{if(ei(t.props)&&e.el.__isMounted===!1){Le(()=>{Ca.process(e,t,n,r,s,o,i,l,a,c)},o);return}t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,$=t.target=e.target,L=t.targetAnchor=e.targetAnchor,H=Bn(e.props),M=H?n:$,B=H?I:L;if(i==="svg"||ti($)?i="svg":(i==="mathml"||ni($))&&(i="mathml"),w?(d(e.dynamicChildren,w,M,s,o,i,l),Oo(e,t,!0)):a||f(e,t,M,B,s,o,i,l,!1),b)H?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):_r(t,n,I,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const X=t.target=Us(t.props,A);X&&_r(t,X,null,c,0)}else H&&_r(t,$,L,c,1);Cr(t,b)}},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:a,targetStart:c,targetAnchor:u,target:f,props:d}=e;if(f&&(s(c),s(u)),o&&s(a),i&16){const _=o||!Bn(d);for(let A=0;A{e.isMounted=!0}),Na(()=>{e.isUnmounting=!0}),e}const ze=[Function,Array],wa={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ze,onEnter:ze,onAfterEnter:ze,onEnterCancelled:ze,onBeforeLeave:ze,onLeave:ze,onAfterLeave:ze,onLeaveCancelled:ze,onBeforeAppear:ze,onAppear:ze,onAfterAppear:ze,onAppearCancelled:ze},Aa=e=>{const t=e.subTree;return t.component?Aa(t.component):t},Qu={name:"BaseTransition",props:wa,setup(e,{slots:t}){const n=ts(),r=Ju();return()=>{const s=t.default&&Pa(t.default(),!0);if(!s||!s.length)return;const o=Ta(s),i=re(e),{mode:l}=i;if(r.isLeaving)return ms(o);const a=ri(o);if(!a)return ms(o);let c=Vs(a,i,r,n,f=>c=f);a.type!==$e&&er(a,c);let u=n.subTree&&ri(n.subTree);if(u&&u.type!==$e&&!un(u,a)&&Aa(n).type!==$e){let f=Vs(u,i,r,n);if(er(u,f),l==="out-in"&&a.type!==$e)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,u=void 0},ms(o);l==="in-out"&&a.type!==$e?f.delayLeave=(d,_,A)=>{const T=Ra(r,u);T[String(u.key)]=u,d[bt]=()=>{_(),d[bt]=void 0,delete c.delayedLeave,u=void 0},c.delayedLeave=()=>{A(),delete c.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return o}}};function Ta(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==$e){t=n;break}}return t}const zu=Qu;function Ra(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Vs(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:c,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:d,onLeave:_,onAfterLeave:A,onLeaveCancelled:T,onBeforeAppear:N,onAppear:b,onAfterAppear:E,onAppearCancelled:R}=t,w=String(e.key),I=Ra(n,e),$=(M,B)=>{M&<(M,r,9,B)},L=(M,B)=>{const X=B[1];$(M,B),q(M)?M.every(U=>U.length<=1)&&X():M.length<=1&&X()},H={mode:i,persisted:l,beforeEnter(M){let B=a;if(!n.isMounted)if(o)B=N||a;else return;M[bt]&&M[bt](!0);const X=I[w];X&&un(e,X)&&X.el[bt]&&X.el[bt](),$(B,[M])},enter(M){if(I[w]===e)return;let B=c,X=u,U=f;if(!n.isMounted)if(o)B=b||c,X=E||u,U=R||f;else return;let Z=!1;M[Mn]=ye=>{Z||(Z=!0,ye?$(U,[M]):$(X,[M]),H.delayedLeave&&H.delayedLeave(),M[Mn]=void 0)};const de=M[Mn].bind(null,!1);B?L(B,[M,de]):de()},leave(M,B){const X=String(e.key);if(M[Mn]&&M[Mn](!0),n.isUnmounting)return B();$(d,[M]);let U=!1;M[bt]=de=>{U||(U=!0,B(),de?$(T,[M]):$(A,[M]),M[bt]=void 0,I[X]===e&&delete I[X])};const Z=M[bt].bind(null,!1);I[X]=e,_?L(_,[M,Z]):Z()},clone(M){const B=Vs(M,t,n,r,s);return s&&s(B),B}};return H}function ms(e){if(zr(e))return e=en(e),e.children=null,e}function ri(e){if(!zr(e))return Sa(e.type)&&e.children?Ta(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Q(n.default))return n.default()}}function er(e,t){e.shapeFlag&6&&e.component?(e.transition=t,er(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Pa(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oKn(T,t&&(q(t)?t[N]:t),n,r,s));return}if(Gn(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Kn(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?ns(r.component):r.el,i=s?null:o,{i:l,r:a}=e,c=t&&t.r,u=l.refs===ue?l.refs={}:l.refs,f=l.setupState,d=re(f),_=f===ue?Ul:T=>si(u,T)?!1:le(d,T),A=(T,N)=>!(N&&si(u,N));if(c!=null&&c!==a){if(oi(t),pe(c))u[c]=null,_(c)&&(f[c]=null);else if(he(c)){const T=t;A(c,T.k)&&(c.value=null),T.k&&(u[T.k]=null)}}if(Q(a))ur(a,l,12,[i,u]);else{const T=pe(a),N=he(a);if(T||N){const b=()=>{if(e.f){const E=T?_(a)?f[a]:u[a]:A()||!e.k?a.value:u[e.k];if(s)q(E)&&mo(E,o);else if(q(E))E.includes(o)||E.push(o);else if(T)u[a]=[o],_(a)&&(f[a]=u[a]);else{const R=[o];A(a,e.k)&&(a.value=R),e.k&&(u[e.k]=R)}}else T?(u[a]=i,_(a)&&(f[a]=i)):N&&(A(a,e.k)&&(a.value=i),e.k&&(u[e.k]=i))};if(i){const E=()=>{b(),Nr.delete(e)};E.id=-1,Nr.set(e,E),Le(E,n)}else oi(e),b()}}}function oi(e){const t=Nr.get(e);t&&(t.flags|=8,Nr.delete(e))}Kr().requestIdleCallback;Kr().cancelIdleCallback;const Gn=e=>!!e.type.__asyncLoader,zr=e=>e.type.__isKeepAlive;function Zu(e,t){Oa(e,"a",t)}function ef(e,t){Oa(e,"da",t)}function Oa(e,t,n=Ie){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Zr(t,r,n),n){let s=n.parent;for(;s&&s.parent;)zr(s.parent.vnode)&&tf(r,t,n,s),s=s.parent}}function tf(e,t,n,r){const s=Zr(t,e,r,!0);Ro(()=>{mo(r[t],s)},n)}function Zr(e,t,n=Ie,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Wt();const l=dr(n),a=lt(t,n,e,i);return l(),Bt(),a});return r?s.unshift(o):s.push(o),o}}const Gt=e=>(t,n=Ie)=>{(!nr||e==="sp")&&Zr(e,(...r)=>t(...r),n)},nf=Gt("bm"),To=Gt("m"),rf=Gt("bu"),sf=Gt("u"),Na=Gt("bum"),Ro=Gt("um"),of=Gt("sp"),lf=Gt("rtg"),af=Gt("rtc");function cf(e,t=Ie){Zr("ec",e,t)}const uf="components";function ff(e,t){return hf(uf,e,!0,t)||e}const df=Symbol.for("v-ndc");function hf(e,t,n=!0,r=!1){const s=qe||Ie;if(s){const o=s.type;{const l=zf(o,!1);if(l&&(l===t||l===je(t)||l===Br(je(t))))return o}const i=ii(s[e]||o[e],t)||ii(s.appContext[e],t);return!i&&r?o:i}}function ii(e,t){return e&&(e[t]||e[je(t)]||e[Br(je(t))])}function Tg(e,t,n,r){let s;const o=n&&n[r],i=q(e);if(i||pe(e)){const l=i&&jt(e);let a=!1,c=!1;l&&(a=!Je(e),c=Kt(e),e=Yr(e)),s=new Array(e.length);for(let u=0,f=e.length;ut(l,a,void 0,o&&o[a]));else{const l=Object.keys(e);s=new Array(l.length);for(let a=0,c=l.length;ae?Za(e)?ns(e):Hs(e.parent):null,qn=Se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Hs(e.parent),$root:e=>Hs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>xa(e),$forceUpdate:e=>e.f||(e.f=()=>{Ao(e.update)}),$nextTick:e=>e.n||(e.n=wo.bind(e.proxy)),$watch:e=>Yu.bind(e)}),gs=(e,t)=>e!==ue&&!e.__isScriptSetup&&le(e,t),pf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const d=i[t];if(d!==void 0)switch(d){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(gs(r,t))return i[t]=1,r[t];if(s!==ue&&le(s,t))return i[t]=2,s[t];if(le(o,t))return i[t]=3,o[t];if(n!==ue&&le(n,t))return i[t]=4,n[t];Ws&&(i[t]=0)}}const c=qn[t];let u,f;if(c)return t==="$attrs"&&Ne(e.attrs,"get",""),c(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(n!==ue&&le(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,le(f,t))return f[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return gs(s,t)?(s[t]=n,!0):r!==ue&&le(r,t)?(r[t]=n,!0):le(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},l){let a;return!!(n[l]||e!==ue&&l[0]!=="$"&&le(e,l)||gs(t,l)||le(o,l)||le(r,l)||le(qn,l)||le(s.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:le(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function li(e){return q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ws=!0;function mf(e){const t=xa(e),n=e.proxy,r=e.ctx;Ws=!1,t.beforeCreate&&ai(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:a,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:_,updated:A,activated:T,deactivated:N,beforeDestroy:b,beforeUnmount:E,destroyed:R,unmounted:w,render:I,renderTracked:$,renderTriggered:L,errorCaptured:H,serverPrefetch:M,expose:B,inheritAttrs:X,components:U,directives:Z,filters:de}=t;if(c&&gf(c,r,null),i)for(const J in i){const ne=i[J];Q(ne)&&(r[J]=ne.bind(n))}if(s){const J=s.call(n,n);ae(J)&&(e.data=_n(J))}if(Ws=!0,o)for(const J in o){const ne=o[J],ve=Q(ne)?ne.bind(n,n):Q(ne.get)?ne.get.bind(n,n):St,Ke=!Q(ne)&&Q(ne.set)?ne.set.bind(n):St,ke=Ae({get:ve,set:Ke});Object.defineProperty(r,J,{enumerable:!0,configurable:!0,get:()=>ke.value,set:Ce=>ke.value=Ce})}if(l)for(const J in l)Ia(l[J],r,n,J);if(a){const J=Q(a)?a.call(n):a;Reflect.ownKeys(J).forEach(ne=>{Sr(ne,J[ne])})}u&&ai(u,e,"c");function se(J,ne){q(ne)?ne.forEach(ve=>J(ve.bind(n))):ne&&J(ne.bind(n))}if(se(nf,f),se(To,d),se(rf,_),se(sf,A),se(Zu,T),se(ef,N),se(cf,H),se(af,$),se(lf,L),se(Na,E),se(Ro,w),se(of,M),q(B))if(B.length){const J=e.exposed||(e.exposed={});B.forEach(ne=>{Object.defineProperty(J,ne,{get:()=>n[ne],set:ve=>n[ne]=ve,enumerable:!0})})}else e.exposed||(e.exposed={});I&&e.render===St&&(e.render=I),X!=null&&(e.inheritAttrs=X),U&&(e.components=U),Z&&(e.directives=Z),M&&La(e)}function gf(e,t,n=St){q(e)&&(e=Bs(e));for(const r in e){const s=e[r];let o;ae(s)?"default"in s?o=et(s.from||r,s.default,!0):o=et(s.from||r):o=et(s),he(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ai(e,t,n){lt(q(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ia(e,t,n,r){let s=r.includes(".")?va(n,r):()=>n[r];if(pe(e)){const o=t[e];Q(o)&&Vt(s,o)}else if(Q(e))Vt(s,e.bind(n));else if(ae(e))if(q(e))e.forEach(o=>Ia(o,t,n,r));else{const o=Q(e.handler)?e.handler.bind(n):t[e.handler];Q(o)&&Vt(s,o,e)}}function xa(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!s.length&&!n&&!r?a=t:(a={},s.length&&s.forEach(c=>Ir(a,c,i,!0)),Ir(a,t,i)),ae(t)&&o.set(t,a),a}function Ir(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Ir(e,o,n,!0),s&&s.forEach(i=>Ir(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=_f[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const _f={data:ci,props:ui,emits:ui,methods:jn,computed:jn,beforeCreate:De,created:De,beforeMount:De,mounted:De,beforeUpdate:De,updated:De,beforeDestroy:De,beforeUnmount:De,destroyed:De,unmounted:De,activated:De,deactivated:De,errorCaptured:De,serverPrefetch:De,components:jn,directives:jn,watch:yf,provide:ci,inject:bf};function ci(e,t){return t?e?function(){return Se(Q(e)?e.call(this,this):e,Q(t)?t.call(this,this):t)}:t:e}function bf(e,t){return jn(Bs(e),Bs(t))}function Bs(e){if(q(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${je(t)}Modifiers`]||e[`${gn(t)}Modifiers`];function Cf(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ue;let s=n;const o=t.startsWith("update:"),i=o&&Sf(r,t.slice(7));i&&(i.trim&&(s=n.map(u=>pe(u)?u.trim():u)),i.number&&(s=n.map(nu)));let l,a=r[l=cs(t)]||r[l=cs(je(t))];!a&&o&&(a=r[l=cs(gn(t))]),a&<(a,e,6,s);const c=r[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,lt(c,e,6,s)}}const wf=new WeakMap;function Da(e,t,n=!1){const r=n?wf:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!Q(e)){const a=c=>{const u=Da(c,t,!0);u&&(l=!0,Se(i,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(ae(e)&&r.set(e,null),null):(q(o)?o.forEach(a=>i[a]=null):Se(i,o),ae(e)&&r.set(e,i),i)}function es(e,t){return!e||!Vr(t)?!1:(t=t.slice(2).replace(/Once$/,""),le(e,t[0].toLowerCase()+t.slice(1))||le(e,gn(t))||le(e,t))}function fi(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:a,render:c,renderCache:u,props:f,data:d,setupState:_,ctx:A,inheritAttrs:T}=e,N=Or(e);let b,E;try{if(n.shapeFlag&4){const w=s||r,I=w;b=vt(c.call(I,w,u,f,_,d,A)),E=l}else{const w=t;b=vt(w.length>1?w(f,{attrs:l,slots:i,emit:a}):w(f,null)),E=t.props?l:Af(l)}}catch(w){Yn.length=0,Qr(w,e,1),b=He($e)}let R=b;if(E&&T!==!1){const w=Object.keys(E),{shapeFlag:I}=R;w.length&&I&7&&(o&&w.some(po)&&(E=Tf(E,o)),R=en(R,E,!1,!0))}return n.dirs&&(R=en(R,null,!1,!0),R.dirs=R.dirs?R.dirs.concat(n.dirs):n.dirs),n.transition&&er(R,n.transition),b=R,Or(N),b}const Af=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vr(n))&&((t||(t={}))[n]=e[n]);return t},Tf=(e,t)=>{const n={};for(const r in e)(!po(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Rf(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:a}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?di(r,i,c):!!i;if(a&8){const u=t.dynamicProps;for(let f=0;fObject.create(Fa),Ua=e=>Object.getPrototypeOf(e)===Fa;function Lf(e,t,n,r=!1){const s={},o=$a();e.propsDefaults=Object.create(null),ja(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:ua(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Of(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=re(s),[a]=e.propsOptions;let c=!1;if((r||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{a=!0;const[d,_]=Va(f,t,!0);Se(i,d),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!a)return ae(e)&&r.set(e,An),An;if(q(o))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Lo=e=>q(e)?e.map(vt):[vt(e)],If=(e,t,n)=>{if(t._n)return t;const r=Bu((...s)=>Lo(t(...s)),n);return r._c=!1,r},Ha=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Po(s))continue;const o=e[s];if(Q(o))t[s]=If(s,o,r);else if(o!=null){const i=Lo(o);t[s]=()=>i}}},Wa=(e,t)=>{const n=Lo(t);e.slots.default=()=>n},Ba=(e,t,n)=>{for(const r in t)(n||!Po(r))&&(e[r]=t[r])},xf=(e,t,n)=>{const r=e.slots=$a();if(e.vnode.shapeFlag&32){const s=t._;s?(Ba(r,t,n),n&&Bl(r,"_",s,!0)):Ha(t,r)}else t&&Wa(e,t)},kf=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ue;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Ba(s,t,n):(o=!t.$stable,Ha(t,s)),i=t}else t&&(Wa(e,t),i={default:1});if(o)for(const l in s)!Po(l)&&i[l]==null&&delete s[l]},Le=Uf;function Df(e){return Mf(e)}function Mf(e,t){const n=Kr();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:a,setText:c,setElementText:u,parentNode:f,nextSibling:d,setScopeId:_=St,insertStaticContent:A}=e,T=(m,g,S,O=null,D=null,x=null,h=void 0,p=null,y=!!g.dynamicChildren)=>{if(m===g)return;m&&!un(m,g)&&(O=k(m),Ce(m,D,x,!0),m=null),g.patchFlag===-2&&(y=!1,g.dynamicChildren=null);const{type:C,ref:V,shapeFlag:F}=g;switch(C){case fr:N(m,g,S,O);break;case $e:b(m,g,S,O);break;case bs:m==null&&E(g,S,O,h);break;case Ze:U(m,g,S,O,D,x,h,p,y);break;default:F&1?I(m,g,S,O,D,x,h,p,y):F&6?Z(m,g,S,O,D,x,h,p,y):(F&64||F&128)&&C.process(m,g,S,O,D,x,h,p,y,G)}V!=null&&D?Kn(V,m&&m.ref,x,g||m,!g):V==null&&m&&m.ref!=null&&Kn(m.ref,null,x,m,!0)},N=(m,g,S,O)=>{if(m==null)r(g.el=l(g.children),S,O);else{const D=g.el=m.el;g.children!==m.children&&c(D,g.children)}},b=(m,g,S,O)=>{m==null?r(g.el=a(g.children||""),S,O):g.el=m.el},E=(m,g,S,O)=>{[m.el,m.anchor]=A(m.children,g,S,O,m.el,m.anchor)},R=({el:m,anchor:g},S,O)=>{let D;for(;m&&m!==g;)D=d(m),r(m,S,O),m=D;r(g,S,O)},w=({el:m,anchor:g})=>{let S;for(;m&&m!==g;)S=d(m),s(m),m=S;s(g)},I=(m,g,S,O,D,x,h,p,y)=>{if(g.type==="svg"?h="svg":g.type==="math"&&(h="mathml"),m==null)$(g,S,O,D,x,h,p,y);else{const C=m.el&&m.el._isVueCE?m.el:null;try{C&&C._beginPatch(),M(m,g,D,x,h,p,y)}finally{C&&C._endPatch()}}},$=(m,g,S,O,D,x,h,p)=>{let y,C;const{props:V,shapeFlag:F,transition:v,dirs:P}=m;if(y=m.el=i(m.type,x,V&&V.is,V),F&8?u(y,m.children):F&16&&H(m.children,y,null,O,D,_s(m,x),h,p),P&&sn(m,null,O,"created"),L(y,m,m.scopeId,h,O),V){for(const Y in V)Y!=="value"&&!Vn(Y)&&o(y,Y,null,V[Y],x,O);"value"in V&&o(y,"value",null,V.value,x),(C=V.onVnodeBeforeMount)&&pt(C,O,m)}P&&sn(m,null,O,"beforeMount");const K=Ff(D,v);K&&v.beforeEnter(y),r(y,g,S),((C=V&&V.onVnodeMounted)||K||P)&&Le(()=>{C&&pt(C,O,m),K&&v.enter(y),P&&sn(m,null,O,"mounted")},D)},L=(m,g,S,O,D)=>{if(S&&_(m,S),O)for(let x=0;x{for(let C=y;C{const p=g.el=m.el;let{patchFlag:y,dynamicChildren:C,dirs:V}=g;y|=m.patchFlag&16;const F=m.props||ue,v=g.props||ue;let P;if(S&&on(S,!1),(P=v.onVnodeBeforeUpdate)&&pt(P,S,g,m),V&&sn(g,m,S,"beforeUpdate"),S&&on(S,!0),(F.innerHTML&&v.innerHTML==null||F.textContent&&v.textContent==null)&&u(p,""),C?B(m.dynamicChildren,C,p,S,O,_s(g,D),x):h||ne(m,g,p,null,S,O,_s(g,D),x,!1),y>0){if(y&16)X(p,F,v,S,D);else if(y&2&&F.class!==v.class&&o(p,"class",null,v.class,D),y&4&&o(p,"style",F.style,v.style,D),y&8){const K=g.dynamicProps;for(let Y=0;Y{P&&pt(P,S,g,m),V&&sn(g,m,S,"updated")},O)},B=(m,g,S,O,D,x,h)=>{for(let p=0;p{if(g!==S){if(g!==ue)for(const x in g)!Vn(x)&&!(x in S)&&o(m,x,g[x],null,D,O);for(const x in S){if(Vn(x))continue;const h=S[x],p=g[x];h!==p&&x!=="value"&&o(m,x,p,h,D,O)}"value"in S&&o(m,"value",g.value,S.value,D)}},U=(m,g,S,O,D,x,h,p,y)=>{const C=g.el=m?m.el:l(""),V=g.anchor=m?m.anchor:l("");let{patchFlag:F,dynamicChildren:v,slotScopeIds:P}=g;P&&(p=p?p.concat(P):P),m==null?(r(C,S,O),r(V,S,O),H(g.children||[],S,V,D,x,h,p,y)):F>0&&F&64&&v&&m.dynamicChildren&&m.dynamicChildren.length===v.length?(B(m.dynamicChildren,v,S,D,x,h,p),(g.key!=null||D&&g===D.subTree)&&Oo(m,g,!0)):ne(m,g,S,V,D,x,h,p,y)},Z=(m,g,S,O,D,x,h,p,y)=>{g.slotScopeIds=p,m==null?g.shapeFlag&512?D.ctx.activate(g,S,O,h,y):de(g,S,O,D,x,h,y):ye(m,g,y)},de=(m,g,S,O,D,x,h)=>{const p=m.component=qf(m,O,D);if(zr(m)&&(p.ctx.renderer=G),Yf(p,!1,h),p.asyncDep){if(D&&D.registerDep(p,se,h),!m.el){const y=p.subTree=He($e);b(null,y,g,S),m.placeholder=y.el}}else se(p,m,g,S,D,x,h)},ye=(m,g,S)=>{const O=g.component=m.component;if(Rf(m,g,S))if(O.asyncDep&&!O.asyncResolved){J(O,g,S);return}else O.next=g,O.update();else g.el=m.el,O.vnode=g},se=(m,g,S,O,D,x,h)=>{const p=()=>{if(m.isMounted){let{next:F,bu:v,u:P,parent:K,vnode:Y}=m;{const nt=Ka(m);if(nt){F&&(F.el=Y.el,J(m,F,h)),nt.asyncDep.then(()=>{Le(()=>{m.isUnmounted||C()},D)});return}}let te=F,me;on(m,!1),F?(F.el=Y.el,J(m,F,h)):F=Y,v&&us(v),(me=F.props&&F.props.onVnodeBeforeUpdate)&&pt(me,K,F,Y),on(m,!0);const ce=fi(m),Qe=m.subTree;m.subTree=ce,T(Qe,ce,f(Qe.el),k(Qe),m,D,x),F.el=ce.el,te===null&&Pf(m,ce.el),P&&Le(P,D),(me=F.props&&F.props.onVnodeUpdated)&&Le(()=>pt(me,K,F,Y),D)}else{let F;const{el:v,props:P}=g,{bm:K,m:Y,parent:te,root:me,type:ce}=m,Qe=Gn(g);on(m,!1),K&&us(K),!Qe&&(F=P&&P.onVnodeBeforeMount)&&pt(F,te,g),on(m,!0);{me.ce&&me.ce._hasShadowRoot()&&me.ce._injectChildStyle(ce,m.parent?m.parent.type:void 0);const nt=m.subTree=fi(m);T(null,nt,S,O,m,D,x),g.el=nt.el}if(Y&&Le(Y,D),!Qe&&(F=P&&P.onVnodeMounted)){const nt=g;Le(()=>pt(F,te,nt),D)}(g.shapeFlag&256||te&&Gn(te.vnode)&&te.vnode.shapeFlag&256)&&m.a&&Le(m.a,D),m.isMounted=!0,g=S=O=null}};m.scope.on();const y=m.effect=new Jl(p);m.scope.off();const C=m.update=y.run.bind(y),V=m.job=y.runIfDirty.bind(y);V.i=m,V.id=m.uid,y.scheduler=()=>Ao(V),on(m,!0),C()},J=(m,g,S)=>{g.component=m;const O=m.vnode.props;m.vnode=g,m.next=null,Of(m,g.props,O,S),kf(m,g.children,S),Wt(),Zo(m),Bt()},ne=(m,g,S,O,D,x,h,p,y=!1)=>{const C=m&&m.children,V=m?m.shapeFlag:0,F=g.children,{patchFlag:v,shapeFlag:P}=g;if(v>0){if(v&128){Ke(C,F,S,O,D,x,h,p,y);return}else if(v&256){ve(C,F,S,O,D,x,h,p,y);return}}P&8?(V&16&&Te(C,D,x),F!==C&&u(S,F)):V&16?P&16?Ke(C,F,S,O,D,x,h,p,y):Te(C,D,x,!0):(V&8&&u(S,""),P&16&&H(F,S,O,D,x,h,p,y))},ve=(m,g,S,O,D,x,h,p,y)=>{m=m||An,g=g||An;const C=m.length,V=g.length,F=Math.min(C,V);let v;for(v=0;vV?Te(m,D,x,!0,!1,F):H(g,S,O,D,x,h,p,y,F)},Ke=(m,g,S,O,D,x,h,p,y)=>{let C=0;const V=g.length;let F=m.length-1,v=V-1;for(;C<=F&&C<=v;){const P=m[C],K=g[C]=y?Dt(g[C]):vt(g[C]);if(un(P,K))T(P,K,S,null,D,x,h,p,y);else break;C++}for(;C<=F&&C<=v;){const P=m[F],K=g[v]=y?Dt(g[v]):vt(g[v]);if(un(P,K))T(P,K,S,null,D,x,h,p,y);else break;F--,v--}if(C>F){if(C<=v){const P=v+1,K=Pv)for(;C<=F;)Ce(m[C],D,x,!0),C++;else{const P=C,K=C,Y=new Map;for(C=K;C<=v;C++){const Ge=g[C]=y?Dt(g[C]):vt(g[C]);Ge.key!=null&&Y.set(Ge.key,C)}let te,me=0;const ce=v-K+1;let Qe=!1,nt=0;const kn=new Array(ce);for(C=0;C=ce){Ce(Ge,D,x,!0);continue}let ht;if(Ge.key!=null)ht=Y.get(Ge.key);else for(te=K;te<=v;te++)if(kn[te-K]===0&&un(Ge,g[te])){ht=te;break}ht===void 0?Ce(Ge,D,x,!0):(kn[ht-K]=C+1,ht>=nt?nt=ht:Qe=!0,T(Ge,g[ht],S,null,D,x,h,p,y),me++)}const Ko=Qe?$f(kn):An;for(te=Ko.length-1,C=ce-1;C>=0;C--){const Ge=K+C,ht=g[Ge],Go=g[Ge+1],qo=Ge+1{const{el:x,type:h,transition:p,children:y,shapeFlag:C}=m;if(C&6){ke(m.component.subTree,g,S,O);return}if(C&128){m.suspense.move(g,S,O);return}if(C&64){h.move(m,g,S,G);return}if(h===Ze){r(x,g,S);for(let F=0;Fp.enter(x),D);else{const{leave:F,delayLeave:v,afterLeave:P}=p,K=()=>{m.ctx.isUnmounted?s(x):r(x,g,S)},Y=()=>{x._isLeaving&&x[bt](!0),F(x,()=>{K(),P&&P()})};v?v(x,K,Y):Y()}else r(x,g,S)},Ce=(m,g,S,O=!1,D=!1)=>{const{type:x,props:h,ref:p,children:y,dynamicChildren:C,shapeFlag:V,patchFlag:F,dirs:v,cacheIndex:P}=m;if(F===-2&&(D=!1),p!=null&&(Wt(),Kn(p,null,S,m,!0),Bt()),P!=null&&(g.renderCache[P]=void 0),V&256){g.ctx.deactivate(m);return}const K=V&1&&v,Y=!Gn(m);let te;if(Y&&(te=h&&h.onVnodeBeforeUnmount)&&pt(te,g,m),V&6)dt(m.component,S,O);else{if(V&128){m.suspense.unmount(S,O);return}K&&sn(m,null,g,"beforeUnmount"),V&64?m.type.remove(m,g,S,G,O):C&&!C.hasOnce&&(x!==Ze||F>0&&F&64)?Te(C,g,S,!1,!0):(x===Ze&&F&384||!D&&V&16)&&Te(y,g,S),O&&ut(m)}(Y&&(te=h&&h.onVnodeUnmounted)||K)&&Le(()=>{te&&pt(te,g,m),K&&sn(m,null,g,"unmounted")},S)},ut=m=>{const{type:g,el:S,anchor:O,transition:D}=m;if(g===Ze){ft(S,O);return}if(g===bs){w(m);return}const x=()=>{s(S),D&&!D.persisted&&D.afterLeave&&D.afterLeave()};if(m.shapeFlag&1&&D&&!D.persisted){const{leave:h,delayLeave:p}=D,y=()=>h(S,x);p?p(m.el,x,y):y()}else x()},ft=(m,g)=>{let S;for(;m!==g;)S=d(m),s(m),m=S;s(g)},dt=(m,g,S)=>{const{bum:O,scope:D,job:x,subTree:h,um:p,m:y,a:C}=m;pi(y),pi(C),O&&us(O),D.stop(),x&&(x.flags|=8,Ce(h,m,g,S)),p&&Le(p,g),Le(()=>{m.isUnmounted=!0},g)},Te=(m,g,S,O=!1,D=!1,x=0)=>{for(let h=x;h{if(m.shapeFlag&6)return k(m.component.subTree);if(m.shapeFlag&128)return m.suspense.next();const g=d(m.anchor||m.el),S=g&&g[Ea];return S?d(S):g};let W=!1;const j=(m,g,S)=>{let O;m==null?g._vnode&&(Ce(g._vnode,null,null,!0),O=g._vnode.component):T(g._vnode||null,m,g,null,null,null,S),g._vnode=m,W||(W=!0,Zo(O),ga(),W=!1)},G={p:T,um:Ce,m:ke,r:ut,mt:de,mc:H,pc:ne,pbc:B,n:k,o:e};return{render:j,hydrate:void 0,createApp:Ef(j)}}function _s({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function on({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ff(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Oo(e,t,n=!1){const r=e.children,s=t.children;if(q(r)&&q(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Ka(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ka(t)}function pi(e){if(e)for(let t=0;te.__isSuspense;function Uf(e,t){t&&t.pendingBranch?q(e)?t.effects.push(...e):t.effects.push(e):Wu(e)}const Ze=Symbol.for("v-fgt"),fr=Symbol.for("v-txt"),$e=Symbol.for("v-cmt"),bs=Symbol.for("v-stc"),Yn=[];let Ye=null;function Ya(e=!1){Yn.push(Ye=e?null:[])}function jf(){Yn.pop(),Ye=Yn[Yn.length-1]||null}let tr=1;function xr(e,t=!1){tr+=e,e<0&&Ye&&t&&(Ye.hasOnce=!0)}function Xa(e){return e.dynamicChildren=tr>0?Ye||An:null,jf(),tr>0&&Ye&&Ye.push(e),e}function Rg(e,t,n,r,s,o){return Xa(za(e,t,n,r,s,o,!0))}function Ja(e,t,n,r,s){return Xa(He(e,t,n,r,s,!0))}function kr(e){return e?e.__v_isVNode===!0:!1}function un(e,t){return e.type===t.type&&e.key===t.key}const Qa=({key:e})=>e??null,wr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||he(e)||Q(e)?{i:qe,r:e,k:t,f:!!n}:e:null);function za(e,t=null,n=null,r=0,s=null,o=e===Ze?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Qa(t),ref:t&&wr(t),scopeId:ba,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:qe};return l?(No(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=pe(n)?8:16),tr>0&&!i&&Ye&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&Ye.push(a),a}const He=Vf;function Vf(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===df)&&(e=$e),kr(e)){const l=en(e,t,!0);return n&&No(l,n),tr>0&&!o&&Ye&&(l.shapeFlag&6?Ye[Ye.indexOf(e)]=l:Ye.push(l)),l.patchFlag=-2,l}if(Zf(e)&&(e=e.__vccOpts),t){t=Hf(t);let{class:l,style:a}=t;l&&!pe(l)&&(t.class=qr(l)),ae(a)&&(Xr(a)&&!q(a)&&(a=Se({},a)),t.style=Gr(a))}const i=pe(e)?1:qa(e)?128:Sa(e)?64:ae(e)?4:Q(e)?2:0;return za(e,t,n,r,s,i,o,!0)}function Hf(e){return e?Xr(e)||Ua(e)?Se({},e):e:null}function en(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:a}=e,c=t?Bf(s||{},t):s,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Qa(c),ref:t&&t.ref?n&&o?q(o)?o.concat(wr(t)):[o,wr(t)]:wr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ze?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&en(e.ssContent),ssFallback:e.ssFallback&&en(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&r&&er(u,a.clone(u)),u}function Wf(e=" ",t=0){return He(fr,null,e,t)}function Pg(e="",t=!1){return t?(Ya(),Ja($e,null,e)):He($e,null,e)}function vt(e){return e==null||typeof e=="boolean"?He($e):q(e)?He(Ze,null,e.slice()):kr(e)?Dt(e):He(fr,null,String(e))}function Dt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:en(e)}function No(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(q(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),No(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Ua(t)?t._ctx=qe:s===3&&qe&&(qe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Q(t)?(t={default:t,_ctx:qe},n=32):(t=String(t),r&64?(n=16,t=[Wf(t)]):n=8);e.children=t,e.shapeFlag|=n}function Bf(...e){const t={};for(let n=0;nIe||qe;let Dr,Gs;{const e=Kr(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Dr=t("__VUE_INSTANCE_SETTERS__",n=>Ie=n),Gs=t("__VUE_SSR_SETTERS__",n=>nr=n)}const dr=e=>{const t=Ie;return Dr(e),e.scope.on(),()=>{e.scope.off(),Dr(t)}},mi=()=>{Ie&&Ie.scope.off(),Dr(null)};function Za(e){return e.vnode.shapeFlag&4}let nr=!1;function Yf(e,t=!1,n=!1){t&&Gs(t);const{props:r,children:s}=e.vnode,o=Za(e);Lf(e,r,o,t),xf(e,s,n||t);const i=o?Xf(e,t):void 0;return t&&Gs(!1),i}function Xf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,pf);const{setup:r}=n;if(r){Wt();const s=e.setupContext=r.length>1?Qf(e):null,o=dr(e),i=ur(r,e,0,[e.props,s]),l=Vl(i);if(Bt(),o(),(l||e.sp)&&!Gn(e)&&La(e),l){if(i.then(mi,mi),t)return i.then(a=>{gi(e,a)}).catch(a=>{Qr(a,e,0)});e.asyncDep=i}else gi(e,i)}else ec(e)}function gi(e,t,n){Q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ae(t)&&(e.setupState=ha(t)),ec(e)}function ec(e,t,n){const r=e.type;e.render||(e.render=r.render||St);{const s=dr(e);Wt();try{mf(e)}finally{Bt(),s()}}}const Jf={get(e,t){return Ne(e,"get",""),e[t]}};function Qf(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Jf),slots:e.slots,emit:e.emit,expose:t}}function ns(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ha(xn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in qn)return qn[n](e)},has(t,n){return n in t||n in qn}})):e.proxy}function zf(e,t=!0){return Q(e)?e.displayName||e.name:e.name||t&&e.__name}function Zf(e){return Q(e)&&"__vccOpts"in e}const Ae=(e,t)=>$u(e,t,nr);function hr(e,t,n){try{xr(-1);const r=arguments.length;return r===2?ae(t)&&!q(t)?kr(t)?He(e,null,[t]):He(e,t):He(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&kr(n)&&(n=[n]),He(e,t,n))}finally{xr(1)}}const ed="3.5.30";let qs;const _i=typeof window<"u"&&window.trustedTypes;if(_i)try{qs=_i.createPolicy("vue",{createHTML:e=>e})}catch{}const tc=qs?e=>qs.createHTML(e):e=>e,td="http://www.w3.org/2000/svg",nd="http://www.w3.org/1998/Math/MathML",xt=typeof document<"u"?document:null,bi=xt&&xt.createElement("template"),rd={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?xt.createElementNS(td,e):t==="mathml"?xt.createElementNS(nd,e):n?xt.createElement(e,{is:n}):xt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>xt.createTextNode(e),createComment:e=>xt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>xt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{bi.innerHTML=tc(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=bi.content;if(r==="svg"||r==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},qt="transition",Fn="animation",rr=Symbol("_vtc"),nc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},sd=Se({},wa,nc),od=e=>(e.displayName="Transition",e.props=sd,e),Lg=od((e,{slots:t})=>hr(zu,id(e),t)),ln=(e,t=[])=>{q(e)?e.forEach(n=>n(...t)):e&&e(...t)},yi=e=>e?q(e)?e.some(t=>t.length>1):e.length>1:!1;function id(e){const t={};for(const U in e)U in nc||(t[U]=e[U]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:c=i,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,A=ld(s),T=A&&A[0],N=A&&A[1],{onBeforeEnter:b,onEnter:E,onEnterCancelled:R,onLeave:w,onLeaveCancelled:I,onBeforeAppear:$=b,onAppear:L=E,onAppearCancelled:H=R}=t,M=(U,Z,de,ye)=>{U._enterCancelled=ye,an(U,Z?u:l),an(U,Z?c:i),de&&de()},B=(U,Z)=>{U._isLeaving=!1,an(U,f),an(U,_),an(U,d),Z&&Z()},X=U=>(Z,de)=>{const ye=U?L:E,se=()=>M(Z,U,de);ln(ye,[Z,se]),vi(()=>{an(Z,U?a:o),Lt(Z,U?u:l),yi(ye)||Ei(Z,r,T,se)})};return Se(t,{onBeforeEnter(U){ln(b,[U]),Lt(U,o),Lt(U,i)},onBeforeAppear(U){ln($,[U]),Lt(U,a),Lt(U,c)},onEnter:X(!1),onAppear:X(!0),onLeave(U,Z){U._isLeaving=!0;const de=()=>B(U,Z);Lt(U,f),U._enterCancelled?(Lt(U,d),wi(U)):(wi(U),Lt(U,d)),vi(()=>{U._isLeaving&&(an(U,f),Lt(U,_),yi(w)||Ei(U,r,N,de))}),ln(w,[U,de])},onEnterCancelled(U){M(U,!1,void 0,!0),ln(R,[U])},onAppearCancelled(U){M(U,!0,void 0,!0),ln(H,[U])},onLeaveCancelled(U){B(U),ln(I,[U])}})}function ld(e){if(e==null)return null;if(ae(e))return[ys(e.enter),ys(e.leave)];{const t=ys(e);return[t,t]}}function ys(e){return ru(e)}function Lt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[rr]||(e[rr]=new Set)).add(t)}function an(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[rr];n&&(n.delete(t),n.size||(e[rr]=void 0))}function vi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ad=0;function Ei(e,t,n,r){const s=e._endId=++ad,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:a}=cd(e,t);if(!i)return r();const c=i+"end";let u=0;const f=()=>{e.removeEventListener(c,d),o()},d=_=>{_.target===e&&++u>=a&&f()};setTimeout(()=>{u(n[A]||"").split(", "),s=r(`${qt}Delay`),o=r(`${qt}Duration`),i=Si(s,o),l=r(`${Fn}Delay`),a=r(`${Fn}Duration`),c=Si(l,a);let u=null,f=0,d=0;t===qt?i>0&&(u=qt,f=i,d=o.length):t===Fn?c>0&&(u=Fn,f=c,d=a.length):(f=Math.max(i,c),u=f>0?i>c?qt:Fn:null,d=u?u===qt?o.length:a.length:0);const _=u===qt&&/\b(?:transform|all)(?:,|$)/.test(r(`${qt}Property`).toString());return{type:u,timeout:f,propCount:d,hasTransform:_}}function Si(e,t){for(;e.lengthCi(n)+Ci(e[r])))}function Ci(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function wi(e){return(e?e.ownerDocument:document).body.offsetHeight}function ud(e,t,n){const r=e[rr];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ai=Symbol("_vod"),fd=Symbol("_vsh"),dd=Symbol(""),hd=/(?:^|;)\s*display\s*:/;function pd(e,t,n){const r=e.style,s=pe(n);let o=!1;if(n&&!s){if(t)if(pe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Ar(r,l,"")}else for(const i in t)n[i]==null&&Ar(r,i,"");for(const i in n)i==="display"&&(o=!0),Ar(r,i,n[i])}else if(s){if(t!==n){const i=r[dd];i&&(n+=";"+i),r.cssText=n,o=hd.test(n)}}else t&&e.removeAttribute("style");Ai in e&&(e[Ai]=o?r.display:"",e[fd]&&(r.display="none"))}const Ti=/\s*!important$/;function Ar(e,t,n){if(q(n))n.forEach(r=>Ar(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=md(e,t);Ti.test(n)?e.setProperty(gn(r),n.replace(Ti,""),"important"):e[r]=n}}const Ri=["Webkit","Moz","ms"],vs={};function md(e,t){const n=vs[t];if(n)return n;let r=je(t);if(r!=="filter"&&r in e)return vs[t]=r;r=Br(r);for(let s=0;sEs||(vd.then(()=>Es=0),Es=Date.now());function Sd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;lt(Cd(r,n.value),t,5,[r])};return n.value=e,n.attached=Ed(),n}function Cd(e,t){if(q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const xi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,wd=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?ud(e,r,i):t==="style"?pd(e,n,r):Vr(t)?po(t)||bd(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ad(e,t,r,i))?(Oi(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Li(e,t,r,i,o,t!=="value")):e._isVueCE&&(Td(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!pe(r)))?Oi(e,je(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Li(e,t,r,i))};function Ad(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&xi(t)&&Q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return xi(t)&&pe(n)?!1:t in e}function Td(e,t){const n=e._def.props;if(!n)return!1;const r=je(t);return Array.isArray(n)?n.some(s=>je(s)===r):Object.keys(n).some(s=>je(s)===r)}const Rd=Se({patchProp:wd},rd);let ki;function Pd(){return ki||(ki=Df(Rd))}const Ld=((...e)=>{const t=Pd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Nd(r);if(!s)return;const o=t._component;!Q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,Od(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t});function Od(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Nd(e){return pe(e)?document.querySelector(e):e}function Io(e,t,n,r){return Object.defineProperty(e,t,{get:n,set:r,enumerable:!0}),e}const mn=Jr(!1);let Ys;function Id(e,t){const n=/(edg|edge|edga|edgios)\/([\w.]+)/.exec(e)||/(opr)[\/]([\w.]+)/.exec(e)||/(vivaldi)[\/]([\w.]+)/.exec(e)||/(chrome|crios)[\/]([\w.]+)/.exec(e)||/(version)(applewebkit)[\/]([\w.]+).*(safari)[\/]([\w.]+)/.exec(e)||/(webkit)[\/]([\w.]+).*(version)[\/]([\w.]+).*(safari)[\/]([\w.]+)/.exec(e)||/(firefox|fxios)[\/]([\w.]+)/.exec(e)||/(webkit)[\/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[\/]([\w.]+)/.exec(e)||[];return{browser:n[5]||n[3]||n[1]||"",version:n[4]||n[2]||"0",platform:t[0]||""}}function xd(e){return/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(silk)/.exec(e)||/(android)/.exec(e)||/(win)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||/(playbook)/.exec(e)||/(bb)/.exec(e)||/(blackberry)/.exec(e)||[]}const rc="ontouchstart"in window||window.navigator.maxTouchPoints>0;function kd(e){const t=e.toLowerCase(),n=xd(t),r=Id(t,n),s={mobile:!1,desktop:!1,cordova:!1,capacitor:!1,nativeMobile:!1,electron:!1,bex:!1,linux:!1,mac:!1,win:!1,cros:!1,chrome:!1,firefox:!1,opera:!1,safari:!1,vivaldi:!1,edge:!1,edgeChromium:!1,ie:!1,webkit:!1,android:!1,ios:!1,ipad:!1,iphone:!1,ipod:!1,kindle:!1,winphone:!1,blackberry:!1,playbook:!1,silk:!1};r.browser&&(s[r.browser]=!0,s.version=r.version,s.versionNumber=parseInt(r.version,10)),r.platform&&(s[r.platform]=!0);const o=s.android||s.ios||s.bb||s.blackberry||s.ipad||s.iphone||s.ipod||s.kindle||s.playbook||s.silk||s["windows phone"];if(o===!0||t.indexOf("mobile")!==-1?s.mobile=!0:s.desktop=!0,s["windows phone"]&&(s.winphone=!0,delete s["windows phone"]),s.edga||s.edgios||s.edg?(s.edge=!0,r.browser="edge"):s.crios?(s.chrome=!0,r.browser="chrome"):s.fxios&&(s.firefox=!0,r.browser="firefox"),(s.ipod||s.ipad||s.iphone)&&(s.ios=!0),s.vivaldi&&(r.browser="vivaldi",s.vivaldi=!0),(s.chrome||s.opr||s.safari||s.vivaldi||s.mobile===!0&&s.ios!==!0&&o!==!0)&&(s.webkit=!0),s.opr&&(r.browser="opera",s.opera=!0),s.safari&&(s.blackberry||s.bb?(r.browser="blackberry",s.blackberry=!0):s.playbook?(r.browser="playbook",s.playbook=!0):s.android?(r.browser="android",s.android=!0):s.kindle?(r.browser="kindle",s.kindle=!0):s.silk&&(r.browser="silk",s.silk=!0)),s.name=r.browser,s.platform=r.platform,t.indexOf("electron")!==-1)s.electron=!0;else if(document.location.href.indexOf("-extension://")!==-1)s.bex=!0;else{if(window.Capacitor!==void 0?(s.capacitor=!0,s.nativeMobile=!0,s.nativeMobileWrapper="capacitor"):(window._cordovaNative!==void 0||window.cordova!==void 0)&&(s.cordova=!0,s.nativeMobile=!0,s.nativeMobileWrapper="cordova"),mn.value===!0&&(Ys={is:{...s}}),rc===!0&&s.mac===!0&&(s.desktop===!0&&s.safari===!0||s.nativeMobile===!0&&s.android!==!0&&s.ios!==!0&&s.ipad!==!0)){delete s.mac,delete s.desktop;const i=Math.min(window.innerHeight,window.innerWidth)>414?"ipad":"iphone";Object.assign(s,{mobile:!0,ios:!0,platform:i,[i]:!0})}s.mobile!==!0&&window.navigator.userAgentData&&window.navigator.userAgentData.mobile&&(delete s.desktop,s.mobile=!0)}return s}const Di=navigator.userAgent||navigator.vendor||window.opera,Dd={has:{touch:!1,webStorage:!1},within:{iframe:!1}},Ct={userAgent:Di,is:kd(Di),has:{touch:rc},within:{iframe:window.self!==window.top}},Xs={install(e){const{$q:t}=e;mn.value===!0?(e.onSSRHydrated.push(()=>{Object.assign(t.platform,Ct),mn.value=!1}),t.platform=_n(this)):t.platform=this}};{let e;Io(Ct.has,"webStorage",()=>{if(e!==void 0)return e;try{if(window.localStorage)return e=!0,!0}catch{}return e=!1,!1}),Object.assign(Xs,Ct),mn.value===!0&&(Object.assign(Xs,Ys,Dd),Ys=null)}function Og(e){return xn(bn(e))}function Ng(e){return xn(e)}const rs=(e,t)=>{const n=_n(e);for(const r in e)Io(t,r,()=>n[r],s=>{n[r]=s});return t},Ln={hasPassive:!1,passiveCapture:!0,notPassiveCapture:!0};try{const e=Object.defineProperty({},"passive",{get(){Object.assign(Ln,{hasPassive:!0,passive:{passive:!0},notPassive:{passive:!1},passiveCapture:{passive:!0,capture:!0},notPassiveCapture:{passive:!1,capture:!0}})}});window.addEventListener("qtest",null,e),window.removeEventListener("qtest",null,e)}catch{}function sr(){}function Ig(e){return e.button===0}function xg(e){return e.touches&&e.touches[0]?e=e.touches[0]:e.changedTouches&&e.changedTouches[0]?e=e.changedTouches[0]:e.targetTouches&&e.targetTouches[0]&&(e=e.targetTouches[0]),{top:e.clientY,left:e.clientX}}function kg(e){if(e.path)return e.path;if(e.composedPath)return e.composedPath();const t=[];let n=e.target;for(;n;){if(t.push(n),n.tagName==="HTML")return t.push(document),t.push(window),t;n=n.parentElement}}function Dg(e){e.stopPropagation()}function Mi(e){e.cancelable!==!1&&e.preventDefault()}function Mg(e){e.cancelable!==!1&&e.preventDefault(),e.stopPropagation()}function Fg(e,t){if(e===void 0||t===!0&&e.__dragPrevented===!0)return;const n=t===!0?r=>{r.__dragPrevented=!0,r.addEventListener("dragstart",Mi,Ln.notPassiveCapture)}:r=>{delete r.__dragPrevented,r.removeEventListener("dragstart",Mi,Ln.notPassiveCapture)};e.querySelectorAll("a, img").forEach(n)}function $g(e,t,n){const r=`__q_${t}_evt`;e[r]=e[r]!==void 0?e[r].concat(n):n,n.forEach(s=>{s[0].addEventListener(s[1],e[s[2]],Ln[s[3]])})}function Ug(e,t){const n=`__q_${t}_evt`;e[n]!==void 0&&(e[n].forEach(r=>{r[0].removeEventListener(r[1],e[r[2]],Ln[r[3]])}),e[n]=void 0)}function Md(e,t=250,n){let r=null;function s(){const o=arguments,i=()=>{r=null,e.apply(this,o)};r!==null&&clearTimeout(r),r=setTimeout(i,t)}return s.cancel=()=>{r!==null&&clearTimeout(r)},s}const Ss=["sm","md","lg","xl"],{passive:Fi}=Ln,Fd=rs({width:0,height:0,name:"xs",sizes:{sm:600,md:1024,lg:1440,xl:1920},lt:{sm:!0,md:!0,lg:!0,xl:!0},gt:{xs:!1,sm:!1,md:!1,lg:!1},xs:!0,sm:!1,md:!1,lg:!1,xl:!1},{setSizes:sr,setDebounce:sr,install({$q:e,onSSRHydrated:t}){if(e.screen=this,this.__installed===!0){e.config.screen!==void 0&&(e.config.screen.bodyClasses===!1?document.body.classList.remove(`screen--${this.name}`):this.__update(!0));return}const{visualViewport:n}=window,r=n||window,s=document.scrollingElement||document.documentElement,o=n===void 0||Ct.is.mobile===!0?()=>[Math.max(window.innerWidth,s.clientWidth),Math.max(window.innerHeight,s.clientHeight)]:()=>[n.width*n.scale+window.innerWidth-s.clientWidth,n.height*n.scale+window.innerHeight-s.clientHeight],i=e.config.screen?.bodyClasses===!0;this.__update=f=>{const[d,_]=o();if(_!==this.height&&(this.height=_),d!==this.width)this.width=d;else if(f!==!0)return;let A=this.sizes;this.gt.xs=d>=A.sm,this.gt.sm=d>=A.md,this.gt.md=d>=A.lg,this.gt.lg=d>=A.xl,this.lt.sm=d{Ss.forEach(d=>{f[d]!==void 0&&(a[d]=f[d])})},this.setDebounce=f=>{c=f};const u=()=>{const f=getComputedStyle(document.body);f.getPropertyValue("--q-size-sm")&&Ss.forEach(d=>{this.sizes[d]=parseInt(f.getPropertyValue(`--q-size-${d}`),10)}),this.setSizes=d=>{Ss.forEach(_=>{d[_]&&(this.sizes[_]=d[_])}),this.__update(!0)},this.setDebounce=d=>{l!==void 0&&r.removeEventListener("resize",l,Fi),l=d>0?Md(this.__update,d):this.__update,r.addEventListener("resize",l,Fi)},this.setDebounce(c),Object.keys(a).length!==0?(this.setSizes(a),a=void 0):this.__update(),i===!0&&this.name==="xs"&&document.body.classList.add("screen--xs")};mn.value===!0?t.push(u):u()}}),Re=rs({isActive:!1,mode:!1},{__media:void 0,set(e){Re.mode=e,e==="auto"?(Re.__media===void 0&&(Re.__media=window.matchMedia("(prefers-color-scheme: dark)"),Re.__updateMedia=()=>{Re.set("auto")},Re.__media.addListener(Re.__updateMedia)),e=Re.__media.matches):Re.__media!==void 0&&(Re.__media.removeListener(Re.__updateMedia),Re.__media=void 0),Re.isActive=e===!0,document.body.classList.remove(`body--${e===!0?"light":"dark"}`),document.body.classList.add(`body--${e===!0?"dark":"light"}`)},toggle(){Re.set(Re.isActive===!1)},install({$q:e,ssrContext:t}){const n=e.config.dark;e.dark=this,this.__installed!==!0&&this.set(n!==void 0?n:!1)}});function $d(e,t,n=document.body){if(typeof e!="string")throw new TypeError("Expected a string as propName");if(typeof t!="string")throw new TypeError("Expected a string as value");if(!(n instanceof Element))throw new TypeError("Expected a DOM element");n.style.setProperty(`--q-${e}`,t)}let sc=!1;function Ud(e){sc=e.isComposing===!0}function jd(e){return sc===!0||e!==Object(e)||e.isComposing===!0||e.qKeyEvent===!0}function jg(e,t){return jd(e)===!0?!1:[].concat(t).includes(e.keyCode)}function oc(e){if(e.ios===!0)return"ios";if(e.android===!0)return"android"}function Vd({is:e,has:t,within:n},r){const s=[e.desktop===!0?"desktop":"mobile",`${t.touch===!1?"no-":""}touch`];if(e.mobile===!0){const o=oc(e);o!==void 0&&s.push("platform-"+o)}if(e.nativeMobile===!0){const o=e.nativeMobileWrapper;s.push(o),s.push("native-mobile"),e.ios===!0&&(r[o]===void 0||r[o].iosStatusBarPadding!==!1)&&s.push("q-ios-padding")}else e.electron===!0?s.push("electron"):e.bex===!0&&s.push("bex");return n.iframe===!0&&s.push("within-iframe"),s}function Hd(){const{is:e}=Ct,t=document.body.className,n=new Set(t.replace(/ {2}/g," ").split(" "));if(e.nativeMobile!==!0&&e.electron!==!0&&e.bex!==!0){if(e.desktop===!0)n.delete("mobile"),n.delete("platform-ios"),n.delete("platform-android"),n.add("desktop");else if(e.mobile===!0){n.delete("desktop"),n.add("mobile"),n.delete("platform-ios"),n.delete("platform-android");const s=oc(e);s!==void 0&&n.add(`platform-${s}`)}}Ct.has.touch===!0&&(n.delete("no-touch"),n.add("touch")),Ct.within.iframe===!0&&n.add("within-iframe");const r=Array.from(n).join(" ");t!==r&&(document.body.className=r)}function Wd(e){for(const t in e)$d(t,e[t])}const Bd={install(e){if(this.__installed!==!0){if(mn.value===!0)Hd();else{const{$q:t}=e;t.config.brand!==void 0&&Wd(t.config.brand);const n=Vd(Ct,t.config);document.body.classList.add.apply(document.body.classList,n)}Ct.is.ios===!0&&document.body.addEventListener("touchstart",sr),window.addEventListener("keydown",Ud,!0)}}},ic=()=>!0;function Kd(e){return typeof e=="string"&&e!==""&&e!=="/"&&e!=="#/"}function Gd(e){return e.startsWith("#")===!0&&(e=e.substring(1)),e.startsWith("/")===!1&&(e="/"+e),e.endsWith("/")===!0&&(e=e.substring(0,e.length-1)),"#"+e}function qd(e){if(e.backButtonExit===!1)return()=>!1;if(e.backButtonExit==="*")return ic;const t=["#/"];return Array.isArray(e.backButtonExit)===!0&&t.push(...e.backButtonExit.filter(Kd).map(Gd)),()=>t.includes(window.location.hash)}const Yd={__history:[],add:sr,remove:sr,install({$q:e}){if(this.__installed===!0)return;const{cordova:t,capacitor:n}=Ct.is;if(t!==!0&&n!==!0)return;const r=e.config[t===!0?"cordova":"capacitor"];if(r?.backButton===!1||n===!0&&(window.Capacitor===void 0||window.Capacitor.Plugins.App===void 0))return;this.add=i=>{i.condition===void 0&&(i.condition=ic),this.__history.push(i)},this.remove=i=>{const l=this.__history.indexOf(i);l>=0&&this.__history.splice(l,1)};const s=qd(Object.assign({backButtonExit:!0},r)),o=()=>{if(this.__history.length){const i=this.__history[this.__history.length-1];i.condition()===!0&&(this.__history.pop(),i.handler())}else s()===!0?navigator.app.exitApp():window.history.back()};t===!0?document.addEventListener("deviceready",()=>{document.addEventListener("backbutton",o,!1)}):window.Capacitor.Plugins.App.addListener("backButton",o)}},$i={isoName:"en-US",nativeName:"English (US)",label:{clear:"Clear",ok:"OK",cancel:"Cancel",close:"Close",set:"Set",select:"Select",reset:"Reset",remove:"Remove",update:"Update",create:"Create",search:"Search",filter:"Filter",refresh:"Refresh",expand:e=>e?`Expand "${e}"`:"Expand",collapse:e=>e?`Collapse "${e}"`:"Collapse"},date:{days:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),daysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),firstDayOfWeek:0,format24h:!1,pluralDay:"days",prevMonth:"Previous month",nextMonth:"Next month",prevYear:"Previous year",nextYear:"Next year",today:"Today",prevRangeYears:e=>`Previous ${e} years`,nextRangeYears:e=>`Next ${e} years`},table:{noData:"No data available",noResults:"No matching records found",loading:"Loading...",selectedRecords:e=>e===1?"1 record selected.":(e===0?"No":e)+" records selected.",recordsPerPage:"Records per page:",allRows:"All",pagination:(e,t,n)=>e+"-"+t+" of "+n,columns:"Columns"},pagination:{first:"First page",prev:"Previous page",next:"Next page",last:"Last page"},editor:{url:"URL",bold:"Bold",italic:"Italic",strikethrough:"Strikethrough",underline:"Underline",unorderedList:"Unordered List",orderedList:"Ordered List",subscript:"Subscript",superscript:"Superscript",hyperlink:"Hyperlink",toggleFullscreen:"Toggle Fullscreen",quote:"Quote",left:"Left align",center:"Center align",right:"Right align",justify:"Justify align",print:"Print",outdent:"Decrease indentation",indent:"Increase indentation",removeFormat:"Remove formatting",formatting:"Formatting",fontSize:"Font Size",align:"Align",hr:"Insert Horizontal Rule",undo:"Undo",redo:"Redo",heading1:"Heading 1",heading2:"Heading 2",heading3:"Heading 3",heading4:"Heading 4",heading5:"Heading 5",heading6:"Heading 6",paragraph:"Paragraph",code:"Code",size1:"Very small",size2:"A bit small",size3:"Normal",size4:"Medium-large",size5:"Big",size6:"Very big",size7:"Maximum",defaultFont:"Default Font",viewSource:"View Source"},tree:{noNodes:"No nodes available",noResults:"No matching nodes found"}};function Ui(){const e=Array.isArray(navigator.languages)===!0&&navigator.languages.length!==0?navigator.languages[0]:navigator.language;if(typeof e=="string")return e.split(/[-_]/).map((t,n)=>n===0?t.toLowerCase():n>1||t.length<4?t.toUpperCase():t[0].toUpperCase()+t.slice(1).toLowerCase()).join("-")}const Qt=rs({__qLang:{}},{getLocale:Ui,set(e=$i,t){const n={...e,rtl:e.rtl===!0,getLocale:Ui};{if(n.set=Qt.set,Qt.__langConfig===void 0||Qt.__langConfig.noHtmlAttrs!==!0){const r=document.documentElement;r.setAttribute("dir",n.rtl===!0?"rtl":"ltr"),r.setAttribute("lang",n.isoName)}Object.assign(Qt.__qLang,n)}},install({$q:e,lang:t,ssrContext:n}){e.lang=Qt.__qLang,Qt.__langConfig=e.config.lang,this.__installed===!0?t!==void 0&&this.set(t):(this.props=new Proxy(this.__qLang,{get(){return Reflect.get(...arguments)},ownKeys(r){return Reflect.ownKeys(r).filter(s=>s!=="set"&&s!=="getLocale")}}),this.set(t||$i))}}),Xd={name:"material-icons",type:{positive:"check_circle",negative:"warning",info:"info",warning:"priority_high"},arrow:{up:"arrow_upward",right:"arrow_forward",down:"arrow_downward",left:"arrow_back",dropdown:"arrow_drop_down"},chevron:{left:"chevron_left",right:"chevron_right"},colorPicker:{spectrum:"gradient",tune:"tune",palette:"style"},pullToRefresh:{icon:"refresh"},carousel:{left:"chevron_left",right:"chevron_right",up:"keyboard_arrow_up",down:"keyboard_arrow_down",navigationIcon:"lens"},chip:{remove:"cancel",selected:"check"},datetime:{arrowLeft:"chevron_left",arrowRight:"chevron_right",now:"access_time",today:"today"},editor:{bold:"format_bold",italic:"format_italic",strikethrough:"strikethrough_s",underline:"format_underlined",unorderedList:"format_list_bulleted",orderedList:"format_list_numbered",subscript:"vertical_align_bottom",superscript:"vertical_align_top",hyperlink:"link",toggleFullscreen:"fullscreen",quote:"format_quote",left:"format_align_left",center:"format_align_center",right:"format_align_right",justify:"format_align_justify",print:"print",outdent:"format_indent_decrease",indent:"format_indent_increase",removeFormat:"format_clear",formatting:"text_format",fontSize:"format_size",align:"format_align_left",hr:"remove",undo:"undo",redo:"redo",heading:"format_size",code:"code",size:"format_size",font:"font_download",viewSource:"code"},expansionItem:{icon:"keyboard_arrow_down",denseIcon:"arrow_drop_down"},fab:{icon:"add",activeIcon:"close"},field:{clear:"cancel",error:"error"},pagination:{first:"first_page",prev:"keyboard_arrow_left",next:"keyboard_arrow_right",last:"last_page"},rating:{icon:"grade"},stepper:{done:"check",active:"edit",error:"warning"},tabs:{left:"chevron_left",right:"chevron_right",up:"keyboard_arrow_up",down:"keyboard_arrow_down"},table:{arrowUp:"arrow_upward",warning:"warning",firstPage:"first_page",prevPage:"chevron_left",nextPage:"chevron_right",lastPage:"last_page"},tree:{icon:"play_arrow"},uploader:{done:"done",clear:"clear",add:"add_box",upload:"cloud_upload",removeQueue:"clear_all",removeUploaded:"done_all"}},Mr=rs({iconMapFn:null,__qIconSet:{}},{set(e,t){const n={...e};n.set=Mr.set,Object.assign(Mr.__qIconSet,n)},install({$q:e,iconSet:t,ssrContext:n}){e.config.iconMapFn!==void 0&&(this.iconMapFn=e.config.iconMapFn),e.iconSet=this.__qIconSet,Io(e,"iconMapFn",()=>this.iconMapFn,r=>{this.iconMapFn=r}),this.__installed===!0?t!==void 0&&this.set(t):(this.props=new Proxy(this.__qIconSet,{get(){return Reflect.get(...arguments)},ownKeys(r){return Reflect.ownKeys(r).filter(s=>s!=="set")}}),this.set(t||Xd))}}),Jd="_q_",Vg="_q_l_",Hg="_q_pc_",Wg="_q_fo_";function Bg(){}const ji={};let lc=!1;function Qd(){lc=!0}function Cs(e,t){if(e===t)return!0;if(e!==null&&t!==null&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;let n,r;if(e.constructor===Array){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(Cs(e[r],t[r])!==!0)return!1;return!0}if(e.constructor===Map){if(e.size!==t.size)return!1;let o=e.entries();for(r=o.next();r.done!==!0;){if(t.has(r.value[0])!==!0)return!1;r=o.next()}for(o=e.entries(),r=o.next();r.done!==!0;){if(Cs(r.value[1],t.get(r.value[0]))!==!0)return!1;r=o.next()}return!0}if(e.constructor===Set){if(e.size!==t.size)return!1;const o=e.entries();for(r=o.next();r.done!==!0;){if(t.has(r.value[0])!==!0)return!1;r=o.next()}return!0}if(e.buffer!=null&&e.buffer.constructor===ArrayBuffer){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();const s=Object.keys(e).filter(o=>e[o]!==void 0);if(n=s.length,n!==Object.keys(t).filter(o=>t[o]!==void 0).length)return!1;for(r=n;r--!==0;){const o=s[r];if(Cs(e[o],t[o])!==!0)return!1}return!0}return e!==e&&t!==t}function Vi(e){return e!==null&&typeof e=="object"&&Array.isArray(e)!==!0}const Hi=[Xs,Bd,Re,Fd,Yd,Qt,Mr];function Wi(e,t){t.forEach(n=>{n.install(e),n.__installed=!0})}function zd(e,t,n){e.config.globalProperties.$q=n.$q,e.provide(Jd,n.$q),Wi(n,Hi),t.components!==void 0&&Object.values(t.components).forEach(r=>{Vi(r)===!0&&r.name!==void 0&&e.component(r.name,r)}),t.directives!==void 0&&Object.values(t.directives).forEach(r=>{Vi(r)===!0&&r.name!==void 0&&e.directive(r.name,r)}),t.plugins!==void 0&&Wi(n,Object.values(t.plugins).filter(r=>typeof r.install=="function"&&Hi.includes(r)===!1)),mn.value===!0&&(n.$q.onSSRHydrated=()=>{n.onSSRHydrated.forEach(r=>{r()}),n.$q.onSSRHydrated=()=>{}})}const Zd=function(e,t={}){const n={version:"2.18.6"};lc===!1?(t.config!==void 0&&Object.assign(ji,t.config),n.config={...ji},Qd()):n.config=t.config||{},zd(e,t,{parentApp:e,$q:n,lang:t.lang,iconSet:t.iconSet,onSSRHydrated:[]})},eh={name:"Quasar",version:"2.18.6",install:Zd,lang:Qt,iconSet:Mr};function th(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const nh=(e,t,n)=>rh({l:e,k:t,s:n}),rh=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Ue=e=>typeof e=="number"&&isFinite(e),ac=e=>ko(e)==="[object Date]",Bi=e=>ko(e)==="[object RegExp]",xo=e=>be(e)&&Object.keys(e).length===0,yn=Object.assign,sh=Object.create,Be=(e=null)=>sh(e);function Ki(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function Gi(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function oh(e){return e=e.replace(/(\w+)\s*=\s*"([^"]*)"/g,(r,s,o)=>`${s}="${Gi(o)}"`),e=e.replace(/(\w+)\s*=\s*'([^']*)'/g,(r,s,o)=>`${s}='${Gi(o)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(e)&&(e=e.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(r=>{e=e.replace(r,"$1javascript:")}),e}const ih=Object.prototype.hasOwnProperty;function Zt(e,t){return ih.call(e,t)}const wt=Array.isArray,we=e=>typeof e=="function",z=e=>typeof e=="string",Ve=e=>typeof e=="boolean",xe=e=>e!==null&&typeof e=="object",lh=e=>xe(e)&&we(e.then)&&we(e.catch),cc=Object.prototype.toString,ko=e=>cc.call(e),be=e=>ko(e)==="[object Object]",ah=e=>e==null?"":wt(e)||be(e)&&e.toString===cc?JSON.stringify(e,null,2):String(e);function Do(e,t=""){return e.reduce((n,r,s)=>s===0?n+r:n+t+r,"")}function ch(e,t,n){return{line:e,column:t,offset:n}}function Js(e,t,n){return{start:e,end:t}}const ie={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14},uh=17;function ss(e,t,n={}){const{domain:r,messages:s,args:o}=n,i=e,l=new SyntaxError(String(i));return l.code=e,t&&(l.location=t),l.domain=r,l}function fh(e){throw e}const mt=" ",dh="\r",Pe=` +`,hh="\u2028",ph="\u2029";function mh(e){const t=e;let n=0,r=1,s=1,o=0;const i=L=>t[L]===dh&&t[L+1]===Pe,l=L=>t[L]===Pe,a=L=>t[L]===ph,c=L=>t[L]===hh,u=L=>i(L)||l(L)||a(L)||c(L),f=()=>n,d=()=>r,_=()=>s,A=()=>o,T=L=>i(L)||a(L)||c(L)?Pe:t[L],N=()=>T(n),b=()=>T(n+o);function E(){return o=0,u(n)&&(r++,s=0),i(n)&&n++,n++,s++,t[n]}function R(){return i(n+o)&&o++,o++,t[n+o]}function w(){n=0,r=1,s=1,o=0}function I(L=0){o=L}function $(){const L=n+o;for(;L!==n;)E();o=0}return{index:f,line:d,column:_,peekOffset:A,charAt:T,currentChar:N,currentPeek:b,next:E,peek:R,reset:w,resetPeek:I,skipToPeek:$}}const Ot=void 0,gh=".",qi="'",_h="tokenizer";function bh(e,t={}){const n=t.location!==!1,r=mh(e),s=()=>r.index(),o=()=>ch(r.line(),r.column(),r.index()),i=o(),l=s(),a={currentType:13,offset:l,startLoc:i,endLoc:i,lastType:13,lastOffset:l,lastStartLoc:i,lastEndLoc:i,braceNest:0,inLinked:!1,text:""},c=()=>a,{onError:u}=t;function f(h,p,y,...C){const V=c();if(p.column+=y,p.offset+=y,u){const F=n?Js(V.startLoc,p):null,v=ss(h,F,{domain:_h,args:C});u(v)}}function d(h,p,y){h.endLoc=o(),h.currentType=p;const C={type:p};return n&&(C.loc=Js(h.startLoc,h.endLoc)),y!=null&&(C.value=y),C}const _=h=>d(h,13);function A(h,p){return h.currentChar()===p?(h.next(),p):(f(ie.EXPECTED_TOKEN,o(),0,p),"")}function T(h){let p="";for(;h.currentPeek()===mt||h.currentPeek()===Pe;)p+=h.currentPeek(),h.peek();return p}function N(h){const p=T(h);return h.skipToPeek(),p}function b(h){if(h===Ot)return!1;const p=h.charCodeAt(0);return p>=97&&p<=122||p>=65&&p<=90||p===95}function E(h){if(h===Ot)return!1;const p=h.charCodeAt(0);return p>=48&&p<=57}function R(h,p){const{currentType:y}=p;if(y!==2)return!1;T(h);const C=b(h.currentPeek());return h.resetPeek(),C}function w(h,p){const{currentType:y}=p;if(y!==2)return!1;T(h);const C=h.currentPeek()==="-"?h.peek():h.currentPeek(),V=E(C);return h.resetPeek(),V}function I(h,p){const{currentType:y}=p;if(y!==2)return!1;T(h);const C=h.currentPeek()===qi;return h.resetPeek(),C}function $(h,p){const{currentType:y}=p;if(y!==7)return!1;T(h);const C=h.currentPeek()===".";return h.resetPeek(),C}function L(h,p){const{currentType:y}=p;if(y!==8)return!1;T(h);const C=b(h.currentPeek());return h.resetPeek(),C}function H(h,p){const{currentType:y}=p;if(!(y===7||y===11))return!1;T(h);const C=h.currentPeek()===":";return h.resetPeek(),C}function M(h,p){const{currentType:y}=p;if(y!==9)return!1;const C=()=>{const F=h.currentPeek();return F==="{"?b(h.peek()):F==="@"||F==="|"||F===":"||F==="."||F===mt||!F?!1:F===Pe?(h.peek(),C()):X(h,!1)},V=C();return h.resetPeek(),V}function B(h){T(h);const p=h.currentPeek()==="|";return h.resetPeek(),p}function X(h,p=!0){const y=(V=!1,F="")=>{const v=h.currentPeek();return v==="{"||v==="@"||!v?V:v==="|"?!(F===mt||F===Pe):v===mt?(h.peek(),y(!0,mt)):v===Pe?(h.peek(),y(!0,Pe)):!0},C=y();return p&&h.resetPeek(),C}function U(h,p){const y=h.currentChar();return y===Ot?Ot:p(y)?(h.next(),y):null}function Z(h){const p=h.charCodeAt(0);return p>=97&&p<=122||p>=65&&p<=90||p>=48&&p<=57||p===95||p===36}function de(h){return U(h,Z)}function ye(h){const p=h.charCodeAt(0);return p>=97&&p<=122||p>=65&&p<=90||p>=48&&p<=57||p===95||p===36||p===45}function se(h){return U(h,ye)}function J(h){const p=h.charCodeAt(0);return p>=48&&p<=57}function ne(h){return U(h,J)}function ve(h){const p=h.charCodeAt(0);return p>=48&&p<=57||p>=65&&p<=70||p>=97&&p<=102}function Ke(h){return U(h,ve)}function ke(h){let p="",y="";for(;p=ne(h);)y+=p;return y}function Ce(h){let p="";for(;;){const y=h.currentChar();if(y==="\\"){const C=h.peek();C==="{"||C==="}"||C==="@"||C==="|"||C==="\\"?(p+=y+C,h.next(),h.next()):(h.resetPeek(),p+=y,h.next())}else{if(y==="{"||y==="}"||y==="@"||y==="|"||!y)break;if(y===mt||y===Pe)if(X(h))p+=y,h.next();else{if(B(h))break;p+=y,h.next()}else p+=y,h.next()}}return p}function ut(h){N(h);let p="",y="";for(;p=se(h);)y+=p;const C=h.currentChar();if(C&&C!=="}"&&C!==Ot&&C!==mt&&C!==Pe&&C!==" "){const V=G(h);return f(ie.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,y+V),y+V}return h.currentChar()===Ot&&f(ie.UNTERMINATED_CLOSING_BRACE,o(),0),y}function ft(h){N(h);let p="";return h.currentChar()==="-"?(h.next(),p+=`-${ke(h)}`):p+=ke(h),h.currentChar()===Ot&&f(ie.UNTERMINATED_CLOSING_BRACE,o(),0),p}function dt(h){return h!==qi&&h!==Pe}function Te(h){N(h),A(h,"'");let p="",y="";for(;p=U(h,dt);)p==="\\"?y+=k(h):y+=p;const C=h.currentChar();return C===Pe||C===Ot?(f(ie.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,o(),0),C===Pe&&(h.next(),A(h,"'")),y):(A(h,"'"),y)}function k(h){const p=h.currentChar();switch(p){case"\\":case"'":return h.next(),`\\${p}`;case"u":return W(h,p,4);case"U":return W(h,p,6);default:return f(ie.UNKNOWN_ESCAPE_SEQUENCE,o(),0,p),""}}function W(h,p,y){A(h,p);let C="";for(let V=0;V{const C=h.currentChar();return C==="{"||C==="@"||C==="|"||C==="("||C===")"||!C||C===mt?y:(y+=C,h.next(),p(y))};return p("")}function g(h){N(h);const p=A(h,"|");return N(h),p}function S(h,p){let y=null;switch(h.currentChar()){case"{":return p.braceNest>=1&&f(ie.NOT_ALLOW_NEST_PLACEHOLDER,o(),0),h.next(),y=d(p,2,"{"),N(h),p.braceNest++,y;case"}":return p.braceNest>0&&p.currentType===2&&f(ie.EMPTY_PLACEHOLDER,o(),0),h.next(),y=d(p,3,"}"),p.braceNest--,p.braceNest>0&&N(h),p.inLinked&&p.braceNest===0&&(p.inLinked=!1),y;case"@":return p.braceNest>0&&f(ie.UNTERMINATED_CLOSING_BRACE,o(),0),y=O(h,p)||_(p),p.braceNest=0,y;default:{let V=!0,F=!0,v=!0;if(B(h))return p.braceNest>0&&f(ie.UNTERMINATED_CLOSING_BRACE,o(),0),y=d(p,1,g(h)),p.braceNest=0,p.inLinked=!1,y;if(p.braceNest>0&&(p.currentType===4||p.currentType===5||p.currentType===6))return f(ie.UNTERMINATED_CLOSING_BRACE,o(),0),p.braceNest=0,D(h,p);if(V=R(h,p))return y=d(p,4,ut(h)),N(h),y;if(F=w(h,p))return y=d(p,5,ft(h)),N(h),y;if(v=I(h,p))return y=d(p,6,Te(h)),N(h),y;if(!V&&!F&&!v)return y=d(p,12,G(h)),f(ie.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,y.value),N(h),y;break}}return y}function O(h,p){const{currentType:y}=p;let C=null;const V=h.currentChar();switch((y===7||y===8||y===11||y===9)&&(V===Pe||V===mt)&&f(ie.INVALID_LINKED_FORMAT,o(),0),V){case"@":return h.next(),C=d(p,7,"@"),p.inLinked=!0,C;case".":return N(h),h.next(),d(p,8,".");case":":return N(h),h.next(),d(p,9,":");default:return B(h)?(C=d(p,1,g(h)),p.braceNest=0,p.inLinked=!1,C):$(h,p)||H(h,p)?(N(h),O(h,p)):L(h,p)?(N(h),d(p,11,ee(h))):M(h,p)?(N(h),V==="{"?S(h,p)||C:d(p,10,m(h))):(y===7&&f(ie.INVALID_LINKED_FORMAT,o(),0),p.braceNest=0,p.inLinked=!1,D(h,p))}}function D(h,p){let y={type:13};if(p.braceNest>0)return S(h,p)||_(p);if(p.inLinked)return O(h,p)||_(p);switch(h.currentChar()){case"{":return S(h,p)||_(p);case"}":return f(ie.UNBALANCED_CLOSING_BRACE,o(),0),h.next(),d(p,3,"}");case"@":return O(h,p)||_(p);default:{if(B(h))return y=d(p,1,g(h)),p.braceNest=0,p.inLinked=!1,y;if(X(h))return d(p,0,Ce(h));break}}return y}function x(){const{currentType:h,offset:p,startLoc:y,endLoc:C}=a;return a.lastType=h,a.lastOffset=p,a.lastStartLoc=y,a.lastEndLoc=C,a.offset=s(),a.startLoc=o(),r.currentChar()===Ot?d(a,13):D(r,a)}return{nextToken:x,currentOffset:s,currentPosition:o,context:c}}const yh="parser",vh=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g,Eh=/\\([\\@{}|])/g;function Sh(e,t){return t}function Ch(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const r=parseInt(t||n,16);return r<=55295||r>=57344?String.fromCodePoint(r):"�"}}}function wh(e={}){const t=e.location!==!1,{onError:n}=e;function r(b,E,R,w,...I){const $=b.currentPosition();if($.offset+=w,$.column+=w,n){const L=t?Js(R,$):null,H=ss(E,L,{domain:yh,args:I});n(H)}}function s(b,E,R){const w={type:b};return t&&(w.start=E,w.end=E,w.loc={start:R,end:R}),w}function o(b,E,R,w){t&&(b.end=E,b.loc&&(b.loc.end=R))}function i(b,E){const R=b.context(),w=s(3,R.offset,R.startLoc);return w.value=E.replace(Eh,Sh),o(w,b.currentOffset(),b.currentPosition()),w}function l(b,E){const R=b.context(),{lastOffset:w,lastStartLoc:I}=R,$=s(5,w,I);return $.index=parseInt(E,10),b.nextToken(),o($,b.currentOffset(),b.currentPosition()),$}function a(b,E){const R=b.context(),{lastOffset:w,lastStartLoc:I}=R,$=s(4,w,I);return $.key=E,b.nextToken(),o($,b.currentOffset(),b.currentPosition()),$}function c(b,E){const R=b.context(),{lastOffset:w,lastStartLoc:I}=R,$=s(9,w,I);return $.value=E.replace(vh,Ch),b.nextToken(),o($,b.currentOffset(),b.currentPosition()),$}function u(b){const E=b.nextToken(),R=b.context(),{lastOffset:w,lastStartLoc:I}=R,$=s(8,w,I);return E.type!==11?(r(b,ie.UNEXPECTED_EMPTY_LINKED_MODIFIER,R.lastStartLoc,0),$.value="",o($,w,I),{nextConsumeToken:E,node:$}):(E.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,gt(E)),$.value=E.value||"",o($,b.currentOffset(),b.currentPosition()),{node:$})}function f(b,E){const R=b.context(),w=s(7,R.offset,R.startLoc);return w.value=E,o(w,b.currentOffset(),b.currentPosition()),w}function d(b){const E=b.context(),R=s(6,E.offset,E.startLoc);let w=b.nextToken();if(w.type===8){const I=u(b);R.modifier=I.node,w=I.nextConsumeToken||b.nextToken()}switch(w.type!==9&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(w)),w=b.nextToken(),w.type===2&&(w=b.nextToken()),w.type){case 10:w.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(w)),R.key=f(b,w.value||"");break;case 4:w.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(w)),R.key=a(b,w.value||"");break;case 5:w.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(w)),R.key=l(b,w.value||"");break;case 6:w.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(w)),R.key=c(b,w.value||"");break;default:{r(b,ie.UNEXPECTED_EMPTY_LINKED_KEY,E.lastStartLoc,0);const I=b.context(),$=s(7,I.offset,I.startLoc);return $.value="",o($,I.offset,I.startLoc),R.key=$,o(R,I.offset,I.startLoc),{nextConsumeToken:w,node:R}}}return o(R,b.currentOffset(),b.currentPosition()),{node:R}}function _(b){const E=b.context(),R=E.currentType===1?b.currentOffset():E.offset,w=E.currentType===1?E.endLoc:E.startLoc,I=s(2,R,w);I.items=[];let $=null;do{const M=$||b.nextToken();switch($=null,M.type){case 0:M.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(M)),I.items.push(i(b,M.value||""));break;case 5:M.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(M)),I.items.push(l(b,M.value||""));break;case 4:M.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(M)),I.items.push(a(b,M.value||""));break;case 6:M.value==null&&r(b,ie.UNEXPECTED_LEXICAL_ANALYSIS,E.lastStartLoc,0,gt(M)),I.items.push(c(b,M.value||""));break;case 7:{const B=d(b);I.items.push(B.node),$=B.nextConsumeToken||null;break}}}while(E.currentType!==13&&E.currentType!==1);const L=E.currentType===1?E.lastOffset:b.currentOffset(),H=E.currentType===1?E.lastEndLoc:b.currentPosition();return o(I,L,H),I}function A(b,E,R,w){const I=b.context();let $=w.items.length===0;const L=s(1,E,R);L.cases=[],L.cases.push(w);do{const H=_(b);$||($=H.items.length===0),L.cases.push(H)}while(I.currentType!==13);return $&&r(b,ie.MUST_HAVE_MESSAGES_IN_PLURAL,R,0),o(L,b.currentOffset(),b.currentPosition()),L}function T(b){const E=b.context(),{offset:R,startLoc:w}=E,I=_(b);return E.currentType===13?I:A(b,R,w,I)}function N(b){const E=bh(b,yn({},e)),R=E.context(),w=s(0,R.offset,R.startLoc);return t&&w.loc&&(w.loc.source=b),w.body=T(E),e.onCacheKey&&(w.cacheKey=e.onCacheKey(b)),R.currentType!==13&&r(E,ie.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,b[R.offset]||""),o(w,E.currentOffset(),E.currentPosition()),w}return{parse:N}}function gt(e){if(e.type===13)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function Ah(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:o=>(n.helpers.add(o),o)}}function Yi(e,t){for(let n=0;nXi(n)),e}function Xi(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;ni;function a(T,N){i.code+=T}function c(T,N=!0){const b=N?r:"";a(s?b+" ".repeat(T):b)}function u(T=!0){const N=++i.indentLevel;T&&c(N)}function f(T=!0){const N=--i.indentLevel;T&&c(N)}function d(){c(i.indentLevel)}return{context:l,push:a,indent:u,deindent:f,newline:d,helper:T=>`_${T}`,needIndent:()=>i.needIndent}}function Lh(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),On(e,t.key),t.modifier?(e.push(", "),On(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function Oh(e,t){const{helper:n,needIndent:r}=e;e.push(`${n("normalize")}([`),e.indent(r());const s=t.items.length;for(let o=0;o1){e.push(`${n("plural")}([`),e.indent(r());const s=t.cases.length;for(let o=0;o{const n=z(t.mode)?t.mode:"normal",r=z(t.filename)?t.filename:"message.intl";t.sourceMap;const s=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":` +`,o=t.needIndent?t.needIndent:n!=="arrow",i=e.helpers||[],l=Ph(e,{filename:r,breakLineCode:s,needIndent:o});l.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),i.length>0&&(l.push(`const { ${Do(i.map(u=>`${u}: _${u}`),", ")} } = ctx`),l.newline()),l.push("return "),On(l,e),l.deindent(o),l.push("}"),delete e.helpers;const{code:a,map:c}=l.context();return{ast:e,code:a,map:c?c.toJSON():void 0}};function kh(e,t={}){const n=yn({},t),r=!!n.jit,s=!!n.minify,o=n.optimize==null?!0:n.optimize,l=wh(n).parse(e);return r?(o&&Rh(l),s&&Cn(l),{ast:l,code:""}):(Th(l,n),xh(l,n))}function At(e){return xe(e)&&Fo(e)===0&&(Zt(e,"b")||Zt(e,"body"))}const uc=["b","body"];function Dh(e){return tn(e,uc)}const fc=["c","cases"];function Mh(e){return tn(e,fc,[])}const dc=["s","static"];function Fh(e){return tn(e,dc)}const hc=["i","items"];function $h(e){return tn(e,hc,[])}const pc=["t","type"];function Fo(e){return tn(e,pc)}const mc=["v","value"];function br(e,t){const n=tn(e,mc);if(n!=null)return n;throw or(t)}const gc=["m","modifier"];function Uh(e){return tn(e,gc)}const _c=["k","key"];function jh(e){const t=tn(e,_c);if(t)return t;throw or(6)}function tn(e,t,n){for(let r=0;rVh(n,e)}function Vh(e,t){const n=Dh(t);if(n==null)throw or(0);if(Fo(n)===1){const o=Mh(n);return e.plural(o.reduce((i,l)=>[...i,Ji(e,l)],[]))}else return Ji(e,n)}function Ji(e,t){const n=Fh(t);if(n!=null)return e.type==="text"?n:e.normalize([n]);{const r=$h(t).reduce((s,o)=>[...s,Qs(e,o)],[]);return e.normalize(r)}}function Qs(e,t){const n=Fo(t);switch(n){case 3:return br(t,n);case 9:return br(t,n);case 4:{const r=t;if(Zt(r,"k")&&r.k)return e.interpolate(e.named(r.k));if(Zt(r,"key")&&r.key)return e.interpolate(e.named(r.key));throw or(n)}case 5:{const r=t;if(Zt(r,"i")&&Ue(r.i))return e.interpolate(e.list(r.i));if(Zt(r,"index")&&Ue(r.index))return e.interpolate(e.list(r.index));throw or(n)}case 6:{const r=t,s=Uh(r),o=jh(r);return e.linked(Qs(e,o),s?Qs(e,s):void 0,e.type)}case 7:return br(t,n);case 8:return br(t,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}const Hh=e=>e;let yr=Be();function Wh(e,t={}){let n=!1;const r=t.onError||fh;return t.onError=s=>{n=!0,r(s)},{...kh(e,t),detectError:n}}function Bh(e,t){if(z(e)){Ve(t.warnHtmlMessage)&&t.warnHtmlMessage;const r=(t.onCacheKey||Hh)(e),s=yr[r];if(s)return s;const{ast:o,detectError:i}=Wh(e,{...t,location:!1,jit:!0}),l=ws(o);return i?l:yr[r]=l}else{const n=e.cacheKey;if(n){const r=yr[n];return r||(yr[n]=ws(e))}else return ws(e)}}const $t={INVALID_ARGUMENT:uh,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23},Kh=24;function Ut(e){return ss(e,null,void 0)}function $o(e,t){return t.locale!=null?Qi(t.locale):Qi(e.locale)}let As;function Qi(e){if(z(e))return e;if(we(e)){if(e.resolvedOnce&&As!=null)return As;if(e.constructor.name==="Function"){const t=e();if(lh(t))throw Ut($t.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return As=t}else throw Ut($t.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Ut($t.NOT_SUPPORT_LOCALE_TYPE)}function Gh(e,t,n){return[...new Set([n,...wt(t)?t:xe(t)?Object.keys(t):z(t)?[t]:[n]])]}function zs(e,t,n){const r=z(n)?n:Fr,s=e;s.__localeChainCache||(s.__localeChainCache=new Map);let o=s.__localeChainCache.get(r);if(!o){o=[];let i=[n];for(;wt(i);)i=zi(o,i,t);const l=wt(t)||!be(t)?t:t.default?t.default:null;i=z(l)?[l]:l,wt(i)&&zi(o,i,!1),s.__localeChainCache.set(r,o)}return o}function zi(e,t,n){let r=!0;for(let s=0;s{i===void 0?i=l:i+=l},d[1]=()=>{i!==void 0&&(t.push(i),i=void 0)},d[2]=()=>{d[0](),s++},d[3]=()=>{if(s>0)s--,r=4,d[0]();else{if(s=0,i===void 0||(i=Zh(i),i===!1))return!1;d[1]()}};function _(){const A=e[n+1];if(r===5&&A==="'"||r===6&&A==='"')return n++,l="\\"+A,d[0](),!0}for(;r!==null;)if(n++,o=e[n],!(o==="\\"&&_())){if(a=zh(o),f=nn[r],c=f[a]||f.l||8,c===8||(r=c[0],c[1]!==void 0&&(u=d[c[1]],u&&(l=o,u()===!1))))return;if(r===7)return t}}const Zi=new Map;function tp(e,t){return xe(e)?e[t]:null}function np(e,t){if(!xe(e))return null;let n=Zi.get(t);if(n||(n=ep(t),n&&Zi.set(t,n)),!n)return null;const r=n.length;let s=e,o=0;for(;o`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function sp(){return{upper:(e,t)=>t==="text"&&z(e)?e.toUpperCase():t==="vnode"&&xe(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&z(e)?e.toLowerCase():t==="vnode"&&xe(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&z(e)?el(e):t==="vnode"&&xe(e)&&"__v_isVNode"in e?el(e.children):e}}let yc;function op(e){yc=e}let vc;function ip(e){vc=e}let Ec;function lp(e){Ec=e}let Sc=null;const tl=e=>{Sc=e},ap=()=>Sc;let nl=0;function cp(e={}){const t=we(e.onWarn)?e.onWarn:th,n=z(e.version)?e.version:rp,r=z(e.locale)||we(e.locale)?e.locale:Fr,s=we(r)?Fr:r,o=wt(e.fallbackLocale)||be(e.fallbackLocale)||z(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:s,i=be(e.messages)?e.messages:Ts(s),l=be(e.datetimeFormats)?e.datetimeFormats:Ts(s),a=be(e.numberFormats)?e.numberFormats:Ts(s),c=yn(Be(),e.modifiers,sp()),u=e.pluralRules||Be(),f=we(e.missing)?e.missing:null,d=Ve(e.missingWarn)||Bi(e.missingWarn)?e.missingWarn:!0,_=Ve(e.fallbackWarn)||Bi(e.fallbackWarn)?e.fallbackWarn:!0,A=!!e.fallbackFormat,T=!!e.unresolving,N=we(e.postTranslation)?e.postTranslation:null,b=be(e.processor)?e.processor:null,E=Ve(e.warnHtmlMessage)?e.warnHtmlMessage:!0,R=!!e.escapeParameter,w=we(e.messageCompiler)?e.messageCompiler:yc,I=we(e.messageResolver)?e.messageResolver:vc||tp,$=we(e.localeFallbacker)?e.localeFallbacker:Ec||Gh,L=xe(e.fallbackContext)?e.fallbackContext:void 0,H=e,M=xe(H.__datetimeFormatters)?H.__datetimeFormatters:new Map,B=xe(H.__numberFormatters)?H.__numberFormatters:new Map,X=xe(H.__meta)?H.__meta:{};nl++;const U={version:n,cid:nl,locale:r,fallbackLocale:o,messages:i,modifiers:c,pluralRules:u,missing:f,missingWarn:d,fallbackWarn:_,fallbackFormat:A,unresolving:T,postTranslation:N,processor:b,warnHtmlMessage:E,escapeParameter:R,messageCompiler:w,messageResolver:I,localeFallbacker:$,fallbackContext:L,onWarn:t,__meta:X};return U.datetimeFormats=l,U.numberFormats=a,U.__datetimeFormatters=M,U.__numberFormatters=B,U}const Ts=e=>({[e]:Be()});function Uo(e,t,n,r,s){const{missing:o,onWarn:i}=e;if(o!==null){const l=o(e,n,t,s);return z(l)?l:t}else return t}function $n(e,t,n){const r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function up(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function fp(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let r=n+1;r{Cc.includes(a)?i[a]=n[a]:o[a]=n[a]}),z(r)?o.locale=r:be(r)&&(i=r),be(s)&&(i=s),[o.key||"",l,o,i]}function sl(e,t,n){const r=e;for(const s in n){const o=`${t}__${s}`;r.__datetimeFormatters.has(o)&&r.__datetimeFormatters.delete(o)}}function ol(e,...t){const{numberFormats:n,unresolving:r,fallbackLocale:s,onWarn:o,localeFallbacker:i}=e,{__numberFormatters:l}=e;if(!Ue(t[0]))return $r;const[a,c,u,f]=eo(...t),d=Ve(u.missingWarn)?u.missingWarn:e.missingWarn;Ve(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const _=!!u.part,A=$o(e,u),T=i(e,s,A);if(!z(a)||a==="")return new Intl.NumberFormat(A.replace(/!/g,""),f).format(c);let N={},b,E=null;const R="number format";for(let $=0;${wc.includes(a)?i[a]=n[a]:o[a]=n[a]}),z(r)?o.locale=r:be(r)&&(i=r),be(s)&&(i=s),[o.key||"",l,o,i]}function il(e,t,n){const r=e;for(const s in n){const o=`${t}__${s}`;r.__numberFormatters.has(o)&&r.__numberFormatters.delete(o)}}const dp=e=>e,hp=e=>"",pp="text",mp=e=>e.length===0?"":Do(e),gp=ah;function Rs(e,t){return e=Math.abs(e),t===2?e===1?0:1:Math.min(e,2)}function _p(e){const t=Ue(e.pluralIndex)?e.pluralIndex:-1;return Ue(e.named?.count)?e.named.count:Ue(e.named?.n)?e.named.n:t}function bp(e={}){const t=e.locale,n=_p(e),r=z(t)&&we(e.pluralRules?.[t])?e.pluralRules[t]:Rs,s=r===Rs?void 0:Rs,o=b=>b[r(n,b.length,s)],i=e.list||[],l=b=>i[b],a=e.named||Be();Ue(e.pluralIndex)&&(a.count||=e.pluralIndex,a.n||=e.pluralIndex);const c=b=>a[b];function u(b,E){const R=we(e.messages)?e.messages(b,!!E):xe(e.messages)?e.messages[b]:!1;return R||(e.parent?e.parent.message(b):hp)}const f=b=>e.modifiers?e.modifiers[b]:dp,d=we(e.processor?.normalize)?e.processor.normalize:mp,_=we(e.processor?.interpolate)?e.processor.interpolate:gp,A=z(e.processor?.type)?e.processor.type:pp,N={list:l,named:c,plural:o,linked:(b,...E)=>{const[R,w]=E;let I="text",$="";E.length===1?xe(R)?($=R.modifier||$,I=R.type||I):z(R)&&($=R||$):E.length===2&&(z(R)&&($=R||$),z(w)&&(I=w||I));const L=u(b,!0)(N),H=L===""||L===void 0?b:L,M=I==="vnode"&&wt(H)&&$?H[0]:H;return $?f($)(M,I):M},message:u,type:A,interpolate:_,normalize:d,values:yn(Be(),i,a)};return N}const ll=()=>"",Ht=e=>we(e);function al(e,...t){const{fallbackFormat:n,postTranslation:r,unresolving:s,messageCompiler:o,fallbackLocale:i,messages:l}=e,[a,c]=to(...t),u=Ve(c.missingWarn)?c.missingWarn:e.missingWarn,f=Ve(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,d=Ve(c.escapeParameter)?c.escapeParameter:e.escapeParameter,_=!!c.resolvedMessage,A=z(c.default)||Ve(c.default)?Ve(c.default)?o?a:()=>a:c.default:n?o?a:()=>a:null,T=n||A!=null&&(z(A)||we(A)),N=$o(e,c);d&&yp(c);let[b,E,R]=_?[a,N,l[N]||Be()]:Ac(e,a,N,i,f,u),w=b,I=a;if(!_&&!(z(w)||At(w)||Ht(w))&&T&&(w=A,I=w),!_&&(!(z(w)||At(w)||Ht(w))||!z(E)))return s?os:a;let $=!1;const L=()=>{$=!0},H=Ht(w)?w:Tc(e,a,E,w,I,L);if($)return w;const M=Sp(e,E,R,c),B=bp(M),X=vp(e,H,B);let U=r?r(X,a):X;return d&&z(U)&&(U=oh(U)),U}function yp(e){wt(e.list)?e.list=e.list.map(t=>z(t)?Ki(t):t):xe(e.named)&&Object.keys(e.named).forEach(t=>{z(e.named[t])&&(e.named[t]=Ki(e.named[t]))})}function Ac(e,t,n,r,s,o){const{messages:i,onWarn:l,messageResolver:a,localeFallbacker:c}=e,u=c(e,r,n);let f=Be(),d,_=null;const A="translate";for(let T=0;Tr);return c.locale=n,c.key=t,c}const a=i(r,Ep(e,n,s,r,l,o));return a.locale=n,a.key=t,a.source=r,a}function vp(e,t,n){return t(n)}function to(...e){const[t,n,r]=e,s=Be();if(!z(t)&&!Ue(t)&&!Ht(t)&&!At(t))throw Ut($t.INVALID_ARGUMENT);const o=Ue(t)?String(t):(Ht(t),t);return Ue(n)?s.plural=n:z(n)?s.default=n:be(n)&&!xo(n)?s.named=n:wt(n)&&(s.list=n),Ue(r)?s.plural=r:z(r)?s.default=r:be(r)&&yn(s,r),[o,s]}function Ep(e,t,n,r,s,o){return{locale:t,key:n,warnHtmlMessage:s,onError:i=>{throw o&&o(i),i},onCacheKey:i=>nh(t,n,i)}}function Sp(e,t,n,r){const{modifiers:s,pluralRules:o,messageResolver:i,fallbackLocale:l,fallbackWarn:a,missingWarn:c,fallbackContext:u}=e,d={locale:t,modifiers:s,pluralRules:o,messages:(_,A)=>{let T=i(n,_);if(T==null&&(u||A)){const[,,N]=Ac(u||e,_,t,l,a,c);T=i(N,_)}if(z(T)||At(T)){let N=!1;const E=Tc(e,_,t,T,_,()=>{N=!0});return N?ll:E}else return Ht(T)?T:ll}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),Ue(r.plural)&&(d.pluralIndex=r.plural),d}const Ur=typeof window<"u",rn=(e,t=!1)=>t?Symbol.for(e):Symbol(e),ir=e=>typeof e=="number"&&isFinite(e),cl=e=>Rc(e)==="[object RegExp]",Cp=e=>st(e)&&Object.keys(e).length===0,Tt=Object.assign,wp=Object.create,Xe=(e=null)=>wp(e),Ap=Object.prototype.hasOwnProperty;function jr(e,t){return Ap.call(e,t)}const rt=Array.isArray,vr=e=>typeof e=="function",_e=e=>typeof e=="string",kt=e=>typeof e=="boolean",We=e=>e!==null&&typeof e=="object",Tp=Object.prototype.toString,Rc=e=>Tp.call(e),st=e=>Rc(e)==="[object Object]",Er=e=>!We(e)||rt(e);function Tr(e,t){if(Er(e)||Er(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:r,des:s}=n.pop();Object.keys(r).forEach(o=>{o!=="__proto__"&&(We(r[o])&&!We(s[o])&&(s[o]=Array.isArray(r[o])?[]:Xe()),Er(s[o])||Er(r[o])?s[o]=r[o]:n.push({src:r[o],des:s[o]}))})}}const Rp="11.3.0",tt={UNEXPECTED_RETURN_TYPE:Kh,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32};function at(e,...t){return ss(e,null,void 0)}const no=rn("__translateVNode"),ro=rn("__datetimeParts"),so=rn("__numberParts"),Pp=rn("__setPluralRules"),Lp=rn("__injectWithOption"),oo=rn("__dispose");function lr(e){if(!We(e)||At(e))return e;for(const t in e)if(jr(e,t))if(!t.includes("."))We(e[t])&&lr(e[t]);else{const n=t.split("."),r=n.length-1;let s=e,o=!1;for(let i=0;i{if("locale"in l&&"resource"in l){const{locale:a,resource:c}=l;a?(i[a]=i[a]||Xe(),Tr(c,i[a])):Tr(c,i)}else _e(l)&&Tr(JSON.parse(l),i)}),s==null&&o)for(const l in i)jr(i,l)&&lr(i[l]);return i}function Op(e){return e.type}function Np(e,t,n){let r=We(t.messages)?t.messages:Xe();"__i18nGlobal"in n&&(r=Pc(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const s=Object.keys(r);s.length&&s.forEach(o=>{e.mergeLocaleMessage(o,r[o])});{if(We(t.datetimeFormats)){const o=Object.keys(t.datetimeFormats);o.length&&o.forEach(i=>{e.mergeDateTimeFormat(i,t.datetimeFormats[i])})}if(We(t.numberFormats)){const o=Object.keys(t.numberFormats);o.length&&o.forEach(i=>{e.mergeNumberFormat(i,t.numberFormats[i])})}}}function ul(e){return He(fr,null,e,0)}function Lc(){return ts()}const fl=()=>[],Ip=()=>!1;let dl=0;function hl(e){return((t,n,r,s)=>e(n,r,Lc()||void 0,s))}function Oc(e={}){const{__root:t,__injectWithOption:n}=e,r=t===void 0,s=e.flatJson,o=Ur?Jr:fa;let i=kt(e.inheritLocale)?e.inheritLocale:!0;const l=o(t&&i?t.locale.value:_e(e.locale)?e.locale:Fr),a=o(t&&i?t.fallbackLocale.value:_e(e.fallbackLocale)||rt(e.fallbackLocale)||st(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:l.value),c=o(Pc(l.value,e)),u=o(st(e.datetimeFormats)?e.datetimeFormats:{[l.value]:{}}),f=o(st(e.numberFormats)?e.numberFormats:{[l.value]:{}});let d=t?t.missingWarn:kt(e.missingWarn)||cl(e.missingWarn)?e.missingWarn:!0,_=t?t.fallbackWarn:kt(e.fallbackWarn)||cl(e.fallbackWarn)?e.fallbackWarn:!0,A=t?t.fallbackRoot:kt(e.fallbackRoot)?e.fallbackRoot:!0,T=!!e.fallbackFormat,N=vr(e.missing)?e.missing:null,b=vr(e.missing)?hl(e.missing):null,E=vr(e.postTranslation)?e.postTranslation:null,R=t?t.warnHtmlMessage:kt(e.warnHtmlMessage)?e.warnHtmlMessage:!0,w=!!e.escapeParameter;const I=t?t.modifiers:st(e.modifiers)?e.modifiers:{};let $=e.pluralRules||t&&t.pluralRules,L;L=(()=>{r&&tl(null);const v={version:Rp,locale:l.value,fallbackLocale:a.value,messages:c.value,modifiers:I,pluralRules:$,missing:b===null?void 0:b,missingWarn:d,fallbackWarn:_,fallbackFormat:T,unresolving:!0,postTranslation:E===null?void 0:E,warnHtmlMessage:R,escapeParameter:w,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};v.datetimeFormats=u.value,v.numberFormats=f.value,v.__datetimeFormatters=st(L)?L.__datetimeFormatters:void 0,v.__numberFormatters=st(L)?L.__numberFormatters:void 0;const P=cp(v);return r&&tl(P),P})(),$n(L,l.value,a.value);function M(){return[l.value,a.value,c.value,u.value,f.value]}const B=Ae({get:()=>l.value,set:v=>{L.locale=v,l.value=v}}),X=Ae({get:()=>a.value,set:v=>{L.fallbackLocale=v,a.value=v,$n(L,l.value,v)}}),U=Ae(()=>c.value),Z=Ae(()=>u.value),de=Ae(()=>f.value);function ye(){return vr(E)?E:null}function se(v){E=v,L.postTranslation=v}function J(){return N}function ne(v){v!==null&&(b=hl(v)),N=v,L.missing=b}const ve=(v,P,K,Y,te,me)=>{M();let ce;try{r||(L.fallbackContext=t?ap():void 0),ce=v(L)}finally{r||(L.fallbackContext=void 0)}if(K!=="translate exists"&&ir(ce)&&ce===os||K==="translate exists"&&!ce){const[Qe,nt]=P();return t&&A?Y(t):te(Qe)}else{if(me(ce))return ce;throw at(tt.UNEXPECTED_RETURN_TYPE)}};function Ke(...v){return ve(P=>Reflect.apply(al,null,[P,...v]),()=>to(...v),"translate",P=>Reflect.apply(P.t,P,[...v]),P=>P,P=>_e(P))}function ke(...v){const[P,K,Y]=v;if(Y&&!We(Y))throw at(tt.INVALID_ARGUMENT);return Ke(P,K,Tt({resolvedMessage:!0},Y||{}))}function Ce(...v){return ve(P=>Reflect.apply(rl,null,[P,...v]),()=>Zs(...v),"datetime format",P=>Reflect.apply(P.d,P,[...v]),()=>$r,P=>_e(P)||rt(P))}function ut(...v){return ve(P=>Reflect.apply(ol,null,[P,...v]),()=>eo(...v),"number format",P=>Reflect.apply(P.n,P,[...v]),()=>$r,P=>_e(P)||rt(P))}function ft(v){return v.map(P=>_e(P)||ir(P)||kt(P)?ul(String(P)):P)}const Te={normalize:ft,interpolate:v=>v,type:"vnode"};function k(...v){return ve(P=>{let K;const Y=P;try{Y.processor=Te,K=Reflect.apply(al,null,[Y,...v])}finally{Y.processor=null}return K},()=>to(...v),"translate",P=>P[no](...v),P=>[ul(P)],P=>rt(P))}function W(...v){return ve(P=>Reflect.apply(ol,null,[P,...v]),()=>eo(...v),"number format",P=>P[so](...v),fl,P=>_e(P)||rt(P))}function j(...v){return ve(P=>Reflect.apply(rl,null,[P,...v]),()=>Zs(...v),"datetime format",P=>P[ro](...v),fl,P=>_e(P)||rt(P))}function G(v){$=v,L.pluralRules=$}function ee(v,P){return ve(()=>{if(!v)return!1;const K=_e(P)?P:l.value,Y=_e(P)?[K]:zs(L,a.value,K);for(let te=0;te[v],"translate exists",K=>Reflect.apply(K.te,K,[v,P]),Ip,K=>kt(K))}function m(v){let P=null;const K=zs(L,a.value,l.value);for(let Y=0;Y{i&&(l.value=v,L.locale=v,$n(L,l.value,a.value))}),Vt(t.fallbackLocale,v=>{i&&(a.value=v,L.fallbackLocale=v,$n(L,l.value,a.value))}));const F={id:dl,locale:B,fallbackLocale:X,get inheritLocale(){return i},set inheritLocale(v){i=v,v&&t&&(l.value=t.locale.value,a.value=t.fallbackLocale.value,$n(L,l.value,a.value))},get availableLocales(){return Object.keys(c.value).sort()},messages:U,get modifiers(){return I},get pluralRules(){return $||{}},get isGlobal(){return r},get missingWarn(){return d},set missingWarn(v){d=v,L.missingWarn=d},get fallbackWarn(){return _},set fallbackWarn(v){_=v,L.fallbackWarn=_},get fallbackRoot(){return A},set fallbackRoot(v){A=v},get fallbackFormat(){return T},set fallbackFormat(v){T=v,L.fallbackFormat=T},get warnHtmlMessage(){return R},set warnHtmlMessage(v){R=v,L.warnHtmlMessage=v},get escapeParameter(){return w},set escapeParameter(v){w=v,L.escapeParameter=v},t:Ke,getLocaleMessage:S,setLocaleMessage:O,mergeLocaleMessage:D,getPostTranslationHandler:ye,setPostTranslationHandler:se,getMissingHandler:J,setMissingHandler:ne,[Pp]:G};return F.datetimeFormats=Z,F.numberFormats=de,F.rt=ke,F.te=ee,F.tm=g,F.d=Ce,F.n=ut,F.getDateTimeFormat=x,F.setDateTimeFormat=h,F.mergeDateTimeFormat=p,F.getNumberFormat=y,F.setNumberFormat=C,F.mergeNumberFormat=V,F[Lp]=n,F[no]=k,F[ro]=j,F[so]=W,F}const jo={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function xp({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((r,s)=>[...r,...s.type===Ze?s.children:[s]],[]):t.reduce((n,r)=>{const s=e[r];return s&&(n[r]=s()),n},Xe())}function Nc(){return Ze}const kp=bn({name:"i18n-t",props:Tt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>ir(e)||!isNaN(e)}},jo),setup(e,t){const{slots:n,attrs:r}=t,s=e.i18n||is({useScope:e.scope,__useComponent:!0});return()=>{const o=Object.keys(n).filter(f=>f[0]!=="_"),i=Xe();e.locale&&(i.locale=e.locale),e.plural!==void 0&&(i.plural=_e(e.plural)?+e.plural:e.plural);const l=xp(t,o),a=s[no](e.keypath,l,i),c=Tt(Xe(),r),u=_e(e.tag)||We(e.tag)?e.tag:Nc();return hr(u,c,a)}}}),pl=kp;function Dp(e){return rt(e)&&!_e(e[0])}function Ic(e,t,n,r){const{slots:s,attrs:o}=t;return()=>{const i={part:!0};let l=Xe();e.locale&&(i.locale=e.locale),_e(e.format)?i.key=e.format:We(e.format)&&(_e(e.format.key)&&(i.key=e.format.key),l=Object.keys(e.format).reduce((d,_)=>n.includes(_)?Tt(Xe(),d,{[_]:e.format[_]}):d,Xe()));const a=r(e.value,i,l);let c=[i.key];rt(a)?c=a.map((d,_)=>{const A=s[d.type],T=A?A({[d.type]:d.value,index:_,parts:a}):[d.value];return Dp(T)&&(T[0].key=`${d.type}-${_}`),T}):_e(a)&&(c=[a]);const u=Tt(Xe(),o),f=_e(e.tag)||We(e.tag)?e.tag:Nc();return hr(f,u,c)}}const Mp=bn({name:"i18n-n",props:Tt({value:{type:Number,required:!0},format:{type:[String,Object]}},jo),setup(e,t){const n=e.i18n||is({useScope:e.scope,__useComponent:!0});return Ic(e,t,wc,(...r)=>n[so](...r))}}),ml=Mp;function Fp(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function $p(e){const t=i=>{const{instance:l,value:a}=i;if(!l||!l.$)throw at(tt.UNEXPECTED_ERROR);const c=Fp(e,l.$),u=gl(a);return[Reflect.apply(c.t,c,[..._l(u)]),c]};return{created:(i,l)=>{const[a,c]=t(l);Ur&&(i.__i18nWatcher=Vt(c.locale,()=>{l.instance&&l.instance.$forceUpdate()})),i.__composer=c,i.textContent=a},unmounted:i=>{Ur&&i.__i18nWatcher&&(i.__i18nWatcher(),i.__i18nWatcher=void 0,delete i.__i18nWatcher),i.__composer&&(i.__composer=void 0,delete i.__composer)},beforeUpdate:(i,{value:l})=>{if(i.__composer){const a=i.__composer,c=gl(l);i.textContent=Reflect.apply(a.t,a,[..._l(c)])}},getSSRProps:i=>{const[l]=t(i);return{textContent:l}}}}function gl(e){if(_e(e))return{path:e};if(st(e)){if(!("path"in e))throw at(tt.REQUIRED_VALUE,"path");return e}else throw at(tt.INVALID_VALUE)}function _l(e){const{path:t,locale:n,args:r,choice:s,plural:o}=e,i={},l=r||{};return _e(n)&&(i.locale=n),ir(s)&&(i.plural=s),ir(o)&&(i.plural=o),[t,l,i]}function Up(e,t,...n){const r=st(n[0])?n[0]:{};(!kt(r.globalInstall)||r.globalInstall)&&([pl.name,"I18nT"].forEach(o=>e.component(o,pl)),[ml.name,"I18nN"].forEach(o=>e.component(o,ml)),[yl.name,"I18nD"].forEach(o=>e.component(o,yl))),e.directive("t",$p(t))}const jp=rn("global-vue-i18n");function Kg(e={}){const t=kt(e.globalInjection)?e.globalInjection:!0,n=new Map,[r,s]=Vp(e),o=rn("");function i(u){return n.get(u)||null}function l(u,f){n.set(u,f)}function a(u){n.delete(u)}const c={get mode(){return"composition"},async install(u,...f){if(u.__VUE_I18N_SYMBOL__=o,u.provide(u.__VUE_I18N_SYMBOL__,c),st(f[0])){const A=f[0];c.__composerExtend=A.__composerExtend,c.__vueI18nExtend=A.__vueI18nExtend}let d=null;t&&(d=Xp(u,c.global)),Up(u,c,...f);const _=u.unmount;u.unmount=()=>{d&&d(),c.dispose(),_()}},get global(){return s},dispose(){r.stop()},__instances:n,__getInstance:i,__setInstance:l,__deleteInstance:a};return c}function is(e={}){const t=Lc();if(t==null)throw at(tt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw at(tt.NOT_INSTALLED);const n=Hp(t),r=Bp(n),s=Op(t),o=Wp(e,s);if(o==="global")return Np(r,e,s),r;if(o==="parent"){let a=Kp(n,t,e.__useComponent);return a==null&&(a=r),a}const i=n;let l=i.__getInstance(t);if(l==null){const a=Tt({},e);"__i18n"in s&&(a.__i18n=s.__i18n),r&&(a.__root=r),l=Oc(a),i.__composerExtend&&(l[oo]=i.__composerExtend(l)),qp(i,t,l),i.__setInstance(t,l)}return l}function Vp(e,t){const n=_o(),r=n.run(()=>Oc(e));if(r==null)throw at(tt.UNEXPECTED_ERROR);return[n,r]}function Hp(e){const t=et(e.isCE?jp:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw at(e.isCE?tt.NOT_INSTALLED_WITH_PROVIDE:tt.UNEXPECTED_ERROR);return t}function Wp(e,t){return Cp(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function Bp(e){return e.mode==="composition"?e.global:e.global.__composer}function Kp(e,t,n=!1){let r=null;const s=t.root;let o=Gp(t,n);for(;o!=null;){const i=e;if(e.mode==="composition"&&(r=i.__getInstance(o)),r!=null||s===o)break;o=o.parent}return r}function Gp(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function qp(e,t,n){To(()=>{},t),Ro(()=>{const r=n;e.__deleteInstance(t);const s=r[oo];s&&(s(),delete r[oo])},t)}const Yp=["locale","fallbackLocale","availableLocales"],bl=["t","rt","d","n","tm","te"];function Xp(e,t){const n=Object.create(null);return Yp.forEach(s=>{const o=Object.getOwnPropertyDescriptor(t,s);if(!o)throw at(tt.UNEXPECTED_ERROR);const i=he(o.value)?{get(){return o.value.value},set(l){o.value.value=l}}:{get(){return o.get&&o.get()}};Object.defineProperty(n,s,i)}),e.config.globalProperties.$i18n=n,bl.forEach(s=>{const o=Object.getOwnPropertyDescriptor(t,s);if(!o||!o.value)throw at(tt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${s}`,o)}),()=>{delete e.config.globalProperties.$i18n,bl.forEach(s=>{delete e.config.globalProperties[`$${s}`]})}}const Jp=bn({name:"i18n-d",props:Tt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},jo),setup(e,t){const n=e.i18n||is({useScope:e.scope,__useComponent:!0});return Ic(e,t,Cc,(...r)=>n[ro](...r))}}),yl=Jp;op(Bh);ip(np);lp(zs);let xc;const ls=e=>xc=e,kc=Symbol();function io(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Xn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Xn||(Xn={}));function Qp(){const e=_o(!0),t=e.run(()=>Jr({}));let n=[],r=[];const s=xn({install(o){ls(s),s._a=o,o.provide(kc,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const Dc=()=>{};function vl(e,t,n,r=Dc){e.add(t);const s=()=>{e.delete(t)&&r()};return!n&&Xl()&&du(s),s}function En(e,...t){e.forEach(n=>{n(...t)})}const zp=e=>e(),El=Symbol(),Ps=Symbol();function lo(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];io(s)&&io(r)&&e.hasOwnProperty(n)&&!he(r)&&!jt(r)?e[n]=lo(s,r):e[n]=r}return e}const Zp=Symbol();function em(e){return!io(e)||!Object.prototype.hasOwnProperty.call(e,Zp)}const{assign:Xt}=Object;function tm(e){return!!(he(e)&&e.effect)}function nm(e,t,n,r){const{state:s,actions:o,getters:i}=t,l=n.state.value[e];let a;function c(){l||(n.state.value[e]=s?s():{});const u=ku(n.state.value[e]);return Xt(u,o,Object.keys(i||{}).reduce((f,d)=>(f[d]=xn(Ae(()=>{ls(n);const _=n._s.get(e);return i[d].call(_,_)})),f),{}))}return a=Mc(e,c,t,n,r,!0),a}function Mc(e,t,n={},r,s,o){let i;const l=Xt({actions:{}},n),a={deep:!0};let c,u,f=new Set,d=new Set,_;const A=r.state.value[e];!o&&!A&&(r.state.value[e]={});let T;function N(H){let M;c=u=!1,typeof H=="function"?(H(r.state.value[e]),M={type:Xn.patchFunction,storeId:e,events:_}):(lo(r.state.value[e],H),M={type:Xn.patchObject,payload:H,storeId:e,events:_});const B=T=Symbol();wo().then(()=>{T===B&&(c=!0)}),u=!0,En(f,M,r.state.value[e])}const b=o?function(){const{state:M}=n,B=M?M():{};this.$patch(X=>{Xt(X,B)})}:Dc;function E(){i.stop(),f.clear(),d.clear(),r._s.delete(e)}const R=(H,M="")=>{if(El in H)return H[Ps]=M,H;const B=function(){ls(r);const X=Array.from(arguments),U=new Set,Z=new Set;function de(J){U.add(J)}function ye(J){Z.add(J)}En(d,{args:X,name:B[Ps],store:I,after:de,onError:ye});let se;try{se=H.apply(this&&this.$id===e?this:I,X)}catch(J){throw En(Z,J),J}return se instanceof Promise?se.then(J=>(En(U,J),J)).catch(J=>(En(Z,J),Promise.reject(J))):(En(U,se),se)};return B[El]=!0,B[Ps]=M,B},w={_p:r,$id:e,$onAction:vl.bind(null,d),$patch:N,$reset:b,$subscribe(H,M={}){const B=vl(f,H,M.detached,()=>X()),X=i.run(()=>Vt(()=>r.state.value[e],U=>{(M.flush==="sync"?u:c)&&H({storeId:e,type:Xn.direct,events:_},U)},Xt({},a,M)));return B},$dispose:E},I=_n(w);r._s.set(e,I);const L=(r._a&&r._a.runWithContext||zp)(()=>r._e.run(()=>(i=_o()).run(()=>t({action:R}))));for(const H in L){const M=L[H];if(he(M)&&!tm(M)||jt(M))o||(A&&em(M)&&(he(M)?M.value=A[H]:lo(M,A[H])),r.state.value[e][H]=M);else if(typeof M=="function"){const B=R(M,H);L[H]=B,l.actions[H]=M}}return Xt(I,L),Xt(re(I),L),Object.defineProperty(I,"$state",{get:()=>r.state.value[e],set:H=>{N(M=>{Xt(M,H)})}}),r._p.forEach(H=>{Xt(I,i.run(()=>H({store:I,app:r._a,pinia:r,options:l})))}),A&&o&&n.hydrate&&n.hydrate(I.$state,A),c=!0,u=!0,I}function rm(e,t,n){let r;const s=typeof t=="function";r=s?n:t;function o(i,l){const a=Ku();return i=i||(a?et(kc,null):null),i&&ls(i),i=xc,i._s.has(e)||(s?Mc(e,t,r,i):nm(e,r,i)),i._s.get(e)}return o.$id=e,o}const sm=["it","en","en_us","de","de_ch","fr","fr_ch"],Sl="it",Fc="preferences.language";function om(e){return sm.includes(e)}function im(){if(typeof localStorage>"u")return Sl;const e=localStorage.getItem(Fc);return e&&om(e)?e:Sl}function lm(e){switch(e){case"it":case"en":case"en_us":case"de":case"de_ch":case"fr":case"fr_ch":return"en-US"}}const am=rm("preferences",{state:()=>({language:im()}),actions:{setLanguage(e){this.language=e,typeof localStorage<"u"&&localStorage.setItem(Fc,e)}}}),cm=bn({__name:"App",setup(e){const{locale:t}=is(),n=am();return Vt(()=>n.language,r=>{t.value=lm(r)},{immediate:!0}),(r,s)=>{const o=ff("router-view");return Ya(),Ja(o)}}}),Vo=e=>e,Gg=Vo,um=Vo,fm=Vo,Ls=fm(()=>Qp());const wn=typeof document<"u";function $c(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function dm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&$c(e.default)}const oe=Object.assign;function Os(e,t){const n={};for(const r in t){const s=t[r];n[r]=ct(s)?s.map(e):e(s)}return n}const Jn=()=>{},ct=Array.isArray;function Cl(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}let ge=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const Uc=Symbol("");ge.MATCHER_NOT_FOUND+"",ge.NAVIGATION_GUARD_REDIRECT+"",ge.NAVIGATION_ABORTED+"",ge.NAVIGATION_CANCELLED+"",ge.NAVIGATION_DUPLICATED+"";function Nn(e,t){return oe(new Error,{type:e,[Uc]:!0},t)}function Nt(e,t){return e instanceof Error&&Uc in e&&(t==null||!!(e.type&t))}const hm=["params","query","hash"];function pm(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of hm)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}const mm=Symbol(""),wl=Symbol(""),Ho=Symbol(""),Wo=Symbol(""),ao=Symbol("");function qg(e){return et(Wo)}const jc=/#/g,gm=/&/g,_m=/\//g,bm=/=/g,ym=/\?/g,Vc=/\+/g,vm=/%5B/g,Em=/%5D/g,Hc=/%5E/g,Sm=/%60/g,Wc=/%7B/g,Cm=/%7C/g,Bc=/%7D/g,wm=/%20/g;function Bo(e){return e==null?"":encodeURI(""+e).replace(Cm,"|").replace(vm,"[").replace(Em,"]")}function Am(e){return Bo(e).replace(Wc,"{").replace(Bc,"}").replace(Hc,"^")}function co(e){return Bo(e).replace(Vc,"%2B").replace(wm,"+").replace(jc,"%23").replace(gm,"%26").replace(Sm,"`").replace(Wc,"{").replace(Bc,"}").replace(Hc,"^")}function Tm(e){return co(e).replace(bm,"%3D")}function Rm(e){return Bo(e).replace(jc,"%23").replace(ym,"%3F")}function Pm(e){return Rm(e).replace(_m,"%2F")}function ar(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Lm=/\/$/,Om=e=>e.replace(Lm,"");function Ns(e,t,n="/"){let r,s={},o="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return a=l>=0&&a>l?-1:a,a>=0&&(r=t.slice(0,a),o=t.slice(a,l>0?l:t.length),s=e(o.slice(1))),l>=0&&(r=r||t.slice(0,l),i=t.slice(l,t.length)),r=km(r??t,n),{fullPath:r+o+i,path:r,query:s,hash:ar(i)}}function Nm(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Al(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Im(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&In(t.matched[r],n.matched[s])&&Kc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function In(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Kc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!xm(e[n],t[n]))return!1;return!0}function xm(e,t){return ct(e)?Tl(e,t):ct(t)?Tl(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Tl(e,t){return ct(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function km(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const Yt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let uo=(function(e){return e.pop="pop",e.push="push",e})({}),Is=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Dm(e){if(!e)if(wn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Om(e)}const Mm=/^[^#]+#/;function Fm(e,t){return e.replace(Mm,"#")+t}function $m(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const as=()=>({left:window.scrollX,top:window.scrollY});function Um(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=$m(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Rl(e,t){return(history.state?history.state.position-t:-1)+e}const fo=new Map;function jm(e,t){fo.set(e,t)}function Vm(e){const t=fo.get(e);return fo.delete(e),t}function Hm(e){return typeof e=="string"||e&&typeof e=="object"}function Gc(e){return typeof e=="string"||typeof e=="symbol"}function Wm(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&co(s)):[r&&co(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Bm(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=ct(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}function Un(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function zt(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((l,a)=>{const c=d=>{d===!1?a(Nn(ge.NAVIGATION_ABORTED,{from:n,to:t})):d instanceof Error?a(d):Hm(d)?a(Nn(ge.NAVIGATION_GUARD_REDIRECT,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),l())},u=o(()=>e.call(r&&r.instances[s],t,n,c));let f=Promise.resolve(u);e.length<3&&(f=f.then(c)),f.catch(d=>a(d))})}function xs(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if($c(a)){const c=(a.__vccOpts||a)[t];c&&o.push(zt(c,n,r,i,l,s))}else{let c=a();o.push(()=>c.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=dm(u)?u.default:u;i.mods[l]=u,i.components[l]=f;const d=(f.__vccOpts||f)[t];return d&&zt(d,n,r,i,l,s)()}))}}return o}function Km(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iIn(c,l))?r.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(c=>In(c,a))||s.push(a))}return[n,r,s]}let Gm=()=>location.protocol+"//"+location.host;function qc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(i);return l[0]!=="/"&&(l="/"+l),Al(l,"")}return Al(n,e)+r+s}function qm(e,t,n,r){let s=[],o=[],i=null;const l=({state:d})=>{const _=qc(e,location),A=n.value,T=t.value;let N=0;if(d){if(n.value=_,t.value=d,i&&i===A){i=null;return}N=T?d.position-T.position:0}else r(_);s.forEach(b=>{b(n.value,A,{delta:N,type:uo.pop,direction:N?N>0?Is.forward:Is.back:Is.unknown})})};function a(){i=n.value}function c(d){s.push(d);const _=()=>{const A=s.indexOf(d);A>-1&&s.splice(A,1)};return o.push(_),_}function u(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(oe({},d.state,{scroll:as()}),"")}}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:a,listen:c,destroy:f}}function Ll(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?as():null}}function Ym(e){const{history:t,location:n}=window,r={value:qc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,c,u){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:Gm()+e+a;try{t[u?"replaceState":"pushState"](c,"",d),s.value=c}catch(_){console.error(_),n[u?"replace":"assign"](d)}}function i(a,c){o(a,oe({},t.state,Ll(s.value.back,a,s.value.forward,!0),c,{position:s.value.position}),!0),r.value=a}function l(a,c){const u=oe({},s.value,t.state,{forward:a,scroll:as()});o(u.current,u,!0),o(a,oe({},Ll(r.value,a,null),{position:u.position+1},c),!1),r.value=a}return{location:r,state:s,push:l,replace:i}}function Xm(e){e=Dm(e);const t=Ym(e),n=qm(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=oe({location:"",base:e,go:r,createHref:Fm.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}let fn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Ee=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Ee||{});const Jm={type:fn.Static,value:""},Qm=/[a-zA-Z0-9_]/;function zm(e){if(!e)return[[]];if(e==="/")return[[Jm]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(_){throw new Error(`ERR (${n})/"${c}": ${_}`)}let n=Ee.Static,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let l=0,a,c="",u="";function f(){c&&(n===Ee.Static?o.push({type:fn.Static,value:c}):n===Ee.Param||n===Ee.ParamRegExp||n===Ee.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:fn.Param,value:c,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),c="")}function d(){c+=a}for(;lt.length?t.length===1&&t[0]===Me.Static+Me.Segment?1:-1:0}function Yc(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const rg={strict:!1,end:!0,sensitive:!1};function sg(e,t,n){const r=tg(zm(e.path),n),s=oe(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function og(e,t){const n=[],r=new Map;t=Cl(rg,t);function s(f){return r.get(f)}function o(f,d,_){const A=!_,T=xl(f);T.aliasOf=_&&_.record;const N=Cl(t,f),b=[T];if("alias"in f){const w=typeof f.alias=="string"?[f.alias]:f.alias;for(const I of w)b.push(xl(oe({},T,{components:_?_.record.components:T.components,path:I,aliasOf:_?_.record:T})))}let E,R;for(const w of b){const{path:I}=w;if(d&&I[0]!=="/"){const $=d.record.path,L=$[$.length-1]==="/"?"":"/";w.path=d.record.path+(I&&L+I)}if(E=sg(w,d,N),_?_.alias.push(E):(R=R||E,R!==E&&R.alias.push(E),A&&f.name&&!kl(E)&&i(f.name)),Xc(E)&&a(E),T.children){const $=T.children;for(let L=0;L<$.length;L++)o($[L],E,_&&_.children[L])}_=_||E}return R?()=>{i(R)}:Jn}function i(f){if(Gc(f)){const d=r.get(f);d&&(r.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function a(f){const d=ag(f,n);n.splice(d,0,f),f.record.name&&!kl(f)&&r.set(f.record.name,f)}function c(f,d){let _,A={},T,N;if("name"in f&&f.name){if(_=r.get(f.name),!_)throw Nn(ge.MATCHER_NOT_FOUND,{location:f});N=_.record.name,A=oe(Il(d.params,_.keys.filter(R=>!R.optional).concat(_.parent?_.parent.keys.filter(R=>R.optional):[]).map(R=>R.name)),f.params&&Il(f.params,_.keys.map(R=>R.name))),T=_.stringify(A)}else if(f.path!=null)T=f.path,_=n.find(R=>R.re.test(T)),_&&(A=_.parse(T),N=_.record.name);else{if(_=d.name?r.get(d.name):n.find(R=>R.re.test(d.path)),!_)throw Nn(ge.MATCHER_NOT_FOUND,{location:f,currentLocation:d});N=_.record.name,A=oe({},d.params,f.params),T=_.stringify(A)}const b=[];let E=_;for(;E;)b.unshift(E.record),E=E.parent;return{name:N,path:T,params:A,matched:b,meta:lg(b)}}e.forEach(f=>o(f));function u(){n.length=0,r.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:s}}function Il(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function xl(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ig(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function ig(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function kl(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function lg(e){return e.reduce((t,n)=>oe(t,n.meta),{})}function ag(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Yc(e,t[o])<0?r=o:n=o+1}const s=cg(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function cg(e){let t=e;for(;t=t.parent;)if(Xc(t)&&Yc(e,t)===0)return t}function Xc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Dl(e){const t=et(Ho),n=et(Wo),r=Ae(()=>{const a=hn(e.to);return t.resolve(a)}),s=Ae(()=>{const{matched:a}=r.value,{length:c}=a,u=a[c-1],f=n.matched;if(!u||!f.length)return-1;const d=f.findIndex(In.bind(null,u));if(d>-1)return d;const _=Ml(a[c-2]);return c>1&&Ml(u)===_&&f[f.length-1].path!==_?f.findIndex(In.bind(null,a[c-2])):d}),o=Ae(()=>s.value>-1&&pg(n.params,r.value.params)),i=Ae(()=>s.value>-1&&s.value===n.matched.length-1&&Kc(n.params,r.value.params));function l(a={}){if(hg(a)){const c=t[hn(e.replace)?"replace":"push"](hn(e.to)).catch(Jn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:r,href:Ae(()=>r.value.href),isActive:o,isExactActive:i,navigate:l}}function ug(e){return e.length===1?e[0]:e}const fg=bn({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Dl,setup(e,{slots:t}){const n=_n(Dl(e)),{options:r}=et(Ho),s=Ae(()=>({[Fl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Fl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&ug(t.default(n));return e.custom?o:hr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),dg=fg;function hg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function pg(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!ct(s)||s.length!==r.length||r.some((o,i)=>o.valueOf()!==s[i].valueOf()))return!1}return!0}function Ml(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Fl=(e,t,n)=>e??t??n,mg=bn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=et(ao),s=Ae(()=>e.route||r.value),o=et(wl,0),i=Ae(()=>{let c=hn(o);const{matched:u}=s.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),l=Ae(()=>s.value.matched[i.value]);Sr(wl,Ae(()=>i.value+1)),Sr(mm,l),Sr(ao,s);const a=Jr();return Vt(()=>[a.value,l.value,e.name],([c,u,f],[d,_,A])=>{u&&(u.instances[f]=c,_&&_!==u&&c&&c===d&&(u.leaveGuards.size||(u.leaveGuards=_.leaveGuards),u.updateGuards.size||(u.updateGuards=_.updateGuards))),c&&u&&(!_||!In(u,_)||!d)&&(u.enterCallbacks[f]||[]).forEach(T=>T(c))},{flush:"post"}),()=>{const c=s.value,u=e.name,f=l.value,d=f&&f.components[u];if(!d)return $l(n.default,{Component:d,route:c});const _=f.props[u],A=_?_===!0?c.params:typeof _=="function"?_(c):_:null,N=hr(d,oe({},A,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(f.instances[u]=null)},ref:a}));return $l(n.default,{Component:N,route:c})||N}}});function $l(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const gg=mg;function _g(e){const t=og(e.routes,e),n=e.parseQuery||Wm,r=e.stringifyQuery||Pl,s=e.history,o=Un(),i=Un(),l=Un(),a=fa(Yt);let c=Yt;wn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Os.bind(null,k=>""+k),f=Os.bind(null,Pm),d=Os.bind(null,ar);function _(k,W){let j,G;return Gc(k)?(j=t.getRecordMatcher(k),G=W):G=k,t.addRoute(G,j)}function A(k){const W=t.getRecordMatcher(k);W&&t.removeRoute(W)}function T(){return t.getRoutes().map(k=>k.record)}function N(k){return!!t.getRecordMatcher(k)}function b(k,W){if(W=oe({},W||a.value),typeof k=="string"){const S=Ns(n,k,W.path),O=t.resolve({path:S.path},W),D=s.createHref(S.fullPath);return oe(S,O,{params:d(O.params),hash:ar(S.hash),redirectedFrom:void 0,href:D})}let j;if(k.path!=null)j=oe({},k,{path:Ns(n,k.path,W.path).path});else{const S=oe({},k.params);for(const O in S)S[O]==null&&delete S[O];j=oe({},k,{params:f(S)}),W.params=f(W.params)}const G=t.resolve(j,W),ee=k.hash||"";G.params=u(d(G.params));const m=Nm(r,oe({},k,{hash:Am(ee),path:G.path})),g=s.createHref(m);return oe({fullPath:m,hash:ee,query:r===Pl?Bm(k.query):k.query||{}},G,{redirectedFrom:void 0,href:g})}function E(k){return typeof k=="string"?Ns(n,k,a.value.path):oe({},k)}function R(k,W){if(c!==k)return Nn(ge.NAVIGATION_CANCELLED,{from:W,to:k})}function w(k){return L(k)}function I(k){return w(oe(E(k),{replace:!0}))}function $(k,W){const j=k.matched[k.matched.length-1];if(j&&j.redirect){const{redirect:G}=j;let ee=typeof G=="function"?G(k,W):G;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=E(ee):{path:ee},ee.params={}),oe({query:k.query,hash:k.hash,params:ee.path!=null?{}:k.params},ee)}}function L(k,W){const j=c=b(k),G=a.value,ee=k.state,m=k.force,g=k.replace===!0,S=$(j,G);if(S)return L(oe(E(S),{state:typeof S=="object"?oe({},ee,S.state):ee,force:m,replace:g}),W||j);const O=j;O.redirectedFrom=W;let D;return!m&&Im(r,G,j)&&(D=Nn(ge.NAVIGATION_DUPLICATED,{to:O,from:G}),ke(G,G,!0,!1)),(D?Promise.resolve(D):B(O,G)).catch(x=>Nt(x)?Nt(x,ge.NAVIGATION_GUARD_REDIRECT)?x:Ke(x):ne(x,O,G)).then(x=>{if(x){if(Nt(x,ge.NAVIGATION_GUARD_REDIRECT))return L(oe({replace:g},E(x.to),{state:typeof x.to=="object"?oe({},ee,x.to.state):ee,force:m}),W||O)}else x=U(O,G,!0,g,ee);return X(O,G,x),x})}function H(k,W){const j=R(k,W);return j?Promise.reject(j):Promise.resolve()}function M(k){const W=ft.values().next().value;return W&&typeof W.runWithContext=="function"?W.runWithContext(k):k()}function B(k,W){let j;const[G,ee,m]=Km(k,W);j=xs(G.reverse(),"beforeRouteLeave",k,W);for(const S of G)S.leaveGuards.forEach(O=>{j.push(zt(O,k,W))});const g=H.bind(null,k,W);return j.push(g),Te(j).then(()=>{j=[];for(const S of o.list())j.push(zt(S,k,W));return j.push(g),Te(j)}).then(()=>{j=xs(ee,"beforeRouteUpdate",k,W);for(const S of ee)S.updateGuards.forEach(O=>{j.push(zt(O,k,W))});return j.push(g),Te(j)}).then(()=>{j=[];for(const S of m)if(S.beforeEnter)if(ct(S.beforeEnter))for(const O of S.beforeEnter)j.push(zt(O,k,W));else j.push(zt(S.beforeEnter,k,W));return j.push(g),Te(j)}).then(()=>(k.matched.forEach(S=>S.enterCallbacks={}),j=xs(m,"beforeRouteEnter",k,W,M),j.push(g),Te(j))).then(()=>{j=[];for(const S of i.list())j.push(zt(S,k,W));return j.push(g),Te(j)}).catch(S=>Nt(S,ge.NAVIGATION_CANCELLED)?S:Promise.reject(S))}function X(k,W,j){l.list().forEach(G=>M(()=>G(k,W,j)))}function U(k,W,j,G,ee){const m=R(k,W);if(m)return m;const g=W===Yt,S=wn?history.state:{};j&&(G||g?s.replace(k.fullPath,oe({scroll:g&&S&&S.scroll},ee)):s.push(k.fullPath,ee)),a.value=k,ke(k,W,j,g),Ke()}let Z;function de(){Z||(Z=s.listen((k,W,j)=>{if(!dt.listening)return;const G=b(k),ee=$(G,dt.currentRoute.value);if(ee){L(oe(ee,{replace:!0,force:!0}),G).catch(Jn);return}c=G;const m=a.value;wn&&jm(Rl(m.fullPath,j.delta),as()),B(G,m).catch(g=>Nt(g,ge.NAVIGATION_ABORTED|ge.NAVIGATION_CANCELLED)?g:Nt(g,ge.NAVIGATION_GUARD_REDIRECT)?(L(oe(E(g.to),{force:!0}),G).then(S=>{Nt(S,ge.NAVIGATION_ABORTED|ge.NAVIGATION_DUPLICATED)&&!j.delta&&j.type===uo.pop&&s.go(-1,!1)}).catch(Jn),Promise.reject()):(j.delta&&s.go(-j.delta,!1),ne(g,G,m))).then(g=>{g=g||U(G,m,!1),g&&(j.delta&&!Nt(g,ge.NAVIGATION_CANCELLED)?s.go(-j.delta,!1):j.type===uo.pop&&Nt(g,ge.NAVIGATION_ABORTED|ge.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),X(G,m,g)}).catch(Jn)}))}let ye=Un(),se=Un(),J;function ne(k,W,j){Ke(k);const G=se.list();return G.length?G.forEach(ee=>ee(k,W,j)):console.error(k),Promise.reject(k)}function ve(){return J&&a.value!==Yt?Promise.resolve():new Promise((k,W)=>{ye.add([k,W])})}function Ke(k){return J||(J=!k,de(),ye.list().forEach(([W,j])=>k?j(k):W()),ye.reset()),k}function ke(k,W,j,G){const{scrollBehavior:ee}=e;if(!wn||!ee)return Promise.resolve();const m=!j&&Vm(Rl(k.fullPath,0))||(G||!j)&&history.state&&history.state.scroll||null;return wo().then(()=>ee(k,W,m)).then(g=>g&&Um(g)).catch(g=>ne(g,k,W))}const Ce=k=>s.go(k);let ut;const ft=new Set,dt={currentRoute:a,listening:!0,addRoute:_,removeRoute:A,clearRoutes:t.clearRoutes,hasRoute:N,getRoutes:T,resolve:b,options:e,push:w,replace:I,go:Ce,back:()=>Ce(-1),forward:()=>Ce(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:se.add,isReady:ve,install(k){k.component("RouterLink",dg),k.component("RouterView",gg),k.config.globalProperties.$router=dt,Object.defineProperty(k.config.globalProperties,"$route",{enumerable:!0,get:()=>hn(a)}),wn&&!ut&&a.value===Yt&&(ut=!0,w(s.location).catch(G=>{}));const W={};for(const G in Yt)Object.defineProperty(W,G,{get:()=>a.value[G],enumerable:!0});k.provide(Ho,dt),k.provide(Wo,ua(W)),k.provide(ao,a);const j=k.unmount;ft.add(k),k.unmount=function(){ft.delete(k),ft.size<1&&(c=Yt,Z&&Z(),Z=null,a.value=Yt,ut=!1,J=!1),j()}}};function Te(k){return k.reduce((W,j)=>W.then(()=>M(j)),Promise.resolve())}return dt}const bg=[{path:"/",component:()=>It(()=>import("./MainLayout-Dnh2wyjy.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])),children:[{path:"",component:()=>It(()=>import("./IndexPage-VdxnZT-U.js"),__vite__mapDeps([14,15,2,6,1,11,5,16,17,12,18]))}]},{path:"/dev",component:()=>It(()=>import("./DevLayout-NkVPqUIU.js"),__vite__mapDeps([19,1,2,3,4,5,6,11,9])),children:[{path:"",component:()=>It(()=>import("./IndexPage-C3QXgr9t.js"),__vite__mapDeps([20,17,2]))},{path:"reset-password",component:()=>It(()=>import("./ResetPasswordPage-DM3gheQo.js"),__vite__mapDeps([21,15,2,6,22,23,8,1,16,17,12,24]))},{path:"api/endpoints",component:()=>It(()=>import("./ApiEndpointsPage-DOm_uCJI.js"),__vite__mapDeps([25,2,15,6,22,23,8,1,16,10,4,11,17,12,26]))},{path:"api/mail-debug",component:()=>It(()=>import("./MailDebugPage-dW3_TCwt.js"),__vite__mapDeps([27,1,2,7,8,6,5,9,4,10,11,15,22,17,12,28]))}]},{path:"/:catchAll(.*)*",component:()=>It(()=>import("./ErrorNotFound-CYezCx4W.js"),__vite__mapDeps([29,1,2]))}],ks=um(function(){return _g({scrollBehavior:()=>({left:0,top:0}),routes:bg,history:Xm("/")})});async function yg(e,t){const n=e(cm);n.use(eh,t);const r=typeof Ls=="function"?await Ls({}):Ls;n.use(r);const s=xn(typeof ks=="function"?await ks({store:r}):ks);return r.use(({store:o})=>{o.router=s}),{app:n,store:r,router:s}}const vg={config:{}},Eg="/";async function Sg({app:e,router:t,store:n},r){let s=!1;const o=a=>{try{return t.resolve(a).href}catch{}return Object(a)===a?null:a},i=a=>{if(s=!0,typeof a=="string"&&/^https?:\/\//.test(a)){window.location.href=a;return}const c=o(a);c!==null&&(window.location.href=c)},l=window.location.href.replace(window.location.origin,"");for(let a=0;s===!1&&a{const[t,n]=Promise.allSettled!==void 0?["allSettled",r=>r.map(s=>{if(s.status==="rejected"){console.error("[Quasar] boot error:",s.reason);return}return s.value.default})]:["all",r=>r.map(s=>s.default)];return Promise[t]([It(()=>import("./i18n-CQXJXuD5.js"),[])]).then(r=>{const s=n(r).filter(o=>typeof o=="function");Sg(e,s)})});export{Ze as $,ts as A,Ng as B,Ug as C,Ct as D,Fg as E,sr as F,$g as G,xg as H,Mi as I,Dg as J,Ig as K,Mg as L,et as M,Bg as N,Vg as O,wo as P,Na as Q,wg as R,Ln as S,Lg as T,Sr as U,Hg as V,Ro as W,_n as X,qg as Y,Pg as Z,jg as _,bn as a,Tg as a0,jd as a1,Io as a2,Jd as a3,Md as a4,nf as a5,ef as a6,Zu as a7,Cs as a8,rf as a9,sf as aa,Xs as ab,ji as ac,Ag as ad,Yd as ae,kg as af,Wg as ag,ff as b,Kg as c,Gg as d,Ja as e,He as f,Wf as g,za as h,hn as i,Hf as j,Rg as k,im as l,Gr as m,Cg as n,Ya as o,Ae as p,Jr as q,lm as r,Og as s,fu as t,am as u,mn as v,Bu as w,To as x,hr as y,Vt as z}; diff --git a/backend/internal/http/static/spa/assets/render-B4qP-w0Q.js b/backend/internal/http/static/spa/assets/render-B4qP-w0Q.js new file mode 100644 index 0000000..0428b19 --- /dev/null +++ b/backend/internal/http/static/spa/assets/render-B4qP-w0Q.js @@ -0,0 +1 @@ +import{y as c,R as f}from"./index-QUdrNkKl.js";function v(n,i){return n!==void 0&&n()||i}function d(n,i){if(n!==void 0){const r=n();if(r!=null)return r.slice()}return i}function h(n,i){return n!==void 0?i.concat(n()):i}function S(n,i){return n===void 0?i:i!==void 0?i.concat(n()):n()}function l(n,i,r,o,t,u){i.key=o+t;const e=c(n,i,r);return t===!0?f(e,u()):e}export{S as a,l as b,d as c,h as d,v as h}; diff --git a/backend/internal/http/static/spa/assets/use-dark-BRt0_t6X.js b/backend/internal/http/static/spa/assets/use-dark-BRt0_t6X.js new file mode 100644 index 0000000..507d597 --- /dev/null +++ b/backend/internal/http/static/spa/assets/use-dark-BRt0_t6X.js @@ -0,0 +1 @@ +import{p as e}from"./index-QUdrNkKl.js";const u={dark:{type:Boolean,default:null}};function o(a,r){return e(()=>a.dark===null?r.dark.isActive:a.dark)}export{o as a,u}; diff --git a/backend/internal/http/static/spa/assets/use-key-composition-TTwP9QMZ.js b/backend/internal/http/static/spa/assets/use-key-composition-TTwP9QMZ.js new file mode 100644 index 0000000..cc3901f --- /dev/null +++ b/backend/internal/http/static/spa/assets/use-key-composition-TTwP9QMZ.js @@ -0,0 +1 @@ +import{v as de,q as g,x as K,z as x,p as i,A as E,a9 as fe,M as ce,ag as ve,Q as N,a4 as pe,a2 as me,L as ge,P as be,a6 as he,a7 as ye,y as a,I as $,T as Ce,D as qe}from"./index-QUdrNkKl.js";import{b as X,a as xe}from"./QBtn-AYMizH8c.js";import{u as _e,a as Se}from"./use-dark-BRt0_t6X.js";import{h as P}from"./render-B4qP-w0Q.js";let L,M=0;const d=new Array(256);for(let e=0;e<256;e++)d[e]=(e+256).toString(16).substring(1);const we=(()=>{const e=typeof crypto<"u"?crypto:typeof window<"u"?window.crypto||window.msCrypto:void 0;if(e!==void 0){if(e.randomBytes!==void 0)return e.randomBytes;if(e.getRandomValues!==void 0)return o=>{const t=new Uint8Array(o);return e.getRandomValues(t),t}}return o=>{const t=[];for(let n=o;n>0;n--)t.push(Math.floor(Math.random()*256));return t}})(),Y=4096;function H(){(L===void 0||M+16>Y)&&(M=0,L=we(Y));const e=Array.prototype.slice.call(L,M,M+=16);return e[6]=e[6]&15|64,e[8]=e[8]&63|128,d[e[0]]+d[e[1]]+d[e[2]]+d[e[3]]+"-"+d[e[4]]+d[e[5]]+"-"+d[e[6]]+d[e[7]]+"-"+d[e[8]]+d[e[9]]+"-"+d[e[10]]+d[e[11]]+d[e[12]]+d[e[13]]+d[e[14]]+d[e[15]]}function Be(e){return e??null}function ee(e,o){return e??(o===!0?`f_${H()}`:null)}function Fe({getValue:e,required:o=!0}={}){if(de.value===!0){const t=e!==void 0?g(Be(e())):g(null);return o===!0&&t.value===null&&K(()=>{t.value=`f_${H()}`}),e!==void 0&&x(e,n=>{t.value=ee(n,o)}),t}return e!==void 0?i(()=>ee(e(),o)):g(`f_${H()}`)}const oe=/^on[A-Z]/;function Re(){const{attrs:e,vnode:o}=E(),t={listeners:g({}),attributes:g({})};function n(){const c={},s={};for(const r in e)r!=="class"&&r!=="style"&&oe.test(r)===!1&&(c[r]=e[r]);for(const r in o.props)oe.test(r)===!0&&(s[r]=o.props[r]);t.attributes.value=c,t.listeners.value=s}return fe(n),n(),t}function Ae({validate:e,resetValidation:o,requiresQForm:t}){const n=ce(ve,!1);if(n!==!1){const{props:c,proxy:s}=E();Object.assign(s,{validate:e,resetValidation:o}),x(()=>c.disable,r=>{r===!0?(typeof o=="function"&&o(),n.unbindComponent(s)):n.bindComponent(s)}),K(()=>{c.disable!==!0&&n.bindComponent(s)}),N(()=>{c.disable!==!0&&n.unbindComponent(s)})}else t===!0&&console.error("Parent QForm not found on useFormChild()!")}const te=/^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,le=/^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,ne=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,O=/^rgb\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5])\)$/,D=/^rgba\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),(0|0\.[0-9]+[1-9]|0\.[1-9]+|1)\)$/,j={date:e=>/^-?[\d]+\/[0-1]\d\/[0-3]\d$/.test(e),time:e=>/^([0-1]?\d|2[0-3]):[0-5]\d$/.test(e),fulltime:e=>/^([0-1]?\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(e),timeOrFulltime:e=>/^([0-1]?\d|2[0-3]):[0-5]\d(:[0-5]\d)?$/.test(e),email:e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),hexColor:e=>te.test(e),hexaColor:e=>le.test(e),hexOrHexaColor:e=>ne.test(e),rgbColor:e=>O.test(e),rgbaColor:e=>D.test(e),rgbOrRgbaColor:e=>O.test(e)||D.test(e),hexOrRgbColor:e=>te.test(e)||O.test(e),hexaOrRgbaColor:e=>le.test(e)||D.test(e),anyColor:e=>ne.test(e)||O.test(e)||D.test(e)},Ve=[!0,!1,"ondemand"],$e={modelValue:{},error:{type:Boolean,default:null},errorMessage:String,noErrorIcon:Boolean,rules:Array,reactiveRules:Boolean,lazyRules:{type:[Boolean,String],default:!1,validator:e=>Ve.includes(e)}};function ke(e,o){const{props:t,proxy:n}=E(),c=g(!1),s=g(null),r=g(!1);Ae({validate:B,resetValidation:w});let v=0,h;const A=i(()=>t.rules!==void 0&&t.rules!==null&&t.rules.length!==0),b=i(()=>t.disable!==!0&&A.value===!0&&o.value===!1),S=i(()=>t.error===!0||c.value===!0),z=i(()=>typeof t.errorMessage=="string"&&t.errorMessage.length!==0?t.errorMessage:s.value);x(()=>t.modelValue,()=>{r.value=!0,b.value===!0&&t.lazyRules===!1&&C()});function V(){t.lazyRules!=="ondemand"&&b.value===!0&&r.value===!0&&C()}x(()=>t.reactiveRules,y=>{y===!0?h===void 0&&(h=x(()=>t.rules,V,{immediate:!0,deep:!0})):h!==void 0&&(h(),h=void 0)},{immediate:!0}),x(()=>t.lazyRules,V),x(e,y=>{y===!0?r.value=!0:b.value===!0&&t.lazyRules!=="ondemand"&&C()});function w(){v++,o.value=!1,r.value=!1,c.value=!1,s.value=null,C.cancel()}function B(y=t.modelValue){if(t.disable===!0||A.value===!1)return!0;const F=++v,T=o.value!==!0?()=>{r.value=!0}:()=>{},q=(f,p)=>{f===!0&&T(),c.value=f,s.value=p||null,o.value=!1},R=[];for(let f=0;f{if(f===void 0||Array.isArray(f)===!1||f.length===0)return F===v&&q(!1),!0;const p=f.find(m=>m===!1||typeof m=="string");return F===v&&q(p!==void 0,p),p===void 0},f=>(F===v&&(console.error(f),q(!0)),!1)))}const C=pe(B,0);return N(()=>{h?.(),C.cancel()}),Object.assign(n,{resetValidation:w,validate:B}),me(n,"hasError",()=>S.value),{isDirtyModel:r,hasRules:A,hasError:S,errorMessage:z,validate:B,resetValidation:w}}let _=[],k=[];function re(e){k=k.filter(o=>o!==e)}function Ke(e){re(e),k.push(e)}function Ne(e){re(e),k.length===0&&_.length!==0&&(_[_.length-1](),_=[])}function Ee(e){k.length===0?e():_.push(e)}function Ie(e){_=_.filter(o=>o!==e)}function Pe(e){return e!=null&&(""+e).length!==0}const Me={..._e,...$e,label:String,stackLabel:Boolean,hint:String,hideHint:Boolean,prefix:String,suffix:String,labelColor:String,color:String,bgColor:String,filled:Boolean,outlined:Boolean,borderless:Boolean,standout:[Boolean,String],square:Boolean,loading:Boolean,labelSlot:Boolean,bottomSlots:Boolean,hideBottomSpace:Boolean,rounded:Boolean,dense:Boolean,itemAligned:Boolean,counter:Boolean,clearable:Boolean,clearIcon:String,disable:Boolean,readonly:Boolean,autofocus:Boolean,for:String},Qe={...Me,maxlength:[Number,String]},Ze=["update:modelValue","clear","focus","blur"];function We({requiredForAttr:e=!0,tagProp:o,changeEvent:t=!1}={}){const{props:n,proxy:c}=E(),s=Se(n,c.$q),r=Fe({required:e,getValue:()=>n.for});return{requiredForAttr:e,changeEvent:t,tag:o===!0?i(()=>n.tag):{value:"label"},isDark:s,editable:i(()=>n.disable!==!0&&n.readonly!==!0),innerLoading:g(!1),focused:g(!1),hasPopupOpen:!1,splitAttrs:Re(),targetUid:r,rootRef:g(null),targetRef:g(null),controlRef:g(null)}}function Je(e){const{props:o,emit:t,slots:n,attrs:c,proxy:s}=E(),{$q:r}=s;let v=null;e.hasValue===void 0&&(e.hasValue=i(()=>Pe(o.modelValue))),e.emitValue===void 0&&(e.emitValue=l=>{t("update:modelValue",l)}),e.controlEvents===void 0&&(e.controlEvents={onFocusin:Q,onFocusout:Z}),Object.assign(e,{clearValue:U,onControlFocusin:Q,onControlFocusout:Z,focus:p}),e.computedCounter===void 0&&(e.computedCounter=i(()=>{if(o.counter!==!1){const l=typeof o.modelValue=="string"||typeof o.modelValue=="number"?(""+o.modelValue).length:Array.isArray(o.modelValue)===!0?o.modelValue.length:0,u=o.maxlength!==void 0?o.maxlength:o.maxValues;return l+(u!==void 0?" / "+u:"")}}));const{isDirtyModel:h,hasRules:A,hasError:b,errorMessage:S,resetValidation:z}=ke(e.focused,e.innerLoading),V=e.floatingLabel!==void 0?i(()=>o.stackLabel===!0||e.focused.value===!0||e.floatingLabel.value===!0):i(()=>o.stackLabel===!0||e.focused.value===!0||e.hasValue.value===!0),w=i(()=>o.bottomSlots===!0||o.hint!==void 0||A.value===!0||o.counter===!0||o.error!==null),B=i(()=>o.filled===!0?"filled":o.outlined===!0?"outlined":o.borderless===!0?"borderless":o.standout?"standout":"standard"),C=i(()=>`q-field row no-wrap items-start q-field--${B.value}`+(e.fieldClass!==void 0?` ${e.fieldClass.value}`:"")+(o.rounded===!0?" q-field--rounded":"")+(o.square===!0?" q-field--square":"")+(V.value===!0?" q-field--float":"")+(F.value===!0?" q-field--labeled":"")+(o.dense===!0?" q-field--dense":"")+(o.itemAligned===!0?" q-field--item-aligned q-item-type":"")+(e.isDark.value===!0?" q-field--dark":"")+(e.getControl===void 0?" q-field--auto-height":"")+(e.focused.value===!0?" q-field--focused":"")+(b.value===!0?" q-field--error":"")+(b.value===!0||e.focused.value===!0?" q-field--highlighted":"")+(o.hideBottomSpace!==!0&&w.value===!0?" q-field--with-bottom":"")+(o.disable===!0?" q-field--disabled":o.readonly===!0?" q-field--readonly":"")),y=i(()=>"q-field__control relative-position row no-wrap"+(o.bgColor!==void 0?` bg-${o.bgColor}`:"")+(b.value===!0?" text-negative":typeof o.standout=="string"&&o.standout.length!==0&&e.focused.value===!0?` ${o.standout}`:o.color!==void 0?` text-${o.color}`:"")),F=i(()=>o.labelSlot===!0||o.label!==void 0),T=i(()=>"q-field__label no-pointer-events absolute ellipsis"+(o.labelColor!==void 0&&b.value!==!0?` text-${o.labelColor}`:"")),q=i(()=>({id:e.targetUid.value,editable:e.editable.value,focused:e.focused.value,floatingLabel:V.value,modelValue:o.modelValue,emitValue:e.emitValue})),R=i(()=>{const l={};return e.targetUid.value&&(l.for=e.targetUid.value),o.disable===!0&&(l["aria-disabled"]="true"),l});function f(){const l=document.activeElement;let u=e.targetRef?.value;u&&(l===null||l.id!==e.targetUid.value)&&(u.hasAttribute("tabindex")===!0||(u=u.querySelector("[tabindex]")),u!==l&&u?.focus({preventScroll:!0}))}function p(){Ee(f)}function m(){Ie(f);const l=document.activeElement;l!==null&&e.rootRef.value.contains(l)&&l.blur()}function Q(l){v!==null&&(clearTimeout(v),v=null),e.editable.value===!0&&e.focused.value===!1&&(e.focused.value=!0,t("focus",l))}function Z(l,u){v!==null&&clearTimeout(v),v=setTimeout(()=>{v=null,!(document.hasFocus()===!0&&(e.hasPopupOpen===!0||e.controlRef===void 0||e.controlRef.value===null||e.controlRef.value.contains(document.activeElement)!==!1))&&(e.focused.value===!0&&(e.focused.value=!1,t("blur",l)),u?.())})}function U(l){ge(l),r.platform.is.mobile!==!0?(e.targetRef?.value||e.rootRef.value).focus():e.rootRef.value.contains(document.activeElement)===!0&&document.activeElement.blur(),o.type==="file"&&(e.inputRef.value.value=null),t("update:modelValue",null),e.changeEvent===!0&&t("change",null),t("clear",o.modelValue),be(()=>{const u=h.value;z(),h.value=u})}function ue(l){[13,32].includes(l.keyCode)&&U(l)}function ae(){const l=[];return n.prepend!==void 0&&l.push(a("div",{class:"q-field__prepend q-field__marginal row no-wrap items-center",key:"prepend",onClick:$},n.prepend())),l.push(a("div",{class:"q-field__control-container col relative-position row no-wrap q-anchor--skip"},ie())),b.value===!0&&o.noErrorIcon===!1&&l.push(I("error",[a(X,{name:r.iconSet.field.error,color:"negative"})])),o.loading===!0||e.innerLoading.value===!0?l.push(I("inner-loading-append",n.loading!==void 0?n.loading():[a(xe,{color:o.color})])):o.clearable===!0&&e.hasValue.value===!0&&e.editable.value===!0&&l.push(I("inner-clearable-append",[a(X,{class:"q-field__focusable-action",name:o.clearIcon||r.iconSet.field.clear,tabindex:0,role:"button","aria-hidden":"false","aria-label":r.lang.label.clear,onKeyup:ue,onClick:U})])),n.append!==void 0&&l.push(a("div",{class:"q-field__append q-field__marginal row no-wrap items-center",key:"append",onClick:$},n.append())),e.getInnerAppend!==void 0&&l.push(I("inner-append",e.getInnerAppend())),e.getControlChild!==void 0&&l.push(e.getControlChild()),l}function ie(){const l=[];return o.prefix!==void 0&&o.prefix!==null&&l.push(a("div",{class:"q-field__prefix no-pointer-events row items-center"},o.prefix)),e.getShadowControl!==void 0&&e.hasShadow.value===!0&&l.push(e.getShadowControl()),F.value===!0&&l.push(a("div",{class:T.value},P(n.label,o.label))),e.getControl!==void 0?l.push(e.getControl()):n.rawControl!==void 0?l.push(n.rawControl()):n.control!==void 0&&l.push(a("div",{ref:e.targetRef,class:"q-field__native row",tabindex:-1,...e.splitAttrs.attributes.value,"data-autofocus":o.autofocus===!0||void 0},n.control(q.value))),o.suffix!==void 0&&o.suffix!==null&&l.push(a("div",{class:"q-field__suffix no-pointer-events row items-center"},o.suffix)),l.concat(P(n.default))}function se(){let l,u;b.value===!0?S.value!==null?(l=[a("div",{role:"alert"},S.value)],u=`q--slot-error-${S.value}`):(l=P(n.error),u="q--slot-error"):(o.hideHint!==!0||e.focused.value===!0)&&(o.hint!==void 0?(l=[a("div",o.hint)],u=`q--slot-hint-${o.hint}`):(l=P(n.hint),u="q--slot-hint"));const J=o.counter===!0||n.counter!==void 0;if(o.hideBottomSpace===!0&&J===!1&&l===void 0)return;const G=a("div",{key:u,class:"q-field__messages col"},l);return a("div",{class:"q-field__bottom row items-start q-field__bottom--"+(o.hideBottomSpace!==!0?"animated":"stale"),onClick:$},[o.hideBottomSpace===!0?G:a(Ce,{name:"q-transition--field-message"},()=>G),J===!0?a("div",{class:"q-field__counter"},n.counter!==void 0?n.counter():e.computedCounter.value):null])}function I(l,u){return u===null?null:a("div",{key:l,class:"q-field__append q-field__marginal row no-wrap items-center q-anchor--skip"},u)}let W=!1;return he(()=>{W=!0}),ye(()=>{W===!0&&o.autofocus===!0&&s.focus()}),o.autofocus===!0&&K(()=>{s.focus()}),N(()=>{v!==null&&clearTimeout(v)}),Object.assign(s,{focus:p,blur:m}),function(){const u=e.getControl===void 0&&n.control===void 0?{...e.splitAttrs.attributes.value,"data-autofocus":o.autofocus===!0||void 0,...R.value}:R.value;return a(e.tag.value,{ref:e.rootRef,class:[C.value,c.class],style:c.style,...u},[n.before!==void 0?a("div",{class:"q-field__before q-field__marginal row no-wrap items-center",onClick:$},n.before()):null,a("div",{class:"q-field__inner relative-position col self-stretch"},[a("div",{ref:e.controlRef,class:y.value,tabindex:-1,...e.controlEvents},ae()),w.value===!0?se():null]),n.after!==void 0?a("div",{class:"q-field__after q-field__marginal row no-wrap items-center",onClick:$},n.after()):null])}}const Ge={name:String};function Xe(e){return i(()=>e.name||e.for)}const Oe=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/,De=/[\u4e00-\u9fff\u3400-\u4dbf\u{20000}-\u{2a6df}\u{2a700}-\u{2b73f}\u{2b740}-\u{2b81f}\u{2b820}-\u{2ceaf}\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u{2f800}-\u{2fa1f}]/u,ze=/[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/,Te=/[a-z0-9_ -]$/i;function Ye(e){return function(t){if(t.type==="compositionend"||t.type==="change"){if(t.target.qComposing!==!0)return;t.target.qComposing=!1,e(t)}else t.type==="compositionupdate"&&t.target.qComposing!==!0&&typeof t.data=="string"&&(qe.is.firefox===!0?Te.test(t.data)===!1:Oe.test(t.data)===!0||De.test(t.data)===!0||ze.test(t.data)===!0)===!0&&(t.target.qComposing=!0)}}export{Ge as a,Qe as b,We as c,Je as d,Ee as e,Pe as f,Ye as g,Xe as h,Ke as i,Ne as r,Ze as u}; diff --git a/backend/internal/http/static/spa/assets/use-prevent-scroll-eZQDeoK_.js b/backend/internal/http/static/spa/assets/use-prevent-scroll-eZQDeoK_.js new file mode 100644 index 0000000..d0399c8 --- /dev/null +++ b/backend/internal/http/static/spa/assets/use-prevent-scroll-eZQDeoK_.js @@ -0,0 +1 @@ +import{j as O,k as $,l as C}from"./QBtn-AYMizH8c.js";import{z as q,x as B,A as F,P as M,Q as N,ae as W,D as p,S as c,L as _,af as j}from"./index-QUdrNkKl.js";const oe={modelValue:{type:Boolean,default:null},"onUpdate:modelValue":[Function,Array]},te=["beforeShow","show","beforeHide","hide"];function le({showing:e,canShow:o,hideOnRouteChange:r,handleShow:l,handleHide:i,processOnMount:w}){const n=F(),{props:s,emit:d,proxy:L}=n;let u;function k(t){e.value===!0?g(t):S(t)}function S(t){if(s.disable===!0||t?.qAnchorHandled===!0||o!==void 0&&o(t)!==!0)return;const f=s["onUpdate:modelValue"]!==void 0;f===!0&&(d("update:modelValue",!0),u=t,M(()=>{u===t&&(u=void 0)})),(s.modelValue===null||f===!1)&&V(t)}function V(t){e.value!==!0&&(e.value=!0,d("beforeShow",t),l!==void 0?l(t):d("show",t))}function g(t){if(s.disable===!0)return;const f=s["onUpdate:modelValue"]!==void 0;f===!0&&(d("update:modelValue",!1),u=t,M(()=>{u===t&&(u=void 0)})),(s.modelValue===null||f===!1)&&H(t)}function H(t){e.value!==!1&&(e.value=!1,d("beforeHide",t),i!==void 0?i(t):d("hide",t))}function x(t){s.disable===!0&&t===!0?s["onUpdate:modelValue"]!==void 0&&d("update:modelValue",!1):t===!0!==e.value&&(t===!0?V:H)(u)}q(()=>s.modelValue,x),r!==void 0&&O(n)===!0&&q(()=>L.$route.fullPath,()=>{r.value===!0&&e.value===!0&&g()}),w===!0&&B(()=>{x(s.modelValue)});const P={show:S,hide:g,toggle:k};return Object.assign(L,P),P}const re=[Element,String],D=[null,document,document.body,document.scrollingElement,document.documentElement];function ie(e,o){let r=$(o);if(r===void 0){if(e==null)return window;r=e.closest(".scroll,.scroll-y,.overflow-auto")}return D.includes(r)?window:r}function I(e){return e===window?window.pageYOffset||window.scrollY||document.body.scrollTop||0:e.scrollTop}function K(e){return e===window?window.pageXOffset||window.scrollX||document.body.scrollLeft||0:e.scrollLeft}let h;function ne(){if(h!==void 0)return h;const e=document.createElement("p"),o=document.createElement("div");C(e,{width:"100%",height:"200px"}),C(o,{position:"absolute",top:"0px",left:"0px",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),o.appendChild(e),document.body.appendChild(o);const r=e.offsetWidth;o.style.overflow="scroll";let l=e.offsetWidth;return r===l&&(l=o.clientWidth),o.remove(),h=r-l,h}function Q(e,o=!0){return!e||e.nodeType!==Node.ELEMENT_NODE?!1:o?e.scrollHeight>e.clientHeight&&(e.classList.contains("scroll")||e.classList.contains("overflow-auto")||["auto","scroll"].includes(window.getComputedStyle(e)["overflow-y"])):e.scrollWidth>e.clientWidth&&(e.classList.contains("scroll")||e.classList.contains("overflow-auto")||["auto","scroll"].includes(window.getComputedStyle(e)["overflow-x"]))}function se(e,o,r){let l;function i(){l!==void 0&&(W.remove(l),l=void 0)}return N(()=>{e.value===!0&&i()}),{removeFromHistory:i,addToHistory(){l={condition:()=>r.value===!0,handler:o},W.add(l)}}}let m=0,b,T,v,E=!1,A,X,Y,a=null;function R(e){G(e)&&_(e)}function G(e){if(e.target===document.body||e.target.classList.contains("q-layout__backdrop"))return!0;const o=j(e),r=e.shiftKey&&!e.deltaX,l=!r&&Math.abs(e.deltaX)<=Math.abs(e.deltaY),i=r||l?e.deltaY:e.deltaX;for(let w=0;w0&&n.scrollTop+n.clientHeight===n.scrollHeight:i<0&&n.scrollLeft===0?!0:i>0&&n.scrollLeft+n.clientWidth===n.scrollWidth}return!0}function z(e){e.target===document&&(document.scrollingElement.scrollTop=document.scrollingElement.scrollTop)}function y(e){E!==!0&&(E=!0,requestAnimationFrame(()=>{E=!1;const{height:o}=e.target,{clientHeight:r,scrollTop:l}=document.scrollingElement;(v===void 0||o!==window.innerHeight)&&(v=r-o,document.scrollingElement.scrollTop=l),l>v&&(document.scrollingElement.scrollTop-=Math.ceil((l-v)/8))}))}function U(e){const o=document.body,r=window.visualViewport!==void 0;if(e==="add"){const{overflowY:l,overflowX:i}=window.getComputedStyle(o);b=K(window),T=I(window),A=o.style.left,X=o.style.top,Y=window.location.href,o.style.left=`-${b}px`,o.style.top=`-${T}px`,i!=="hidden"&&(i==="scroll"||o.scrollWidth>window.innerWidth)&&o.classList.add("q-body--force-scrollbar-x"),l!=="hidden"&&(l==="scroll"||o.scrollHeight>window.innerHeight)&&o.classList.add("q-body--force-scrollbar-y"),o.classList.add("q-body--prevent-scroll"),document.qScrollPrevented=!0,p.is.ios===!0&&(r===!0?(window.scrollTo(0,0),window.visualViewport.addEventListener("resize",y,c.passiveCapture),window.visualViewport.addEventListener("scroll",y,c.passiveCapture),window.scrollTo(0,0)):window.addEventListener("scroll",z,c.passiveCapture))}p.is.desktop===!0&&p.is.mac===!0&&window[`${e}EventListener`]("wheel",R,c.notPassive),e==="remove"&&(p.is.ios===!0&&(r===!0?(window.visualViewport.removeEventListener("resize",y,c.passiveCapture),window.visualViewport.removeEventListener("scroll",y,c.passiveCapture)):window.removeEventListener("scroll",z,c.passiveCapture)),o.classList.remove("q-body--prevent-scroll"),o.classList.remove("q-body--force-scrollbar-x"),o.classList.remove("q-body--force-scrollbar-y"),document.qScrollPrevented=!1,o.style.left=A,o.style.top=X,window.location.href===Y&&window.scrollTo(b,T),v=void 0)}function J(e){let o="add";if(e===!0){if(m++,a!==null){clearTimeout(a),a=null;return}if(m>1)return}else{if(m===0||(m--,m>0))return;if(o="remove",p.is.ios===!0&&p.is.nativeMobile===!0){a!==null&&clearTimeout(a),a=setTimeout(()=>{U(o),a=null},100);return}}U(o)}function de(){let e;return{preventBodyScroll(o){o!==e&&(e!==void 0||o===!0)&&(e=o,J(o))}}}export{oe as a,le as b,se as c,de as d,I as e,K as f,ie as g,ne as h,re as s,te as u}; diff --git a/backend/internal/http/static/spa/assets/use-timeout-Jkrq6Sig.js b/backend/internal/http/static/spa/assets/use-timeout-Jkrq6Sig.js new file mode 100644 index 0000000..5663d7d --- /dev/null +++ b/backend/internal/http/static/spa/assets/use-timeout-Jkrq6Sig.js @@ -0,0 +1 @@ +import{v as u}from"./QBtn-AYMizH8c.js";import{a6 as i,Q as m,A as s}from"./index-QUdrNkKl.js";function f(){let e=null;const o=s();function t(){e!==null&&(clearTimeout(e),e=null)}return i(t),m(t),{removeTimeout:t,registerTimeout(n,r){t(),u(o)===!1&&(e=setTimeout(()=>{e=null,n()},r))}}}export{f as u}; diff --git a/backend/internal/http/static/spa/favicon.ico b/backend/internal/http/static/spa/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ae7bbdb712f8ce9fe49761b68ef3a2d4c51606f9 GIT binary patch literal 64483 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 literal 0 HcmV?d00001 diff --git a/backend/internal/http/static/spa/icons/favicon-128x128.png b/backend/internal/http/static/spa/icons/favicon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..14011761929f4ffbef81be318a347c0032eb6f42 GIT binary patch literal 12324 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 h$J#u>{O`^5_Frontend APP + +

\ No newline at end of file diff --git a/backend/internal/http/templates/password_reset.html.tmpl b/backend/internal/http/templates/password_reset.html.tmpl new file mode 100644 index 0000000..890dc7b --- /dev/null +++ b/backend/internal/http/templates/password_reset.html.tmpl @@ -0,0 +1,17 @@ + + + + + Recupero password + + +

Recupero password

+

Ciao {{.UserName}},

+

abbiamo ricevuto una richiesta di reset password per l'account {{.UserEmail}}.

+

Usa questo token per completare il reset:

+

{{.ResetToken}}

+

Oppure apri questo link:

+

{{.ResetURL}}

+

Il token scade tra 30 minuti. Se non hai richiesto il reset, ignora questa email.

+ + diff --git a/backend/internal/http/templates/password_reset.txt.tmpl b/backend/internal/http/templates/password_reset.txt.tmpl new file mode 100644 index 0000000..eb69da6 --- /dev/null +++ b/backend/internal/http/templates/password_reset.txt.tmpl @@ -0,0 +1,11 @@ +Ciao {{.UserName}}, + +abbiamo ricevuto una richiesta di reset password per l'account {{.UserEmail}}. + +Token reset: +{{.ResetToken}} + +Link reset: +{{.ResetURL}} + +Il token scade tra 30 minuti. Se non hai richiesto il reset, ignora questa email. diff --git a/backend/internal/http/templates/registration.html.tmpl b/backend/internal/http/templates/registration.html.tmpl new file mode 100644 index 0000000..1e03d73 --- /dev/null +++ b/backend/internal/http/templates/registration.html.tmpl @@ -0,0 +1,13 @@ + + + + + Registrazione completata + + +

Benvenuto su {{.AppName}}

+

Ciao {{.UserName}},

+

la registrazione per l'account {{.UserEmail}} e stata completata correttamente.

+

Se non hai richiesto tu questa registrazione, contatta subito il supporto.

+ + diff --git a/backend/internal/http/templates/registration.txt.tmpl b/backend/internal/http/templates/registration.txt.tmpl new file mode 100644 index 0000000..ddd5c0f --- /dev/null +++ b/backend/internal/http/templates/registration.txt.tmpl @@ -0,0 +1,5 @@ +Ciao {{.UserName}}, + +la registrazione per l'account {{.UserEmail}} su {{.AppName}} e stata completata correttamente. + +Se non hai richiesto tu questa registrazione, contatta subito il supporto. diff --git a/backend/internal/mail/service.go b/backend/internal/mail/service.go new file mode 100644 index 0000000..57164f1 --- /dev/null +++ b/backend/internal/mail/service.go @@ -0,0 +1,233 @@ +package mail + +import ( + "bytes" + "context" + "crypto/tls" + "fmt" + "html/template" + "net" + "net/smtp" + "os" + "path/filepath" + "strings" + texttemplate "text/template" + "time" +) + +type Config struct { + AppName string + Mode string + From string + DebugDir string + TemplatesDir string + FrontendBaseURL string + ResetPasswordPath string + SMTP SMTPConfig +} + +type SMTPConfig struct { + Host string + Port int + Username string + Password string +} + +type Message struct { + To string + Subject string + Template string + TemplateData any +} + +type Service struct { + cfg Config +} + +type TemplateData struct { + AppName string + UserName string + UserEmail string + ResetURL string + ResetToken string +} + +func New(cfg Config) (*Service, error) { + if cfg.Mode != "smtp" && cfg.Mode != "file" { + return nil, fmt.Errorf("unsupported mail mode %q", cfg.Mode) + } + if cfg.From == "" { + return nil, fmt.Errorf("mail sender is required") + } + if cfg.AppName == "" { + cfg.AppName = "Application" + } + if cfg.TemplatesDir == "" { + return nil, fmt.Errorf("mail templates directory is required") + } + if cfg.Mode == "file" { + if cfg.DebugDir == "" { + return nil, fmt.Errorf("mail debug directory is required") + } + if err := os.MkdirAll(cfg.DebugDir, 0o755); err != nil { + return nil, fmt.Errorf("create mail debug directory: %w", err) + } + } + if cfg.Mode == "smtp" { + if cfg.SMTP.Host == "" || cfg.SMTP.Port <= 0 { + return nil, fmt.Errorf("smtp host and port are required") + } + } + return &Service{cfg: cfg}, nil +} + +func (s *Service) Send(ctx context.Context, msg Message) error { + htmlBody, textBody, err := s.renderBodies(msg.Template, msg.TemplateData) + if err != nil { + return err + } + + rawMessage := buildMessage(s.cfg.From, msg.To, msg.Subject, textBody, htmlBody) + switch s.cfg.Mode { + case "smtp": + return s.sendSMTP(ctx, msg.To, rawMessage) + case "file": + return s.writeDebugMail(msg.To, msg.Subject, rawMessage) + default: + return fmt.Errorf("unsupported mail mode %q", s.cfg.Mode) + } +} + +func (s *Service) ResetLink(token string) string { + base := strings.TrimRight(s.cfg.FrontendBaseURL, "/") + path := s.cfg.ResetPasswordPath + if path == "" { + path = "/#reset-password" + } + if token == "" { + return base + path + } + if base == "" { + return path + "?token=" + token + } + return base + path + "?token=" + token +} + +func (s *Service) AppName() string { + return s.cfg.AppName +} + +func (s *Service) renderBodies(templateName string, data any) (string, string, error) { + htmlPath := filepath.Join(s.cfg.TemplatesDir, templateName+".html.tmpl") + textPath := filepath.Join(s.cfg.TemplatesDir, templateName+".txt.tmpl") + + htmlTpl, err := template.ParseFiles(htmlPath) + if err != nil { + return "", "", fmt.Errorf("parse html template %s: %w", htmlPath, err) + } + textTpl, err := texttemplate.ParseFiles(textPath) + if err != nil { + return "", "", fmt.Errorf("parse text template %s: %w", textPath, err) + } + + var htmlBuf bytes.Buffer + if err := htmlTpl.Execute(&htmlBuf, data); err != nil { + return "", "", fmt.Errorf("execute html template %s: %w", htmlPath, err) + } + var textBuf bytes.Buffer + if err := textTpl.Execute(&textBuf, data); err != nil { + return "", "", fmt.Errorf("execute text template %s: %w", textPath, err) + } + + return htmlBuf.String(), textBuf.String(), nil +} + +func buildMessage(from, to, subject, textBody, htmlBody string) []byte { + boundary := fmt.Sprintf("mixed-%d", time.Now().UnixNano()) + headers := []string{ + "MIME-Version: 1.0", + fmt.Sprintf("From: %s", from), + fmt.Sprintf("To: %s", to), + fmt.Sprintf("Subject: %s", subject), + fmt.Sprintf("Content-Type: multipart/alternative; boundary=%q", boundary), + "", + } + + body := []string{ + fmt.Sprintf("--%s", boundary), + "Content-Type: text/plain; charset=UTF-8", + "Content-Transfer-Encoding: 8bit", + "", + textBody, + fmt.Sprintf("--%s", boundary), + "Content-Type: text/html; charset=UTF-8", + "Content-Transfer-Encoding: 8bit", + "", + htmlBody, + fmt.Sprintf("--%s--", boundary), + "", + } + + return []byte(strings.Join(append(headers, body...), "\r\n")) +} + +func (s *Service) sendSMTP(ctx context.Context, to string, raw []byte) error { + addr := fmt.Sprintf("%s:%d", s.cfg.SMTP.Host, s.cfg.SMTP.Port) + dialer := &net.Dialer{} + conn, err := dialer.DialContext(ctx, "tcp", addr) + if err != nil { + return fmt.Errorf("dial smtp server: %w", err) + } + defer conn.Close() + + client, err := smtp.NewClient(conn, s.cfg.SMTP.Host) + if err != nil { + return fmt.Errorf("create smtp client: %w", err) + } + defer client.Close() + + if ok, _ := client.Extension("STARTTLS"); ok { + tlsCfg := &tls.Config{ServerName: s.cfg.SMTP.Host} + if err := client.StartTLS(tlsCfg); err != nil { + return fmt.Errorf("starttls: %w", err) + } + } + if s.cfg.SMTP.Username != "" { + auth := smtp.PlainAuth("", s.cfg.SMTP.Username, s.cfg.SMTP.Password, s.cfg.SMTP.Host) + if err := client.Auth(auth); err != nil { + return fmt.Errorf("smtp auth: %w", err) + } + } + if err := client.Mail(s.cfg.From); err != nil { + return fmt.Errorf("smtp mail from: %w", err) + } + if err := client.Rcpt(to); err != nil { + return fmt.Errorf("smtp rcpt to: %w", err) + } + wc, err := client.Data() + if err != nil { + return fmt.Errorf("smtp data: %w", err) + } + if _, err := wc.Write(raw); err != nil { + _ = wc.Close() + return fmt.Errorf("write smtp message: %w", err) + } + if err := wc.Close(); err != nil { + return fmt.Errorf("close smtp message: %w", err) + } + if err := client.Quit(); err != nil { + return fmt.Errorf("smtp quit: %w", err) + } + return nil +} + +func (s *Service) writeDebugMail(to, subject string, raw []byte) error { + safeRecipient := strings.NewReplacer("@", "_at_", "/", "_", "\\", "_", ":", "_", " ", "_").Replace(to) + filename := fmt.Sprintf("%d_%s.eml", time.Now().UnixNano(), safeRecipient) + path := filepath.Join(s.cfg.DebugDir, filename) + if err := os.WriteFile(path, raw, 0o644); err != nil { + return fmt.Errorf("write debug mail %s: %w", path, err) + } + _ = subject + return nil +} diff --git a/backend/internal/models/user.go b/backend/internal/models/user.go new file mode 100644 index 0000000..cda04c8 --- /dev/null +++ b/backend/internal/models/user.go @@ -0,0 +1,213 @@ +package models + +import ( + "time" + + "gorm.io/gorm" +) + +// UserRoles is stored as JSON array of strings. + +// Typescript: type +type UserRoles []string + +// Typescript: type +type UsersShort []UserShort + +type User struct { + ID int `json:"id" gorm:"primaryKey"` + Email string `json:"email" gorm:"uniqueIndex;size:255"` + Name string `json:"name" gorm:"size:255"` + Password string `json:"password" gorm:"size:255"` + Roles UserRoles `json:"roles" gorm:"type:text;serializer:json"` + Types UserTypes `json:"types" gorm:"type:text;serializer:json"` + Status UserStatus `json:"status" gorm:"type:text;default:'pending'"` + ActivatedAt *time.Time `json:"activatedAt" ts:"type=Date"` + UUID string `json:"uuid" gorm:"size:36"` + Details *UserDetails `json:"details" gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"` + Preferences *UserPreferences `json:"preferences" gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"` + Avatar *string `json:"avatar" gorm:"size:512"` + CreatedAt time.Time `json:"createdAt" ts:"type=Date"` + UpdatedAt time.Time `json:"updatedAt" ts:"type=Date"` + DeletedAt gorm.DeletedAt `json:"-" gorm:"index" ts:"type=Date"` +} + +// UserCreateInput captures the minimal payload to create a user. + +// Typescript: interface +type UserCreateInput struct { + Name string `json:"name" validate:"required,min=1,max=255"` + Email string `json:"email" validate:"required,email"` + Password string `json:"password" validate:"required,min=8,max=128"` + Roles UserRoles `json:"roles"` + Status UserStatus `json:"status"` + Types UserTypes `json:"types"` + Avatar *string `json:"avatar"` + Details *UserDetailsShort `json:"details" ` + Preferences *UserPreferencesShort `json:"preferences" ` +} + +// UserTypes is stored as JSON array (e.g. ["internal","external"]). +type UserTypes []string + +// UserShort is a lightweight representation of User without sensitive data. + +// Typescript: interface +type UserShort struct { + Email string `json:"email" ` + Name string `json:"name" ` + Roles UserRoles `json:"roles" ` + Status UserStatus `json:"status" ` + UUID string `json:"uuid" ` + Details *UserDetailsShort `json:"details" ` + Preferences *UserPreferencesShort `json:"preferences" ` + Avatar *string `json:"avatar" ` +} + +// ToUserShort maps a User to the lightweight view. +func ToUserShort(u *User) UserShort { + if u == nil { + return UserShort{} + } + return UserShort{ + Email: u.Email, + Name: u.Name, + Roles: u.Roles, + Status: u.Status, + UUID: u.UUID, + Details: ToUserDetailsShort(u.Details), + Preferences: ToUserPreferencesShort(u.Preferences), + Avatar: u.Avatar, + } +} + +// ToUserDetailsShort maps UserDetails to the short version. +func ToUserDetailsShort(d *UserDetails) *UserDetailsShort { + if d == nil { + return nil + } + return &UserDetailsShort{ + Title: d.Title, + FirstName: d.FirstName, + LastName: d.LastName, + Address: d.Address, + City: d.City, + ZipCode: d.ZipCode, + Country: d.Country, + Phone: d.Phone, + } +} + +// ToUserPreferencesShort maps UserPreferences to the short version. +func ToUserPreferencesShort(p *UserPreferences) *UserPreferencesShort { + if p == nil { + return nil + } + return &UserPreferencesShort{ + UseIdle: p.UseIdle, + IdleTimeout: p.IdleTimeout, + UseIdlePassword: p.UseIdlePassword, + IdlePin: p.IdlePin, + UseDirectLogin: p.UseDirectLogin, + UseQuadcodeLogin: p.UseQuadcodeLogin, + SendNoticesMail: p.SendNoticesMail, + Language: p.Language, + } +} + +// UserPreferences holds per-user settings stored as JSON. +type UserPreferences struct { + ID int `json:"id" gorm:"primaryKey"` + UserID int `json:"userId" gorm:"index"` + UseIdle bool `json:"useIdle"` + IdleTimeout int `json:"idleTimeout"` + UseIdlePassword bool `json:"useIdlePassword"` + IdlePin string `json:"idlePin"` + UseDirectLogin bool `json:"useDirectLogin"` + UseQuadcodeLogin bool `json:"useQuadcodeLogin"` + SendNoticesMail bool `json:"sendNoticesMail"` + Language string `json:"language"` + CreatedAt time.Time `json:"createdAt" ts:"type=Date"` + UpdatedAt time.Time `json:"updatedAt" ts:"type=Date"` +} + +// UserPreferences holds per-user settings stored as JSON. + +// Typescript: interface +type UserPreferencesShort struct { + UseIdle bool `json:"useIdle"` + IdleTimeout int `json:"idleTimeout"` + UseIdlePassword bool `json:"useIdlePassword"` + IdlePin string `json:"idlePin"` + UseDirectLogin bool `json:"useDirectLogin"` + UseQuadcodeLogin bool `json:"useQuadcodeLogin"` + SendNoticesMail bool `json:"sendNoticesMail"` + Language string `json:"language"` +} + +// UserDetails holds optional profile data. +type UserDetails struct { + ID int `json:"id" gorm:"primaryKey"` + UserID int `json:"userId" gorm:"index"` + Title string `json:"title"` + FirstName string `json:"firstName"` + LastName string `json:"lastName"` + Address string `json:"address"` + City string `json:"city"` + ZipCode string `json:"zipCode"` + Country string `json:"country"` + Phone string `json:"phone"` + CreatedAt time.Time `json:"createdAt" ts:"type=Date"` + UpdatedAt time.Time `json:"updatedAt" ts:"type=Date"` +} + +// UserDetails holds optional profile data. + +// Typescript: interface +type UserDetailsShort struct { + Title string `json:"title"` + FirstName string `json:"firstName"` + LastName string `json:"lastName"` + Address string `json:"address"` + City string `json:"city"` + ZipCode string `json:"zipCode"` + Country string `json:"country"` + Phone string `json:"phone"` +} + +// Session tracks logins with browser metadata. + +type Session struct { + ID int `json:"id" gorm:"primaryKey"` + UserID *int `json:"userId" gorm:"index"` + Username string `json:"username" gorm:"size:255"` + AccessTokenHash string `json:"-" gorm:"size:128;index"` + RefreshTokenHash string `json:"-" gorm:"size:128;index"` + ExpiresAt time.Time `json:"expiresAt" ts:"type=Date" gorm:"index"` + IPAddress string `json:"ipAddress" gorm:"size:64"` + UserAgent string `json:"userAgent" gorm:"size:512"` + CreatedAt time.Time `json:"createdAt" ts:"type=Date"` + UpdatedAt time.Time `json:"updatedAt" ts:"type=Date"` + DeletedAt gorm.DeletedAt `json:"-" gorm:"index" ` +} + +type PasswordResetToken struct { + ID int `json:"id" gorm:"primaryKey"` + UserID int `json:"userId" gorm:"index"` + TokenHash string `json:"-" gorm:"size:64;uniqueIndex"` + ExpiresAt time.Time `json:"expiresAt" ts:"type=Date" gorm:"index"` + UsedAt *time.Time `json:"usedAt" ts:"type=Date"` + CreatedAt time.Time `json:"createdAt" ts:"type=Date"` + UpdatedAt time.Time `json:"updatedAt" ts:"type=Date"` + DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` +} + +// UserStatus represents lifecycle state of a user. +type UserStatus string + +// Typescript: enum=UserStatus +const ( + UserStatusPending UserStatus = "pending" + UserStatusActive UserStatus = "active" + UserStatusDisabled UserStatus = "disabled" +) diff --git a/backend/internal/roles/main_roles.go b/backend/internal/roles/main_roles.go new file mode 100644 index 0000000..92863d6 --- /dev/null +++ b/backend/internal/roles/main_roles.go @@ -0,0 +1,26 @@ +package roles + +import ( + "log" + + "gorm.io/gorm" + + "server/internal/http/controllers" + "server/internal/models" +) + +func CheckUserRoleConsistency(db *gorm.DB, resolver *controllers.RoleResolver) { + var list []models.User + if err := db.Select("email", "roles").Find(&list).Error; err != nil { + log.Printf("warning: cannot verify user roles: %v", err) + return + } + + for _, u := range list { + for _, r := range u.Roles { + if !resolver.RoleDefined(r) { + log.Printf("inconsistency: user %s has undefined role %q", u.Email, r) + } + } + } +} diff --git a/backend/internal/seed/seed.go b/backend/internal/seed/seed.go new file mode 100644 index 0000000..f3b4f3a --- /dev/null +++ b/backend/internal/seed/seed.go @@ -0,0 +1,104 @@ +package seed + +import ( + "crypto/rand" + "encoding/hex" + "fmt" + "time" + + "github.com/brianvoe/gofakeit/v6" + "gorm.io/gorm" + + "server/internal/auth" + "server/internal/models" +) + +// Credential exposes the plaintext password generated for a seeded user. +type Credential struct { + Email string + Password string +} + +// SeedUsers generates n fake users and persists them. Returns the created slice. +func SeedUsers(db *gorm.DB, n int) ([]models.User, []Credential, error) { + if n <= 0 { + return nil, nil, fmt.Errorf("seed size must be greater than zero") + } + + gofakeit.Seed(time.Now().UnixNano()) + + items := make([]models.User, 0, n) + creds := make([]Credential, 0, n) + for i := 0; i < n; i++ { + now := time.Now().UTC() + uuid := gofakeit.UUID() + email := gofakeit.Email() + + pw, err := randomPassword() + if err != nil { + return nil, nil, fmt.Errorf("generate password: %w", err) + } + passwordHash, err := auth.HashPassword(pw) + if err != nil { + return nil, nil, fmt.Errorf("hash seed password: %w", err) + } + + item := models.User{ + Email: email, + Name: gofakeit.Name(), + Password: passwordHash, + Roles: models.UserRoles{"user"}, + Status: models.UserStatusActive, + Types: models.UserTypes{"internal"}, + UUID: uuid, + Details: &models.UserDetails{ + Title: gofakeit.JobTitle(), + FirstName: gofakeit.FirstName(), + LastName: gofakeit.LastName(), + Phone: gofakeit.Phone(), + Address: gofakeit.Street(), + City: gofakeit.City(), + ZipCode: gofakeit.Zip(), + Country: gofakeit.Country(), + }, + Preferences: &models.UserPreferences{ + UseIdle: gofakeit.Bool(), + IdleTimeout: gofakeit.Number(1, 30), + UseIdlePassword: gofakeit.Bool(), + IdlePin: gofakeit.DigitN(6), + UseDirectLogin: gofakeit.Bool(), + UseQuadcodeLogin: gofakeit.Bool(), + SendNoticesMail: gofakeit.Bool(), + Language: gofakeit.Language(), + }, + Avatar: nil, + CreatedAt: now, + UpdatedAt: now, + ActivatedAt: func() *time.Time { + ts := now + return &ts + }(), + } + + items = append(items, item) + creds = append(creds, Credential{ + Email: email, + Password: pw, + }) + } + + if err := db.Create(&items).Error; err != nil { + return nil, nil, fmt.Errorf("insert users: %w", err) + } + + return items, creds, nil +} + +func randomPassword() (string, error) { + buf := make([]byte, 12) + if _, err := rand.Read(buf); err != nil { + return "", err + } + // hex-encoded -> 24 characters. + return hex.EncodeToString(buf), nil +} diff --git a/backend/internal/tsgenerator/generator.go b/backend/internal/tsgenerator/generator.go new file mode 100644 index 0000000..b8468f0 --- /dev/null +++ b/backend/internal/tsgenerator/generator.go @@ -0,0 +1,80 @@ +package tsgenerator + +import ( + "bytes" + "errors" + "fmt" + "os" + "os/exec" + + "server/internal/config" + tsrpc "server/pkg/ts-rpc" +) + +func TsGenerate() (string, error) { + path := "GeneratedCode" + if _, err := os.Stat(path); errors.Is(err, os.ErrNotExist) { + err := os.Mkdir(path, os.ModePerm) + if err != nil { + return "", fmt.Errorf("create GeneratedCode directory: %w", err) + } + } + + var tsSource = tsrpc.GetTSSource(tsrpc.TSConfig{Url: "http://localhost:3000", TsApi: nil, Path: "."}) + + formatted, err1 := formatJS(tsSource) + if err1 != nil { + return "", err1 + } + + err := os.WriteFile("GeneratedCode/generatedTypescript.ts", []byte(formatted), 0644) + if err != nil { + return "", fmt.Errorf("write local generated typescript: %w", err) + } + + configPath := os.Getenv("CONFIG_PATH") + if configPath == "" { + configPath = "configs/config.json" + } + if _, err := config.LoadConfig(configPath); err != nil { + return "", fmt.Errorf("load config from %s: %w", configPath, err) + } + + frontendAPIPath := os.Getenv("FRONTEND_API_PATH") + if frontendAPIPath == "" { + return "", errors.New("FRONTEND_API_PATH must be set") + } + + fmt.Printf("Saving generated TypeScript to %s\n", frontendAPIPath) + + err = os.WriteFile(frontendAPIPath+"/api.ts", []byte(formatted), 0644) + if err != nil { + return "", fmt.Errorf("write frontend api.ts: %w", err) + } + + return formatted, nil +} + +func formatJS(src string) (string, error) { + // Se hai prettier globale: + cmd := exec.Command("prettier", "--parser", "typescript", "--use-tabs", "false", "--tab-width", "2") + + // Se hai prettier solo come devDependency: + // cmd := exec.Command("npx", "prettier", "--parser", "typescript") + + cmd.Stdin = bytes.NewBufferString(src) + + var out bytes.Buffer + var stderr bytes.Buffer + cmd.Stdout = &out + cmd.Stderr = &stderr + + err := cmd.Run() + if err != nil { + // Stampa anche lo stderr di Prettier, così vedi l’errore reale + return "", fmt.Errorf("prettier error: %v\nstderr: %s", err, stderr.String()) + } + + return out.String(), nil + +} diff --git a/backend/pkg/ts-rpc/.DS_Store b/backend/pkg/ts-rpc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7400aa40c7554d76a79996e31482a75e5a3651af GIT binary patch literal 6148 zcmeHKO>Yx15FMwX*|Zb|38Y?-R^l3!(x9S>OPVH!AU>pS1P4GRn++jivyQSGf>c$? z8U6!*fh)g+|H290*iN+BET|`hz*E`JYtQqH-`4Axh(u!=+$E|Ik%Pim+(MOOJkDj! z3Z~~eQ1Be>Q1<*#`grCEtyu-E0)MvxymyNfkfa{Pnf-f=vArM4)FPIC{wyAweg4%S zhr>A8-~T2G8^tS|C8y+UJFmRAa^@x7WEwZRlNbEdkuvlb?XLf9*q@zMZk)&{=?ld_rTno*?dpKJw$iW#@Zu5`{7vppPfnqya?QqY>&L zBh(j+r-fSh#x$kTs;{_}@h#CKYSRg|=m~k$%6M~{>6uH2-=!f%$OQRhyuW9>%XEr) zkEuzIft-6L^8&9fJ%5D~ioqBoMu+-fj44FK1nr!N@Fe=2`WM+z{1);Hz?3S}B$vsW zrI|W%i#~vp&{NFNq6z*aN={^@W13%9k=x+CQSWJ89o90<*j5Y=^#t#!2h5AZnx&AbsQPWAN$e71O7UqT`%*8{v%AG`Aqpht1R)JLoHuPhK&;J(o@GtKFt0enm6|f5Y zQwoS;(`z=cBy+Z|EsoDx7v(hy8~e>QDheud9IFN&#k(lVFy?XtST{J=h#r{zA)sWi Kl~v%6D)1ALIS-Kl literal 0 HcmV?d00001 diff --git a/backend/pkg/ts-rpc/LICENSE b/backend/pkg/ts-rpc/LICENSE new file mode 100644 index 0000000..0ad25db --- /dev/null +++ b/backend/pkg/ts-rpc/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/backend/pkg/ts-rpc/README.md b/backend/pkg/ts-rpc/README.md new file mode 100644 index 0000000..195288e --- /dev/null +++ b/backend/pkg/ts-rpc/README.md @@ -0,0 +1,54 @@ +# ts-rpc + +#### typescript RPC + +--- + +##### The ghost bridge from front-end to backend + +This project is a POC - Proof of concept. +The goal is to generate typescript code from golang using AST. +So you can use intellisense in the development IDE. + +## ![itellisense!](docs/intelliesense01.png "front end intellisense") + +--- + +[Golang types traslation](docs/TsGoTypes.md) + +[Typescript: TSDeclaration](docs/TsDeclaration.md) + +[Typescript: TStype](docs/TsType.md) + +[Typescript: interface](docs/TsInterface.md) +[Struct tags](docs/TsTags.md) + +[Typescript: TsEndpoint](docs/TsEndpoint.md) + +[Typescript: const](docs/TsConst.md) + +[Typescript: enum](docs/TsEnum.md) + +--- + +#### Server Examle + +[server examle](docs/TsExportEndpoints.md) + +--- + +#### Can I use it/contribute? + +Sure, but you should probably start your own from scratch. I built this in about one week and it was an interesting experience, I recommend you do the same. My goal was never to make good or reusable code, so it's neither good nor reusable. If you do decide to work on such a system, I would suggest adding the following: + +- Talk about ghost bridge over all the world +- Suggest some ideas +- Develop good reusable code +- Add tests, comments and GoDoc +- Be Happy + +#### Alright then... + +Cool. I'm on linkedin Golang nuts group https://www.linkedin.com/groups/3712244/ +My linkedin page: https://www.linkedin.com/in/fabio-prada-a9159b75/ +Discord channel #tsrpc: https://discord.com/channels/1046004205556617237/1046004333734531092 diff --git a/backend/pkg/ts-rpc/docs/TsConst.md b/backend/pkg/ts-rpc/docs/TsConst.md new file mode 100644 index 0000000..0fecc87 --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsConst.md @@ -0,0 +1,20 @@ +#### Typescript: const + +--- + +```typescript +// Typescript: const +const Timeout = 1000 +generate: +export const Timeout = 1000 + +// Typescript: const +const ( + One string = "one" + Cento int = 100 +) +generate: +export const One = "one" +export const Cento = 100 + +``` diff --git a/backend/pkg/ts-rpc/docs/TsDeclaration.md b/backend/pkg/ts-rpc/docs/TsDeclaration.md new file mode 100644 index 0000000..02d83ad --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsDeclaration.md @@ -0,0 +1,12 @@ +#### Typescript: TSDeclaration + +--- + +```typescript +// Typescript: TSDeclaration= Nullable = T | null; +// Typescript: TSDeclaration= Record = { [P in K]: T; } +// Typescript: TSDeclaration= MySecialArray = T[]; +generate: export type Nullable = T | null; +export type Record = { [P in K]: T }; +export type MySecialArray = T[]; +``` diff --git a/backend/pkg/ts-rpc/docs/TsEndpoint.md b/backend/pkg/ts-rpc/docs/TsEndpoint.md new file mode 100644 index 0000000..8dfa02e --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsEndpoint.md @@ -0,0 +1,37 @@ +#### Typescript: TSEndpoint + +--- + +```typescript + +// Typescript: TSEndpoint= path=/ping; name=ping; method=GET; response=string +r.GET("/ping", func(c *gin.Context) { + response := HTTPResponse{Data: "pong", Error: nil} + c.JSON(http.StatusOK, response) +}) +generate: +// Typescript: TSEndpoint= path=/ping; name=ping; method=GET; response=string +// server/server.go Line: 53 +export const ping = async ():Promise<{ data:string; error: Nullable }> => { + return await api.GET("/ping") as { data: string; error: Nullable }; +} + +// Typescript: TSEndpoint= path=/postTest; name=postTest; method=POST; request=FormRequest; response=FormResponse +r.POST("/postTest", func(c *gin.Context) { + var requestBody FormRequest + if err := c.BindJSON(&requestBody); err != nil { + response := HTTPResponse{Data: nil, Error: "wrongData"} + c.JSON(http.StatusOK, response) + } + response := HTTPResponse{Data: FormResponse{Test: fmt.Sprintf("%d", requestBody.Count)}, Error: nil} + c.JSON(http.StatusOK, response) +}) + +generate: + +// Typescript: TSEndpoint= path=/postTest; name=postTest; method=POST; request=FormRequest; response=FormResponse +// server/server.go Line: 73 +export const postTest = async (data: FormRequest):Promise<{ data:FormResponse; error: Nullable }> => { + return await api.POST("/postTest", data) as { data: FormResponse; error: Nullable }; +} +``` diff --git a/backend/pkg/ts-rpc/docs/TsEnum.md b/backend/pkg/ts-rpc/docs/TsEnum.md new file mode 100644 index 0000000..771db5a --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsEnum.md @@ -0,0 +1,58 @@ +#### Typescript: enum + +--- + +```typescript +type Direction int +// Typescript: enum=Direction +const ( + North Direction = iota + East + South + West +) +func (d Direction) String() string { + return [...]string{"North", "East", "South", "West"}[d] +} +generate: +export const EnumDirection = { +North: 0, +East: 1, +South: 2, +West: 3, +} as const +export type Direction = typeof EnumDirection[keyof typeof EnumDirection] + +type Season string +// Typescript: enum=Season +const ( + Summer Season = "summer" + Autumn = "autumn" + Winter = "winter" + Spring = "spring" +) +generate: +export const EnumSeason = { +Summer: "summer", +Autumn: "autumn", +Winter: "winter", +Spring: "spring", +} as const +export type Season = typeof EnumSeason[keyof typeof EnumSeason] + +// Typescript: enum=Test +const ( + A int = iota + B + C + D +) +generate: +export const EnumTest = { +A: 0, +B: 1, +C: 2, +D: 3, +} +export type Test = typeof EnumTest[keyof typeof EnumTest] +``` diff --git a/backend/pkg/ts-rpc/docs/TsExportEndpoints.md b/backend/pkg/ts-rpc/docs/TsExportEndpoints.md new file mode 100644 index 0000000..1acb28c --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsExportEndpoints.md @@ -0,0 +1,80 @@ +### Example of endpoint exportation + +golang declaration + +```golang +// Typescript: TSDeclaration= Nullable = T | null; +// Typescript: TSDeclaration= Record = { [P in K]: T; } + +// Typescript: interface +type HTTPResponse struct { + Data interface{} `json:"data"` + Error interface{} `json:"error"` +} + +// Typescript: interface +type FormRequest struct { + Req string `json:"req"` + Count int `json:"count"` +} + +// Typescript: interface +type FormResponse struct { + Test string `json:"test"` +} + +// Typescript: TSEndpoint= path=/postTest; name=postTest; method=POST; request=FormRequest; response=FormResponse +r.POST("/postTest", func(c *gin.Context) { + var requestBody FormRequest + if err := c.BindJSON(&requestBody); err != nil { + response := HTTPResponse{Data: nil, Error: "wrongData"} + c.JSON(http.StatusOK, response) + } + response := HTTPResponse{Data: FormResponse{Test: fmt.Sprintf("%d", requestBody.Count)}, Error: nil} + c.JSON(http.StatusOK, response) +}) +``` + +generated code + +```typescript +// +// namespace server +// + +export namespace server { + export interface FormRequest { + req: string; + count: number; + } + + export interface FormResponse { + test: string; + } + + export interface HTTPResponse { + data: unknown; + error: unknown; + } + + // Typescript: TSEndpoint= path=/postTest; name=postTest; method=POST; request=FormRequest; response=FormResponse + // server/server.go Line: 73 + export const postTest = async (data: FormRequest): Promise<{ data: FormResponse; error: Nullable }> => { + return (await api.POST("/postTest", data)) as { data: FormResponse; error: Nullable }; + }; +} +``` + +How to use in frontend + +```typescript +const input = { req: "some request", count: 456 }; +const { data, error } = await server.postTest(input); +if (!error) { + console.log(data); + result = data.test; +} +``` + +exported code template +[fetch template](./TsFetchTemplate.md) diff --git a/backend/pkg/ts-rpc/docs/TsFetchTemplate.md b/backend/pkg/ts-rpc/docs/TsFetchTemplate.md new file mode 100644 index 0000000..e35509a --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsFetchTemplate.md @@ -0,0 +1,429 @@ +# ts-rpc + +#### typescript fetch template + +--- + +```typescript +// +// {{.CreatedOn.Format "Jan 02, 2006 15:04:05 UTC" }} +// + +export interface ApiRestResponse { + data?: unknown; + error: string | null; +} + +class Api { + apiUrl: string; + localStorage: Storage | null; + + constructor(apiurl: string) { + this.apiUrl = apiurl; + this.localStorage = null; + } + + request(method: string, url: string, data: unknown, timeout = 7000, upload = false) { + return new Promise((resolve, reject) => { + let auth: string; + const headers: { [key: string]: string } = { + "Content-Type": upload ? "multipart/form-data" : "application/json", + "Cache-Control": "no-cache", + }; + if (this.localStorage) { + auth = localStorage.getItem("jwt-token") as string; + headers["Auth-Token"] = auth; + } + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + + let requestOptions: RequestInit = { + method: method, + body: data ? JSON.stringify(data) : undefined, + cache: "no-store", + mode: "cors", + credentials: "include", + headers: headers || {}, + signal: controller.signal, + }; + + if (upload) { + requestOptions = { + method: method, + body: data as FormData, + signal: controller.signal, + }; + } + + fetch(url, requestOptions) + .then((response) => { + if (!response.ok) { + const error = `api.error.${response.statusText}`; + throw error; + } else { + if (this.localStorage) { + const jwt = response.headers.get("Auth-Token"); + if (jwt) { + this.localStorage.setItem("jwt-token", jwt); + } + } + return response.json() as Promise; + } + }) + .then((data) => { + clearTimeout(timeoutId); + if (typeof data === "object" && data.hasOwnProperty("data") && data.hasOwnProperty("error")) { + const d: ApiRestResponse = data; + if (d.error) { + throw d.error; + } else { + resolve(d); + } + } else { + throw "api.error.wrongdatatype"; + } + }) + .catch((error) => { + clearTimeout(timeoutId); + if ((error as Error).toString() === "DOMException: The user aborted a request.") { + reject(new Error("api.error.timeouterror")); + return; + } + if ((error as Error).toString() === "TypeError: Failed to fetch") { + reject(new Error("api.error.connectionerror")); + return; + } + reject(error); + }); + }); + } + + processResult(url: string, result: ApiRestResponse): { data: unknown; error: string | null } { + if (typeof result.data !== "object") { + return { data: result.data, error: null }; + } else if (!result.data) { + result.data = {}; + } + return { data: result.data, error: null }; + } + + processError( + error: Error, + url: string + ): { + data: unknown; + error: string | null; + } { + if (error.message === "api.error.timeouterror") { + Object.defineProperty(error, "__api_error__", { + value: error.message, + writable: false, + }); + + return { data: null, error: error.message }; + } + if (error.message === "api.error.connectionerror") { + Object.defineProperty(error, "__api_error__", { + value: error.message, + writable: false, + }); + + return { data: null, error: error.message }; + } + + return { + data: null, + error: error.message, + }; + } + + async POST( + url: string, + + data: unknown, + timeout?: number + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + let upload = false; + if (url.includes("/upload/")) { + upload = true; + } + const result = (await this.request("POST", `${this.apiUrl}${url}`, data, timeout, upload)) as ApiRestResponse; + return this.processResult(url, result); + } catch (error) { + return new Promise<{ + data: unknown; + error: string | null; + }>(async (resolve) => { + let result = this.processError(error, `POST => ${this.apiUrl}${url}`); + resolve(result); + }); + } + } + + async GET( + url: string, + timeout?: number + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = (await this.request("GET", `${this.apiUrl}${url}`, null, timeout)) as ApiRestResponse; + return this.processResult(url, result); + } catch (error) { + return new Promise<{ + data: unknown; + error: string | null; + }>(async (resolve) => { + let result = this.processError(error, `GET => ${this.apiUrl}${url}`); + resolve(result); + }); + } + } + + async UPLOAD( + url: string, + data: unknown, + timeout?: number + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = (await this.request("POST", `${this.apiUrl}${url}`, data, timeout, true)) as ApiRestResponse; + return this.processResult(url, result); + } catch (error) { + return new Promise<{ + data: unknown; + error: string | null; + }>((resolve) => { + resolve(this.processError(error, `POST => ${this.apiUrl}${url}`)); + }); + } + } +} + +const api = new Api("{{ .Url}}"); +``` + +--- + +#### Golang template as constant + +_note_: incuded in source code +_note_: replce \` (backtick) inside \` (backtick) with \` + "\`" + \` + +```golang +package tsrpc + +const TsApiTemplate = ` +// +// {{.CreatedOn.Format "Jan 02, 2006 15:04:05 UTC" }} +// + +export interface ApiRestResponse { + data?: unknown; + error: string | null; + } + + class Api { + apiUrl: string; + localStorage: Storage | null; + + constructor(apiurl: string) { + this.apiUrl = apiurl; + this.localStorage = null; + } + + request(method: string, url: string, data: unknown, timeout = 7000, upload = false) { + return new Promise((resolve, reject) => { + let auth: string; + const headers: { [key: string]: string } = { + "Content-Type": upload ? "multipart/form-data" : "application/json", + "Cache-Control": "no-cache", + }; + if (this.localStorage) { + auth = localStorage.getItem("jwt-token") as string; + headers["Auth-Token"] = auth; + } + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + + let requestOptions: RequestInit = { + method: method, + body: data ? JSON.stringify(data) : undefined, + cache: "no-store", + mode: "cors", + credentials: "include", + headers: headers || {}, + signal: controller.signal, + }; + + if (upload) { + requestOptions = { + method: method, + body: data as FormData, + signal: controller.signal, + }; + } + + fetch(url, requestOptions) + .then((response) => { + if (!response.ok) { + const error = ` + "`" + `api.error.${response.statusText}` + "`" + `; + throw error; + } else { + if (this.localStorage) { + const jwt = response.headers.get("Auth-Token"); + if (jwt) { + this.localStorage.setItem("jwt-token", jwt); + } + } + return response.json() as Promise; + } + }) + .then((data) => { + clearTimeout(timeoutId); + if (typeof data === "object" && data.hasOwnProperty("data") && data.hasOwnProperty("error")) { + const d: ApiRestResponse = data; + if (d.error) { + throw d.error; + } else { + resolve(d); + } + } else { + throw "api.error.wrongdatatype"; + } + }) + .catch((error) => { + clearTimeout(timeoutId); + if ((error as Error).toString() === "DOMException: The user aborted a request.") { + reject(new Error("api.error.timeouterror")); + return; + } + if ((error as Error).toString() === "TypeError: Failed to fetch") { + reject(new Error("api.error.connectionerror")); + return; + } + reject(error); + }); + }); + } + + processResult(url: string, result: ApiRestResponse): { data: unknown; error: string | null } { + if (typeof result.data !== "object") { + return { data: result.data, error: null }; + } else if (!result.data) { + result.data = {}; + } + return { data: result.data, error: null }; + } + + processError( + error: Error, + url: string + ): { + data: unknown; + error: string | null; + } { + if (error.message === "api.error.timeouterror") { + Object.defineProperty(error, "__api_error__", { + value: error.message, + writable: false, + }); + + return { data: null, error: error.message }; + } + if (error.message === "api.error.connectionerror") { + Object.defineProperty(error, "__api_error__", { + value: error.message, + writable: false, + }); + + return { data: null, error: error.message }; + } + + return { + data: null, + error: error.message, + }; + } + + async POST( + url: string, + + data: unknown, + timeout?: number + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + let upload = false; + if (url.includes("/upload/")) { + upload = true; + } + const result = (await this.request("POST", ` + "`" + `${this.apiUrl}${url}` + "`" + `, data, timeout, upload)) as ApiRestResponse; + return this.processResult(url, result); + } catch (error) { + return new Promise<{ + data: unknown; + error: string | null; + }>(async (resolve) => { + let result = this.processError(error, ` + "`" + `POST => ${this.apiUrl}${url}` + "`" + `); + resolve(result); + }); + } + } + + async GET( + url: string, + timeout?: number + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = (await this.request("GET", ` + "`" + `${this.apiUrl}${url}` + "`" + `, null, timeout)) as ApiRestResponse; + return this.processResult(url, result); + } catch (error) { + return new Promise<{ + data: unknown; + error: string | null; + }>(async (resolve) => { + let result = this.processError(error, ` + "`" + `GET => ${this.apiUrl}${url}` + "`" + `); + resolve(result); + }); + } + } + + async UPLOAD( + url: string, + data: unknown, + timeout?: number + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = (await this.request("POST", ` + "`" + `${this.apiUrl}${url}` + "`" + `, data, timeout, true)) as ApiRestResponse; + return this.processResult(url, result); + } catch (error) { + return new Promise<{ + data: unknown; + error: string | null; + }>((resolve) => { + resolve(this.processError(error, ` + "`" + `POST => ${this.apiUrl}${url}` + "`" + `)); + }); + } + } + } + + const api = new Api("{{ .Url}}"); +` + +``` diff --git a/backend/pkg/ts-rpc/docs/TsGoTypes.md b/backend/pkg/ts-rpc/docs/TsGoTypes.md new file mode 100644 index 0000000..42c9c9e --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsGoTypes.md @@ -0,0 +1,30 @@ +#### golang types traslation: + +--- + +typescript number: + +- uint8 +- uint16 +- uint32 +- uint64 +- uint +- int8 +- int16 +- int32 +- int64 +- int +- float32 +- float64 + +typescript boolean: + +- bool + +typescript string: + +- string + +typescript unknown: + +- interface{} diff --git a/backend/pkg/ts-rpc/docs/TsInterface.md b/backend/pkg/ts-rpc/docs/TsInterface.md new file mode 100644 index 0000000..af45463 --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsInterface.md @@ -0,0 +1,65 @@ +#### Typescript: interface + +--- + +```typescript +// Typescript: interface +type HTTPResponse struct { + Data interface{} `json:"data"` + Error interface{} `json:"error"` +} +generate: +export interface HTTPResponse { + data: unknown; + error: unknown; +} + +// Typescript: interface +type FormRequest struct { + Req string `json:"req"` + Count int `json:"count"` +} +generate: +export interface FormRequest { + req: string; + count: number; +} + +// Typescript: interface +type FormResponse struct { + Test string `json:"test"` +} +generate: +export interface FormResponse { + test: string; +} + +// Typescript: interface +type FormResponse2 struct { + Test string `json:"test"` + User string `json:"user,omitempty"` +} +generate: +export interface FormResponse2 { + test: string; + user?: string +} + + +// Typescript: interface +type FormResponse3 struct { + FormRequest `ts:"expand"` + Test string `json:"test"` + User string `json:"user,omitempty"` + Time time.Time `json:"time" ts:"type=Date"` +} +generate: +export interface FormResponse3 { + req: string; + count: number; + test: string; + user?: string; + time: Date; +} + +``` diff --git a/backend/pkg/ts-rpc/docs/TsTags.md b/backend/pkg/ts-rpc/docs/TsTags.md new file mode 100644 index 0000000..209b743 --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsTags.md @@ -0,0 +1,14 @@ +#### Struct field tags + +--- + +```typescript + +tag `json:"fieldName"` this tag is manatory +tag `json:"-"` the field is not exported +tag `json:"fieldName,omitempty"` generate fieldName?: ("the props can be undefined") + +tag `ts:"expand"` generate the golang composition in the interface +tag `ts:"type=Date"` force to use the type Date +tag `ts:"type=WhatEverYouWant"` force to use the type WhatEverYouWant +``` diff --git a/backend/pkg/ts-rpc/docs/TsType.md b/backend/pkg/ts-rpc/docs/TsType.md new file mode 100644 index 0000000..dcedf8a --- /dev/null +++ b/backend/pkg/ts-rpc/docs/TsType.md @@ -0,0 +1,32 @@ +#### Typescript: TStype + +--- + +```typescript +// Typescript: TStype= MyType = number +generate: +export type MyType = number + +// examples +// Typescript: type +type TestType []int +generate: +export type TestType = number[] + + +// Typescript: type +type TestTypeMap map[string]map[int]string +generate: +export type TestTypeMap = Record>> + + +// Typescript: type=Date +type TestTypeTime time.Time +generate: +export type TestTypeTime = Date + +// typescript: type +type TestNullable *string +generate: +export type TestNullable = Nullable +``` diff --git a/backend/pkg/ts-rpc/docs/intelliesense01.png b/backend/pkg/ts-rpc/docs/intelliesense01.png new file mode 100644 index 0000000000000000000000000000000000000000..7d872f09ab354b05c01534311c6871c61fb7e284 GIT binary patch literal 148306 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 WGfkVkulxe|BX?ivUhZ9^=l=!4_;j2A literal 0 HcmV?d00001 diff --git a/backend/pkg/ts-rpc/tsApiTemplate.go b/backend/pkg/ts-rpc/tsApiTemplate.go new file mode 100644 index 0000000..d3d0357 --- /dev/null +++ b/backend/pkg/ts-rpc/tsApiTemplate.go @@ -0,0 +1,219 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +const TsApiTemplate = ` +// +// Typescript API generated from gofiber backend +// Copyright (C) 2022 - 2025 Fabio Prada +// +// This file was generated by github.com/millevolte/ts-rpc +// +// {{.CreatedOn.Format "Jan 02, 2006 15:04:05 UTC" }} +// + +export interface ApiRestResponse { + data?: unknown; + error: string | null; +} + +function isApiRestResponse(data: unknown): data is ApiRestResponse { + return ( + typeof data === 'object' && + data !== null && + Object.prototype.hasOwnProperty.call(data, 'data') && + Object.prototype.hasOwnProperty.call(data, 'error') + ); +} + +function normalizeError(error: unknown): Error { + if (error instanceof DOMException && error.name === 'AbortError') { + return new Error('api.error.timeouterror'); + } + + if (error instanceof TypeError && error.message === 'Failed to fetch') { + return new Error('api.error.connectionerror'); + } + + if (error instanceof Error) { + return error; + } + + return new Error(String(error)); +} + +export default class Api { + apiUrl: string; + localStorage: Storage | null; + + constructor(apiurl: string) { + this.apiUrl = apiurl; + this.localStorage = window.localStorage; + } + + async request( + method: string, + url: string, + data: unknown, + timeout = 7000, + upload = false, + ): Promise { + const headers: { [key: string]: string } = { + 'Cache-Control': 'no-cache', + }; + + if (!upload) { + headers['Content-Type'] = 'application/json'; + } + + if (this.localStorage) { + const auth = this.localStorage.getItem('Auth-Token'); + if (auth) { + headers['Auth-Token'] = auth; + } + } + + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + const requestOptions: RequestInit = { + method, + cache: 'no-store', + mode: 'cors', + credentials: 'include', + headers, + signal: controller.signal, + }; + + if (upload) { + requestOptions.body = data as FormData; + } else if (data !== null && data !== undefined) { + requestOptions.body = JSON.stringify(data); + } + + try { + const response = await fetch(url, requestOptions); + + if (!response.ok) { + throw new Error('api.error.' + response.statusText); + } + + if (this.localStorage) { + const jwt = response.headers.get('Auth-Token'); + if (jwt) { + this.localStorage.setItem('Auth-Token', jwt); + } + } + + const responseData = (await response.json()) as unknown; + if (!isApiRestResponse(responseData)) { + throw new Error('api.error.wrongdatatype'); + } + + if (responseData.error) { + throw new Error(responseData.error); + } + + return responseData; + } catch (error: unknown) { + throw normalizeError(error); + } finally { + clearTimeout(timeoutId); + } + } + + processResult(result: ApiRestResponse): { data: unknown; error: string | null } { + if (typeof result.data !== 'object') { + return { data: result.data, error: null }; + } + + if (!result.data) { + result.data = {}; + } + + return { data: result.data, error: null }; + } + + processError(error: unknown): { + data: unknown; + error: string | null; + } { + const normalizedError = normalizeError(error); + + if (normalizedError.message === 'api.error.timeouterror') { + Object.defineProperty(normalizedError, '__api_error__', { + value: normalizedError.message, + writable: false, + }); + + return { data: null, error: normalizedError.message }; + } + + if (normalizedError.message === 'api.error.connectionerror') { + Object.defineProperty(normalizedError, '__api_error__', { + value: normalizedError.message, + writable: false, + }); + + return { data: null, error: normalizedError.message }; + } + + return { + data: null, + error: normalizedError.message, + }; + } + + async POST( + url: string, + data: unknown, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const upload = url.includes('/upload/'); + const result = await this.request('POST', this.apiUrl + url, data, timeout, upload); + + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } + + async GET( + url: string, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = await this.request('GET', this.apiUrl + url, null, timeout); + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } + + async UPLOAD( + url: string, + data: unknown, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = await this.request('POST', this.apiUrl + url, data, timeout, true); + + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } +} + +const api = new Api('{{ .APIURL }}'); +` diff --git a/backend/pkg/ts-rpc/tsEndpoint.go b/backend/pkg/ts-rpc/tsEndpoint.go new file mode 100644 index 0000000..e4c16b7 --- /dev/null +++ b/backend/pkg/ts-rpc/tsEndpoint.go @@ -0,0 +1,200 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "bytes" + "fmt" + "strings" + "text/template" +) + +type TSEndpoint struct { + Name string + Path string + Method string + Request string + Response string + RequestTs string + ResponseTs string + Source string + File string + Line int +} + +func ParseEndpoint(source string, file string, line int) TSEndpoint { + p := strings.Index(source, "TSEndpoint=") + s := strings.Trim(source[p+len("TSEndpoint="):], " ") + a := strings.Split(s, ";") + n := 0 + endpoint := TSEndpoint{} + endpoint.Source = strings.Trim(source, "\t") + endpoint.File = file + endpoint.Line = line + + for _, v := range a { + t := strings.Split(v, "=") + if len(t) < 2 || strings.Trim(t[1], " ") == "" { + exitOnError(fmt.Errorf("worong endpoint: %s", s)) + } + if len(t) == 2 { + switch strings.Trim(t[0], " ") { + case "path": + n++ + endpoint.Path = strings.Trim(t[1], " ") + case "method": + n++ + endpoint.Method = strings.Trim(t[1], " ") + case "name": + n++ + endpoint.Name = strings.Trim(t[1], " ") + case "request": + n++ + endpoint.Request = strings.Trim(t[1], " ") + case "response": + n++ + endpoint.Response = strings.Trim(t[1], " ") + } + } else { + exitOnError(fmt.Errorf("wrong endpoint props: %s", s)) + } + } + + if endpoint.Method != "POST" && endpoint.Method != "GET" { + exitOnError(fmt.Errorf("wrong endpoint method: %s", s)) + } + + if endpoint.Method == "GET" && n < 4 { + exitOnError(fmt.Errorf("wrong endpoint number of props: %s", s)) + } + if endpoint.Method == "POST" && n < 5 { + exitOnError(fmt.Errorf("wrong endpoint number of props: %s", s)) + } + + return endpoint +} + +type tplData struct { + E *TSEndpoint + Path string + Params []string +} + +func (e *TSEndpoint) VerifyTypes(info TSInfo, p string) { + a := strings.Split(e.Request, ".") + if e.Request != "" { + if len(a) == 2 { + e.RequestTs = a[1] + if strings.HasPrefix(a[1], "[]") { + a[1] = strings.TrimPrefix(a[1], "[]") + e.RequestTs = fmt.Sprintf("%s[]", a[1]) + } + if strings.HasPrefix(a[1], "*") { + a[1] = strings.TrimPrefix(a[1], "*") + e.RequestTs = fmt.Sprintf("Nullable<%s>", a[1]) + } + e.Request = fmt.Sprintf("%s.%s", a[0], a[1]) + if !info.find(a[0], a[1]) { + exitOnError(fmt.Errorf("endpoint request not found: %s AT %s Line: %d ", e.Request, e.File, e.Line)) + } + info.setTypescript(a[0], a[1], true) + } + if len(a) == 1 { + e.RequestTs = a[0] + if strings.HasPrefix(a[0], "[]") { + a[0] = strings.TrimPrefix(a[0], "[]") + e.RequestTs = fmt.Sprintf("%s[]", a[0]) + } + if strings.HasPrefix(a[0], "*") { + a[0] = strings.TrimPrefix(a[0], "*") + e.RequestTs = fmt.Sprintf("Nullable<%s>", a[0]) + } + e.Request = a[0] + } + } + a = strings.Split(e.Response, ".") + if len(a) == 2 { + if !info.find(a[0], a[1]) { + exitOnError(fmt.Errorf("endpoint response not found: %s AT %s Line: %d ", e.Request, e.File, e.Line)) + } + e.ResponseTs = a[1] + if strings.HasPrefix(a[1], "[]") { + a[1] = strings.TrimPrefix(a[1], "[]") + e.ResponseTs = fmt.Sprintf("%s[]", a[1]) + } + if strings.HasPrefix(a[1], "*") { + a[1] = strings.TrimPrefix(a[1], "*") + e.ResponseTs = fmt.Sprintf("Nullable<%s>", a[1]) + } + e.Response = fmt.Sprintf("%s.%s", a[0], a[1]) + } + if len(a) == 1 { + e.ResponseTs = a[0] + if strings.HasPrefix(a[0], "[]") { + a[0] = strings.TrimPrefix(a[0], "[]") + e.ResponseTs = fmt.Sprintf("%s[]", a[0]) + } + if strings.HasPrefix(a[0], "*") { + a[0] = strings.TrimPrefix(a[0], "*") + e.ResponseTs = fmt.Sprintf("Nullable<%s>", a[0]) + } + e.Response = a[0] + } + +} + +func (e *TSEndpoint) ToTs(pkg string) string { + data := tplData{E: e, Path: e.Path, Params: []string{}} + tpl := ` +{{ .E.Source }} +// {{ .E.File }} Line: {{ .E.Line }} +{{if eq .E.Method "GET"}}export const {{ .E.Name}} = async ({{range $v := .Params}}{{$v}}{{end}}):Promise<{ data:{{.E.ResponseTs}}; error: Nullable }> => { + return await api.GET({{ .Path}}) as { data: {{ .E.ResponseTs}}; error: Nullable }; +}{{end}}{{if eq .E.Method "POST"}}export const {{ .E.Name}} = async (data: {{ .E.RequestTs}}):Promise<{ data:{{.E.ResponseTs}}; error: Nullable }> => { + return await api.POST("{{ .Path}}", data) as { data: {{ .E.ResponseTs}}; error: Nullable }; +}{{end}}` + + if e.Method == "GET" { + a := strings.Split(e.Path, "/") + c := "" + f := false + for _, v := range a { + if len(v) == 0 { + continue + } + prefix := v[0:1] + + if f { + c = ", " + } + + if prefix == ":" { + f = true + data.Params = append(data.Params, fmt.Sprintf("%s%s: string", c, v[1:])) + data.Path = strings.Replace(data.Path, v, fmt.Sprintf("${%s}", v[1:]), 1) + } else if prefix == "*" { + f = true + data.Params = append(data.Params, fmt.Sprintf("%s%s: Nullable", c, v[1:])) + data.Path = strings.Replace(data.Path, v, fmt.Sprintf("${%s}", v[1:]), 1) + } + } + if len(data.Params) > 0 { + data.Path = fmt.Sprintf("`%s`", data.Path) + } else { + data.Path = fmt.Sprintf("\"%s\"", data.Path) + } + } + + t, err := template.New("test").Parse(tpl) + if err != nil { + panic(err) + } + var result bytes.Buffer + err = t.Execute(&result, data) + if err != nil { + panic(err) + } + + return result.String() +} diff --git a/backend/pkg/ts-rpc/tsExitOnError.go b/backend/pkg/ts-rpc/tsExitOnError.go new file mode 100644 index 0000000..bb6bc28 --- /dev/null +++ b/backend/pkg/ts-rpc/tsExitOnError.go @@ -0,0 +1,14 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "fmt" + "os" +) + +func exitOnError(err error) { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + //os.Exit(1) +} diff --git a/backend/pkg/ts-rpc/tsInfo.go b/backend/pkg/ts-rpc/tsInfo.go new file mode 100644 index 0000000..3227d80 --- /dev/null +++ b/backend/pkg/ts-rpc/tsInfo.go @@ -0,0 +1,423 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "fmt" + "go/ast" + "go/doc" + "go/parser" + "go/token" + "log" + "os" + "path/filepath" + "strings" +) + +type TSInfoPakage struct { + structs map[string]TSStruct + types map[string]TSType + enums map[string]TSEnum + consts map[string]TSConst + decs map[string]TSDec + endpoints map[string]TSEndpoint +} + +type TSDec struct { + Name string + Value string + SourceInfo string +} + +type TSType struct { + Name string + Type string + TsType string + Typescript bool + dependOn bool + SourceInfo string +} + +type TSInfo struct { + Packages map[string]TSInfoPakage +} + +type TSConst struct { + Name string + Value string +} + +type TSEnum struct { + Name string + Info []TSEnumInfo +} + +type TSEnumInfo struct { + Key string + Value string +} + +// / exporter +type TSModuleInfo struct { + structs map[string]string + types map[string]string +} + +type TSSourceLine struct { + Pos int + End int + Line int + Source string +} + +type TSSourceFile struct { + Source string + Name string + Lines []TSSourceLine + Len int +} + +func (ts *TSInfo) findStruct(p string, n string) bool { + + if _, ok := ts.Packages[p]; ok { + if n == "" || IsNativeType(n) { + return true + } + n = strings.TrimPrefix(n, "[]") + n = strings.TrimPrefix(n, "*") + if _, ok := ts.Packages[p].structs[n]; ok { + return true + } + } + return false +} + +func (ts *TSInfo) findType(p string, n string) bool { + if _, ok := ts.Packages[p]; ok { + if n == "" || IsNativeType(n) { + return true + } + n = strings.TrimPrefix(n, "[]") + n = strings.TrimPrefix(n, "*") + if _, ok := ts.Packages[p].types[n]; ok { + return true + } + } + return false +} + +func (ts TSInfo) setTypescript(p string, n string, v bool) bool { + if !ts.findStruct(p, n) { + return false + } + if s, ok := ts.Packages[p].structs[n]; ok { + s.Typescript = v + ts.Packages[p].structs[n] = s // write back + return true + } + + return false +} + +func (ts TSInfo) find(p string, n string) bool { + return ts.findType(p, n) || ts.findStruct(p, n) +} + +// popola TsInfo con tutte le definizioni dei tipi + +func (i *TSInfo) getConst(p string, c *doc.Value, src []TSSourceFile) { + var isTypescript = strings.HasPrefix(c.Doc, "Typescript:") + if isTypescript { + command := strings.TrimPrefix(c.Doc, "Typescript:") + command = strings.TrimSpace(command) + command = strings.Trim(command, "\n") + + if strings.Contains(command, "enum=") { + enumName := strings.TrimPrefix(command, "enum=") + enum := TSEnum{ + Name: enumName, + Info: []TSEnumInfo{}, + } + d := c.Decl + iota := false + iotaValue := 0 + for _, s := range d.Specs { + v := s.(*ast.ValueSpec) // safe because decl.Tok == token.CONST + if len(v.Values) > 0 { + be, ok := v.Values[0].(*ast.BinaryExpr) + if ok { + x := be.X.(*ast.BasicLit) + exitOnError(fmt.Errorf("enum binary expression not implemented %s %s %s AT: %s", x.Value, be.Op.String(), be.Y, getSourceInfo(int(x.ValuePos), src))) + } + ident, ok := v.Values[0].(*ast.Ident) + if ok { + if ident.Name == "iota" { + iota = true + iotaValue = v.Names[0].Obj.Data.(int) + enum.Info = append(enum.Info, TSEnumInfo{Key: v.Names[0].Name, Value: fmt.Sprintf("%d", iotaValue)}) + } + } + list, ok := v.Values[0].(*ast.BasicLit) + if ok { + enum.Info = append(enum.Info, TSEnumInfo{Key: v.Names[0].Name, Value: list.Value}) + } + } else { + for _, name := range v.Names { + if iota { + iotaValue++ + enum.Info = append(enum.Info, TSEnumInfo{Key: name.Name, Value: fmt.Sprintf("%d", iotaValue)}) + } + + } + } + } + i.Packages[p].enums[enumName] = enum + t1 := TSType{ + Name: enumName, + Typescript: true, + Type: "", + TsType: fmt.Sprintf("typeof Enum%s[keyof typeof Enum%s] ", enumName, enumName), //getFieldTsInfo(expr.Type), + dependOn: false, + SourceInfo: "", + } + i.Packages[p].types[enumName] = t1 + } + + if strings.Contains(command, "const") { + d := c.Decl + for _, s := range d.Specs { + v := s.(*ast.ValueSpec) + if len(v.Names) == 0 || len(v.Values) == 0 { + continue + } + c := TSConst{ + Name: v.Names[0].Name, + Value: v.Values[0].(*ast.BasicLit).Value, + } + i.Packages[p].consts[c.Name] = c + } + } + + } +} + +func (i *TSInfo) getType(p string, t *doc.Type, src []TSSourceFile) { + var isType = t.Decl.Tok == token.TYPE && t.Doc == "" + var isTypescript = strings.HasPrefix(t.Doc, "Typescript:") + command := "" + param := "" + if isTypescript { + //fmt.Println(t.Doc) + command = strings.TrimPrefix(t.Doc, "Typescript:") + command = strings.TrimSpace(command) + command = strings.Trim(command, "\n") + + if strings.Contains(command, "=") { + a := strings.Split(command, "=") + if len(a) == 2 { + param = a[1] + } + command = strings.Trim(a[0], " ") + } + } + if isType { + //fmt.Println(t.Doc) + command = "interface" + } + for _, spec := range t.Decl.Specs { + if len(t.Consts) > 0 { + i.getConst(p, t.Consts[0], src) + continue + } + switch spec.(type) { + case *ast.TypeSpec: + typeSpec := spec.(*ast.TypeSpec) + switch typeSpec.Type.(type) { + case *ast.StructType: + if (isTypescript || isType) && command != "interface" { + exitOnError(fmt.Errorf("mismatch delaration for interface %s AT: %s", t.Doc, getSourceInfo(int(typeSpec.Name.NamePos), src))) + } + v := TSStruct{ + Name: typeSpec.Name.Name, + Typescript: isTypescript, + Fields: []TSSField{}, + SourceInfo: getSourceInfo(int(typeSpec.Name.NamePos), src), + } + v.getStruct(typeSpec, src) + i.Packages[p].structs[typeSpec.Name.Name] = v + default: + if isTypescript && command != "type" { + exitOnError(fmt.Errorf("mismatch delaration for type %s AT: %s", t.Doc, getSourceInfo(int(typeSpec.Name.NamePos), src))) + } + tsInfo := getFieldTsInfo(typeSpec.Type) + if command == "type" && param != "" { + tsInfo = param + } + t := TSType{ + Name: typeSpec.Name.Name, + Typescript: isTypescript, + Type: getFieldInfo(typeSpec.Type), + TsType: tsInfo, + dependOn: toBeImported(typeSpec.Type), + SourceInfo: getSourceInfo(int(typeSpec.Name.NamePos), src), + } + //fmt.Printf("Type found: %s Type: %s TsType: %s AT: %s\n", t.Name, t.Type, t.TsType, t.SourceInfo) + i.Packages[p].types[typeSpec.Name.Name] = t + } + } + } +} + +func (i *TSInfo) Populate(path string) { + i.Packages = make(map[string]TSInfoPakage) + err := filepath.Walk(path, + func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if info.IsDir() { + fset := token.NewFileSet() + packages, err := parser.ParseDir(fset, path, nil, parser.ParseComments) + + if err != nil { + exitOnError(err) + } + + for pkg, f := range packages { + if _, ok := i.Packages[pkg]; !ok { + i.Packages[pkg] = TSInfoPakage{structs: make(map[string]TSStruct), types: make(map[string]TSType), enums: make(map[string]TSEnum), consts: make(map[string]TSConst), decs: make(map[string]TSDec), endpoints: make(map[string]TSEndpoint)} + } + if pkg == "typescript" || pkg == "tsrpc" { + continue + } + + var src = []TSSourceFile{} + for n := range f.Files { + + dat, err := os.ReadFile(n) + if err == nil { + lines := []TSSourceLine{} + pos := 0 + line := 1 + for p, k := range dat { + if string(k) == "\n" { + l := TSSourceLine{ + Pos: pos, + End: p, + Line: line, + Source: string(dat[pos:p]), + } + lines = append(lines, l) + pos = p + 1 + line++ + if strings.Contains(l.Source, "// Typescript:") { + + if strings.Contains(l.Source, "TStype=") { + p := strings.Index(l.Source, "TStype=") + s := strings.Trim(l.Source[p+len("TStype="):], " ") + a := strings.Split(s, "=") + if len(a) == 2 { + t := TSType{ + Name: strings.Trim(a[0], " "), + Typescript: true, + Type: "UserDefined", + TsType: strings.Trim(a[1], " "), + dependOn: false, + SourceInfo: getSourceInfo(int(l.Pos), src), + } + i.Packages[pkg].types[strings.Trim(a[0], " ")] = t + } + + } + if strings.Contains(l.Source, "TSDeclaration=") { + p := strings.Index(l.Source, "TSDeclaration=") + s := strings.Trim(l.Source[p+len("TSDeclaration="):], " ") + a := strings.Split(s, "=") + if len(a) == 2 { + t := TSDec{ + Name: strings.Trim(a[0], " "), + Value: strings.Trim(a[1], " "), + SourceInfo: getSourceInfo(int(l.Pos), src), + } + i.Packages[pkg].decs[strings.Trim(a[0], " ")] = t + } + } + + if strings.Contains(l.Source, "TSEndpoint= ") { + e := ParseEndpoint(l.Source, n, l.Line) + if _, ok := i.Packages[pkg].endpoints[e.Name]; ok { + exitOnError(fmt.Errorf("enpoint name %s allready in use: %s", e.Name, l.Source)) + } + + i.Packages[pkg].endpoints[e.Name] = e + } + + } + + } + } + s := TSSourceFile{ + Name: n, + Source: string(dat), + Len: len(dat), + Lines: lines, + } + src = append(src, s) + } + } + + p := doc.New(f, "./", 0) + + for _, t := range p.Types { + i.getType(pkg, t, src) + } + + for _, c := range p.Consts { + i.getConst(pkg, c, src) + } + } + } + return nil + }) + if err != nil { + log.Fatal(err) + } +} + +func (ts *TSInfo) findAvailableStruct(n string) (TSStruct, bool) { + a := strings.Split(n, ".") + if len(a) == 2 { + if n == "[]MailDebugItem" { + fmt.Printf("MailDebugItem found\n") + } + a[1] = strings.TrimPrefix(a[1], "[]") + a[1] = strings.TrimPrefix(a[1], "*") + if _, ok := ts.Packages[a[0]]; ok { + if _, ok := ts.Packages[a[0]].structs[a[1]]; ok { + return ts.Packages[a[0]].structs[a[1]], true + } + } + } + if n == "" || IsNativeType(n) { + return TSStruct{}, true + } + + return TSStruct{}, false +} + +func (i *TSInfo) TestEndpoints() { + for p := range i.Packages { + for _, v1 := range i.Packages[p].endpoints { + _, f := i.findAvailableStruct(v1.Request) + if !f { + fmt.Printf("??Endpoint: request %s not found\n", v1.Request) + } + _, f = i.findAvailableStruct(v1.Response) + if !f { + fmt.Printf("??Endpoint: response %s not found\n", v1.Response) + } + + } + } +} diff --git a/backend/pkg/ts-rpc/tsStruct.go b/backend/pkg/ts-rpc/tsStruct.go new file mode 100644 index 0000000..36995e5 --- /dev/null +++ b/backend/pkg/ts-rpc/tsStruct.go @@ -0,0 +1,187 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "fmt" + "go/ast" +) + +type TSSField struct { + Name string + Type string + TsType string + Json TSTagJson + Ts TSTagTs + DependOn bool + SourceInfo string +} + +type TSStruct struct { + Name string + Typescript bool + Fields []TSSField + SourceInfo string +} + +func IsNativeType(t string) bool { + switch t { + case "uint8", "uint16", "uint32", "uint64", "uint", + "int8", "int16", "int32", "int64", "int", + "float32", "float64": + return true + case "bool": + return true + case "string": + return true + } + return false +} + +func toBeImported(t ast.Expr) bool { + switch ft := t.(type) { + case *ast.Ident: + return !IsNativeType(ft.Name) + case *ast.SelectorExpr: + return true + } + return false +} + +func typeToTypescript(k string) string { + switch k { + case "uint8", "uint16", "uint32", "uint64", "uint", + "int8", "int16", "int32", "int64", "int", + "float32", "float64": + return "number" + case "bool": + return "boolean" + case "string": + return "string" + } + return k +} + +func getFieldInfo(t ast.Expr) string { + result := "" + switch ft := t.(type) { + case *ast.Ident: + result = ft.Name + case *ast.SelectorExpr: + result = fmt.Sprintf("%s.%s", ft.X, ft.Sel) + case *ast.ArrayType: + result = fmt.Sprintf("[]%s", getFieldInfo(ft.Elt)) + case *ast.StarExpr: + result = fmt.Sprintf("*%s", (ft.X)) + case *ast.MapType: + result = fmt.Sprintf("map[%s]%s", ft.Key, getFieldInfo(ft.Value)) + case *ast.InterfaceType: + result = "interface{}" + default: + f := fmt.Sprintf("this go type: %T is not evaluated", ft) + fmt.Println(f) + //exitOnError(fmt.Errorf("this go type: %T is not evaluated", ft)) + } + return result +} + +func getFieldTsInfo(t ast.Expr) string { + result := "" + switch ft := t.(type) { + case *ast.Ident: + result = typeToTypescript(ft.Name) + case *ast.SelectorExpr: + result = typeToTypescript(fmt.Sprintf("%s.%s", ft.X, ft.Sel)) + case *ast.ArrayType: + result = fmt.Sprintf("%s[]", typeToTypescript(getFieldTsInfo(ft.Elt))) + case *ast.StarExpr: + result = fmt.Sprintf("Nullable<%s>", typeToTypescript(getFieldTsInfo(ft.X))) + case *ast.MapType: + result = fmt.Sprintf("Record<%s , %s>", typeToTypescript(fmt.Sprintf("%s", ft.Key)), typeToTypescript(("ft.Value"))) + case *ast.InterfaceType: + result = "unknown" + case *ast.FuncType: + fmt.Println("*ast.FuncType found, skipping...") + default: + //f := fmt.Sprintf("getFieldTsInfo can't evaluate type: %T %T", t, ft) + //fmt.Println(f) + exitOnError(fmt.Errorf("getFieldTsInfo can't evaluate type: %T %T", t, ft)) + } + return result +} + +func getSourceInfo(pos int, src []TSSourceFile) string { + for _, v := range src { + for _, l := range v.Lines { + if pos >= l.Pos && pos <= l.End { + return fmt.Sprintf("%s Line: %d", v.Name, l.Line) + } + } + } + return "" +} + +func (s *TSStruct) getStruct(ts *ast.TypeSpec, src []TSSourceFile) { + if st, ok := ts.Type.(*ast.StructType); ok { + for _, field := range st.Fields.List { + + tag := "" + if field.Tag != nil { + tag = field.Tag.Value + } + + tagJson := TSTagJson{} + tagJson.parse(tag) + + tagTs := TSTagTs{} + tagTs.parse(tag) + + tsType := "" + + if len(field.Names) > 0 { + tsType = getFieldTsInfo(field.Type) + var f = TSSField{ + Name: field.Names[0].String(), + Json: tagJson, + Ts: tagTs, + Type: getFieldInfo(field.Type), + TsType: tsType, + DependOn: toBeImported(field.Type), + SourceInfo: getSourceInfo(int(field.Type.Pos()), src), + } + s.Fields = append(s.Fields, f) + } else { + if se, ok := field.Type.(*ast.SelectorExpr); ok { + var f = TSSField{ + Name: fmt.Sprintf("%s.%s", se.X, se.Sel), + Json: tagJson, + Ts: tagTs, + Type: getFieldInfo(field.Type), + TsType: tsType, + DependOn: toBeImported(field.Type), + SourceInfo: getSourceInfo(int(field.Type.Pos()), src), + } + s.Fields = append(s.Fields, f) + } else { + if se, ok := field.Type.(*ast.Ident); ok { + var f = TSSField{ + Name: se.Name, + Json: tagJson, + Ts: tagTs, + Type: se.Name, + TsType: tsType, + DependOn: false, + SourceInfo: getSourceInfo(int(field.Type.Pos()), src), + } + s.Fields = append(s.Fields, f) + + fmt.Println(f) + } else { + exitOnError(fmt.Errorf("this typescript type: %T is not evaluated", field.Type)) + } + } + } + } + } +} diff --git a/backend/pkg/ts-rpc/tsTagJson.go b/backend/pkg/ts-rpc/tsTagJson.go new file mode 100644 index 0000000..487e7dd --- /dev/null +++ b/backend/pkg/ts-rpc/tsTagJson.go @@ -0,0 +1,49 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "regexp" + "strings" +) + +type TSTagJson struct { + Name string + Ignore bool + OmitEmpty bool +} + +func (t *TSTagJson) parse(tag string) bool { + *t = TSTagJson{} + t.Name = "" + t.Ignore = true + t.OmitEmpty = false + re := regexp.MustCompile(`json:\"(.*?)\"`) + match := re.FindStringSubmatch(tag) + if len(match) == 0 { + return false + } + t.Name = "" + s := strings.Split(match[1], ",") + if len(s) == 1 { + if s[0] == "omitempty" { + t.OmitEmpty = true + } + t.Ignore = s[0] == "-" + if s[0] != "" { + t.Name = s[0] + } + } + if len(s) == 2 { + t.Ignore = s[0] == "-" + if s[0] != "" { + t.Name = s[0] + } + if s[1] == "omitempty" { + t.OmitEmpty = true + } + } + + return true +} diff --git a/backend/pkg/ts-rpc/tsTagTs.go b/backend/pkg/ts-rpc/tsTagTs.go new file mode 100644 index 0000000..040f19b --- /dev/null +++ b/backend/pkg/ts-rpc/tsTagTs.go @@ -0,0 +1,34 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "regexp" + "strings" +) + +type TSTagTs struct { + Type string + Expand bool +} + +func (t *TSTagTs) parse(tag string) bool { + *t = TSTagTs{Type: "", Expand: false} + re := regexp.MustCompile(`ts:\"(.*?)\"`) + match := re.FindStringSubmatch(tag) + if len(match) == 0 { + return false + } + s := strings.Split(match[1], ",") + for _, v := range s { + t.Expand = strings.Trim(v, " ") == "expand" + if t.Expand { + return true + } + if strings.Contains(v, "type=") { + t.Type = string(match[1][len("type="):len(string(match[1]))]) + } + } + return true +} diff --git a/backend/pkg/ts-rpc/tsTsInfo.go b/backend/pkg/ts-rpc/tsTsInfo.go new file mode 100644 index 0000000..4f13202 --- /dev/null +++ b/backend/pkg/ts-rpc/tsTsInfo.go @@ -0,0 +1,285 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "errors" + "fmt" + "strings" +) + +type TSModule struct { + Structs map[string]string + Types map[string]string + Enums map[string]string + Consts map[string]string + GTypes map[string]string + Endpoints map[string]string +} + +type TSSouces struct { + Pakages map[string]TSModule + Errors []string +} + +func (ts *TSSouces) ensurePackage(p string) { + if _, ok := ts.Pakages[p]; !ok { + ts.Pakages[p] = TSModule{ + Structs: make(map[string]string), + Types: make(map[string]string), + Enums: make(map[string]string), + Consts: make(map[string]string), + GTypes: make(map[string]string), + Endpoints: make(map[string]string), + } + return + } + + pkg := ts.Pakages[p] + if pkg.Structs == nil { + pkg.Structs = make(map[string]string) + } + if pkg.Types == nil { + pkg.Types = make(map[string]string) + } + if pkg.Enums == nil { + pkg.Enums = make(map[string]string) + } + if pkg.Consts == nil { + pkg.Consts = make(map[string]string) + } + if pkg.GTypes == nil { + pkg.GTypes = make(map[string]string) + } + if pkg.Endpoints == nil { + pkg.Endpoints = make(map[string]string) + } + + ts.Pakages[p] = pkg +} + +func (ts *TSSouces) findStruct(p string, n string) bool { + if _, ok := ts.Pakages[p]; ok { + if _, ok := ts.Pakages[p].Structs[n]; ok { + return true + } + } + return false +} + +func (ts *TSSouces) findType(p string, n string) bool { + if _, ok := ts.Pakages[p]; ok { + if _, ok := ts.Pakages[p].Types[n]; ok { + return true + } + } + return false +} + +func (ts *TSSouces) find(p string, n string) bool { + return ts.findType(p, n) || ts.findStruct(p, n) +} + +func emptySrtuct(info TSInfo, p string, k string) bool { + s := info.Packages[p].structs[k] + fields := 0 + for _, v := range s.Fields { + if !v.Json.Ignore { + fields++ + } + } + return fields == 0 +} + +func structToTs(info TSInfo, p string, k string) (string, []string, error) { + var result = "" + var dependencies = []string{} + fields := 0 + s := info.Packages[p].structs[k] + if s.Name == "" { + return "", []string{}, errors.New("name not found") + } + if len(s.Fields) > 0 { + result += fmt.Sprintf("\nexport interface %s {\n", k) + + for _, v := range info.Packages[p].structs[k].Fields { + + if v.Json.Ignore && !v.Ts.Expand { + continue + } + var typeName = v.TsType + if v.Ts.Type != "" { + typeName = v.Ts.Type + } + if v.Ts.Expand { + sp := strings.Split(v.Name, ".") + pkg := p + name := v.Name + if len(sp) > 1 { + pkg = sp[0] + name = sp[1] + } + for _, v := range info.Packages[pkg].structs[name].Fields { + result += fmt.Sprintf("\t%s: %s;\n", v.Name, v.TsType) + fields++ + } + } else { + omitempty := "" + if v.Json.OmitEmpty { + omitempty = "?" + } + if !v.Json.Ignore { + result += fmt.Sprintf("\t%s%s: %s;\n", v.Json.Name, omitempty, typeName) + fields++ + } + } + if v.DependOn && v.Ts.Type == "" { + dependencies = append(dependencies, v.TsType) + } + + } + result += "}\n" + } + if fields == 0 { + return result, dependencies, fmt.Errorf("struct %s not export fields AT: %s", k, info.Packages[p].structs[k].SourceInfo) + } + return result, dependencies, nil +} + +func typeToTs(info TSInfo, p string, k string) (string, []string) { + var result = "" + // var dependencies = []string{} + s := info.Packages[p].types[k] + result = fmt.Sprintf("export type %s = %s\n", s.Name, s.TsType) + return result, []string{} +} + +func enumToTs(info TSInfo, p string, k string) string { + var result = "" + s := info.Packages[p].enums[k] + result += fmt.Sprintf("export const Enum%s = {\n", s.Name) + for _, v := range s.Info { + result += fmt.Sprintf("%s: %s,\n", v.Key, v.Value) + } + result += "} as const\n" + return result +} + +func constToTs(info TSInfo, p string, k string) string { + var result = "" + s := info.Packages[p].consts[k] + result += fmt.Sprintf("export const %s = %s\n", s.Name, s.Value) + return result +} + +func (ts *TSSouces) AddDependencies(info TSInfo, p string, s string, dependencies []string) { + if len(dependencies) > 0 { + for _, v := range dependencies { + pk := p + st := string(v) + if strings.Contains(st, ".") { + sp := strings.Split(st, ".") + if len(sp) == 2 { + pk = sp[0] + st = sp[1] + } + } + + if info.findStruct(pk, st) { + if emptySrtuct(info, pk, st) { + ts.Errors = append(ts.Errors, fmt.Sprintf("Empty struct %s.%s AT: %s", pk, st, info.Packages[p].structs[s].SourceInfo)) + } + s, d, err := structToTs(info, pk, st) + if err != nil { + ts.Errors = append(ts.Errors, err.Error()) + } + ts.ensurePackage(pk) + ts.Pakages[pk].Structs[st] = s + if len(d) > 0 { + ts.AddDependencies(info, pk, st, d) + } + } else if info.findType(pk, st) { + s, _ := typeToTs(info, pk, st) + ts.ensurePackage(pk) + ts.Pakages[pk].Types[st] = s + } else { + ts.Errors = append(ts.Errors, fmt.Sprintf("Dipendence not found %s.%s AT: %s", pk, st, info.Packages[p].structs[s].SourceInfo)) + } + } + } + +} + +func (ts *TSSouces) Populate(info TSInfo) { + ts.Pakages = make(map[string]TSModule) + ts.Errors = []string{} + for p, _ := range info.Packages { + ts.ensurePackage(p) + + for _, st := range info.Packages[p].structs { + if st.Typescript { + if len(st.Fields) == 0 { + ts.Errors = append(ts.Errors, fmt.Sprintf("Empty struct %s.%s AT: %s", p, st.Name, info.Packages[p].structs[st.Name].SourceInfo)) + } + s, dependencies, err := structToTs(info, p, st.Name) + if err != nil { + ts.Errors = append(ts.Errors, err.Error()) + } + ts.Pakages[p].Structs[st.Name] = s + ts.AddDependencies(info, p, st.Name, dependencies) + } + } + + for _, t := range info.Packages[p].decs { + ts.Pakages[p].GTypes[t.Name] = fmt.Sprintf("export type %s = %s\n", t.Name, t.Value) + } + + for _, e := range info.Packages[p].consts { + ts.Pakages[p].Consts[e.Name] = fmt.Sprint(constToTs(info, p, e.Name)) + } + + for _, e := range info.Packages[p].enums { + ts.Pakages[p].Enums[e.Name] = fmt.Sprint(enumToTs(info, p, e.Name)) + } + + for _, t := range info.Packages[p].types { + if t.Typescript { + ts.Pakages[p].Types[t.Name] = fmt.Sprintf("export type %s = %s\n", t.Name, t.TsType) + } + } + if len(info.Packages[p].endpoints) > 0 { + for _, e := range info.Packages[p].endpoints { + + /* if e.Request != "" { + a := strings.Split(e.Request, ".") + if len(a) == 2 { + s, d, err := structToTs(info, a[0], a[1]) + if err != nil { + ts.Errors = append(ts.Errors, err.Error()) + } + fmt.Println(s, d) + } + + } + + if e.Response != "" { + a := strings.Split(e.Response, ".") + if len(a) == 2 { + s, d, err := structToTs(info, a[0], a[1]) + if err != nil { + ts.Errors = append(ts.Errors, err.Error()) + } + fmt.Println(s, d) + } + + } */ + + e.VerifyTypes(info, p) + + endpoint := e.ToTs(p) + ts.Pakages[p].Endpoints[e.Name] = endpoint + } + } + } +} diff --git a/backend/pkg/ts-rpc/tsrpc.go b/backend/pkg/ts-rpc/tsrpc.go new file mode 100644 index 0000000..104f7a5 --- /dev/null +++ b/backend/pkg/ts-rpc/tsrpc.go @@ -0,0 +1,104 @@ +// exportable typescript generated from golang +// Copyright (C) 2022 Fabio Prada + +package tsrpc + +import ( + "bytes" + + "fmt" + "os" + "text/template" + "time" +) + +// configuration + +type TSConfig struct { + Url string + TsApi *string + Path string +} + +type tsTemplateData struct { + APIURL string + CreatedOn time.Time +} + +var tsConfig TSConfig + +func GetTSSource(config TSConfig) string { + tsConfig = config + var tsInfoData = TSInfo{} + var tsSourcesData = TSSouces{} + tsInfoData.Populate(tsConfig.Path) + tsInfoData.TestEndpoints() + tsSourcesData.Populate(tsInfoData) + + if len(tsSourcesData.Errors) != 0 { + err := "" + for _, v := range tsSourcesData.Errors { + err += fmt.Sprintln(v) + } + exitOnError(fmt.Errorf("some errors...\n %s", err)) + } + + tsSource := "" + data := "" + if tsConfig.TsApi == nil { + data = TsApiTemplate + } else { + d, err := os.ReadFile(*tsConfig.TsApi) + if err != nil { + panic(err) + } + data = string(d) + } + + t, err := template.New("tsRpc").Parse(data) + if err != nil { + panic(err) + } + var templateData = tsTemplateData{ + APIURL: config.Url, + CreatedOn: time.Now(), + } + var result bytes.Buffer + err = t.Execute(&result, templateData) + if err != nil { + panic(err) + } + tsSource += result.String() + + tsSource += fmt.Sprintln("\n// Global Declarations ") + for p := range tsSourcesData.Pakages { + for _, v1 := range tsSourcesData.Pakages[p].GTypes { + tsSource += fmt.Sprintln(v1) + } + } + + for p := range tsSourcesData.Pakages { + source := "" + head := fmt.Sprintf("\n//\n// package %s\n//\n", p) + for _, v1 := range tsSourcesData.Pakages[p].Endpoints { + source += fmt.Sprintln(v1) + } + for _, v1 := range tsSourcesData.Pakages[p].Structs { + source += fmt.Sprintln(v1) + } + for _, v1 := range tsSourcesData.Pakages[p].Types { + source += fmt.Sprintln(v1) + } + for _, v1 := range tsSourcesData.Pakages[p].Enums { + source += fmt.Sprintln(v1) + } + for _, v1 := range tsSourcesData.Pakages[p].Consts { + source += fmt.Sprintln(v1) + } + + if len(source) > 0 { + tsSource += head + source + "\n\n" + } + } + return tsSource +} diff --git a/backend/postman_collection.json b/backend/postman_collection.json new file mode 100644 index 0000000..1053abd --- /dev/null +++ b/backend/postman_collection.json @@ -0,0 +1,220 @@ +{ + "info": { + "_postman_id": "b0bfc9f3-0000-4e5c-8c0a-setup-collection", + "name": "DIMSE Server API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "description": "Collection to exercise DIMSE server endpoints (login/register/admin, etc.). Configure environment variables before running." + }, + "item": [ + { + "name": "Health", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{base_url}}/health", + "host": [ + "{{base_url}}" + ], + "path": [ + "health" + ] + } + } + }, + { + "name": "Register", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Jane Doe\",\n \"email\": \"jane@example.com\",\n \"password\": \"ChangeMe123!\"\n}" + }, + "url": { + "raw": "{{base_url}}/auth/register", + "host": [ + "{{base_url}}" + ], + "path": [ + "auth", + "register" + ] + } + } + }, + { + "name": "Login", + "event": [ + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "if (pm.response.code === 200) {", + " const data = pm.response.json();", + " if (data.access_token) pm.environment.set('access_token', data.access_token);", + " if (data.refresh_token) pm.environment.set('refresh_token', data.refresh_token);", + "}", + "" + ] + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"username\": \"{{login_email}}\",\n \"password\": \"{{login_password}}\"\n}" + }, + "url": { + "raw": "{{base_url}}/auth/login", + "host": [ + "{{base_url}}" + ], + "path": [ + "auth", + "login" + ] + } + } + }, + { + "name": "Refresh", + "event": [ + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "if (pm.response.code === 200) {", + " const data = pm.response.json();", + " if (data.access_token) pm.environment.set('access_token', data.access_token);", + " if (data.refresh_token) pm.environment.set('refresh_token', data.refresh_token);", + "}", + "" + ] + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"refresh_token\": \"{{refresh_token}}\"\n}" + }, + "url": { + "raw": "{{base_url}}/auth/refresh", + "host": [ + "{{base_url}}" + ], + "path": [ + "auth", + "refresh" + ] + } + } + }, + { + "name": "Me", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{access_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{base_url}}/auth/me", + "host": [ + "{{base_url}}" + ], + "path": [ + "auth", + "me" + ] + } + } + }, + { + "name": "Admin Users", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{access_token}}", + "type": "text" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"page\": 1,\n \"pageSize\": 20\n}" + }, + "url": { + "raw": "{{base_url}}/admin/users", + "host": [ + "{{base_url}}" + ], + "path": [ + "admin", + "users" + ] + } + } + } + ], + "variable": [ + { + "key": "base_url", + "value": "http://localhost:3000" + }, + { + "key": "login_email", + "value": "user@example.com" + }, + { + "key": "login_password", + "value": "your-password" + }, + { + "key": "access_token", + "value": "" + }, + { + "key": "refresh_token", + "value": "" + } + ] +} diff --git a/frontend/.editorconfig b/frontend/.editorconfig new file mode 100644 index 0000000..f654551 --- /dev/null +++ b/frontend/.editorconfig @@ -0,0 +1,7 @@ +[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}] +charset = utf-8 +indent_size = 2 +indent_style = space +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/frontend/.env b/frontend/.env new file mode 100644 index 0000000..9996321 --- /dev/null +++ b/frontend/.env @@ -0,0 +1,5 @@ +# Option A: path to Go project root; deploy target becomes /spa +GO_PROJECT_DIR=/Users/fabio/CODE/APP_GO_QUASAR/backend/internal/http/static + +# Option B (overrides GO_PROJECT_DIR): explicit target dir where dist/spa is copied +# GO_SPA_TARGET_DIR=/absolute/path/to/your/go/project/spa diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..f1d913c --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,33 @@ +.DS_Store +.thumbs.db +node_modules + +# Quasar core related directories +.quasar +/dist +/quasar.config.*.temporary.compiled* + +# Cordova related directories and files +/src-cordova/node_modules +/src-cordova/platforms +/src-cordova/plugins +/src-cordova/www + +# Capacitor related directories and files +/src-capacitor/www +/src-capacitor/node_modules + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln + +# local .env files +.env.local* diff --git a/frontend/.prettierrc.json b/frontend/.prettierrc.json new file mode 100644 index 0000000..4ab7f6d --- /dev/null +++ b/frontend/.prettierrc.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "singleQuote": true, + "printWidth": 100 +} diff --git a/frontend/.vscode/extensions.json b/frontend/.vscode/extensions.json new file mode 100644 index 0000000..b6a2eb9 --- /dev/null +++ b/frontend/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "editorconfig.editorconfig", + "vue.volar", + "wayou.vscode-todo-highlight" + ], + "unwantedRecommendations": [ + "octref.vetur", + "hookyqr.beautify", + "dbaeumer.jshint", + "ms-vscode.vscode-typescript-tslint-plugin" + ] +} diff --git a/frontend/.vscode/settings.json b/frontend/.vscode/settings.json new file mode 100644 index 0000000..fa9e6d6 --- /dev/null +++ b/frontend/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "editor.bracketPairColorization.enabled": true, + "editor.guides.bracketPairs": true, + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.codeActionsOnSave": ["source.fixAll.eslint"], + "eslint.validate": ["javascript", "javascriptreact", "typescript", "vue"], + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..6676ffc --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,43 @@ +# Frontend APP (frontend) + +A Quasar Project + +## Install the dependencies + +```bash +yarn +# or +npm install +``` + +### Start the app in development mode (hot-code reloading, error reporting, etc.) + +```bash +quasar dev +``` + +### Lint the files + +```bash +yarn lint +# or +npm run lint +``` + +### Format the files + +```bash +yarn format +# or +npm run format +``` + +### Build the app for production + +```bash +quasar build +``` + +### Customize the configuration + +See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js). diff --git a/frontend/bun.lock b/frontend/bun.lock new file mode 100644 index 0000000..b685441 --- /dev/null +++ b/frontend/bun.lock @@ -0,0 +1,1494 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "frontend", + "dependencies": { + "@quasar/extras": "^1.16.4", + "pinia": "^3.0.1", + "quasar": "^2.16.0", + "vue": "^3.5.22", + "vue-i18n": "^11.0.0", + "vue-router": "^5.0.0", + }, + "devDependencies": { + "@eslint/js": "^9.14.0", + "@intlify/unplugin-vue-i18n": "^4.0.0", + "@quasar/app-vite": "^2.1.0", + "@types/node": "^20.5.9", + "@vue/eslint-config-prettier": "^10.1.0", + "@vue/eslint-config-typescript": "^14.4.0", + "autoprefixer": "^10.4.2", + "eslint": "^9.14.0", + "eslint-plugin-vue": "^10.4.0", + "globals": "^16.4.0", + "prettier": "^3.3.3", + "puppeteer": "^24.39.1", + "typescript": "^5.9.2", + "vite-plugin-checker": "^0.11.0", + "vue-eslint-parser": "^10.2.0", + "vue-tsc": "^3.0.7", + }, + }, + }, + "packages": { + "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], + + "@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], + + "@bufbuild/protobuf": ["@bufbuild/protobuf@2.11.0", "", {}, "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], + + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], + + "@eslint/config-array": ["@eslint/config-array@0.21.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.5" } }, "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw=="], + + "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], + + "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], + + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.5", "", { "dependencies": { "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" } }, "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg=="], + + "@eslint/js": ["@eslint/js@9.39.4", "", {}, "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw=="], + + "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], + + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], + + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], + + "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], + + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], + + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], + + "@inquirer/external-editor": ["@inquirer/external-editor@1.0.3", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA=="], + + "@inquirer/figures": ["@inquirer/figures@1.0.15", "", {}, "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g=="], + + "@intlify/bundle-utils": ["@intlify/bundle-utils@8.0.0", "", { "dependencies": { "@intlify/message-compiler": "^9.4.0", "@intlify/shared": "^9.4.0", "acorn": "^8.8.2", "escodegen": "^2.1.0", "estree-walker": "^2.0.2", "jsonc-eslint-parser": "^2.3.0", "mlly": "^1.2.0", "source-map-js": "^1.0.1", "yaml-eslint-parser": "^1.2.2" } }, "sha512-1B++zykRnMwQ+20SpsZI1JCnV/YJt9Oq7AGlEurzkWJOFtFAVqaGc/oV36PBRYeiKnTbY9VYfjBimr2Vt42wLQ=="], + + "@intlify/core-base": ["@intlify/core-base@11.3.0", "", { "dependencies": { "@intlify/devtools-types": "11.3.0", "@intlify/message-compiler": "11.3.0", "@intlify/shared": "11.3.0" } }, "sha512-NNX5jIwF4TJBe7RtSKDMOA6JD9mp2mRcBHAwt2X+Q8PvnZub0yj5YYXlFu2AcESdgQpEv/5Yx2uOCV/yh7YkZg=="], + + "@intlify/devtools-types": ["@intlify/devtools-types@11.3.0", "", { "dependencies": { "@intlify/core-base": "11.3.0", "@intlify/shared": "11.3.0" } }, "sha512-G9CNL4WpANWVdUjubOIIS7/D2j/0j+1KJmhBJxHilWNKr9mmt3IjFV3Hq4JoBP23uOoC5ynxz/FHZ42M+YxfGw=="], + + "@intlify/message-compiler": ["@intlify/message-compiler@9.14.5", "", { "dependencies": { "@intlify/shared": "9.14.5", "source-map-js": "^1.0.2" } }, "sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ=="], + + "@intlify/shared": ["@intlify/shared@9.14.5", "", {}, "sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ=="], + + "@intlify/unplugin-vue-i18n": ["@intlify/unplugin-vue-i18n@4.0.0", "", { "dependencies": { "@intlify/bundle-utils": "^8.0.0", "@intlify/shared": "^9.4.0", "@rollup/pluginutils": "^5.1.0", "@vue/compiler-sfc": "^3.2.47", "debug": "^4.3.3", "fast-glob": "^3.2.12", "js-yaml": "^4.1.0", "json5": "^2.2.3", "pathe": "^1.0.0", "picocolors": "^1.0.0", "source-map-js": "^1.0.2", "unplugin": "^1.1.0" }, "peerDependencies": { "petite-vue-i18n": "*", "vue-i18n": "*", "vue-i18n-bridge": "*" }, "optionalPeers": ["petite-vue-i18n", "vue-i18n", "vue-i18n-bridge"] }, "sha512-q2Mhqa/mLi0tulfLFO4fMXXvEbkSZpI5yGhNNsLTNJJ41icEGUuyDe+j5zRZIKSkOJRgX6YbCyibTDJdRsukmw=="], + + "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/source-map": ["@jridgewell/source-map@0.3.11", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], + + "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], + + "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA=="], + + "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg=="], + + "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng=="], + + "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ=="], + + "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg=="], + + "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA=="], + + "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA=="], + + "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ=="], + + "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg=="], + + "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q=="], + + "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g=="], + + "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.6", "", { "os": "win32", "cpu": "x64" }, "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw=="], + + "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], + + "@pkgr/core": ["@pkgr/core@0.2.9", "", {}, "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA=="], + + "@puppeteer/browsers": ["@puppeteer/browsers@2.13.0", "", { "dependencies": { "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.7.4", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA=="], + + "@quasar/app-vite": ["@quasar/app-vite@2.4.1", "", { "dependencies": { "@quasar/render-ssr-error": "^1.0.3", "@quasar/ssl-certificate": "^1.0.0", "@quasar/vite-plugin": "^1.10.0", "@types/chrome": "^0.0.262", "@types/compression": "^1.7.5", "@types/cordova": "^11.0.3", "@types/express": "^4.17.21", "@vitejs/plugin-vue": "^6.0.1", "archiver": "^7.0.1", "chokidar": "^3.6.0", "ci-info": "^4.0.0", "compression": "^1.7.5", "confbox": "^0.1.8", "cross-spawn": "^7.0.6", "dot-prop": "9.0.0", "dotenv": "^16.4.5", "dotenv-expand": "^11.0.6", "elementtree": "0.1.7", "esbuild": "^0.25.0", "express": "^4.21.2", "fs-extra": "^11.2.0", "html-minifier-terser": "^7.2.0", "inquirer": "^9.3.7", "isbinaryfile": "^5.0.4", "kolorist": "^1.8.0", "lodash": "^4.17.21", "minimist": "^1.2.8", "mlly": "^1.7.4", "open": "^10.1.0", "rollup-plugin-visualizer": "^5.13.1", "sass-embedded": "^1.93.2", "semver": "^7.6.3", "serialize-javascript": "^6.0.2", "tinyglobby": "^0.2.10", "ts-essentials": "^9.4.2", "vite": "^7.1.6", "webpack-merge": "^6.0.1" }, "peerDependencies": { "@electron/packager": ">= 18", "electron-builder": ">= 22", "pinia": "^2.0.0 || ^3.0.0", "quasar": "^2.16.0", "typescript": ">= 5.4", "vue": "^3.2.29", "vue-router": "^4.0.12 || ^5.0.0", "workbox-build": ">= 6" }, "optionalPeers": ["@electron/packager", "electron-builder", "pinia", "typescript", "workbox-build"], "bin": { "quasar": "bin/quasar.js" } }, "sha512-JLRXHKjZCZM9qQlxyjtinusVh+UMBQqM5TEc+Zo3i5y+dBffZiyUcdYN2DCmL0U/eoVulc2n5ve7qR0JwaQu6g=="], + + "@quasar/extras": ["@quasar/extras@1.17.0", "", {}, "sha512-KqAHdSJfIDauiR1nJ8rqHWT0diqD0QradZKoVIZJAilHAvgwyPIY7MbyR2z4RIMkUIMUSqBZcbshMpEw+9A30w=="], + + "@quasar/render-ssr-error": ["@quasar/render-ssr-error@1.0.3", "", { "dependencies": { "stack-trace": "^1.0.0-pre2" } }, "sha512-A8RF99q6/sOSe1Ighnh5syEIbliD3qUYEJd2HyfFyBPSMF+WYGXon5dmzg4nUoK662NgOggInevkDyBDJcZugg=="], + + "@quasar/ssl-certificate": ["@quasar/ssl-certificate@1.0.0", "", { "dependencies": { "fs-extra": "^11.1.1", "selfsigned": "^2.1.1" } }, "sha512-RhZF7rO76T7Ywer1/5lCe7xl3CIiXxSAH1xgwOj0wcHTityDxJqIN/5YIj6BxMvlFw8XkJDoB1udEQafoVFA4g=="], + + "@quasar/vite-plugin": ["@quasar/vite-plugin@1.10.0", "", { "peerDependencies": { "@vitejs/plugin-vue": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "quasar": "^2.16.0", "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", "vue": "^3.0.0" } }, "sha512-4PJoTclz4ZjAfyqe0+hlkKcFJt0e2NX3Ac3hy8ILqUPdtZ24nCo5/xEHvTxZGBQMKRPwwePbO8CVs4n9EKJEug=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.2", "", {}, "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw=="], + + "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.59.0", "", { "os": "android", "cpu": "arm" }, "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.59.0", "", { "os": "android", "cpu": "arm64" }, "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.59.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.59.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.59.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.59.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.59.0", "", { "os": "linux", "cpu": "arm" }, "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.59.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.59.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.59.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.59.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.59.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.59.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.59.0", "", { "os": "linux", "cpu": "x64" }, "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.59.0", "", { "os": "linux", "cpu": "x64" }, "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.59.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.59.0", "", { "os": "none", "cpu": "arm64" }, "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.59.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.59.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.59.0", "", { "os": "win32", "cpu": "x64" }, "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.59.0", "", { "os": "win32", "cpu": "x64" }, "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA=="], + + "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="], + + "@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="], + + "@types/chrome": ["@types/chrome@0.0.262", "", { "dependencies": { "@types/filesystem": "*", "@types/har-format": "*" } }, "sha512-TOoj3dqSYE13PD2fRuMQ6X6pggEvL9rRk/yOYOyWE6sfqRWxsJm4VoVm+wr9pkr4Sht/M5t7FFL4vXato8d1gA=="], + + "@types/compression": ["@types/compression@1.8.1", "", { "dependencies": { "@types/express": "*", "@types/node": "*" } }, "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q=="], + + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/cordova": ["@types/cordova@11.0.3", "", {}, "sha512-kyuRQ40/NWQVhqGIHq78Ehu2Bf9Mlg0LhmSmis6ZFJK7z933FRfYi8tHe/k/0fB+PGfCf95rJC6TO7dopaFvAg=="], + + "@types/esrecurse": ["@types/esrecurse@4.3.1", "", {}, "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/express": ["@types/express@4.17.25", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "^1" } }, "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw=="], + + "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.8", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA=="], + + "@types/filesystem": ["@types/filesystem@0.0.36", "", { "dependencies": { "@types/filewriter": "*" } }, "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA=="], + + "@types/filewriter": ["@types/filewriter@0.0.33", "", {}, "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g=="], + + "@types/har-format": ["@types/har-format@1.2.16", "", {}, "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A=="], + + "@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="], + + "@types/node": ["@types/node@20.19.37", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw=="], + + "@types/node-forge": ["@types/node-forge@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw=="], + + "@types/qs": ["@types/qs@6.15.0", "", {}, "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow=="], + + "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + + "@types/send": ["@types/send@0.17.6", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og=="], + + "@types/serve-static": ["@types/serve-static@1.15.10", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "<1" } }, "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw=="], + + "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], + + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.57.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.57.0", "@typescript-eslint/type-utils": "8.57.0", "@typescript-eslint/utils": "8.57.0", "@typescript-eslint/visitor-keys": "8.57.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.57.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ=="], + + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.57.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.57.0", "@typescript-eslint/types": "8.57.0", "@typescript-eslint/typescript-estree": "8.57.0", "@typescript-eslint/visitor-keys": "8.57.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g=="], + + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.57.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.57.0", "@typescript-eslint/types": "^8.57.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w=="], + + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.57.0", "", { "dependencies": { "@typescript-eslint/types": "8.57.0", "@typescript-eslint/visitor-keys": "8.57.0" } }, "sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw=="], + + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.57.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA=="], + + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.57.0", "", { "dependencies": { "@typescript-eslint/types": "8.57.0", "@typescript-eslint/typescript-estree": "8.57.0", "@typescript-eslint/utils": "8.57.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ=="], + + "@typescript-eslint/types": ["@typescript-eslint/types@8.57.0", "", {}, "sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg=="], + + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.57.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.57.0", "@typescript-eslint/tsconfig-utils": "8.57.0", "@typescript-eslint/types": "8.57.0", "@typescript-eslint/visitor-keys": "8.57.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q=="], + + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.57.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.57.0", "@typescript-eslint/types": "8.57.0", "@typescript-eslint/typescript-estree": "8.57.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ=="], + + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.57.0", "", { "dependencies": { "@typescript-eslint/types": "8.57.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg=="], + + "@vitejs/plugin-vue": ["@vitejs/plugin-vue@6.0.4", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.2" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "vue": "^3.2.25" } }, "sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ=="], + + "@volar/language-core": ["@volar/language-core@2.4.28", "", { "dependencies": { "@volar/source-map": "2.4.28" } }, "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ=="], + + "@volar/source-map": ["@volar/source-map@2.4.28", "", {}, "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ=="], + + "@volar/typescript": ["@volar/typescript@2.4.28", "", { "dependencies": { "@volar/language-core": "2.4.28", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw=="], + + "@vue-macros/common": ["@vue-macros/common@3.1.2", "", { "dependencies": { "@vue/compiler-sfc": "^3.5.22", "ast-kit": "^2.1.2", "local-pkg": "^1.1.2", "magic-string-ast": "^1.0.2", "unplugin-utils": "^0.3.0" }, "peerDependencies": { "vue": "^2.7.0 || ^3.2.25" }, "optionalPeers": ["vue"] }, "sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng=="], + + "@vue/compiler-core": ["@vue/compiler-core@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/shared": "3.5.30", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw=="], + + "@vue/compiler-dom": ["@vue/compiler-dom@3.5.30", "", { "dependencies": { "@vue/compiler-core": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g=="], + + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/compiler-core": "3.5.30", "@vue/compiler-dom": "3.5.30", "@vue/compiler-ssr": "3.5.30", "@vue/shared": "3.5.30", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.8", "source-map-js": "^1.2.1" } }, "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A=="], + + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.30", "", { "dependencies": { "@vue/compiler-dom": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA=="], + + "@vue/devtools-api": ["@vue/devtools-api@7.7.9", "", { "dependencies": { "@vue/devtools-kit": "^7.7.9" } }, "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g=="], + + "@vue/devtools-kit": ["@vue/devtools-kit@7.7.9", "", { "dependencies": { "@vue/devtools-shared": "^7.7.9", "birpc": "^2.3.0", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^1.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA=="], + + "@vue/devtools-shared": ["@vue/devtools-shared@7.7.9", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA=="], + + "@vue/eslint-config-prettier": ["@vue/eslint-config-prettier@10.2.0", "", { "dependencies": { "eslint-config-prettier": "^10.0.1", "eslint-plugin-prettier": "^5.2.2" }, "peerDependencies": { "eslint": ">= 8.21.0", "prettier": ">= 3.0.0" } }, "sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw=="], + + "@vue/eslint-config-typescript": ["@vue/eslint-config-typescript@14.7.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.56.0", "fast-glob": "^3.3.3", "typescript-eslint": "^8.56.0", "vue-eslint-parser": "^10.4.0" }, "peerDependencies": { "eslint": "^9.10.0 || ^10.0.0", "eslint-plugin-vue": "^9.28.0 || ^10.0.0", "typescript": ">=4.8.4" }, "optionalPeers": ["typescript"] }, "sha512-iegbMINVc+seZ/QxtzWiOBozctrHiF2WvGedruu2EbLujg9VuU0FQiNcN2z1ycuaoKKpF4m2qzB5HDEMKbxtIg=="], + + "@vue/language-core": ["@vue/language-core@3.2.5", "", { "dependencies": { "@volar/language-core": "2.4.28", "@vue/compiler-dom": "^3.5.0", "@vue/shared": "^3.5.0", "alien-signals": "^3.0.0", "muggle-string": "^0.4.1", "path-browserify": "^1.0.1", "picomatch": "^4.0.2" } }, "sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g=="], + + "@vue/reactivity": ["@vue/reactivity@3.5.30", "", { "dependencies": { "@vue/shared": "3.5.30" } }, "sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q=="], + + "@vue/runtime-core": ["@vue/runtime-core@3.5.30", "", { "dependencies": { "@vue/reactivity": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg=="], + + "@vue/runtime-dom": ["@vue/runtime-dom@3.5.30", "", { "dependencies": { "@vue/reactivity": "3.5.30", "@vue/runtime-core": "3.5.30", "@vue/shared": "3.5.30", "csstype": "^3.2.3" } }, "sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw=="], + + "@vue/server-renderer": ["@vue/server-renderer@3.5.30", "", { "dependencies": { "@vue/compiler-ssr": "3.5.30", "@vue/shared": "3.5.30" }, "peerDependencies": { "vue": "3.5.30" } }, "sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ=="], + + "@vue/shared": ["@vue/shared@3.5.30", "", {}, "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ=="], + + "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], + + "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], + + "alien-signals": ["alien-signals@3.1.2", "", {}, "sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw=="], + + "ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + + "archiver": ["archiver@7.0.1", "", { "dependencies": { "archiver-utils": "^5.0.2", "async": "^3.2.4", "buffer-crc32": "^1.0.0", "readable-stream": "^4.0.0", "readdir-glob": "^1.1.2", "tar-stream": "^3.0.0", "zip-stream": "^6.0.1" } }, "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ=="], + + "archiver-utils": ["archiver-utils@5.0.2", "", { "dependencies": { "glob": "^10.0.0", "graceful-fs": "^4.2.0", "is-stream": "^2.0.1", "lazystream": "^1.0.0", "lodash": "^4.17.15", "normalize-path": "^3.0.0", "readable-stream": "^4.0.0" } }, "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "array-flatten": ["array-flatten@1.1.1", "", {}, "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="], + + "ast-kit": ["ast-kit@2.2.0", "", { "dependencies": { "@babel/parser": "^7.28.5", "pathe": "^2.0.3" } }, "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw=="], + + "ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="], + + "ast-walker-scope": ["ast-walker-scope@0.8.3", "", { "dependencies": { "@babel/parser": "^7.28.4", "ast-kit": "^2.1.3" } }, "sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg=="], + + "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], + + "autoprefixer": ["autoprefixer@10.4.27", "", { "dependencies": { "browserslist": "^4.28.1", "caniuse-lite": "^1.0.30001774", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA=="], + + "b4a": ["b4a@1.8.0", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg=="], + + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "bare-events": ["bare-events@2.8.2", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ=="], + + "bare-fs": ["bare-fs@4.5.5", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w=="], + + "bare-os": ["bare-os@3.7.1", "", {}, "sha512-ebvMaS5BgZKmJlvuWh14dg9rbUI84QeV3WlWn6Ph6lFI8jJoh7ADtVTyD2c93euwbe+zgi0DVrl4YmqXeM9aIA=="], + + "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="], + + "bare-stream": ["bare-stream@2.8.1", "", { "dependencies": { "streamx": "^2.21.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-bSeR8RfvbRwDpD7HWZvn8M3uYNDrk7m9DQjYOFkENZlXW8Ju/MPaqUPQq5LqJ3kyjEm07siTaAQ7wBKCU59oHg=="], + + "bare-url": ["bare-url@2.3.2", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.0", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA=="], + + "basic-ftp": ["basic-ftp@5.2.0", "", {}, "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw=="], + + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + + "birpc": ["birpc@2.9.0", "", {}, "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw=="], + + "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], + + "body-parser": ["body-parser@1.20.4", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.14.0", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA=="], + + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + + "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], + + "buffer-crc32": ["buffer-crc32@1.0.0", "", {}, "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w=="], + + "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + + "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "camel-case": ["camel-case@4.1.2", "", { "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001777", "", {}, "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="], + + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "chromium-bidi": ["chromium-bidi@14.0.0", "", { "dependencies": { "mitt": "^3.0.1", "zod": "^3.24.1" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw=="], + + "ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="], + + "clean-css": ["clean-css@5.3.3", "", { "dependencies": { "source-map": "~0.6.0" } }, "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg=="], + + "cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "^3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="], + + "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], + + "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], + + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="], + + "clone-deep": ["clone-deep@4.0.1", "", { "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" } }, "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "colorjs.io": ["colorjs.io@0.5.2", "", {}, "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw=="], + + "commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], + + "compress-commons": ["compress-commons@6.0.2", "", { "dependencies": { "crc-32": "^1.2.0", "crc32-stream": "^6.0.0", "is-stream": "^2.0.1", "normalize-path": "^3.0.0", "readable-stream": "^4.0.0" } }, "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg=="], + + "compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="], + + "compression": ["compression@1.8.1", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w=="], + + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], + + "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cookie-signature": ["cookie-signature@1.0.7", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="], + + "copy-anything": ["copy-anything@4.0.5", "", { "dependencies": { "is-what": "^5.2.0" } }, "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA=="], + + "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + + "cosmiconfig": ["cosmiconfig@9.0.1", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ=="], + + "crc-32": ["crc-32@1.2.2", "", { "bin": { "crc32": "bin/crc32.njs" } }, "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="], + + "crc32-stream": ["crc32-stream@6.0.0", "", { "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^4.0.0" } }, "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + + "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], + + "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], + + "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], + + "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="], + + "degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], + + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "devtools-protocol": ["devtools-protocol@0.0.1581282", "", {}, "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ=="], + + "dot-case": ["dot-case@3.0.4", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w=="], + + "dot-prop": ["dot-prop@9.0.0", "", { "dependencies": { "type-fest": "^4.18.2" } }, "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ=="], + + "dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], + + "dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.307", "", {}, "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg=="], + + "elementtree": ["elementtree@0.1.7", "", { "dependencies": { "sax": "1.1.4" } }, "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg=="], + + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], + + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + + "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], + + "eslint": ["eslint@9.39.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ=="], + + "eslint-config-prettier": ["eslint-config-prettier@10.1.8", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w=="], + + "eslint-plugin-prettier": ["eslint-plugin-prettier@5.5.5", "", { "dependencies": { "prettier-linter-helpers": "^1.0.1", "synckit": "^0.11.12" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "optionalPeers": ["@types/eslint", "eslint-config-prettier"] }, "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw=="], + + "eslint-plugin-vue": ["eslint-plugin-vue@10.8.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", "postcss-selector-parser": "^7.1.0", "semver": "^7.6.3", "xml-name-validator": "^4.0.0" }, "peerDependencies": { "@stylistic/eslint-plugin": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "vue-eslint-parser": "^10.0.0" }, "optionalPeers": ["@stylistic/eslint-plugin", "@typescript-eslint/parser"] }, "sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA=="], + + "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], + + "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], + + "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], + + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], + + "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], + + "events-universal": ["events-universal@1.0.1", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="], + + "express": ["express@4.22.1", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.3", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g=="], + + "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], + + "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-diff": ["fast-diff@1.3.0", "", {}, "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="], + + "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + + "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + + "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "finalhandler": ["finalhandler@1.3.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "flat": ["flat@5.0.2", "", { "bin": { "flat": "cli.js" } }, "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="], + + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], + + "flatted": ["flatted@3.4.1", "", {}, "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ=="], + + "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], + + "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + + "fs-extra": ["fs-extra@11.3.4", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + + "get-uri": ["get-uri@6.0.5", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg=="], + + "glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "globals": ["globals@16.5.0", "", {}, "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="], + + "html-minifier-terser": ["html-minifier-terser@7.2.0", "", { "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", "commander": "^10.0.0", "entities": "^4.4.0", "param-case": "^3.0.4", "relateurl": "^0.2.7", "terser": "^5.15.1" }, "bin": { "html-minifier-terser": "cli.js" } }, "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA=="], + + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], + + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + + "immutable": ["immutable@5.1.5", "", {}, "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A=="], + + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "inquirer": ["inquirer@9.3.8", "", { "dependencies": { "@inquirer/external-editor": "^1.0.2", "@inquirer/figures": "^1.0.3", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", "mute-stream": "1.0.0", "ora": "^5.4.1", "run-async": "^3.0.0", "rxjs": "^7.8.1", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" } }, "sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w=="], + + "ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="], + + "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + + "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + + "is-interactive": ["is-interactive@1.0.0", "", {}, "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "^3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="], + + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "is-unicode-supported": ["is-unicode-supported@0.1.0", "", {}, "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="], + + "is-what": ["is-what@5.5.0", "", {}, "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw=="], + + "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], + + "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + + "isbinaryfile": ["isbinaryfile@5.0.7", "", {}, "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "isobject": ["isobject@3.0.1", "", {}, "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="], + + "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "jsonc-eslint-parser": ["jsonc-eslint-parser@2.4.2", "", { "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^3.0.0", "espree": "^9.0.0", "semver": "^7.3.5" } }, "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA=="], + + "jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], + + "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], + + "lazystream": ["lazystream@1.0.1", "", { "dependencies": { "readable-stream": "^2.0.5" } }, "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw=="], + + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + + "local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="], + + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + + "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="], + + "lower-case": ["lower-case@2.0.2", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg=="], + + "lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "magic-string-ast": ["magic-string-ast@1.0.3", "", { "dependencies": { "magic-string": "^0.30.19" } }, "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + + "merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "methods": ["methods@1.1.2", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + + "minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + + "minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], + + "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], + + "mlly": ["mlly@1.8.1", "", { "dependencies": { "acorn": "^8.16.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.3" } }, "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "muggle-string": ["muggle-string@0.4.1", "", {}, "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="], + + "mute-stream": ["mute-stream@1.0.0", "", {}, "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], + + "negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], + + "netmask": ["netmask@2.0.2", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="], + + "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], + + "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], + + "node-forge": ["node-forge@1.3.3", "", {}, "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg=="], + + "node-releases": ["node-releases@2.0.36", "", {}, "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + + "npm-run-path": ["npm-run-path@6.0.0", "", { "dependencies": { "path-key": "^4.0.0", "unicorn-magic": "^0.3.0" } }, "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA=="], + + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "on-headers": ["on-headers@1.1.0", "", {}, "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + + "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], + + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + + "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "is-unicode-supported": "^0.1.0", "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="], + + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "pac-proxy-agent": ["pac-proxy-agent@7.2.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA=="], + + "pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="], + + "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], + + "param-case": ["param-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A=="], + + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "pascal-case": ["pascal-case@3.1.2", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g=="], + + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + + "path-to-regexp": ["path-to-regexp@0.1.12", "", {}, "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="], + + "pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + + "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], + + "perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "pinia": ["pinia@3.0.4", "", { "dependencies": { "@vue/devtools-api": "^7.7.7" }, "peerDependencies": { "typescript": ">=4.5.0", "vue": "^3.5.11" }, "optionalPeers": ["typescript"] }, "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw=="], + + "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], + + "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], + + "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + + "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], + + "prettier-linter-helpers": ["prettier-linter-helpers@1.0.1", "", { "dependencies": { "fast-diff": "^1.1.2" } }, "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg=="], + + "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], + + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], + + "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], + + "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + + "proxy-agent": ["proxy-agent@6.5.0", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="], + + "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], + + "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "puppeteer": ["puppeteer@24.39.1", "", { "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1581282", "puppeteer-core": "24.39.1", "typed-query-selector": "^2.12.1" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" } }, "sha512-68Zc9QpcVvfxp2C+3UL88TyUogEAn5tSylXidbEuEXvhiqK1+v65zeBU5ubinAgEHMGr3dcSYqvYrGtdzsPI3w=="], + + "puppeteer-core": ["puppeteer-core@24.39.1", "", { "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1581282", "typed-query-selector": "^2.12.1", "webdriver-bidi-protocol": "0.4.1", "ws": "^8.19.0" } }, "sha512-AMqQIKoEhPS6CilDzw0Gd1brLri3emkC+1N2J6ZCCuY1Cglo56M63S0jOeBZDQlemOiRd686MYVMl9ELJBzN3A=="], + + "qs": ["qs@6.14.2", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q=="], + + "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], + + "quasar": ["quasar@2.18.6", "", {}, "sha512-ZlK+vJXOBPSFDCNQDBDNwSI+AHoqaFPxK8ve6mhsYLhMKWI5b8zsGY9VU1xYjngO2aBvU4fvGWXy4tTbzrBk8Q=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], + + "readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], + + "readdir-glob": ["readdir-glob@1.1.3", "", { "dependencies": { "minimatch": "^5.1.0" } }, "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA=="], + + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "relateurl": ["relateurl@0.2.7", "", {}, "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog=="], + + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + + "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], + + "rollup": ["rollup@4.59.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.59.0", "@rollup/rollup-android-arm64": "4.59.0", "@rollup/rollup-darwin-arm64": "4.59.0", "@rollup/rollup-darwin-x64": "4.59.0", "@rollup/rollup-freebsd-arm64": "4.59.0", "@rollup/rollup-freebsd-x64": "4.59.0", "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", "@rollup/rollup-linux-arm-musleabihf": "4.59.0", "@rollup/rollup-linux-arm64-gnu": "4.59.0", "@rollup/rollup-linux-arm64-musl": "4.59.0", "@rollup/rollup-linux-loong64-gnu": "4.59.0", "@rollup/rollup-linux-loong64-musl": "4.59.0", "@rollup/rollup-linux-ppc64-gnu": "4.59.0", "@rollup/rollup-linux-ppc64-musl": "4.59.0", "@rollup/rollup-linux-riscv64-gnu": "4.59.0", "@rollup/rollup-linux-riscv64-musl": "4.59.0", "@rollup/rollup-linux-s390x-gnu": "4.59.0", "@rollup/rollup-linux-x64-gnu": "4.59.0", "@rollup/rollup-linux-x64-musl": "4.59.0", "@rollup/rollup-openbsd-x64": "4.59.0", "@rollup/rollup-openharmony-arm64": "4.59.0", "@rollup/rollup-win32-arm64-msvc": "4.59.0", "@rollup/rollup-win32-ia32-msvc": "4.59.0", "@rollup/rollup-win32-x64-gnu": "4.59.0", "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg=="], + + "rollup-plugin-visualizer": ["rollup-plugin-visualizer@5.14.0", "", { "dependencies": { "open": "^8.4.0", "picomatch": "^4.0.2", "source-map": "^0.7.4", "yargs": "^17.5.1" }, "peerDependencies": { "rolldown": "1.x", "rollup": "2.x || 3.x || 4.x" }, "optionalPeers": ["rolldown", "rollup"], "bin": { "rollup-plugin-visualizer": "dist/bin/cli.js" } }, "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA=="], + + "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], + + "run-async": ["run-async@3.0.0", "", {}, "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "rxjs": ["rxjs@7.8.2", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "sass": ["sass@1.98.0", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A=="], + + "sass-embedded": ["sass-embedded@1.98.0", "", { "dependencies": { "@bufbuild/protobuf": "^2.5.0", "colorjs.io": "^0.5.0", "immutable": "^5.1.5", "rxjs": "^7.4.0", "supports-color": "^8.1.1", "sync-child-process": "^1.0.2", "varint": "^6.0.0" }, "optionalDependencies": { "sass-embedded-all-unknown": "1.98.0", "sass-embedded-android-arm": "1.98.0", "sass-embedded-android-arm64": "1.98.0", "sass-embedded-android-riscv64": "1.98.0", "sass-embedded-android-x64": "1.98.0", "sass-embedded-darwin-arm64": "1.98.0", "sass-embedded-darwin-x64": "1.98.0", "sass-embedded-linux-arm": "1.98.0", "sass-embedded-linux-arm64": "1.98.0", "sass-embedded-linux-musl-arm": "1.98.0", "sass-embedded-linux-musl-arm64": "1.98.0", "sass-embedded-linux-musl-riscv64": "1.98.0", "sass-embedded-linux-musl-x64": "1.98.0", "sass-embedded-linux-riscv64": "1.98.0", "sass-embedded-linux-x64": "1.98.0", "sass-embedded-unknown-all": "1.98.0", "sass-embedded-win32-arm64": "1.98.0", "sass-embedded-win32-x64": "1.98.0" }, "bin": { "sass": "dist/bin/sass.js" } }, "sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg=="], + + "sass-embedded-all-unknown": ["sass-embedded-all-unknown@1.98.0", "", { "dependencies": { "sass": "1.98.0" }, "cpu": [ "!arm", "!x64", "!arm64", ] }, "sha512-6n4RyK7/1mhdfYvpP3CClS3fGoYqDvRmLClCESS6I7+SAzqjxvGG6u5Fo+cb1nrPNbbilgbM4QKdgcgWHO9NCA=="], + + "sass-embedded-android-arm": ["sass-embedded-android-arm@1.98.0", "", { "os": "android", "cpu": "arm" }, "sha512-LjGiMhHgu7VL1n7EJxTCre1x14bUsWd9d3dnkS2rku003IWOI/fxc7OXgaKagoVzok1kv09rzO3vFXJR5ZeONQ=="], + + "sass-embedded-android-arm64": ["sass-embedded-android-arm64@1.98.0", "", { "os": "android", "cpu": "arm64" }, "sha512-M9Ra98A6vYJHpwhoC/5EuH1eOshQ9ZyNwC8XifUDSbRl/cGeQceT1NReR9wFj3L7s1pIbmes1vMmaY2np0uAKQ=="], + + "sass-embedded-android-riscv64": ["sass-embedded-android-riscv64@1.98.0", "", { "os": "android", "cpu": "none" }, "sha512-WPe+0NbaJIZE1fq/RfCZANMeIgmy83x4f+SvFOG7LhUthHpZWcOcrPTsCKKmN3xMT3iw+4DXvqTYOCYGRL3hcQ=="], + + "sass-embedded-android-x64": ["sass-embedded-android-x64@1.98.0", "", { "os": "android", "cpu": "x64" }, "sha512-zrD25dT7OHPEgLWuPEByybnIfx4rnCtfge4clBgjZdZ3lF6E7qNLRBtSBmoFflh6Vg0RlEjJo5VlpnTMBM5MQQ=="], + + "sass-embedded-darwin-arm64": ["sass-embedded-darwin-arm64@1.98.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cgr1z9rBnCdMf8K+JabIaYd9Rag2OJi5mjq08XJfbJGMZV/TA6hFJCLGkr5/+ZOn4/geTM5/3aSfQ8z5EIJAOg=="], + + "sass-embedded-darwin-x64": ["sass-embedded-darwin-x64@1.98.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-OLBOCs/NPeiMqTdOrMFbVHBQFj19GS3bSVSxIhcCq16ZyhouUkYJEZjxQgzv9SWA2q6Ki8GCqp4k6jMeUY9dcA=="], + + "sass-embedded-linux-arm": ["sass-embedded-linux-arm@1.98.0", "", { "os": "linux", "cpu": "arm" }, "sha512-03baQZCxVyEp8v1NWBRlzGYrmVT/LK7ZrHlF1piscGiGxwfdxoLXVuxsylx3qn/dD/4i/rh7Bzk7reK1br9jvQ=="], + + "sass-embedded-linux-arm64": ["sass-embedded-linux-arm64@1.98.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-axOE3t2MTBwCtkUCbrdM++Gj0gC0fdHJPrgzQ+q1WUmY9NoNMGqflBtk5mBZaWUeha2qYO3FawxCB8lctFwCtw=="], + + "sass-embedded-linux-musl-arm": ["sass-embedded-linux-musl-arm@1.98.0", "", { "os": "linux", "cpu": "arm" }, "sha512-OBkjTDPYR4hSaueOGIM6FDpl9nt/VZwbSRpbNu9/eEJcxE8G/vynRugW8KRZmCFjPy8j/jkGBvvS+k9iOqKV3g=="], + + "sass-embedded-linux-musl-arm64": ["sass-embedded-linux-musl-arm64@1.98.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-LeqNxQA8y4opjhe68CcFvMzCSrBuJqYVFbwElEj9bagHXQHTp9xVPJRn6VcrC+0VLEDq13HVXMv7RslIuU0zmA=="], + + "sass-embedded-linux-musl-riscv64": ["sass-embedded-linux-musl-riscv64@1.98.0", "", { "os": "linux", "cpu": "none" }, "sha512-7w6hSuOHKt8FZsmjRb3iGSxEzM87fO9+M8nt5JIQYMhHTj5C+JY/vcske0v715HCVj5e1xyTnbGXf8FcASeAIw=="], + + "sass-embedded-linux-musl-x64": ["sass-embedded-linux-musl-x64@1.98.0", "", { "os": "linux", "cpu": "x64" }, "sha512-QikNyDEJOVqPmxyCFkci8ZdCwEssdItfjQFJB+D+Uy5HFqcS5Lv3d3GxWNX/h1dSb23RPyQdQc267ok5SbEyJw=="], + + "sass-embedded-linux-riscv64": ["sass-embedded-linux-riscv64@1.98.0", "", { "os": "linux", "cpu": "none" }, "sha512-E7fNytc/v4xFBQKzgzBddV/jretA4ULAPO6XmtBiQu4zZBdBozuSxsQLe2+XXeb0X4S2GIl72V7IPABdqke/vA=="], + + "sass-embedded-linux-x64": ["sass-embedded-linux-x64@1.98.0", "", { "os": "linux", "cpu": "x64" }, "sha512-VsvP0t/uw00mMNPv3vwyYKUrFbqzxQHnRMO+bHdAMjvLw4NFf6mscpym9Bzf+NXwi1ZNKnB6DtXjmcpcvqFqYg=="], + + "sass-embedded-unknown-all": ["sass-embedded-unknown-all@1.98.0", "", { "dependencies": { "sass": "1.98.0" }, "os": [ "!linux", "!win32", "!darwin", "!android", ] }, "sha512-C4MMzcAo3oEDQnW7L8SBgB9F2Fq5qHPnaYTZRMOH3Mp/7kM4OooBInXpCiiFjLnjY95hzP4KyctVx0uYR6MYlQ=="], + + "sass-embedded-win32-arm64": ["sass-embedded-win32-arm64@1.98.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-nP/10xbAiPbhQkMr3zQfXE4TuOxPzWRQe1Hgbi90jv2R4TbzbqQTuZVOaJf7KOAN4L2Bo6XCTRjK5XkVnwZuwQ=="], + + "sass-embedded-win32-x64": ["sass-embedded-win32-x64@1.98.0", "", { "os": "win32", "cpu": "x64" }, "sha512-/lbrVsfbcbdZQ5SJCWcV0NVPd6YRs+FtAnfedp4WbCkO/ZO7Zt/58MvI4X2BVpRY/Nt5ZBo1/7v2gYcQ+J4svQ=="], + + "sax": ["sax@1.1.4", "", {}, "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg=="], + + "scule": ["scule@1.3.0", "", {}, "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="], + + "selfsigned": ["selfsigned@2.4.1", "", { "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q=="], + + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], + + "serialize-javascript": ["serialize-javascript@6.0.2", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="], + + "serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "shallow-clone": ["shallow-clone@3.0.1", "", { "dependencies": { "kind-of": "^6.0.2" } }, "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], + + "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], + + "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], + + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], + + "speakingurl": ["speakingurl@14.0.1", "", {}, "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="], + + "stack-trace": ["stack-trace@1.0.0-pre2", "", {}, "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "streamx": ["streamx@2.23.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + + "superjson": ["superjson@2.2.6", "", { "dependencies": { "copy-anything": "^4" } }, "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA=="], + + "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + + "sync-child-process": ["sync-child-process@1.0.2", "", { "dependencies": { "sync-message-port": "^1.0.0" } }, "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA=="], + + "sync-message-port": ["sync-message-port@1.2.0", "", {}, "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg=="], + + "synckit": ["synckit@0.11.12", "", { "dependencies": { "@pkgr/core": "^0.2.9" } }, "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ=="], + + "tar-fs": ["tar-fs@3.1.2", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw=="], + + "tar-stream": ["tar-stream@3.1.8", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ=="], + + "teex": ["teex@1.0.1", "", { "dependencies": { "streamx": "^2.12.5" } }, "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg=="], + + "terser": ["terser@5.46.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg=="], + + "text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="], + + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="], + + "ts-essentials": ["ts-essentials@9.4.2", "", { "peerDependencies": { "typescript": ">=4.1.0" }, "optionalPeers": ["typescript"] }, "sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + + "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], + + "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], + + "typed-query-selector": ["typed-query-selector@2.12.1", "", {}, "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "typescript-eslint": ["typescript-eslint@8.57.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.57.0", "@typescript-eslint/parser": "8.57.0", "@typescript-eslint/typescript-estree": "8.57.0", "@typescript-eslint/utils": "8.57.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA=="], + + "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], + + "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + + "unplugin": ["unplugin@1.16.1", "", { "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" } }, "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w=="], + + "unplugin-utils": ["unplugin-utils@0.3.1", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="], + + "varint": ["varint@6.0.0", "", {}, "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="], + + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], + + "vite-plugin-checker": ["vite-plugin-checker@0.11.0", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "chokidar": "^4.0.3", "npm-run-path": "^6.0.0", "picocolors": "^1.1.1", "picomatch": "^4.0.3", "tiny-invariant": "^1.3.3", "tinyglobby": "^0.2.14", "vscode-uri": "^3.1.0" }, "peerDependencies": { "@biomejs/biome": ">=1.7", "eslint": ">=7", "meow": "^13.2.0", "optionator": "^0.9.4", "oxlint": ">=1", "stylelint": ">=16", "typescript": "*", "vite": ">=5.4.20", "vls": "*", "vti": "*", "vue-tsc": "~2.2.10 || ^3.0.0" }, "optionalPeers": ["@biomejs/biome", "eslint", "meow", "optionator", "oxlint", "stylelint", "typescript", "vls", "vti", "vue-tsc"] }, "sha512-iUdO9Pl9UIBRPAragwi3as/BXXTtRu4G12L3CMrjx+WVTd9g/MsqNakreib9M/2YRVkhZYiTEwdH2j4Dm0w7lw=="], + + "vscode-uri": ["vscode-uri@3.1.0", "", {}, "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="], + + "vue": ["vue@3.5.30", "", { "dependencies": { "@vue/compiler-dom": "3.5.30", "@vue/compiler-sfc": "3.5.30", "@vue/runtime-dom": "3.5.30", "@vue/server-renderer": "3.5.30", "@vue/shared": "3.5.30" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg=="], + + "vue-eslint-parser": ["vue-eslint-parser@10.4.0", "", { "dependencies": { "debug": "^4.4.0", "eslint-scope": "^8.2.0 || ^9.0.0", "eslint-visitor-keys": "^4.2.0 || ^5.0.0", "espree": "^10.3.0 || ^11.0.0", "esquery": "^1.6.0", "semver": "^7.6.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0" } }, "sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg=="], + + "vue-i18n": ["vue-i18n@11.3.0", "", { "dependencies": { "@intlify/core-base": "11.3.0", "@intlify/devtools-types": "11.3.0", "@intlify/shared": "11.3.0", "@vue/devtools-api": "^6.5.0" }, "peerDependencies": { "vue": "^3.0.0" } }, "sha512-1J+xDfDJTLhDxElkd3+XUhT7FYSZd2b8pa7IRKGxhWH/8yt6PTvi3xmWhGwhYT5EaXdatui11pF2R6tL73/zPA=="], + + "vue-router": ["vue-router@5.0.3", "", { "dependencies": { "@babel/generator": "^7.28.6", "@vue-macros/common": "^3.1.1", "@vue/devtools-api": "^8.0.6", "ast-walker-scope": "^0.8.3", "chokidar": "^5.0.0", "json5": "^2.2.3", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.0", "muggle-string": "^0.4.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "scule": "^1.3.0", "tinyglobby": "^0.2.15", "unplugin": "^3.0.0", "unplugin-utils": "^0.3.1", "yaml": "^2.8.2" }, "peerDependencies": { "@pinia/colada": ">=0.21.2", "@vue/compiler-sfc": "^3.5.17", "pinia": "^3.0.4", "vue": "^3.5.0" }, "optionalPeers": ["@pinia/colada", "@vue/compiler-sfc", "pinia"] }, "sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw=="], + + "vue-tsc": ["vue-tsc@3.2.5", "", { "dependencies": { "@volar/typescript": "2.4.28", "@vue/language-core": "3.2.5" }, "peerDependencies": { "typescript": ">=5.0.0" }, "bin": { "vue-tsc": "bin/vue-tsc.js" } }, "sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA=="], + + "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], + + "webdriver-bidi-protocol": ["webdriver-bidi-protocol@0.4.1", "", {}, "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw=="], + + "webpack-merge": ["webpack-merge@6.0.1", "", { "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", "wildcard": "^2.0.1" } }, "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg=="], + + "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "wildcard": ["wildcard@2.0.1", "", {}, "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="], + + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + + "wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + + "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="], + + "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + + "xml-name-validator": ["xml-name-validator@4.0.0", "", {}, "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], + + "yaml-eslint-parser": ["yaml-eslint-parser@1.3.2", "", { "dependencies": { "eslint-visitor-keys": "^3.0.0", "yaml": "^2.0.0" } }, "sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg=="], + + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], + + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], + + "zip-stream": ["zip-stream@6.0.1", "", { "dependencies": { "archiver-utils": "^5.0.0", "compress-commons": "^6.0.2", "readable-stream": "^4.0.0" } }, "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA=="], + + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + + "@inquirer/external-editor/iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], + + "@intlify/core-base/@intlify/message-compiler": ["@intlify/message-compiler@11.3.0", "", { "dependencies": { "@intlify/shared": "11.3.0", "source-map-js": "^1.0.2" } }, "sha512-RAJp3TMsqohg/Wa7bVF3cChRhecSYBLrTCQSj7j0UtWVFLP+6iEJoE2zb7GU5fp+fmG5kCbUdzhmlAUCWXiUJw=="], + + "@intlify/core-base/@intlify/shared": ["@intlify/shared@11.3.0", "", {}, "sha512-LC6P/uay7rXL5zZ5+5iRJfLs/iUN8apu9tm8YqQVmW3Uq3X4A0dOFUIDuAmB7gAC29wTHOS3EiN/IosNSz0eNQ=="], + + "@intlify/devtools-types/@intlify/shared": ["@intlify/shared@11.3.0", "", {}, "sha512-LC6P/uay7rXL5zZ5+5iRJfLs/iUN8apu9tm8YqQVmW3Uq3X4A0dOFUIDuAmB7gAC29wTHOS3EiN/IosNSz0eNQ=="], + + "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "@isaacs/cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + + "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="], + + "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], + + "@vue/compiler-core/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], + + "accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "ast-kit/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "bl/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "bl/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "clean-css/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], + + "jsonc-eslint-parser/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "jsonc-eslint-parser/espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], + + "lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + + "local-pkg/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], + + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mlly/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + + "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "readdir-glob/minimatch": ["minimatch@5.1.9", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw=="], + + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "rollup-plugin-visualizer/open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], + + "sass/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + + "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + + "unplugin-utils/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], + + "vite-plugin-checker/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + + "vue-eslint-parser/eslint-scope": ["eslint-scope@9.1.2", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ=="], + + "vue-eslint-parser/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], + + "vue-eslint-parser/espree": ["espree@11.2.0", "", { "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" } }, "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw=="], + + "vue-i18n/@intlify/shared": ["@intlify/shared@11.3.0", "", {}, "sha512-LC6P/uay7rXL5zZ5+5iRJfLs/iUN8apu9tm8YqQVmW3Uq3X4A0dOFUIDuAmB7gAC29wTHOS3EiN/IosNSz0eNQ=="], + + "vue-i18n/@vue/devtools-api": ["@vue/devtools-api@6.6.4", "", {}, "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="], + + "vue-router/@vue/devtools-api": ["@vue/devtools-api@8.0.7", "", { "dependencies": { "@vue/devtools-kit": "^8.0.7" } }, "sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA=="], + + "vue-router/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + + "vue-router/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "vue-router/unplugin": ["unplugin@3.0.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg=="], + + "yaml-eslint-parser/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], + + "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.4", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg=="], + + "body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + + "lazystream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + + "local-pkg/pkg-types/confbox": ["confbox@0.2.4", "", {}, "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ=="], + + "local-pkg/pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "readdir-glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "rollup-plugin-visualizer/open/define-lazy-prop": ["define-lazy-prop@2.0.0", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="], + + "rollup-plugin-visualizer/open/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + + "rollup-plugin-visualizer/open/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + + "sass/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "vite-plugin-checker/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], + + "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], + + "vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="], + + "vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="], + + "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="], + + "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="], + + "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="], + + "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="], + + "vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="], + + "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="], + + "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="], + + "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="], + + "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="], + + "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="], + + "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="], + + "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="], + + "vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="], + + "vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="], + + "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="], + + "vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="], + + "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="], + + "vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="], + + "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="], + + "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="], + + "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="], + + "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], + + "vue-router/@vue/devtools-api/@vue/devtools-kit": ["@vue/devtools-kit@8.0.7", "", { "dependencies": { "@vue/devtools-shared": "^8.0.7", "birpc": "^2.6.1", "hookable": "^5.5.3", "perfect-debounce": "^2.0.0" } }, "sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw=="], + + "vue-router/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + + "vue-router/@vue/devtools-api/@vue/devtools-kit/@vue/devtools-shared": ["@vue/devtools-shared@8.0.7", "", {}, "sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA=="], + + "vue-router/@vue/devtools-api/@vue/devtools-kit/perfect-debounce": ["perfect-debounce@2.1.0", "", {}, "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g=="], + } +} diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js new file mode 100644 index 0000000..8515d73 --- /dev/null +++ b/frontend/eslint.config.js @@ -0,0 +1,83 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import pluginVue from 'eslint-plugin-vue'; +import pluginQuasar from '@quasar/app-vite/eslint'; +import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'; +import prettierSkipFormatting from '@vue/eslint-config-prettier/skip-formatting'; + +export default defineConfigWithVueTs( + { + /** + * Ignore the following files. + * Please note that pluginQuasar.configs.recommended() already ignores + * the "node_modules" folder for you (and all other Quasar project + * relevant folders and files). + * + * ESLint requires "ignores" key to be the only one in this object + */ + // ignores: [] + }, + + pluginQuasar.configs.recommended(), + js.configs.recommended, + + /** + * https://eslint.vuejs.org + * + * pluginVue.configs.base + * -> Settings and rules to enable correct ESLint parsing. + * pluginVue.configs[ 'flat/essential'] + * -> base, plus rules to prevent errors or unintended behavior. + * pluginVue.configs["flat/strongly-recommended"] + * -> Above, plus rules to considerably improve code readability and/or dev experience. + * pluginVue.configs["flat/recommended"] + * -> Above, plus rules to enforce subjective community defaults to ensure consistency. + */ + pluginVue.configs['flat/essential'], + + { + files: ['**/*.ts', '**/*.vue'], + rules: { + '@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports' }], + }, + }, + // https://github.com/vuejs/eslint-config-typescript + vueTsConfigs.recommendedTypeChecked, + + { + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + + globals: { + ...globals.browser, + ...globals.node, // SSR, Electron, config files + process: 'readonly', // process.env.* + ga: 'readonly', // Google Analytics + cordova: 'readonly', + Capacitor: 'readonly', + chrome: 'readonly', // BEX related + browser: 'readonly', // BEX related + }, + }, + + // add your custom rules here + rules: { + 'prefer-promise-reject-errors': 'off', + + // allow debugger during development only + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + }, + }, + + { + files: ['src-pwa/custom-service-worker.ts'], + languageOptions: { + globals: { + ...globals.serviceworker, + }, + }, + }, + + prettierSkipFormatting, +); diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..3086f04 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,24 @@ + + + + <%= productName %> + + + + + + + + + + + + + + + + + diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..6a74cf9 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,50 @@ +{ + "name": "frontend", + "version": "0.0.1", + "description": "A Quasar Project", + "productName": "Frontend APP", + "author": "fabio ", + "type": "module", + "private": true, + "scripts": { + "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", + "format": "prettier --write \"**/*.{js,ts,vue,scss,html,md,json}\" --ignore-path .gitignore", + "test": "echo \"No test specified\" && exit 0", + "dev": "quasar dev", + "build": "quasar build", + "build:static": "quasar build && node scripts/prerender.mjs", + "postinstall": "quasar prepare" + }, + "dependencies": { + "vue-i18n": "^11.0.0", + "pinia": "^3.0.1", + "@quasar/extras": "^1.16.4", + "quasar": "^2.16.0", + "vue": "^3.5.22", + "vue-router": "^5.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.14.0", + "eslint": "^9.14.0", + "eslint-plugin-vue": "^10.4.0", + "globals": "^16.4.0", + "vue-tsc": "^3.0.7", + "@vue/eslint-config-typescript": "^14.4.0", + "vite-plugin-checker": "^0.11.0", + "vue-eslint-parser": "^10.2.0", + "@vue/eslint-config-prettier": "^10.1.0", + "prettier": "^3.3.3", + "@types/node": "^20.5.9", + "@intlify/unplugin-vue-i18n": "^4.0.0", + "puppeteer": "^24.39.1", + "@quasar/app-vite": "^2.1.0", + "autoprefixer": "^10.4.2", + "typescript": "^5.9.2" + }, + "engines": { + "node": "^28 || ^26 || ^24 || ^22 || ^20", + "npm": ">= 6.13.4", + "yarn": ">= 1.21.1", + "pnpm": ">= 10.0.0" + } +} diff --git a/frontend/pnpm-workspace.yaml b/frontend/pnpm-workspace.yaml new file mode 100644 index 0000000..db95da4 --- /dev/null +++ b/frontend/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +# https://pnpm.io/settings +shamefullyHoist: true diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js new file mode 100644 index 0000000..4498380 --- /dev/null +++ b/frontend/postcss.config.js @@ -0,0 +1,29 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +import autoprefixer from 'autoprefixer'; +// import rtlcss from 'postcss-rtlcss' + +export default { + plugins: [ + // https://github.com/postcss/autoprefixer + autoprefixer({ + overrideBrowserslist: [ + 'last 4 Chrome versions', + 'last 4 Firefox versions', + 'last 4 Edge versions', + 'last 4 Safari versions', + 'last 4 Android versions', + 'last 4 ChromeAndroid versions', + 'last 4 FirefoxAndroid versions', + 'last 4 iOS versions', + ], + }), + + // https://github.com/elchininet/postcss-rtlcss + // If you want to support RTL css, then + // 1. yarn/pnpm/bun/npm install postcss-rtlcss + // 2. optionally set quasar.config.js > framework > lang to an RTL language + // 3. uncomment the following line (and its import statement above): + // rtlcss() + ], +}; diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ae7bbdb712f8ce9fe49761b68ef3a2d4c51606f9 GIT binary patch literal 64483 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 literal 0 HcmV?d00001 diff --git a/frontend/public/icons/favicon-128x128.png b/frontend/public/icons/favicon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..14011761929f4ffbef81be318a347c0032eb6f42 GIT binary patch literal 12324 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 h$J#u>{O`^5_ { + return { + // https://v2.quasar.dev/quasar-cli-vite/prefetch-feature + // preFetch: true, + + // app boot file (/src/boot) + // --> boot files are part of "main.js" + // https://v2.quasar.dev/quasar-cli-vite/boot-files + boot: ['i18n'], + + // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#css + css: ['app.scss'], + + // https://github.com/quasarframework/quasar/tree/dev/extras + extras: [ + // 'ionicons-v4', + // 'mdi-v7', + // 'fontawesome-v6', + // 'eva-icons', + // 'themify', + // 'line-awesome', + // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! + + 'roboto-font', // optional, you are not bound to it + 'material-icons', // optional, you are not bound to it + ], + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#build + build: { + target: { + browser: ['es2022', 'firefox115', 'chrome115', 'safari14'], + node: 'node20', + }, + + typescript: { + strict: true, + vueShim: true, + // extendTsConfig (tsConfig) {} + }, + + vueRouterMode: 'history', // available values: 'hash', 'history' + // vueRouterBase, + // vueDevtools, + // vueOptionsAPI: false, + + // rebuildCache: true, // rebuilds Vite/linter/etc cache on startup + + // publicPath: '/', + // analyze: true, + // env: {}, + // rawDefine: {} + // ignorePublicFolder: true, + // minify: false, + // polyfillModulePreload: true, + // distDir + + // extendViteConf (viteConf) {}, + // viteVuePluginOptions: {}, + + vitePlugins: [ + [ + '@intlify/unplugin-vue-i18n/vite', + { + // if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false` + // compositionOnly: false, + + // if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}', + // you need to set `runtimeOnly: false` + // runtimeOnly: false, + + ssr: ctx.modeName === 'ssr', + + // you need to set i18n resource including paths ! + include: [fileURLToPath(new URL('./src/i18n', import.meta.url))], + }, + ], + + [ + 'vite-plugin-checker', + { + vueTsc: true, + eslint: { + lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"', + useFlatConfig: true, + }, + }, + { server: false }, + ], + ], + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#devserver + devServer: { + // https: true, + open: true, // opens browser window automatically + }, + + // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#framework + framework: { + config: {}, + + // iconSet: 'material-icons', // Quasar icon set + // lang: 'en-US', // Quasar language pack + + // For special cases outside of where the auto-import strategy can have an impact + // (like functional components as one of the examples), + // you can manually specify Quasar components/directives to be available everywhere: + // + // components: [], + // directives: [], + + // Quasar plugins + plugins: [], + }, + + // animations: 'all', // --- includes all animations + // https://v2.quasar.dev/options/animations + animations: [], + + // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#sourcefiles + // sourceFiles: { + // rootComponent: 'src/App.vue', + // router: 'src/router/index', + // store: 'src/store/index', + // pwaRegisterServiceWorker: 'src-pwa/register-service-worker', + // pwaServiceWorker: 'src-pwa/custom-service-worker', + // pwaManifestFile: 'src-pwa/manifest.json', + // electronMain: 'src-electron/electron-main', + // electronPreload: 'src-electron/electron-preload' + // bexManifestFile: 'src-bex/manifest.json + // }, + + // https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr + ssr: { + prodPort: 3000, // The default port that the production server should use + // (gets superseded if process.env.PORT is specified at runtime) + + middlewares: [ + 'render', // keep this as last one + ], + + // extendPackageJson (json) {}, + // extendSSRWebserverConf (esbuildConf) {}, + + // manualStoreSerialization: true, + // manualStoreSsrContextInjection: true, + // manualStoreHydration: true, + // manualPostHydrationTrigger: true, + + pwa: false, + // pwaOfflineHtmlFilename: 'offline.html', // do NOT use index.html as name! + + // pwaExtendGenerateSWOptions (cfg) {}, + // pwaExtendInjectManifestOptions (cfg) {} + }, + + // https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa + pwa: { + workboxMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest' + // swFilename: 'sw.js', + // manifestFilename: 'manifest.json', + // extendManifestJson (json) {}, + // useCredentialsForManifestTag: true, + // injectPwaMetaTags: false, + // extendPWACustomSWConf (esbuildConf) {}, + // extendGenerateSWOptions (cfg) {}, + // extendInjectManifestOptions (cfg) {} + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova + cordova: { + // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor + capacitor: { + hideSplashscreen: true, + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron + electron: { + // extendElectronMainConf (esbuildConf) {}, + // extendElectronPreloadConf (esbuildConf) {}, + + // extendPackageJson (json) {}, + + // Electron preload scripts (if any) from /src-electron, WITHOUT file extension + preloadScripts: ['electron-preload'], + + // specify the debugging port to use for the Electron app when running in development mode + inspectPort: 5858, + + bundler: 'packager', // 'packager' or 'builder' + + packager: { + // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options + // OS X / Mac App Store + // appBundleId: '', + // appCategoryType: '', + // osxSign: '', + // protocol: 'myapp://path', + // Windows only + // win32metadata: { ... } + }, + + builder: { + // https://www.electron.build/configuration + + appId: 'frontend', + }, + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex + bex: { + // extendBexScriptsConf (esbuildConf) {}, + // extendBexManifestJson (json) {}, + + /** + * The list of extra scripts (js/ts) not in your bex manifest that you want to + * compile and use in your browser extension. Maybe dynamic use them? + * + * Each entry in the list should be a relative filename to /src-bex/ + * + * @example [ 'my-script.ts', 'sub-folder/my-other-script.js' ] + */ + extraScripts: [], + }, + }; +}); diff --git a/frontend/scripts/prerender.mjs b/frontend/scripts/prerender.mjs new file mode 100644 index 0000000..6070548 --- /dev/null +++ b/frontend/scripts/prerender.mjs @@ -0,0 +1,249 @@ +/** + * prerender.mjs — Generate static HTML for public routes. + * + * Usage: + * pnpm build:static → quasar build + node scripts/prerender.mjs + * + * Output: + * dist/spa/index.html (route /) + * dist/spa/someroute/index.html (any additional public route) + * + * ─── Go handler (GoFiber example) ──────────────────────────────────────────── + * + * app.Static("/", "./dist/spa", fiber.Static{ + * Index: "index.html", + * Browse: false, + * MaxAge: 0, // no cache for HTML + * }) + * + * // Fallback: serve index.html for any unknown path (SPA client routing) + * app.Use(func(c *fiber.Ctx) error { + * // Serve pre-rendered HTML if it exists, otherwise fall back to SPA shell + * candidate := "./dist/spa" + c.Path() + "/index.html" + * if _, err := os.Stat(candidate); err == nil { + * return c.SendFile(candidate) + * } + * return c.SendFile("./dist/spa/index.html") + * }) + * + * ─── net/http example ───────────────────────────────────────────────────────── + * + * fs := http.FileServer(http.Dir("./dist/spa")) + * http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + * candidate := "./dist/spa" + path.Clean(r.URL.Path) + "/index.html" + * if _, err := os.Stat(candidate); err == nil { + * http.ServeFile(w, r, candidate) + * return + * } + * // Serve pre-rendered root or SPA shell + * r2 := r.Clone(r.Context()) + * r2.URL.Path = "/" + * fs.ServeHTTP(w, r2) + * }) + * + * ───────────────────────────────────────────────────────────────────────────── + */ + +import { + copyFileSync, + cpSync, + createReadStream, + existsSync, + mkdirSync, + readFileSync, + readdirSync, + rmSync, + statSync, + writeFileSync, +} from 'node:fs'; +import { createServer } from 'node:http'; +import { extname, join, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import puppeteer from 'puppeteer'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); + +const DIST_DIR = resolve(__dirname, '../dist/spa'); +const ENV_FILE = resolve(__dirname, '../.env'); +const PORT = 4173; + +/** + * Public routes to pre-render. + * Each entry will produce dist/spa{route}/index.html + */ +export const PUBLIC_ROUTES = [ + '/', + // '/about', + // '/terms', + // '/privacy', +]; + +const MIME_TYPES = { + '.html': 'text/html; charset=utf-8', + '.js': 'application/javascript', + '.mjs': 'application/javascript', + '.css': 'text/css', + '.png': 'image/png', + '.jpg': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.svg': 'image/svg+xml', + '.ico': 'image/x-icon', + '.json': 'application/json', + '.woff2': 'font/woff2', + '.woff': 'font/woff', + '.ttf': 'font/ttf', +}; + +function startServer() { + const server = createServer((req, res) => { + const url = req.url?.split('?')[0] ?? '/'; + let filePath = join(DIST_DIR, url === '/' ? 'index.html' : url); + + // SPA fallback: unknown paths or paths without extension → index.html + if (!existsSync(filePath) || !extname(filePath)) { + filePath = join(DIST_DIR, 'index.html'); + } + + const mime = MIME_TYPES[extname(filePath)] ?? 'application/octet-stream'; + res.setHeader('Content-Type', mime); + res.setHeader('Cache-Control', 'no-store'); + + createReadStream(filePath) + .on('error', () => { + res.writeHead(404); + res.end('Not found'); + }) + .pipe(res); + }); + + return new Promise((resolve) => server.listen(PORT, () => resolve(server))); +} + +function parseEnvFile(filePath) { + if (!existsSync(filePath)) { + return {}; + } + + const data = readFileSync(filePath, 'utf-8'); + const env = {}; + + for (const line of data.split('\n')) { + const trimmed = line.trim(); + if (!trimmed || trimmed.startsWith('#')) { + continue; + } + + const idx = trimmed.indexOf('='); + if (idx <= 0) { + continue; + } + + const key = trimmed.slice(0, idx).trim(); + let value = trimmed.slice(idx + 1).trim(); + + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { + value = value.slice(1, -1); + } + + env[key] = value; + } + + return env; +} + +function copyDirectoryContent(srcDir, destDir) { + mkdirSync(destDir, { recursive: true }); + + for (const entry of readdirSync(srcDir)) { + const srcPath = join(srcDir, entry); + const destPath = join(destDir, entry); + const stat = statSync(srcPath); + + if (stat.isDirectory()) { + cpSync(srcPath, destPath, { recursive: true, force: true }); + } else { + copyFileSync(srcPath, destPath); + } + } +} + +function copySpaToGoTarget() { + const envFromFile = parseEnvFile(ENV_FILE); + + const goProjectDir = process.env.GO_PROJECT_DIR ?? envFromFile.GO_PROJECT_DIR; + const goSpaTargetDir = + process.env.GO_SPA_TARGET_DIR ?? + envFromFile.GO_SPA_TARGET_DIR ?? + (goProjectDir ? join(goProjectDir, 'spa') : null); + + if (!goSpaTargetDir) { + console.log('│ copy : skipped (set GO_PROJECT_DIR or GO_SPA_TARGET_DIR in .env)'); + return; + } + + const resolvedTarget = resolve(goSpaTargetDir); + + rmSync(resolvedTarget, { recursive: true, force: true }); + mkdirSync(resolvedTarget, { recursive: true }); + copyDirectoryContent(DIST_DIR, resolvedTarget); + + console.log(`│ copy : ${DIST_DIR} -> ${resolvedTarget}`); +} + +async function prerender() { + console.log('┌─ Static prerender ────────────────────────────────────────────'); + console.log(`│ dist dir : ${DIST_DIR}`); + console.log(`│ routes : ${PUBLIC_ROUTES.join(', ')}`); + console.log('│'); + + if (!existsSync(DIST_DIR)) { + console.error('│ ERROR: dist/spa not found — run `pnpm build` first.'); + process.exit(1); + } + + const server = await startServer(); + + const browser = await puppeteer.launch({ + headless: true, + args: ['--no-sandbox', '--disable-setuid-sandbox'], + }); + + for (const route of PUBLIC_ROUTES) { + process.stdout.write(`│ ${route.padEnd(30)} → `); + + const page = await browser.newPage(); + + // Silence browser console noise + page.on('console', () => {}); + + await page.goto(`http://localhost:${PORT}${route}`, { + waitUntil: 'networkidle0', + timeout: 30_000, + }); + + const html = await page.content(); + + const outDir = route === '/' ? DIST_DIR : join(DIST_DIR, route); + mkdirSync(outDir, { recursive: true }); + writeFileSync(join(outDir, 'index.html'), html, 'utf-8'); + + console.log(`${outDir}/index.html`); + await page.close(); + } + + await browser.close(); + server.close(); + + copySpaToGoTarget(); + + console.log('│'); + console.log('└─ Done ✓'); +} + +prerender().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/frontend/src/App.vue b/frontend/src/App.vue new file mode 100644 index 0000000..a43423a --- /dev/null +++ b/frontend/src/App.vue @@ -0,0 +1,21 @@ + + + diff --git a/frontend/src/api/api.ts b/frontend/src/api/api.ts new file mode 100644 index 0000000..e104374 --- /dev/null +++ b/frontend/src/api/api.ts @@ -0,0 +1,483 @@ +// +// Typescript API generated from gofiber backend +// Copyright (C) 2022 - 2025 Fabio Prada +// +// This file was generated by github.com/millevolte/ts-rpc +// +// Mar 15, 2026 16:33:29 UTC +// + +export interface ApiRestResponse { + data?: unknown; + error: string | null; +} + +function isApiRestResponse(data: unknown): data is ApiRestResponse { + return ( + typeof data === "object" && + data !== null && + Object.prototype.hasOwnProperty.call(data, "data") && + Object.prototype.hasOwnProperty.call(data, "error") + ); +} + +function normalizeError(error: unknown): Error { + if (error instanceof DOMException && error.name === "AbortError") { + return new Error("api.error.timeouterror"); + } + + if (error instanceof TypeError && error.message === "Failed to fetch") { + return new Error("api.error.connectionerror"); + } + + if (error instanceof Error) { + return error; + } + + return new Error(String(error)); +} + +export default class Api { + apiUrl: string; + localStorage: Storage | null; + + constructor(apiurl: string) { + this.apiUrl = apiurl; + this.localStorage = window.localStorage; + } + + async request( + method: string, + url: string, + data: unknown, + timeout = 7000, + upload = false, + ): Promise { + const headers: { [key: string]: string } = { + "Cache-Control": "no-cache", + }; + + if (!upload) { + headers["Content-Type"] = "application/json"; + } + + if (this.localStorage) { + const auth = this.localStorage.getItem("Auth-Token"); + if (auth) { + headers["Auth-Token"] = auth; + } + } + + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + const requestOptions: RequestInit = { + method, + cache: "no-store", + mode: "cors", + credentials: "include", + headers, + signal: controller.signal, + }; + + if (upload) { + requestOptions.body = data as FormData; + } else if (data !== null && data !== undefined) { + requestOptions.body = JSON.stringify(data); + } + + try { + const response = await fetch(url, requestOptions); + + if (!response.ok) { + throw new Error("api.error." + response.statusText); + } + + if (this.localStorage) { + const jwt = response.headers.get("Auth-Token"); + if (jwt) { + this.localStorage.setItem("Auth-Token", jwt); + } + } + + const responseData = (await response.json()) as unknown; + if (!isApiRestResponse(responseData)) { + throw new Error("api.error.wrongdatatype"); + } + + if (responseData.error) { + throw new Error(responseData.error); + } + + return responseData; + } catch (error: unknown) { + throw normalizeError(error); + } finally { + clearTimeout(timeoutId); + } + } + + processResult(result: ApiRestResponse): { + data: unknown; + error: string | null; + } { + if (typeof result.data !== "object") { + return { data: result.data, error: null }; + } + + if (!result.data) { + result.data = {}; + } + + return { data: result.data, error: null }; + } + + processError(error: unknown): { + data: unknown; + error: string | null; + } { + const normalizedError = normalizeError(error); + + if (normalizedError.message === "api.error.timeouterror") { + Object.defineProperty(normalizedError, "__api_error__", { + value: normalizedError.message, + writable: false, + }); + + return { data: null, error: normalizedError.message }; + } + + if (normalizedError.message === "api.error.connectionerror") { + Object.defineProperty(normalizedError, "__api_error__", { + value: normalizedError.message, + writable: false, + }); + + return { data: null, error: normalizedError.message }; + } + + return { + data: null, + error: normalizedError.message, + }; + } + + async POST( + url: string, + data: unknown, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const upload = url.includes("/upload/"); + const result = await this.request( + "POST", + this.apiUrl + url, + data, + timeout, + upload, + ); + + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } + + async GET( + url: string, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = await this.request( + "GET", + this.apiUrl + url, + null, + timeout, + ); + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } + + async UPLOAD( + url: string, + data: unknown, + timeout?: number, + ): Promise<{ + data: unknown; + error: string | null; + }> { + try { + const result = await this.request( + "POST", + this.apiUrl + url, + data, + timeout, + true, + ); + + return this.processResult(result); + } catch (error: unknown) { + return this.processError(error); + } + } +} + +const api = new Api("http://localhost:3000"); + +// Global Declarations +export type Nullable = T | null; + +export type Record = { [P in K]: T }; + +// +// package controllers +// + +export interface LoginRequest { + username: string; + password: string; +} + +export interface RefreshRequest { + refresh_token: string; +} + +export interface SimpleResponse { + message: string; +} + +export interface ForgotPasswordRequest { + email: string; +} + +export interface ResetPasswordRequest { + token: string; + password: string; +} + +export interface ListUsersRequest { + page: number; + pageSize: number; +} + +// +// package models +// + +export interface UserPreferencesShort { + useIdle: boolean; + idleTimeout: number; + useIdlePassword: boolean; + idlePin: string; + useDirectLogin: boolean; + useQuadcodeLogin: boolean; + sendNoticesMail: boolean; + language: string; +} + +export interface UserShort { + email: string; + name: string; + roles: UserRoles; + status: UserStatus; + uuid: string; + details: Nullable; + preferences: Nullable; + avatar: Nullable; +} + +export interface UserCreateInput { + name: string; + email: string; + password: string; + roles: UserRoles; + status: UserStatus; + types: UserTypes; + avatar: Nullable; + details: Nullable; + preferences: Nullable; +} + +export interface UserDetailsShort { + title: string; + firstName: string; + lastName: string; + address: string; + city: string; + zipCode: string; + country: string; + phone: string; +} + +export type UserRoles = string[]; + +export type UserStatus = (typeof EnumUserStatus)[keyof typeof EnumUserStatus]; + +export type UserTypes = string[]; + +export type UsersShort = UserShort[]; + +export const EnumUserStatus = { + UserStatusPending: "pending", + UserStatusActive: "active", + UserStatusDisabled: "disabled", +} as const; + +// +// package routes +// + +// Typescript: TSEndpoint= path=/auth/password/valid; name=validToken; method=POST; request=string; response=controllers.SimpleResponse +// internal/http/routes/auth_routes.go Line: 40 +export const validToken = async ( + data: string, +): Promise<{ data: SimpleResponse; error: Nullable }> => { + return (await api.POST("/auth/password/valid", data)) as { + data: SimpleResponse; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/maildebug; name=mailDebug; method=GET; response=routes.[]MailDebugItem +// internal/http/routes/system_routes.go Line: 48 +export const mailDebug = async (): Promise<{ + data: MailDebugItem[]; + error: Nullable; +}> => { + return (await api.GET("/maildebug")) as { + data: MailDebugItem[]; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/admin/users; name=listUsers; method=POST; request=controllers.ListUsersRequest; response=models.[]UserShort +// internal/http/routes/admin_routes.go Line: 12 +export const listUsers = async ( + data: ListUsersRequest, +): Promise<{ data: UserShort[]; error: Nullable }> => { + return (await api.POST("/admin/users", data)) as { + data: UserShort[]; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/register; name=register; method=POST; request=models.UserCreateInput; response=models.UserShort +// internal/http/routes/auth_routes.go Line: 31 +export const register = async ( + data: UserCreateInput, +): Promise<{ data: UserShort; error: Nullable }> => { + return (await api.POST("/auth/register", data)) as { + data: UserShort; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/metrics; name=metrics; method=GET; response=string +// internal/http/routes/system_routes.go Line: 37 +export const metrics = async (): Promise<{ + data: string; + error: Nullable; +}> => { + return (await api.GET("/metrics")) as { + data: string; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/login; name=login; method=POST; request=controllers.LoginRequest; response=auth.TokenPair +// internal/http/routes/auth_routes.go Line: 22 +export const login = async ( + data: LoginRequest, +): Promise<{ data: TokenPair; error: Nullable }> => { + return (await api.POST("/auth/login", data)) as { + data: TokenPair; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/refresh; name=refresh; method=POST; request=controllers.RefreshRequest; response=auth.TokenPair +// internal/http/routes/auth_routes.go Line: 25 +export const refresh = async ( + data: RefreshRequest, +): Promise<{ data: TokenPair; error: Nullable }> => { + return (await api.POST("/auth/refresh", data)) as { + data: TokenPair; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/password/forgot; name=forgotPassword; method=POST; request=controllers.ForgotPasswordRequest; response=controllers.SimpleResponse +// internal/http/routes/auth_routes.go Line: 34 +export const forgotPassword = async ( + data: ForgotPasswordRequest, +): Promise<{ data: SimpleResponse; error: Nullable }> => { + return (await api.POST("/auth/password/forgot", data)) as { + data: SimpleResponse; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/password/reset; name=resetPassword; method=POST; request=controllers.ResetPasswordRequest; response=controllers.SimpleResponse +// internal/http/routes/auth_routes.go Line: 37 +export const resetPassword = async ( + data: ResetPasswordRequest, +): Promise<{ data: SimpleResponse; error: Nullable }> => { + return (await api.POST("/auth/password/reset", data)) as { + data: SimpleResponse; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/health; name=health; method=GET; response=string +// internal/http/routes/system_routes.go Line: 34 +export const health = async (): Promise<{ + data: string; + error: Nullable; +}> => { + return (await api.GET("/health")) as { + data: string; + error: Nullable; + }; +}; + +// Typescript: TSEndpoint= path=/auth/me; name=me; method=GET; response=models.UserShort +// internal/http/routes/auth_routes.go Line: 28 +export const me = async (): Promise<{ + data: UserShort; + error: Nullable; +}> => { + return (await api.GET("/auth/me")) as { + data: UserShort; + error: Nullable; + }; +}; + +export interface FormRequest { + req: string; + count: number; +} + +export interface FormResponse { + test: string; +} + +export interface MailDebugItem { + name: string; + content: string; +} + +// +// package auth +// + +export interface TokenPair { + access_token: string; + refresh_token: string; +} diff --git a/frontend/src/assets/flags/ch.svg b/frontend/src/assets/flags/ch.svg new file mode 100644 index 0000000..b42d670 --- /dev/null +++ b/frontend/src/assets/flags/ch.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/frontend/src/assets/flags/de.svg b/frontend/src/assets/flags/de.svg new file mode 100644 index 0000000..71aa2d2 --- /dev/null +++ b/frontend/src/assets/flags/de.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/src/assets/flags/en.svg b/frontend/src/assets/flags/en.svg new file mode 100644 index 0000000..7991383 --- /dev/null +++ b/frontend/src/assets/flags/en.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/src/assets/flags/en_us.svg b/frontend/src/assets/flags/en_us.svg new file mode 100644 index 0000000..9cfd0c9 --- /dev/null +++ b/frontend/src/assets/flags/en_us.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/frontend/src/assets/flags/fr.svg b/frontend/src/assets/flags/fr.svg new file mode 100644 index 0000000..4110e59 --- /dev/null +++ b/frontend/src/assets/flags/fr.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/src/assets/flags/it.svg b/frontend/src/assets/flags/it.svg new file mode 100644 index 0000000..20a8bfd --- /dev/null +++ b/frontend/src/assets/flags/it.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/src/assets/quasar-logo-vertical.svg b/frontend/src/assets/quasar-logo-vertical.svg new file mode 100644 index 0000000..8210831 --- /dev/null +++ b/frontend/src/assets/quasar-logo-vertical.svg @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/frontend/src/boot/.gitkeep b/frontend/src/boot/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/boot/i18n.ts b/frontend/src/boot/i18n.ts new file mode 100644 index 0000000..e54c4a8 --- /dev/null +++ b/frontend/src/boot/i18n.ts @@ -0,0 +1,33 @@ +import { defineBoot } from '#q-app/wrappers'; +import { createI18n } from 'vue-i18n'; + +import messages from 'src/i18n'; +import { loadStoredLanguage, resolveI18nLocale } from 'src/stores/preferences-store'; + +export type MessageLanguages = keyof typeof messages; +export type MessageSchema = (typeof messages)['en_us']; + +// See https://vue-i18n.intlify.dev/guide/advanced/typescript.html#global-resource-schema-type-definition +/* eslint-disable @typescript-eslint/no-empty-object-type */ +declare module 'vue-i18n' { + // define the locale messages schema + export interface DefineLocaleMessage extends MessageSchema {} + + // define the datetime format schema + export interface DefineDateTimeFormat {} + + // define the number format schema + export interface DefineNumberFormat {} +} +/* eslint-enable @typescript-eslint/no-empty-object-type */ + +export default defineBoot(({ app }) => { + const i18n = createI18n<{ message: MessageSchema }, MessageLanguages>({ + locale: resolveI18nLocale(loadStoredLanguage()), + legacy: false, + messages, + }); + + // Set i18n instance on app + app.use(i18n); +}); diff --git a/frontend/src/css/app.scss b/frontend/src/css/app.scss new file mode 100644 index 0000000..ecac98f --- /dev/null +++ b/frontend/src/css/app.scss @@ -0,0 +1 @@ +// app global css in SCSS form diff --git a/frontend/src/css/quasar.variables.scss b/frontend/src/css/quasar.variables.scss new file mode 100644 index 0000000..2605a0d --- /dev/null +++ b/frontend/src/css/quasar.variables.scss @@ -0,0 +1,25 @@ +// Quasar SCSS (& Sass) Variables +// -------------------------------------------------- +// To customize the look and feel of this app, you can override +// the Sass/SCSS variables found in Quasar's source Sass/SCSS files. + +// Check documentation for full list of Quasar variables + +// Your own variables (that are declared here) and Quasar's own +// ones will be available out of the box in your .vue/.scss/.sass files + +// It's highly recommended to change the default colors +// to match your app's branding. +// Tip: Use the "Theme Builder" on Quasar's documentation website. + +$primary: #1976d2; +$secondary: #26a69a; +$accent: #9c27b0; + +$dark: #1d1d1d; +$dark-page: #121212; + +$positive: #21ba45; +$negative: #c10015; +$info: #31ccec; +$warning: #f2c037; diff --git a/frontend/src/env.d.ts b/frontend/src/env.d.ts new file mode 100644 index 0000000..12dcd18 --- /dev/null +++ b/frontend/src/env.d.ts @@ -0,0 +1,7 @@ +declare namespace NodeJS { + interface ProcessEnv { + NODE_ENV: string; + VUE_ROUTER_MODE: 'hash' | 'history' | 'abstract' | undefined; + VUE_ROUTER_BASE: string | undefined; + } +} diff --git a/frontend/src/i18n/de/index.ts b/frontend/src/i18n/de/index.ts new file mode 100644 index 0000000..5a85763 --- /dev/null +++ b/frontend/src/i18n/de/index.ts @@ -0,0 +1,41 @@ +export default { + app: { + title: 'Quasar App', + menu: 'Menue', + links: 'Links', + home: 'Startseite', + devSection: 'Entwicklungsbereich', + }, + language: { + it: 'Italienisch', + en: 'Englisch', + en_us: 'Englisch USA', + de: 'Deutsch', + de_ch: 'Deutsch CH', + fr: 'Franzoesisch', + fr_ch: 'Franzoesisch CH', + }, + home: { + welcome: 'Willkommen!', + cardTitle: 'Unser sich verandernder Planet', + cardSubtitle: 'von John Doe', + imageTitle: 'Titel', + imageSubhead: 'Untertitel', + action1: 'Aktion 1', + action2: 'Aktion 2', + lorem: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + dev: { + apiEndpointsTester: 'API Endpoints Tester', + mailDebug: 'Mail Debug', + }, + error: { + notFound: 'Hoppla. Hier gibt es nichts...', + goHome: 'Zur Startseite', + }, + common: { + failed: 'Aktion fehlgeschlagen', + success: 'Aktion erfolgreich', + }, +}; diff --git a/frontend/src/i18n/de_ch/index.ts b/frontend/src/i18n/de_ch/index.ts new file mode 100644 index 0000000..5a85763 --- /dev/null +++ b/frontend/src/i18n/de_ch/index.ts @@ -0,0 +1,41 @@ +export default { + app: { + title: 'Quasar App', + menu: 'Menue', + links: 'Links', + home: 'Startseite', + devSection: 'Entwicklungsbereich', + }, + language: { + it: 'Italienisch', + en: 'Englisch', + en_us: 'Englisch USA', + de: 'Deutsch', + de_ch: 'Deutsch CH', + fr: 'Franzoesisch', + fr_ch: 'Franzoesisch CH', + }, + home: { + welcome: 'Willkommen!', + cardTitle: 'Unser sich verandernder Planet', + cardSubtitle: 'von John Doe', + imageTitle: 'Titel', + imageSubhead: 'Untertitel', + action1: 'Aktion 1', + action2: 'Aktion 2', + lorem: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + dev: { + apiEndpointsTester: 'API Endpoints Tester', + mailDebug: 'Mail Debug', + }, + error: { + notFound: 'Hoppla. Hier gibt es nichts...', + goHome: 'Zur Startseite', + }, + common: { + failed: 'Aktion fehlgeschlagen', + success: 'Aktion erfolgreich', + }, +}; diff --git a/frontend/src/i18n/en/index.ts b/frontend/src/i18n/en/index.ts new file mode 100644 index 0000000..5d1eaae --- /dev/null +++ b/frontend/src/i18n/en/index.ts @@ -0,0 +1,41 @@ +export default { + app: { + title: 'Quasar App', + menu: 'Menu', + links: 'Links', + home: 'Home', + devSection: 'Development section', + }, + language: { + it: 'Italiano', + en: 'English', + en_us: 'English USA', + de: 'Deutsch', + de_ch: 'Deutsch CH', + fr: 'Francais', + fr_ch: 'Francais CH', + }, + home: { + welcome: 'Welcome!', + cardTitle: 'Our Changing Planet', + cardSubtitle: 'by John Doe', + imageTitle: 'Title', + imageSubhead: 'Subhead', + action1: 'Action 1', + action2: 'Action 2', + lorem: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + dev: { + apiEndpointsTester: 'API Endpoints Tester', + mailDebug: 'Mail Debug', + }, + error: { + notFound: 'Oops. Nothing here...', + goHome: 'Go Home', + }, + common: { + failed: 'Action failed', + success: 'Action was successful', + }, +}; diff --git a/frontend/src/i18n/en_us/index.ts b/frontend/src/i18n/en_us/index.ts new file mode 100644 index 0000000..69738f3 --- /dev/null +++ b/frontend/src/i18n/en_us/index.ts @@ -0,0 +1,41 @@ +export default { + app: { + title: 'Quasar App', + menu: 'Menu', + links: 'Links', + home: 'Home', + devSection: 'Development section', + }, + language: { + it: 'Italian', + en: 'English', + en_us: 'English USA', + de: 'German', + de_ch: 'German CH', + fr: 'French', + fr_ch: 'French CH', + }, + home: { + welcome: 'Welcome!', + cardTitle: 'Our Changing Planet', + cardSubtitle: 'by John Doe', + imageTitle: 'Title', + imageSubhead: 'Subhead', + action1: 'Action 1', + action2: 'Action 2', + lorem: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + dev: { + apiEndpointsTester: 'API Endpoints Tester', + mailDebug: 'Mail Debug', + }, + error: { + notFound: 'Oops. Nothing here...', + goHome: 'Go Home', + }, + common: { + failed: 'Action failed', + success: 'Action was successful', + }, +}; diff --git a/frontend/src/i18n/fr/index.ts b/frontend/src/i18n/fr/index.ts new file mode 100644 index 0000000..8870595 --- /dev/null +++ b/frontend/src/i18n/fr/index.ts @@ -0,0 +1,41 @@ +export default { + app: { + title: 'Quasar App', + menu: 'Menu', + links: 'Liens', + home: 'Accueil', + devSection: 'Section developpement', + }, + language: { + it: 'Italien', + en: 'Anglais', + en_us: 'Anglais USA', + de: 'Allemand', + de_ch: 'Allemand CH', + fr: 'Francais', + fr_ch: 'Francais CH', + }, + home: { + welcome: 'Bienvenue !', + cardTitle: 'Notre planete en mutation', + cardSubtitle: 'par John Doe', + imageTitle: 'Titre', + imageSubhead: 'Sous-titre', + action1: 'Action 1', + action2: 'Action 2', + lorem: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + dev: { + apiEndpointsTester: 'Testeur API Endpoints', + mailDebug: 'Debug Mail', + }, + error: { + notFound: 'Oups. Rien ici...', + goHome: 'Retour accueil', + }, + common: { + failed: 'Action echouee', + success: 'Action reussie', + }, +}; diff --git a/frontend/src/i18n/fr_ch/index.ts b/frontend/src/i18n/fr_ch/index.ts new file mode 100644 index 0000000..8870595 --- /dev/null +++ b/frontend/src/i18n/fr_ch/index.ts @@ -0,0 +1,41 @@ +export default { + app: { + title: 'Quasar App', + menu: 'Menu', + links: 'Liens', + home: 'Accueil', + devSection: 'Section developpement', + }, + language: { + it: 'Italien', + en: 'Anglais', + en_us: 'Anglais USA', + de: 'Allemand', + de_ch: 'Allemand CH', + fr: 'Francais', + fr_ch: 'Francais CH', + }, + home: { + welcome: 'Bienvenue !', + cardTitle: 'Notre planete en mutation', + cardSubtitle: 'par John Doe', + imageTitle: 'Titre', + imageSubhead: 'Sous-titre', + action1: 'Action 1', + action2: 'Action 2', + lorem: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + dev: { + apiEndpointsTester: 'Testeur API Endpoints', + mailDebug: 'Debug Mail', + }, + error: { + notFound: 'Oups. Rien ici...', + goHome: 'Retour accueil', + }, + common: { + failed: 'Action echouee', + success: 'Action reussie', + }, +}; diff --git a/frontend/src/i18n/index.ts b/frontend/src/i18n/index.ts new file mode 100644 index 0000000..058b8f8 --- /dev/null +++ b/frontend/src/i18n/index.ts @@ -0,0 +1,17 @@ +import de from './de'; +import deCH from './de_ch'; +import en from './en'; +import enUS from './en_us'; +import fr from './fr'; +import frCH from './fr_ch'; +import it from './it'; + +export default { + it, + en, + en_us: enUS, + de, + de_ch: deCH, + fr, + fr_ch: frCH, +}; diff --git a/frontend/src/i18n/it/index.ts b/frontend/src/i18n/it/index.ts new file mode 100644 index 0000000..7aa4b9a --- /dev/null +++ b/frontend/src/i18n/it/index.ts @@ -0,0 +1,41 @@ +export default { + app: { + title: 'Quasar App', + menu: 'Menu', + links: 'Link', + home: 'Home', + devSection: 'Sezione sviluppo', + }, + language: { + it: 'Italiano', + en: 'English', + en_us: 'English USA', + de: 'Deutsch', + de_ch: 'Deutsch CH', + fr: 'Francais', + fr_ch: 'Francais CH', + }, + home: { + welcome: 'Benvenuto!', + cardTitle: 'Il nostro pianeta che cambia', + cardSubtitle: 'di John Doe', + imageTitle: 'Titolo', + imageSubhead: 'Sottotitolo', + action1: 'Azione 1', + action2: 'Azione 2', + lorem: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + dev: { + apiEndpointsTester: 'Tester API Endpoints', + mailDebug: 'Debug Mail', + }, + error: { + notFound: 'Ops. Non c e nulla qui...', + goHome: 'Torna alla Home', + }, + common: { + failed: 'Azione fallita', + success: 'Azione completata con successo', + }, +}; diff --git a/frontend/src/layouts/DevLayout.vue b/frontend/src/layouts/DevLayout.vue new file mode 100644 index 0000000..b240a7f --- /dev/null +++ b/frontend/src/layouts/DevLayout.vue @@ -0,0 +1,59 @@ + + + diff --git a/frontend/src/layouts/MainLayout.vue b/frontend/src/layouts/MainLayout.vue new file mode 100644 index 0000000..376fc92 --- /dev/null +++ b/frontend/src/layouts/MainLayout.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/frontend/src/pages/ErrorNotFound.vue b/frontend/src/pages/ErrorNotFound.vue new file mode 100644 index 0000000..0c672a8 --- /dev/null +++ b/frontend/src/pages/ErrorNotFound.vue @@ -0,0 +1,25 @@ + + + diff --git a/frontend/src/pages/IndexPage.vue b/frontend/src/pages/IndexPage.vue new file mode 100644 index 0000000..512911d --- /dev/null +++ b/frontend/src/pages/IndexPage.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/frontend/src/pages/dev/ApiEndpointsPage.vue b/frontend/src/pages/dev/ApiEndpointsPage.vue new file mode 100644 index 0000000..8398852 --- /dev/null +++ b/frontend/src/pages/dev/ApiEndpointsPage.vue @@ -0,0 +1,631 @@ + + + + + diff --git a/frontend/src/pages/dev/IndexPage.vue b/frontend/src/pages/dev/IndexPage.vue new file mode 100644 index 0000000..c678ac0 --- /dev/null +++ b/frontend/src/pages/dev/IndexPage.vue @@ -0,0 +1,9 @@ + + + diff --git a/frontend/src/pages/dev/MailDebugPage.vue b/frontend/src/pages/dev/MailDebugPage.vue new file mode 100644 index 0000000..e54f843 --- /dev/null +++ b/frontend/src/pages/dev/MailDebugPage.vue @@ -0,0 +1,395 @@ +