From 95361bf4b5ca2a8ee1cfdad626cf88b26555eba1 Mon Sep 17 00:00:00 2001 From: Yanchao Murong Date: Fri, 4 Nov 2022 23:25:00 +0100 Subject: [PATCH] add ui --- dashboard-front/coreui/.browserslistrc | 16 + dashboard-front/coreui/.editorconfig | 16 + dashboard-front/coreui/.gitignore | 45 + dashboard-front/coreui/README.md | 219 + dashboard-front/coreui/angular.json | 118 + dashboard-front/coreui/karma.conf.js | 44 + dashboard-front/coreui/package-lock.json | 20844 ++++++++++++++++ dashboard-front/coreui/package.json | 59 + .../coreui/src/app/app-routing.module.ts | 118 + .../coreui/src/app/app.component.spec.ts | 28 + .../coreui/src/app/app.component.ts | 33 + dashboard-front/coreui/src/app/app.module.ts | 104 + .../src/app/containers/default-layout/_nav.ts | 240 + .../default-footer.component.html | 12 + .../default-footer.component.scss | 0 .../default-footer.component.spec.ts | 25 + .../default-footer.component.ts | 13 + .../default-header.component.html | 30 + .../default-header.component.scss | 0 .../default-header.component.spec.ts | 43 + .../default-header.component.ts | 21 + .../default-layout.component.html | 50 + .../default-layout.component.ts | 18 + .../app/containers/default-layout/index.ts | 3 + .../coreui/src/app/containers/index.ts | 1 + .../coreui/src/app/icons/icon-subset.ts | 278 + .../base/accordion/accordions.component.html | 121 + .../base/accordion/accordions.component.scss | 6 + .../accordion/accordions.component.spec.ts | 37 + .../base/accordion/accordions.component.ts | 29 + .../src/app/views/base/base-routing.module.ts | 146 + .../coreui/src/app/views/base/base.module.ts | 105 + .../breadcrumbs/breadcrumbs.component.html | 95 + .../breadcrumbs/breadcrumbs.component.scss | 0 .../breadcrumbs/breadcrumbs.component.spec.ts | 35 + .../base/breadcrumbs/breadcrumbs.component.ts | 29 + .../app/views/base/cards/cards.component.html | 864 + .../app/views/base/cards/cards.component.scss | 0 .../views/base/cards/cards.component.spec.ts | 36 + .../app/views/base/cards/cards.component.ts | 25 + .../base/carousels/carousels.component.html | 227 + .../base/carousels/carousels.component.scss | 0 .../carousels/carousels.component.spec.ts | 38 + .../base/carousels/carousels.component.ts | 100 + .../base/collapses/collapses.component.html | 84 + .../base/collapses/collapses.component.scss | 0 .../collapses/collapses.component.spec.ts | 37 + .../base/collapses/collapses.component.ts | 19 + .../list-groups/list-groups.component.html | 364 + .../list-groups/list-groups.component.scss | 0 .../list-groups/list-groups.component.spec.ts | 37 + .../base/list-groups/list-groups.component.ts | 41 + .../app/views/base/navs/navs.component.html | 380 + .../app/views/base/navs/navs.component.scss | 0 .../views/base/navs/navs.component.spec.ts | 36 + .../src/app/views/base/navs/navs.component.ts | 12 + .../paginations/paginations.component.html | 221 + .../paginations/paginations.component.scss | 0 .../paginations/paginations.component.spec.ts | 36 + .../base/paginations/paginations.component.ts | 12 + .../placeholders/placeholders.component.html | 160 + .../placeholders/placeholders.component.scss | 0 .../placeholders.component.spec.ts | 36 + .../placeholders/placeholders.component.ts | 15 + .../base/popovers/popovers.component.html | 69 + .../base/popovers/popovers.component.scss | 0 .../base/popovers/popovers.component.spec.ts | 36 + .../views/base/popovers/popovers.component.ts | 20 + .../base/progress/progress.component.html | 197 + .../base/progress/progress.component.scss | 0 .../base/progress/progress.component.spec.ts | 36 + .../views/base/progress/progress.component.ts | 12 + .../base/spinners/spinners.component.html | 114 + .../base/spinners/spinners.component.scss | 0 .../base/spinners/spinners.component.spec.ts | 36 + .../views/base/spinners/spinners.component.ts | 12 + .../views/base/tables/tables.component.html | 1007 + .../views/base/tables/tables.component.scss | 0 .../base/tables/tables.component.spec.ts | 36 + .../app/views/base/tables/tables.component.ts | 12 + .../app/views/base/tabs/tabs.component.html | 123 + .../app/views/base/tabs/tabs.component.scss | 0 .../views/base/tabs/tabs.component.spec.ts | 36 + .../src/app/views/base/tabs/tabs.component.ts | 18 + .../base/tooltips/tooltips.component.html | 59 + .../base/tooltips/tooltips.component.scss | 0 .../base/tooltips/tooltips.component.spec.ts | 36 + .../views/base/tooltips/tooltips.component.ts | 12 + .../button-groups.component.html | 397 + .../button-groups.component.scss | 0 .../button-groups.component.spec.ts | 37 + .../button-groups/button-groups.component.ts | 34 + .../views/buttons/buttons-routing.module.ts | 51 + .../src/app/views/buttons/buttons.module.ts | 55 + .../buttons/buttons/buttons.component.html | 340 + .../buttons/buttons/buttons.component.scss | 0 .../buttons/buttons/buttons.component.spec.ts | 37 + .../buttons/buttons/buttons.component.ts | 14 + .../dropdowns/dropdowns.component.html | 510 + .../dropdowns/dropdowns.component.scss | 0 .../dropdowns/dropdowns.component.spec.ts | 46 + .../buttons/dropdowns/dropdowns.component.ts | 14 + .../app/views/charts/charts-routing.module.ts | 21 + .../app/views/charts/charts.component.html | 73 + .../app/views/charts/charts.component.scss | 0 .../app/views/charts/charts.component.spec.ts | 35 + .../src/app/views/charts/charts.component.ts | 136 + .../src/app/views/charts/charts.module.ts | 24 + .../views/dashboard/dashboard-charts-data.ts | 176 + .../dashboard/dashboard-routing.module.ts | 21 + .../views/dashboard/dashboard.component.html | 100 + .../views/dashboard/dashboard.component.scss | 12 + .../views/dashboard/dashboard.component.ts | 129 + .../app/views/dashboard/dashboard.module.ts | 49 + .../checks-radios.component.html | 340 + .../checks-radios.component.scss | 0 .../checks-radios.component.spec.ts | 37 + .../checks-radios/checks-radios.component.ts | 54 + .../floating-labels.component.html | 157 + .../floating-labels.component.scss | 0 .../floating-labels.component.spec.ts | 36 + .../floating-labels.component.ts | 12 + .../form-controls.component.html | 241 + .../form-controls.component.scss | 9 + .../form-controls.component.spec.ts | 37 + .../form-controls/form-controls.component.ts | 14 + .../app/views/forms/forms-routing.module.ts | 90 + .../src/app/views/forms/forms.module.ts | 59 + .../input-groups/input-groups.component.html | 525 + .../input-groups/input-groups.component.scss | 0 .../input-groups.component.spec.ts | 36 + .../input-groups/input-groups.component.ts | 12 + .../views/forms/layout/layout.component.html | 394 + .../views/forms/layout/layout.component.scss | 0 .../forms/layout/layout.component.spec.ts | 36 + .../views/forms/layout/layout.component.ts | 12 + .../views/forms/ranges/ranges.component.html | 92 + .../views/forms/ranges/ranges.component.scss | 0 .../forms/ranges/ranges.component.spec.ts | 36 + .../views/forms/ranges/ranges.component.ts | 12 + .../views/forms/select/select.component.html | 94 + .../views/forms/select/select.component.scss | 0 .../forms/select/select.component.spec.ts | 36 + .../views/forms/select/select.component.ts | 12 + .../validation/validation.component.html | 433 + .../validation/validation.component.scss | 0 .../validation/validation.component.spec.ts | 37 + .../forms/validation/validation.component.ts | 49 + .../views/icons/coreui-icons.component.html | 16 + .../app/views/icons/coreui-icons.component.ts | 46 + .../app/views/icons/icons-routing.module.ts | 48 + .../src/app/views/icons/icons.module.ts | 25 + .../alerts/alerts.component.html | 211 + .../alerts/alerts.component.scss | 0 .../alerts/alerts.component.spec.ts | 37 + .../notifications/alerts/alerts.component.ts | 30 + .../badges/badges.component.html | 175 + .../badges/badges.component.scss | 0 .../badges/badges.component.spec.ts | 36 + .../notifications/badges/badges.component.ts | 12 + .../modals/modals.component.html | 583 + .../modals/modals.component.scss | 0 .../modals/modals.component.spec.ts | 37 + .../notifications/modals/modals.component.ts | 21 + .../notifications-routing.module.ts | 58 + .../notifications/notifications.module.ts | 64 + .../toast-sample-icon.component.svg | 11 + .../toast-sample-icon.component.ts | 14 + .../toast-simple/toast.component.html | 16 + .../toast-simple/toast.component.scss | 4 + .../toast-simple/toast.component.spec.ts | 35 + .../toasters/toast-simple/toast.component.ts | 24 + .../toasters/toasters.component.html | 94 + .../toasters/toasters.component.scss | 0 .../toasters/toasters.component.spec.ts | 38 + .../toasters/toasters.component.ts | 71 + .../views/pages/login/login.component.html | 61 + .../views/pages/login/login.component.scss | 0 .../views/pages/login/login.component.spec.ts | 35 + .../app/views/pages/login/login.component.ts | 12 + .../pages/page404/page404.component.html | 22 + .../pages/page404/page404.component.scss | 0 .../pages/page404/page404.component.spec.ts | 35 + .../views/pages/page404/page404.component.ts | 12 + .../pages/page500/page500.component.html | 22 + .../pages/page500/page500.component.scss | 0 .../pages/page500/page500.component.spec.ts | 35 + .../views/pages/page500/page500.component.ts | 12 + .../app/views/pages/pages-routing.module.ts | 44 + .../src/app/views/pages/pages.module.ts | 31 + .../pages/register/register.component.html | 41 + .../pages/register/register.component.scss | 0 .../pages/register/register.component.spec.ts | 35 + .../pages/register/register.component.ts | 12 + .../src/app/views/theme/colors.component.html | 35 + .../src/app/views/theme/colors.component.ts | 73 + .../app/views/theme/theme-routing.module.ts | 41 + .../src/app/views/theme/theme.module.ts | 31 + .../app/views/theme/typography.component.html | 150 + .../app/views/theme/typography.component.ts | 8 + .../widgets-brand.component.html | 22 + .../widgets-brand.component.scss | 0 .../widgets-brand.component.spec.ts | 36 + .../widgets-brand/widgets-brand.component.ts | 101 + .../widgets-dropdown.component.html | 127 + .../widgets-dropdown.component.scss | 0 .../widgets-dropdown.component.spec.ts | 36 + .../widgets-dropdown.component.ts | 254 + .../widgets-e/widgets-e.component.html | 56 + .../widgets-e/widgets-e.component.scss | 0 .../widgets-e/widgets-e.component.spec.ts | 35 + .../widgets/widgets-e/widgets-e.component.ts | 146 + .../views/widgets/widgets-routing.module.ts | 21 + .../src/app/views/widgets/widgets.module.ts | 52 + .../widgets/widgets/widgets.component.html | 616 + .../widgets/widgets/widgets.component.scss | 0 .../widgets/widgets/widgets.component.spec.ts | 40 + .../widgets/widgets/widgets.component.ts | 17 + dashboard-front/coreui/src/assets/.gitkeep | 0 dashboard-front/coreui/src/assets/angular.ico | Bin 0 -> 948 bytes dashboard-front/coreui/src/assets/favicon.ico | Bin 0 -> 1150 bytes .../coreui/src/assets/images/angular.jpg | Bin 0 -> 169234 bytes .../coreui/src/assets/img/avatars/1.jpg | Bin 0 -> 13887 bytes .../coreui/src/assets/img/avatars/2.jpg | Bin 0 -> 12870 bytes .../coreui/src/assets/img/avatars/3.jpg | Bin 0 -> 13528 bytes .../coreui/src/assets/img/avatars/4.jpg | Bin 0 -> 13725 bytes .../coreui/src/assets/img/avatars/5.jpg | Bin 0 -> 12666 bytes .../coreui/src/assets/img/avatars/6.jpg | Bin 0 -> 11918 bytes .../coreui/src/assets/img/avatars/7.jpg | Bin 0 -> 14285 bytes .../coreui/src/assets/img/avatars/8.jpg | Bin 0 -> 15146 bytes .../coreui/src/assets/img/avatars/9.jpg | Bin 0 -> 12451 bytes .../img/brand/Adyen_Corporate_Logo.svg.png | Bin 0 -> 6417 bytes .../src/assets/img/brand/coreui-angular.svg | 39 + .../assets/img/brand/coreui-base-white.svg | 24 + .../src/assets/img/brand/coreui-base.svg | 24 + .../assets/img/brand/coreui-signet-white.svg | 16 + .../src/assets/img/brand/coreui-signet.svg | 16 + .../docs-callout/docs-callout.component.html | 17 + .../docs-callout/docs-callout.component.scss | 0 .../docs-callout.component.spec.ts | 27 + .../docs-callout/docs-callout.component.ts | 34 + .../src/components/docs-components.module.ts | 33 + .../docs-example/docs-example.component.html | 21 + .../docs-example/docs-example.component.scss | 0 .../docs-example.component.spec.ts | 25 + .../docs-example/docs-example.component.ts | 48 + .../docs-link/docs-link.component.html | 9 + .../docs-link/docs-link.component.scss | 0 .../docs-link/docs-link.component.spec.ts | 25 + .../docs-link/docs-link.component.ts | 27 + .../coreui/src/components/index.ts | 1 + .../coreui/src/components/public-api.ts | 4 + dashboard-front/coreui/src/declarations.d.ts | 9 + .../src/environments/environment.prod.ts | 3 + .../coreui/src/environments/environment.ts | 16 + dashboard-front/coreui/src/index.html | 31 + dashboard-front/coreui/src/main.ts | 12 + dashboard-front/coreui/src/polyfills.ts | 58 + dashboard-front/coreui/src/scss/_charts.scss | 7 + dashboard-front/coreui/src/scss/_custom.scss | 2 + .../coreui/src/scss/_examples.scss | 122 + dashboard-front/coreui/src/scss/_fixes.scss | 7 + dashboard-front/coreui/src/scss/_layout.scss | 7 + .../coreui/src/scss/_scrollbar.scss | 36 + .../coreui/src/scss/_variables.scss | 1666 ++ dashboard-front/coreui/src/scss/styles.scss | 26 + dashboard-front/coreui/src/test.ts | 27 + dashboard-front/coreui/tsconfig.app.json | 18 + dashboard-front/coreui/tsconfig.json | 37 + dashboard-front/coreui/tsconfig.spec.json | 18 + 270 files changed, 39349 insertions(+) create mode 100644 dashboard-front/coreui/.browserslistrc create mode 100644 dashboard-front/coreui/.editorconfig create mode 100644 dashboard-front/coreui/.gitignore create mode 100644 dashboard-front/coreui/README.md create mode 100644 dashboard-front/coreui/angular.json create mode 100644 dashboard-front/coreui/karma.conf.js create mode 100644 dashboard-front/coreui/package-lock.json create mode 100644 dashboard-front/coreui/package.json create mode 100644 dashboard-front/coreui/src/app/app-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/app.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/app.component.ts create mode 100644 dashboard-front/coreui/src/app/app.module.ts create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/_nav.ts create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.html create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.scss create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.ts create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.html create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.scss create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.ts create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.html create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.ts create mode 100644 dashboard-front/coreui/src/app/containers/default-layout/index.ts create mode 100644 dashboard-front/coreui/src/app/containers/index.ts create mode 100644 dashboard-front/coreui/src/app/icons/icon-subset.ts create mode 100644 dashboard-front/coreui/src/app/views/base/accordion/accordions.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/accordion/accordions.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/accordion/accordions.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/accordion/accordions.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/base-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/base/base.module.ts create mode 100644 dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/cards/cards.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/cards/cards.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/cards/cards.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/cards/cards.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/carousels/carousels.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/carousels/carousels.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/carousels/carousels.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/carousels/carousels.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/collapses/collapses.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/collapses/collapses.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/collapses/collapses.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/collapses/collapses.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/navs/navs.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/navs/navs.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/navs/navs.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/navs/navs.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/paginations/paginations.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/paginations/paginations.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/paginations/paginations.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/paginations/paginations.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/popovers/popovers.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/popovers/popovers.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/popovers/popovers.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/popovers/popovers.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/progress/progress.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/progress/progress.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/progress/progress.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/progress/progress.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/spinners/spinners.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/spinners/spinners.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/spinners/spinners.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/spinners/spinners.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/tables/tables.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/tables/tables.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/tables/tables.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/tables/tables.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/tabs/tabs.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/tabs/tabs.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/tabs/tabs.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/tabs/tabs.component.ts create mode 100644 dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.html create mode 100644 dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.scss create mode 100644 dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.html create mode 100644 dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.scss create mode 100644 dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/buttons-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/buttons.module.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.html create mode 100644 dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.scss create mode 100644 dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.html create mode 100644 dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.scss create mode 100644 dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.ts create mode 100644 dashboard-front/coreui/src/app/views/charts/charts-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/charts/charts.component.html create mode 100644 dashboard-front/coreui/src/app/views/charts/charts.component.scss create mode 100644 dashboard-front/coreui/src/app/views/charts/charts.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/charts/charts.component.ts create mode 100644 dashboard-front/coreui/src/app/views/charts/charts.module.ts create mode 100644 dashboard-front/coreui/src/app/views/dashboard/dashboard-charts-data.ts create mode 100644 dashboard-front/coreui/src/app/views/dashboard/dashboard-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/dashboard/dashboard.component.html create mode 100644 dashboard-front/coreui/src/app/views/dashboard/dashboard.component.scss create mode 100644 dashboard-front/coreui/src/app/views/dashboard/dashboard.component.ts create mode 100644 dashboard-front/coreui/src/app/views/dashboard/dashboard.module.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/forms-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/forms.module.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/layout/layout.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/layout/layout.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/layout/layout.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/layout/layout.component.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/select/select.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/select/select.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/select/select.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/select/select.component.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/validation/validation.component.html create mode 100644 dashboard-front/coreui/src/app/views/forms/validation/validation.component.scss create mode 100644 dashboard-front/coreui/src/app/views/forms/validation/validation.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/forms/validation/validation.component.ts create mode 100644 dashboard-front/coreui/src/app/views/icons/coreui-icons.component.html create mode 100644 dashboard-front/coreui/src/app/views/icons/coreui-icons.component.ts create mode 100644 dashboard-front/coreui/src/app/views/icons/icons-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/icons/icons.module.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.html create mode 100644 dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.scss create mode 100644 dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/badges/badges.component.html create mode 100644 dashboard-front/coreui/src/app/views/notifications/badges/badges.component.scss create mode 100644 dashboard-front/coreui/src/app/views/notifications/badges/badges.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/badges/badges.component.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/modals/modals.component.html create mode 100644 dashboard-front/coreui/src/app/views/notifications/modals/modals.component.scss create mode 100644 dashboard-front/coreui/src/app/views/notifications/modals/modals.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/modals/modals.component.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/notifications-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/notifications.module.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.svg create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.html create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.scss create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.html create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.scss create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/login/login.component.html create mode 100644 dashboard-front/coreui/src/app/views/pages/login/login.component.scss create mode 100644 dashboard-front/coreui/src/app/views/pages/login/login.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/login/login.component.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/page404/page404.component.html create mode 100644 dashboard-front/coreui/src/app/views/pages/page404/page404.component.scss create mode 100644 dashboard-front/coreui/src/app/views/pages/page404/page404.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/page404/page404.component.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/page500/page500.component.html create mode 100644 dashboard-front/coreui/src/app/views/pages/page500/page500.component.scss create mode 100644 dashboard-front/coreui/src/app/views/pages/page500/page500.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/page500/page500.component.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/pages-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/pages.module.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/register/register.component.html create mode 100644 dashboard-front/coreui/src/app/views/pages/register/register.component.scss create mode 100644 dashboard-front/coreui/src/app/views/pages/register/register.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/pages/register/register.component.ts create mode 100644 dashboard-front/coreui/src/app/views/theme/colors.component.html create mode 100644 dashboard-front/coreui/src/app/views/theme/colors.component.ts create mode 100644 dashboard-front/coreui/src/app/views/theme/theme-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/theme/theme.module.ts create mode 100644 dashboard-front/coreui/src/app/views/theme/typography.component.html create mode 100644 dashboard-front/coreui/src/app/views/theme/typography.component.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.html create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.scss create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.scss create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.html create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.scss create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets-routing.module.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets.module.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.html create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.scss create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.spec.ts create mode 100644 dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.ts create mode 100644 dashboard-front/coreui/src/assets/.gitkeep create mode 100644 dashboard-front/coreui/src/assets/angular.ico create mode 100644 dashboard-front/coreui/src/assets/favicon.ico create mode 100644 dashboard-front/coreui/src/assets/images/angular.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/1.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/2.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/3.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/4.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/5.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/6.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/7.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/8.jpg create mode 100644 dashboard-front/coreui/src/assets/img/avatars/9.jpg create mode 100644 dashboard-front/coreui/src/assets/img/brand/Adyen_Corporate_Logo.svg.png create mode 100644 dashboard-front/coreui/src/assets/img/brand/coreui-angular.svg create mode 100644 dashboard-front/coreui/src/assets/img/brand/coreui-base-white.svg create mode 100644 dashboard-front/coreui/src/assets/img/brand/coreui-base.svg create mode 100644 dashboard-front/coreui/src/assets/img/brand/coreui-signet-white.svg create mode 100644 dashboard-front/coreui/src/assets/img/brand/coreui-signet.svg create mode 100644 dashboard-front/coreui/src/components/docs-callout/docs-callout.component.html create mode 100644 dashboard-front/coreui/src/components/docs-callout/docs-callout.component.scss create mode 100644 dashboard-front/coreui/src/components/docs-callout/docs-callout.component.spec.ts create mode 100644 dashboard-front/coreui/src/components/docs-callout/docs-callout.component.ts create mode 100644 dashboard-front/coreui/src/components/docs-components.module.ts create mode 100644 dashboard-front/coreui/src/components/docs-example/docs-example.component.html create mode 100644 dashboard-front/coreui/src/components/docs-example/docs-example.component.scss create mode 100644 dashboard-front/coreui/src/components/docs-example/docs-example.component.spec.ts create mode 100644 dashboard-front/coreui/src/components/docs-example/docs-example.component.ts create mode 100644 dashboard-front/coreui/src/components/docs-link/docs-link.component.html create mode 100644 dashboard-front/coreui/src/components/docs-link/docs-link.component.scss create mode 100644 dashboard-front/coreui/src/components/docs-link/docs-link.component.spec.ts create mode 100644 dashboard-front/coreui/src/components/docs-link/docs-link.component.ts create mode 100644 dashboard-front/coreui/src/components/index.ts create mode 100644 dashboard-front/coreui/src/components/public-api.ts create mode 100644 dashboard-front/coreui/src/declarations.d.ts create mode 100644 dashboard-front/coreui/src/environments/environment.prod.ts create mode 100644 dashboard-front/coreui/src/environments/environment.ts create mode 100644 dashboard-front/coreui/src/index.html create mode 100644 dashboard-front/coreui/src/main.ts create mode 100644 dashboard-front/coreui/src/polyfills.ts create mode 100644 dashboard-front/coreui/src/scss/_charts.scss create mode 100644 dashboard-front/coreui/src/scss/_custom.scss create mode 100644 dashboard-front/coreui/src/scss/_examples.scss create mode 100644 dashboard-front/coreui/src/scss/_fixes.scss create mode 100644 dashboard-front/coreui/src/scss/_layout.scss create mode 100644 dashboard-front/coreui/src/scss/_scrollbar.scss create mode 100644 dashboard-front/coreui/src/scss/_variables.scss create mode 100644 dashboard-front/coreui/src/scss/styles.scss create mode 100644 dashboard-front/coreui/src/test.ts create mode 100644 dashboard-front/coreui/tsconfig.app.json create mode 100644 dashboard-front/coreui/tsconfig.json create mode 100644 dashboard-front/coreui/tsconfig.spec.json diff --git a/dashboard-front/coreui/.browserslistrc b/dashboard-front/coreui/.browserslistrc new file mode 100644 index 00000000..4f9ac269 --- /dev/null +++ b/dashboard-front/coreui/.browserslistrc @@ -0,0 +1,16 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# For the full list of supported browsers by the Angular framework, please see: +# https://angular.io/guide/browser-support + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR diff --git a/dashboard-front/coreui/.editorconfig b/dashboard-front/coreui/.editorconfig new file mode 100644 index 00000000..59d9a3a3 --- /dev/null +++ b/dashboard-front/coreui/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/dashboard-front/coreui/.gitignore b/dashboard-front/coreui/.gitignore new file mode 100644 index 00000000..9314c255 --- /dev/null +++ b/dashboard-front/coreui/.gitignore @@ -0,0 +1,45 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# profiling files +chrome-profiler-events*.json + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/dashboard-front/coreui/README.md b/dashboard-front/coreui/README.md new file mode 100644 index 00000000..4f2b80ce --- /dev/null +++ b/dashboard-front/coreui/README.md @@ -0,0 +1,219 @@ +[![@coreui angular](https://img.shields.io/badge/@coreui%20-angular-lightgrey.svg?style=flat-square)](https://github.com/coreui/angular) +[![npm-coreui-angular-next][npm-coreui-angular-badge-next]][npm-coreui-angular] +[![NPM downloads][npm-coreui-angular-download]][npm-coreui-angular] +[![@coreui coreui](https://img.shields.io/badge/@coreui%20-coreui-lightgrey.svg?style=flat-square)](https://github.com/coreui/coreui) +[![npm package][npm-coreui-badge]][npm-coreui] +[![NPM downloads][npm-coreui-download]][npm-coreui] +![angular](https://img.shields.io/badge/angular-^14.2.0-lightgrey.svg?style=flat-square&logo=angular) + +[npm-coreui-angular]: https://www.npmjs.com/package/@coreui/angular +[npm-coreui-angular-badge]: https://img.shields.io/npm/v/@coreui/angular.png?style=flat-square +[npm-coreui-angular-badge-next]: https://img.shields.io/npm/v/@coreui/angular/next?style=flat-square&color=red +[npm-coreui-angular-download]: https://img.shields.io/npm/dm/@coreui/angular.svg?style=flat-square +[npm-coreui]: https://www.npmjs.com/package/@coreui/coreui +[npm-coreui-badge]: https://img.shields.io/npm/v/@coreui/coreui.png?style=flat-square +[npm-coreui-download]: https://img.shields.io/npm/dm/@coreui/coreui.svg?style=flat-square + +# CoreUI 4 Angular 14 Free Admin Template + +CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means mobile devices also, where the navigation is just as easy and intuitive as on a desktop or laptop. The CoreUI Layout API lets you customize your project for almost any device โ€“ be it Mobile, Web or WebApp โ€“ CoreUI covers them all! + +[CoreUI Angular Admin Template](https://coreui.io/angular) +[Demo](https://coreui.io/angular/demo/4.0/free/) + +## Table of Contents + +* [Versions](#versions) +* [CoreUI Pro](#coreui-pro) +* [Quick Start](#quick-start) +* [Installation](#installation) +* [Basic usage](#basic-usage) +* [What's included](#whats-included) +* [Documentation](#documentation) +* [Versioning](#versioning) +* [Creators](#creators) +* [Community](#community) +* [Copyright and License](#copyright-and-license) + +## Versions + +* [CoreUI Free Bootstrap Admin Template](https://github.com/coreui/coreui-free-bootstrap-admin-template) +* [CoreUI Free Angular Admin Template](https://github.com/coreui/coreui-free-angular-admin-template) +* [CoreUI Free React.js Admin Template](https://github.com/coreui/coreui-free-react-admin-template) +* [CoreUI Free Vue.js Admin Template](https://github.com/coreui/coreui-free-vue-admin-template) + +## CoreUI Pro + +**Only customers with [Enterpise Membership Plan](https://coreui.io/pro/#buy) have access to private github CoreUI Pro repository.** + +* ๐Ÿ’ช [CoreUI Pro Angular Admin Template](https://coreui.io/product/angular-dashboard-template/) +* ๐Ÿ’ช [CoreUI Pro Bootstrap Admin Template](https://coreui.io/product/bootstrap-dashboard-template/) +* ๐Ÿ’ช [CoreUI Pro React Admin Template](https://coreui.io/product/react-dashboard-template/) +* ๐Ÿ’ช [CoreUI Pro Vue Admin Template](https://coreui.io/product/vue-dashboard-template/) + +## Quick Start + +- [Download the latest release](https://github.com/coreui/coreui-free-angular-admin-template/) +- Clone the repo: `git clone https://github.com/coreui/coreui-free-angular-admin-template.git` + +#### Prerequisites +Before you begin, make sure your development environment includes `Node.jsยฎ` and an `npm` package manager. + +###### Node.js +Angular 14 requires `Node.js` version `^14.15` or `^16.10`. + +- To check your version, run `node -v` in a terminal/console window. +- To get `Node.js`, go to [nodejs.org](https://nodejs.org/). + +###### Angular CLI +Install the Angular CLI globally using a terminal/console window. +```bash +npm install -g @angular/cli +``` + +### Installation + +``` bash +$ npm install +``` + +### Basic usage + +``` bash +# dev server with hot reload at http://localhost:4200 +$ npm start +``` + +Navigate to [http://localhost:4200](http://localhost:4200). The app will automatically reload if you change any of the source files. + +#### Build + +Run `build` to build the project. The build artifacts will be stored in the `dist/` directory. + +```bash +# build for production with minification +$ npm run build +``` +## What's included + +Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this: + +``` +coreui-free-angular-admin-template +โ”œโ”€โ”€ src/ # project root +โ”‚ โ”œโ”€โ”€ app/ # main app directory +| โ”‚ โ”œโ”€โ”€ containers/ # layout containers +| | โ”‚ โ””โ”€โ”€ default-layout/ # layout containers +| | | โ””โ”€โ”€ _nav.js # sidebar navigation config +| โ”‚ โ”œโ”€โ”€ icons/ # icons set for the app +| โ”‚ โ””โ”€โ”€ views/ # application views +โ”‚ โ”œโ”€โ”€ assets/ # images, icons, etc. +โ”‚ โ”œโ”€โ”€ components/ # components for demo only +โ”‚ โ”œโ”€โ”€ scss/ # scss styles +โ”‚ โ””โ”€โ”€ index.html # html template +โ”‚ +โ”œโ”€โ”€ angular.json +โ”œโ”€โ”€ README.md +โ””โ”€โ”€ package.json +``` + +## Documentation + +The documentation for the CoreUI Admin Template is hosted at our website [CoreUI for Angular](https://coreui.io/angular/) + +--- + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.0.0. + +## Versioning + +For transparency into our release cycle and in striving to maintain backward compatibility, CoreUI Free Admin Template is maintained under [the Semantic Versioning guidelines](http://semver.org/). + +See [the Releases section of our project](https://github.com/coreui/coreui-free-angular-admin-template/releases) for changelogs for each release version. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. + +## Creators + +**ลukasz Holeczek** +* +* +* + +**CoreUI team** +* https://github.com/orgs/coreui/people + +## Community + +Get updates on CoreUI's development and chat with the project maintainers and community members. + +- Follow [@core_ui on Twitter](https://twitter.com/core_ui). +- Read and subscribe to [CoreUI Blog](https://coreui.io/blog/). + +## Support CoreUI Development + +CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/). + + + +### Platinum Sponsors + +Support this project by [becoming a Platinum Sponsor](https://opencollective.com/coreui/contribute/platinum-sponsor-40959/). A large company logo will be added here with a link to your website. + + + +### Gold Sponsors + +Support this project by [becoming a Gold Sponsor](https://opencollective.com/coreui/contribute/gold-sponsor-40960/). A big company logo will be added here with a link to your website. + + + +### Silver Sponsors + +Support this project by [becoming a Silver Sponsor](https://opencollective.com/coreui/contribute/silver-sponsor-40967/). A medium company logo will be added here with a link to your website. + + + +### Bronze Sponsors + +Support this project by [becoming a Bronze Sponsor](https://opencollective.com/coreui/contribute/bronze-sponsor-40966/). The company avatar will show up here with a link to your OpenCollective Profile. + + + +### Backers + +Thanks to all the backers and sponsors! Support this project by [becoming a backer](https://opencollective.com/coreui/contribute/backer-40965/). + + + + + +## Copyright and License + +copyright 2022 creativeLabs ลukasz Holeczek. + + +Code released under [the MIT license](https://github.com/coreui/coreui-free-react-admin-template/blob/master/LICENSE). +There is only one limitation you can't re-distribute the CoreUI as stock. You canโ€™t do this if you modify the CoreUI. In past we faced some problems with persons who tried to sell CoreUI based templates. diff --git a/dashboard-front/coreui/angular.json b/dashboard-front/coreui/angular.json new file mode 100644 index 00000000..19fdd855 --- /dev/null +++ b/dashboard-front/coreui/angular.json @@ -0,0 +1,118 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "cli": { + "analytics": false + }, + "version": 1, + "newProjectRoot": "projects", + "projects": { + "coreui-free-angular-admin-template": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + }, + "@schematics/angular:application": { + "strict": true + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/coreui-free-angular-admin-template", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "preserveSymlinks": true, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/scss/styles.scss" + ], + "scripts": [], + "allowedCommonJsDependencies": [ + "chart.js", + "@coreui/chartjs/dist/js/coreui-chartjs.js" + ] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "1500kb", + "maximumError": "6mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "coreui-free-angular-admin-template:build:production" + }, + "development": { + "browserTarget": "coreui-free-angular-admin-template:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "coreui-free-angular-admin-template:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/scss/styles.scss" + ], + "scripts": [] + } + } + } + } + } +} diff --git a/dashboard-front/coreui/karma.conf.js b/dashboard-front/coreui/karma.conf.js new file mode 100644 index 00000000..b9754549 --- /dev/null +++ b/dashboard-front/coreui/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/coreui-free-angular-admin-template'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/dashboard-front/coreui/package-lock.json b/dashboard-front/coreui/package-lock.json new file mode 100644 index 00000000..754625f0 --- /dev/null +++ b/dashboard-front/coreui/package-lock.json @@ -0,0 +1,20844 @@ +{ + "name": "coreui-free-angular-admin-template", + "version": "4.2.5", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "coreui-free-angular-admin-template", + "version": "4.2.5", + "dependencies": { + "@angular/animations": "^14.2.4", + "@angular/cdk": "^14.2.3", + "@angular/common": "^14.2.4", + "@angular/compiler": "^14.2.4", + "@angular/core": "^14.2.4", + "@angular/forms": "^14.2.4", + "@angular/language-service": "^14.2.4", + "@angular/platform-browser": "^14.2.4", + "@angular/platform-browser-dynamic": "^14.2.4", + "@angular/router": "^14.2.4", + "@coreui/angular": "~4.2.4", + "@coreui/angular-chartjs": "^4.2.4", + "@coreui/chartjs": "^3.0.0", + "@coreui/coreui": "~4.2.2", + "@coreui/icons": "^2.1.0", + "@coreui/icons-angular": "^4.2.4", + "@coreui/utils": "^1.3.1", + "chart.js": "^3.9.1", + "ngx-perfect-scrollbar": "^10.1.1", + "rxjs": "~7.5.0", + "tslib": "^2.3.0", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^14.2.4", + "@angular/cli": "^14.2.4", + "@angular/compiler-cli": "^14.2.4", + "@angular/localize": "^14.2.4", + "@types/jasmine": "^4.3.0", + "@types/node": "^16.11.62", + "jasmine-core": "~4.4.0", + "karma": "~6.4.1", + "karma-chrome-launcher": "~3.1.1", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "typescript": "~4.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": ">= 6" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1402.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.4.tgz", + "integrity": "sha512-lOgyKJ+KjBYWzgcxJ3vAy3RFkqRmSw3RY4thNsWOHLvzT8o33u3USDuOr6cDAQW12NjX9K7JDuvNlPbadjQbSQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.4", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.4.tgz", + "integrity": "sha512-VvwLmb5fiorcLO6Fko3GIeNDWsdoZxviHcHjq2IGkgTNMlvWwZhuSZ8kOhNIXUKFCZYpj7FiUm/ft8v0ilxFBg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1402.4", + "@angular-devkit/build-webpack": "0.1402.4", + "@angular-devkit/core": "14.2.4", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "14.2.4", + "ansi-colors": "4.1.3", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "16.1.2", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.1", + "esbuild-wasm": "0.15.5", + "glob": "8.0.3", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.0.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.6.1", + "minimatch": "5.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", + "postcss-loader": "7.0.1", + "postcss-preset-env": "7.8.0", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.54.4", + "sass-loader": "13.0.2", + "semver": "7.3.7", + "source-map-loader": "4.0.0", + "source-map-support": "0.5.21", + "stylus": "0.59.0", + "stylus-loader": "7.0.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.4.0", + "webpack": "5.74.0", + "webpack-dev-middleware": "5.3.3", + "webpack-dev-server": "4.11.0", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.15.5" + }, + "peerDependencies": { + "@angular/compiler-cli": "^14.0.0", + "@angular/localize": "^14.0.0", + "@angular/service-worker": "^14.0.0", + "karma": "^6.3.0", + "ng-packagr": "^14.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.6.2 <4.9" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1402.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.4.tgz", + "integrity": "sha512-hj80twvKlscktH3bILS4+iQckTQzUWO/hTrG0auvJIXHWOmfJDQTDEyIgoMUzhnibh/8xwf96cFAsFZc2d5kFA==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1402.4", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/core": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.4.tgz", + "integrity": "sha512-NsvN1U42goBcibVR75vDp2NOFeSU+Wcekwf1r3Jbyz6a2l9Unf0v9BOWLXdigFY8xztbrOHJPSIbC+2rkvOUnw==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/schematics": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.4.tgz", + "integrity": "sha512-Pm2C7HBNslQavsqXh6/rcyAavmgzTxU3x7NoWwSBH+fIplLJjEFzHdnW9JJp59A2ONfqO0wND3yWKtjIoDAUqw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.4", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular/animations": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.4.tgz", + "integrity": "sha512-c7uhSayAKQQjaLEGHAg8i0170qj6pixQmG0ox/fJJ0Esz3bb1IZcAUO9JSXSykpUBFV7Dm8pmorji4w3VvN4gQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.4" + } + }, + "node_modules/@angular/cdk": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.3.tgz", + "integrity": "sha512-ej8LZOlND4x5w18R930gtXBgvyUAGapiz0romp4Q5NXGdvin/D9fjBHT6t+WzcWZTckWFsgOVtTHhjSTb6KF+g==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.4.tgz", + "integrity": "sha512-3YqwjPYlLzqQB0y6A7c3l9X1e0z418NjSQQD2e12N8y68V8nkTK4UcsDVpqb/7ce+xnQ7xGz2wb6DJddU4Wogw==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1402.4", + "@angular-devkit/core": "14.2.4", + "@angular-devkit/schematics": "14.2.4", + "@schematics/angular": "14.2.4", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "debug": "4.3.4", + "ini": "3.0.0", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "npm-package-arg": "9.1.0", + "npm-pick-manifest": "7.0.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "13.6.2", + "resolve": "1.22.1", + "semver": "7.3.7", + "symbol-observable": "4.0.0", + "uuid": "8.3.2", + "yargs": "17.5.1" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.4.tgz", + "integrity": "sha512-nzmRUhdyKomgsf1vUdx7KOXS7OXkvdpF/1CSagqsIGYVLbL8cGZ6ROrdEuxkSsE9GUt/OAIkC4How4/LLPut1A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.4.tgz", + "integrity": "sha512-fBvTPPWBYA65bAmrqKcnzUHAhZ/tfs+nG+IeDukn4TeyQplVjDYOlqjf84jYQubSIx8WTicZzRFn0dIGsPaSNw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.4" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.4.tgz", + "integrity": "sha512-8kHA/Ujzr5aXic7T3iEJiu0JMfXRs/uDoi8W8dYWFe+0naGhxwWmHBHc/hhS1tpv9/wW2WOcT51RDa4OYHKDKw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/main-ngcc.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "14.2.4", + "typescript": ">=4.6.2 <4.9" + } + }, + "node_modules/@angular/core": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.4.tgz", + "integrity": "sha512-wB19wKmZE+X07mLbxYyqeg3v1JXy8m0+ShZD2oY3dmgk1mXOf5XVQxRZohGTrbPw83EdSWwx3vz+jjylGunVZQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.11.4" + } + }, + "node_modules/@angular/forms": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.4.tgz", + "integrity": "sha512-m1asD8SazzMPzcli054zwLYz7hiXiaCXfqmQOFdQQd3OnPNKeCGDS8GFX7Yd/+3fz4REGeSon9YRhq7/W0TDlA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.4", + "@angular/core": "14.2.4", + "@angular/platform-browser": "14.2.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/language-service": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.4.tgz", + "integrity": "sha512-s2UvnGVRb2ltEnc/NSrCwa6lQoP2BFr3TaRfaOZurX0vr5Dou9VItrtqsk8b1ctPjgqtOQl1IgXT6V+dwN39yA==", + "engines": { + "node": "^14.15.0 || >=16.10.0" + } + }, + "node_modules/@angular/localize": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.4.tgz", + "integrity": "sha512-35BKWV5y5aGGbnLIY9xcPs4i8KGqYBidPtqlU1tg585y0szzFBuHdF4jNrAYTwjGk7fnxYYLZQygM/GtxFwLUA==", + "dev": true, + "dependencies": { + "@babel/core": "7.18.9", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "14.2.4", + "@angular/compiler-cli": "14.2.4" + } + }, + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/localize/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/platform-browser": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.4.tgz", + "integrity": "sha512-/NAQXYLgyeb2L15EsaKgGEn50GH/O3t1FOjBvVZg6L423X0H6dIOL4bxbLcKAj9+bUDtdUzDiDoYyt6YEidH+g==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/animations": "14.2.4", + "@angular/common": "14.2.4", + "@angular/core": "14.2.4" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.4.tgz", + "integrity": "sha512-6jEVKzIqT9lipq4xZftBskHKl3jrL1pQbK8diirJH0mNeuj0wvE+fqfKtVVl898OI/iJ3aAKyQf5YmOe1k8PAw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.4", + "@angular/compiler": "14.2.4", + "@angular/core": "14.2.4", + "@angular/platform-browser": "14.2.4" + } + }, + "node_modules/@angular/router": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.4.tgz", + "integrity": "sha512-zjsiy/1zrZfZnfIbo2vVgZ+UhCo3okabVr43eIvJhBwcNKzM8Zv17oN9FFlWvSzKKkbsoNIgJkTI85L1YsKtjg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.4", + "@angular/core": "14.2.4", + "@angular/platform-browser": "14.2.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", + "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.19.3", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", + "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", + "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", + "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", + "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.3", + "@babel/types": "^7.19.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", + "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.19.3", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", + "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@coreui/angular": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@coreui/angular/-/angular-4.2.4.tgz", + "integrity": "sha512-yLoG1TQ0XDIQyJajrVFC10SjNZIB7CAguCZAalgXwsFIIPC7KN/JVKZLtfi3xWqi2ZRjNVBFvaSDrSq6//SQDg==", + "dependencies": { + "@popperjs/core": "~2.11.5", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^14.0.0", + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@angular/router": "^14.0.0" + } + }, + "node_modules/@coreui/angular-chartjs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@coreui/angular-chartjs/-/angular-chartjs-4.2.4.tgz", + "integrity": "sha512-0OKALYB1Mleq5KkGOo3X6rDEq30GQ5nvzV9oURfpgCRGj6w4uPFVIQ6aTNJISmwwdy1g8vL59Jz9Qi/+ECBA8Q==", + "dependencies": { + "lodash-es": "^4.17.21", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^14.0.0", + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@coreui/chartjs": "^3.0.0", + "chart.js": "^3.7.1" + } + }, + "node_modules/@coreui/chartjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@coreui/chartjs/-/chartjs-3.0.0.tgz", + "integrity": "sha512-udbvSxanTNltv94lqTMW8bLRXTtzk9G2SrmFdM/7HH+JSaLX2wdQpZ4VIJhyOCRGLCSKHktl29BnW1/uXQecAg==", + "dependencies": { + "@coreui/coreui": "4.0.0", + "chart.js": "^3.4.0" + } + }, + "node_modules/@coreui/chartjs/node_modules/@coreui/coreui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-4.0.0.tgz", + "integrity": "sha512-8vH6fJrmvCR/Oy5v0E+/1AL3Ygb4jhQ7NXK2fMYWJyK13BePDm9muB3y6S0IdqkpBwjY3hHVwHyt2lJqJdesmQ==", + "peerDependencies": { + "@popperjs/core": "^2.9.2" + } + }, + "node_modules/@coreui/coreui": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-4.2.2.tgz", + "integrity": "sha512-aPL7Rv98CBkIU4y7wmZOUBHuBN2qwRS3CFeWmUV3kPeGiPQe9FG4+kOtcITbttNQ35HVMSZeauJyoy2LSM0ygA==", + "dependencies": { + "postcss-combine-duplicated-selectors": "^10.0.3" + }, + "peerDependencies": { + "@popperjs/core": "^2.11.5" + } + }, + "node_modules/@coreui/icons": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@coreui/icons/-/icons-2.1.0.tgz", + "integrity": "sha512-3yY9J0088TSY403jwJeP5YERH3RLOvxdhOa4VIQsGOX4fuQZiyVUM+vwlzyCSpgAv9NwKPkCor+gc+JJaYf0TA==" + }, + "node_modules/@coreui/icons-angular": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@coreui/icons-angular/-/icons-angular-4.2.4.tgz", + "integrity": "sha512-ymayx+5urWqSGL3rBgAnbPN/i03VV1HI52taYDRuUP2LnNI7SfvZSUvZRe4MUeLGayP0lOYlig9KDIMpsFTMDw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@coreui/icons": "^2.1.0" + } + }, + "node_modules/@coreui/utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@coreui/utils/-/utils-1.3.1.tgz", + "integrity": "sha512-WuWHX7bg89cJH34TWVsLe9RsxzBhTApj+X2Ja19xhjcpxt5Gv11Ozm+fwYt6DD7DgncTvpwYrMcnNlpp701UOg==", + "engines": { + "node": ">=8.9.0", + "npm": ">= 5.6.0" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@ngtools/webpack": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.4.tgz", + "integrity": "sha512-rmoUTz3FNhQctsmsq1HM7OfoT+pJiI2dhK0u6SqKXkP3OJ+dGW7NHQ5jYR7IATa7wLFe0vDiEr8caxZ5JBAEsQ==", + "dev": true, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^14.0.0", + "typescript": ">=4.6.2 <4.9", + "webpack": "^5.54.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@schematics/angular": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.4.tgz", + "integrity": "sha512-9n7HyxZvoSR+Ynyvr8oEQ3zy5trSjCQMTF+fZSTCzCBEVHKGxqMyisI6KO4qcGeIQYGXWeBYrMsy9jMQFgK8dQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.4", + "@angular-devkit/schematics": "14.2.4", + "jsonc-parser": "3.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.0.tgz", + "integrity": "sha512-u1jWakf8CWvLfSEZyxmzkgBzOEvXH/szpT0e6G8BTkx5Eu0BhDn7sbc5dz0JBN/6Wwm9rBe+JAsk9tJRyH9ZkA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.62", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.62.tgz", + "integrity": "sha512-K/ggecSdwAAy2NUW4WKmF4Rc03GKbsfP+k326UWgckoS+Rzd2PaWbjk76dSmqdLQvLTJAO9axiTUJ6488mFsYQ==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001414", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz", + "integrity": "sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chart.js": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/core-js-compat": { + "version": "3.25.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.3.tgz", + "integrity": "sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", + "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.269", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.269.tgz", + "integrity": "sha512-7mHFONwp7MNvdyto1v70fCwk28NJMFgsK79op+iYHzz1BLE8T66a1B2qW5alb8XgE0yi3FL3ZQjSYZpJpF6snw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "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.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "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" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jasmine-core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.4.0.tgz", + "integrity": "sha512-+l482uImx5BVd6brJYlaHe2UwfKoZBqQfNp20ZmdNfsjGFTemGfqHLsXjKEW23w9R/m8WYeFc9JmIgjj6dUtAA==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/karma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", + "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-coverage/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma-coverage/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/karma/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", + "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "dev": true, + "dependencies": { + "date-format": "^4.0.13", + "debug": "^4.3.4", + "flatted": "^3.2.6", + "rfdc": "^1.3.0", + "streamroller": "^3.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/ngx-perfect-scrollbar": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-10.1.1.tgz", + "integrity": "sha512-f9IaDJGlBzSxnJ3Ki76n2JdzfQngUFyCf0E+CuVLaR5jL0IJDcTu7vOs8wexXunRMTd8xvIv0+sdIxf8hXAGWg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dependencies": { + "perfect-scrollbar": "1.5.0", + "resize-observer-polyfill": "^1.5.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=9.0.0", + "@angular/core": ">=9.0.0" + } + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/perfect-scrollbar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz", + "integrity": "sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-combine-duplicated-selectors": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", + "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.9", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", + "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true, + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.8", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.10", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamroller": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "klona": "^2.0.5", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/terser": { + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", + "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "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.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/zone.js": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", + "dependencies": { + "tslib": "^2.3.0" + } + } + }, + "dependencies": { + "@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@angular-devkit/architect": { + "version": "0.1402.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.4.tgz", + "integrity": "sha512-lOgyKJ+KjBYWzgcxJ3vAy3RFkqRmSw3RY4thNsWOHLvzT8o33u3USDuOr6cDAQW12NjX9K7JDuvNlPbadjQbSQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.4", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/build-angular": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.4.tgz", + "integrity": "sha512-VvwLmb5fiorcLO6Fko3GIeNDWsdoZxviHcHjq2IGkgTNMlvWwZhuSZ8kOhNIXUKFCZYpj7FiUm/ft8v0ilxFBg==", + "dev": true, + "requires": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1402.4", + "@angular-devkit/build-webpack": "0.1402.4", + "@angular-devkit/core": "14.2.4", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "14.2.4", + "ansi-colors": "4.1.3", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "16.1.2", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.1", + "esbuild": "0.15.5", + "esbuild-wasm": "0.15.5", + "glob": "8.0.3", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.0.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.6.1", + "minimatch": "5.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", + "postcss-loader": "7.0.1", + "postcss-preset-env": "7.8.0", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.54.4", + "sass-loader": "13.0.2", + "semver": "7.3.7", + "source-map-loader": "4.0.0", + "source-map-support": "0.5.21", + "stylus": "0.59.0", + "stylus-loader": "7.0.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.4.0", + "webpack": "5.74.0", + "webpack-dev-middleware": "5.3.3", + "webpack-dev-server": "4.11.0", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1402.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.4.tgz", + "integrity": "sha512-hj80twvKlscktH3bILS4+iQckTQzUWO/hTrG0auvJIXHWOmfJDQTDEyIgoMUzhnibh/8xwf96cFAsFZc2d5kFA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1402.4", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.4.tgz", + "integrity": "sha512-NsvN1U42goBcibVR75vDp2NOFeSU+Wcekwf1r3Jbyz6a2l9Unf0v9BOWLXdigFY8xztbrOHJPSIbC+2rkvOUnw==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.4.tgz", + "integrity": "sha512-Pm2C7HBNslQavsqXh6/rcyAavmgzTxU3x7NoWwSBH+fIplLJjEFzHdnW9JJp59A2ONfqO0wND3yWKtjIoDAUqw==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.4", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular/animations": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.4.tgz", + "integrity": "sha512-c7uhSayAKQQjaLEGHAg8i0170qj6pixQmG0ox/fJJ0Esz3bb1IZcAUO9JSXSykpUBFV7Dm8pmorji4w3VvN4gQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/cdk": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.3.tgz", + "integrity": "sha512-ej8LZOlND4x5w18R930gtXBgvyUAGapiz0romp4Q5NXGdvin/D9fjBHT6t+WzcWZTckWFsgOVtTHhjSTb6KF+g==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.3.0" + } + }, + "@angular/cli": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.4.tgz", + "integrity": "sha512-3YqwjPYlLzqQB0y6A7c3l9X1e0z418NjSQQD2e12N8y68V8nkTK4UcsDVpqb/7ce+xnQ7xGz2wb6DJddU4Wogw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1402.4", + "@angular-devkit/core": "14.2.4", + "@angular-devkit/schematics": "14.2.4", + "@schematics/angular": "14.2.4", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "debug": "4.3.4", + "ini": "3.0.0", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "npm-package-arg": "9.1.0", + "npm-pick-manifest": "7.0.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "13.6.2", + "resolve": "1.22.1", + "semver": "7.3.7", + "symbol-observable": "4.0.0", + "uuid": "8.3.2", + "yargs": "17.5.1" + } + }, + "@angular/common": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.4.tgz", + "integrity": "sha512-nzmRUhdyKomgsf1vUdx7KOXS7OXkvdpF/1CSagqsIGYVLbL8cGZ6ROrdEuxkSsE9GUt/OAIkC4How4/LLPut1A==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.4.tgz", + "integrity": "sha512-fBvTPPWBYA65bAmrqKcnzUHAhZ/tfs+nG+IeDukn4TeyQplVjDYOlqjf84jYQubSIx8WTicZzRFn0dIGsPaSNw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler-cli": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.4.tgz", + "integrity": "sha512-8kHA/Ujzr5aXic7T3iEJiu0JMfXRs/uDoi8W8dYWFe+0naGhxwWmHBHc/hhS1tpv9/wW2WOcT51RDa4OYHKDKw==", + "dev": true, + "requires": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + } + }, + "@angular/core": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.4.tgz", + "integrity": "sha512-wB19wKmZE+X07mLbxYyqeg3v1JXy8m0+ShZD2oY3dmgk1mXOf5XVQxRZohGTrbPw83EdSWwx3vz+jjylGunVZQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/forms": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.4.tgz", + "integrity": "sha512-m1asD8SazzMPzcli054zwLYz7hiXiaCXfqmQOFdQQd3OnPNKeCGDS8GFX7Yd/+3fz4REGeSon9YRhq7/W0TDlA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/language-service": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.4.tgz", + "integrity": "sha512-s2UvnGVRb2ltEnc/NSrCwa6lQoP2BFr3TaRfaOZurX0vr5Dou9VItrtqsk8b1ctPjgqtOQl1IgXT6V+dwN39yA==" + }, + "@angular/localize": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.4.tgz", + "integrity": "sha512-35BKWV5y5aGGbnLIY9xcPs4i8KGqYBidPtqlU1tg585y0szzFBuHdF4jNrAYTwjGk7fnxYYLZQygM/GtxFwLUA==", + "dev": true, + "requires": { + "@babel/core": "7.18.9", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@angular/platform-browser": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.4.tgz", + "integrity": "sha512-/NAQXYLgyeb2L15EsaKgGEn50GH/O3t1FOjBvVZg6L423X0H6dIOL4bxbLcKAj9+bUDtdUzDiDoYyt6YEidH+g==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.4.tgz", + "integrity": "sha512-6jEVKzIqT9lipq4xZftBskHKl3jrL1pQbK8diirJH0mNeuj0wvE+fqfKtVVl898OI/iJ3aAKyQf5YmOe1k8PAw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/router": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.4.tgz", + "integrity": "sha512-zjsiy/1zrZfZnfIbo2vVgZ+UhCo3okabVr43eIvJhBwcNKzM8Zv17oN9FFlWvSzKKkbsoNIgJkTI85L1YsKtjg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", + "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", + "dev": true + }, + "@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.19.3", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + } + }, + "@babel/helpers": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", + "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", + "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", + "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", + "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.3", + "@babel/types": "^7.19.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", + "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", + "dev": true, + "requires": { + "@babel/types": "^7.19.3", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/types": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", + "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@coreui/angular": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@coreui/angular/-/angular-4.2.4.tgz", + "integrity": "sha512-yLoG1TQ0XDIQyJajrVFC10SjNZIB7CAguCZAalgXwsFIIPC7KN/JVKZLtfi3xWqi2ZRjNVBFvaSDrSq6//SQDg==", + "requires": { + "@popperjs/core": "~2.11.5", + "tslib": "^2.3.0" + } + }, + "@coreui/angular-chartjs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@coreui/angular-chartjs/-/angular-chartjs-4.2.4.tgz", + "integrity": "sha512-0OKALYB1Mleq5KkGOo3X6rDEq30GQ5nvzV9oURfpgCRGj6w4uPFVIQ6aTNJISmwwdy1g8vL59Jz9Qi/+ECBA8Q==", + "requires": { + "lodash-es": "^4.17.21", + "tslib": "^2.3.0" + } + }, + "@coreui/chartjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@coreui/chartjs/-/chartjs-3.0.0.tgz", + "integrity": "sha512-udbvSxanTNltv94lqTMW8bLRXTtzk9G2SrmFdM/7HH+JSaLX2wdQpZ4VIJhyOCRGLCSKHktl29BnW1/uXQecAg==", + "requires": { + "@coreui/coreui": "4.0.0", + "chart.js": "^3.4.0" + }, + "dependencies": { + "@coreui/coreui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-4.0.0.tgz", + "integrity": "sha512-8vH6fJrmvCR/Oy5v0E+/1AL3Ygb4jhQ7NXK2fMYWJyK13BePDm9muB3y6S0IdqkpBwjY3hHVwHyt2lJqJdesmQ==", + "requires": {} + } + } + }, + "@coreui/coreui": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-4.2.2.tgz", + "integrity": "sha512-aPL7Rv98CBkIU4y7wmZOUBHuBN2qwRS3CFeWmUV3kPeGiPQe9FG4+kOtcITbttNQ35HVMSZeauJyoy2LSM0ygA==", + "requires": { + "postcss-combine-duplicated-selectors": "^10.0.3" + } + }, + "@coreui/icons": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@coreui/icons/-/icons-2.1.0.tgz", + "integrity": "sha512-3yY9J0088TSY403jwJeP5YERH3RLOvxdhOa4VIQsGOX4fuQZiyVUM+vwlzyCSpgAv9NwKPkCor+gc+JJaYf0TA==" + }, + "@coreui/icons-angular": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@coreui/icons-angular/-/icons-angular-4.2.4.tgz", + "integrity": "sha512-ymayx+5urWqSGL3rBgAnbPN/i03VV1HI52taYDRuUP2LnNI7SfvZSUvZRe4MUeLGayP0lOYlig9KDIMpsFTMDw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@coreui/utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@coreui/utils/-/utils-1.3.1.tgz", + "integrity": "sha512-WuWHX7bg89cJH34TWVsLe9RsxzBhTApj+X2Ja19xhjcpxt5Gv11Ozm+fwYt6DD7DgncTvpwYrMcnNlpp701UOg==" + }, + "@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "dev": true, + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "requires": {} + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "dev": true, + "optional": true + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@ngtools/webpack": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.4.tgz", + "integrity": "sha512-rmoUTz3FNhQctsmsq1HM7OfoT+pJiI2dhK0u6SqKXkP3OJ+dGW7NHQ5jYR7IATa7wLFe0vDiEr8caxZ5JBAEsQ==", + "dev": true, + "requires": {} + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@schematics/angular": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.4.tgz", + "integrity": "sha512-9n7HyxZvoSR+Ynyvr8oEQ3zy5trSjCQMTF+fZSTCzCBEVHKGxqMyisI6KO4qcGeIQYGXWeBYrMsy9jMQFgK8dQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.4", + "@angular-devkit/schematics": "14.2.4", + "jsonc-parser": "3.1.0" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.0.tgz", + "integrity": "sha512-u1jWakf8CWvLfSEZyxmzkgBzOEvXH/szpT0e6G8BTkx5Eu0BhDn7sbc5dz0JBN/6Wwm9rBe+JAsk9tJRyH9ZkA==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/node": { + "version": "16.11.62", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.62.tgz", + "integrity": "sha512-K/ggecSdwAAy2NUW4WKmF4Rc03GKbsfP+k326UWgckoS+Rzd2PaWbjk76dSmqdLQvLTJAO9axiTUJ6488mFsYQ==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001414", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz", + "integrity": "sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chart.js": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "core-js-compat": { + "version": "3.25.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.3.tgz", + "integrity": "sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "requires": {} + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssdb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", + "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.269", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.269.tgz", + "integrity": "sha512-7mHFONwp7MNvdyto1v70fCwk28NJMFgsK79op+iYHzz1BLE8T66a1B2qW5alb8XgE0yi3FL3ZQjSYZpJpF6snw==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "dev": true, + "optional": true, + "requires": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", + "dev": true + }, + "esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", + "dev": true + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine-core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.4.0.tgz", + "integrity": "sha512-+l482uImx5BVd6brJYlaHe2UwfKoZBqQfNp20ZmdNfsjGFTemGfqHLsXjKEW23w9R/m8WYeFc9JmIgjj6dUtAA==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "karma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", + "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "requires": { + "jasmine-core": "^4.1.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "requires": {} + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", + "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "dev": true, + "requires": { + "date-format": "^4.0.13", + "debug": "^4.3.4", + "flatted": "^3.2.6", + "rfdc": "^1.3.0", + "streamroller": "^3.1.2" + } + }, + "lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true + }, + "magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memfs": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "needle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "ngx-perfect-scrollbar": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-10.1.1.tgz", + "integrity": "sha512-f9IaDJGlBzSxnJ3Ki76n2JdzfQngUFyCf0E+CuVLaR5jL0IJDcTu7vOs8wexXunRMTd8xvIv0+sdIxf8hXAGWg==", + "requires": { + "perfect-scrollbar": "1.5.0", + "resize-observer-polyfill": "^1.5.0", + "tslib": "^2.0.0" + } + }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-gyp": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true, + "optional": true + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + }, + "npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^2.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "requires": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + } + }, + "npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "requires": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "requires": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@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" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "perfect-scrollbar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz", + "integrity": "sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-combine-duplicated-selectors": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", + "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-properties": { + "version": "12.1.9", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", + "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "requires": {} + }, + "postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "dev": true, + "requires": {} + }, + "postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-import": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "requires": {} + }, + "postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + } + }, + "postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "requires": {} + }, + "postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "requires": {} + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true + }, + "postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "requires": {} + }, + "postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "requires": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.8", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.10", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "requires": {} + }, + "postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socket.io": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "streamroller": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "requires": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "stylus-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "klona": "^2.0.5", + "normalize-path": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", + "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "requires": { + "typed-assert": "^1.0.8" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "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.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "zone.js": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", + "requires": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/dashboard-front/coreui/package.json b/dashboard-front/coreui/package.json new file mode 100644 index 00000000..e10ae34f --- /dev/null +++ b/dashboard-front/coreui/package.json @@ -0,0 +1,59 @@ +{ + "name": "dashboard", + "version": "1.0.0", + "config": { + "coreui_library_short_version": "4.2", + "coreui_library_docs_url": "https://coreui.io/angular/docs/" + }, + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^14.2.4", + "@angular/cdk": "^14.2.3", + "@angular/common": "^14.2.4", + "@angular/compiler": "^14.2.4", + "@angular/core": "^14.2.4", + "@angular/forms": "^14.2.4", + "@angular/language-service": "^14.2.4", + "@angular/platform-browser": "^14.2.4", + "@angular/platform-browser-dynamic": "^14.2.4", + "@angular/router": "^14.2.4", + "@coreui/angular": "~4.2.4", + "@coreui/angular-chartjs": "^4.2.4", + "@coreui/chartjs": "^3.0.0", + "@coreui/coreui": "~4.2.2", + "@coreui/icons": "^2.1.0", + "@coreui/icons-angular": "^4.2.4", + "@coreui/utils": "^1.3.1", + "chart.js": "^3.9.1", + "ngx-perfect-scrollbar": "^10.1.1", + "rxjs": "~7.5.0", + "tslib": "^2.3.0", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^14.2.4", + "@angular/cli": "^14.2.4", + "@angular/compiler-cli": "^14.2.4", + "@angular/localize": "^14.2.4", + "@types/jasmine": "^4.3.0", + "@types/node": "^16.11.62", + "jasmine-core": "~4.4.0", + "karma": "~6.4.1", + "karma-chrome-launcher": "~3.1.1", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "typescript": "~4.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": ">= 6" + } +} diff --git a/dashboard-front/coreui/src/app/app-routing.module.ts b/dashboard-front/coreui/src/app/app-routing.module.ts new file mode 100644 index 00000000..6c80c5cf --- /dev/null +++ b/dashboard-front/coreui/src/app/app-routing.module.ts @@ -0,0 +1,118 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DefaultLayoutComponent } from './containers'; +import { Page404Component } from './views/pages/page404/page404.component'; +import { Page500Component } from './views/pages/page500/page500.component'; +import { LoginComponent } from './views/pages/login/login.component'; +import { RegisterComponent } from './views/pages/register/register.component'; + +const routes: Routes = [ + { + path: '', + redirectTo: 'dashboard', + pathMatch: 'full' + }, + { + path: '', + component: DefaultLayoutComponent, + data: { + title: 'Home' + }, + children: [ + { + path: 'dashboard', + loadChildren: () => + import('./views/dashboard/dashboard.module').then((m) => m.DashboardModule) + }, + { + path: 'theme', + loadChildren: () => + import('./views/theme/theme.module').then((m) => m.ThemeModule) + }, + { + path: 'base', + loadChildren: () => + import('./views/base/base.module').then((m) => m.BaseModule) + }, + { + path: 'buttons', + loadChildren: () => + import('./views/buttons/buttons.module').then((m) => m.ButtonsModule) + }, + { + path: 'forms', + loadChildren: () => + import('./views/forms/forms.module').then((m) => m.CoreUIFormsModule) + }, + { + path: 'charts', + loadChildren: () => + import('./views/charts/charts.module').then((m) => m.ChartsModule) + }, + { + path: 'icons', + loadChildren: () => + import('./views/icons/icons.module').then((m) => m.IconsModule) + }, + { + path: 'notifications', + loadChildren: () => + import('./views/notifications/notifications.module').then((m) => m.NotificationsModule) + }, + { + path: 'widgets', + loadChildren: () => + import('./views/widgets/widgets.module').then((m) => m.WidgetsModule) + }, + { + path: 'pages', + loadChildren: () => + import('./views/pages/pages.module').then((m) => m.PagesModule) + }, + ] + }, + { + path: '404', + component: Page404Component, + data: { + title: 'Page 404' + } + }, + { + path: '500', + component: Page500Component, + data: { + title: 'Page 500' + } + }, + { + path: 'login', + component: LoginComponent, + data: { + title: 'Login Page' + } + }, + { + path: 'register', + component: RegisterComponent, + data: { + title: 'Register Page' + } + }, + {path: '**', redirectTo: 'dashboard'} +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, { + scrollPositionRestoration: 'top', + anchorScrolling: 'enabled', + initialNavigation: 'enabledBlocking' + // relativeLinkResolution: 'legacy' + }) + ], + exports: [RouterModule] +}) +export class AppRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/app.component.spec.ts b/dashboard-front/coreui/src/app/app.component.spec.ts new file mode 100644 index 00000000..35cd3ceb --- /dev/null +++ b/dashboard-front/coreui/src/app/app.component.spec.ts @@ -0,0 +1,28 @@ +import { TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'CoreUI Free Angular Admin Template'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('CoreUI Free Angular Admin Template'); + }); +}); diff --git a/dashboard-front/coreui/src/app/app.component.ts b/dashboard-front/coreui/src/app/app.component.ts new file mode 100644 index 00000000..6de02a1b --- /dev/null +++ b/dashboard-front/coreui/src/app/app.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; +import { Router, NavigationEnd } from '@angular/router'; + +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from './icons/icon-subset'; +import { Title } from '@angular/platform-browser'; + +@Component({ + // tslint:disable-next-line:component-selector + selector: 'body', + template: '', +}) +export class AppComponent implements OnInit { + title = 'CoreUI Free Angular Admin Template'; + + constructor( + private router: Router, + private titleService: Title, + private iconSetService: IconSetService + ) { + titleService.setTitle(this.title); + // iconSet singleton + iconSetService.icons = { ...iconSubset }; + } + + ngOnInit(): void { + this.router.events.subscribe((evt) => { + if (!(evt instanceof NavigationEnd)) { + return; + } + }); + } +} diff --git a/dashboard-front/coreui/src/app/app.module.ts b/dashboard-front/coreui/src/app/app.module.ts new file mode 100644 index 00000000..52faf218 --- /dev/null +++ b/dashboard-front/coreui/src/app/app.module.ts @@ -0,0 +1,104 @@ +import { NgModule } from '@angular/core'; +import { HashLocationStrategy, LocationStrategy, PathLocationStrategy } from '@angular/common'; +import { BrowserModule, Title } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { + PERFECT_SCROLLBAR_CONFIG, + PerfectScrollbarConfigInterface, + PerfectScrollbarModule, +} from 'ngx-perfect-scrollbar'; + +// Import routing module +import { AppRoutingModule } from './app-routing.module'; + +// Import app component +import { AppComponent } from './app.component'; + +// Import containers +import { + DefaultFooterComponent, + DefaultHeaderComponent, + DefaultLayoutComponent, +} from './containers'; + +import { + AvatarModule, + BadgeModule, + BreadcrumbModule, + ButtonGroupModule, + ButtonModule, + CardModule, + DropdownModule, + FooterModule, + FormModule, + GridModule, + HeaderModule, + ListGroupModule, + NavModule, + ProgressModule, + SharedModule, + SidebarModule, + TabsModule, + UtilitiesModule, +} from '@coreui/angular'; + +import { IconModule, IconSetService } from '@coreui/icons-angular'; + +const DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = { + suppressScrollX: true, +}; + +const APP_CONTAINERS = [ + DefaultFooterComponent, + DefaultHeaderComponent, + DefaultLayoutComponent, +]; + +@NgModule({ + declarations: [AppComponent, ...APP_CONTAINERS], + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + AvatarModule, + BreadcrumbModule, + FooterModule, + DropdownModule, + GridModule, + HeaderModule, + SidebarModule, + IconModule, + PerfectScrollbarModule, + NavModule, + ButtonModule, + FormModule, + UtilitiesModule, + ButtonGroupModule, + ReactiveFormsModule, + SidebarModule, + SharedModule, + TabsModule, + ListGroupModule, + ProgressModule, + BadgeModule, + ListGroupModule, + CardModule, + ], + providers: [ + { + provide: LocationStrategy, + useClass: HashLocationStrategy, + }, + { + provide: PERFECT_SCROLLBAR_CONFIG, + useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG, + }, + IconSetService, + Title + ], + bootstrap: [AppComponent], +}) +export class AppModule { +} diff --git a/dashboard-front/coreui/src/app/containers/default-layout/_nav.ts b/dashboard-front/coreui/src/app/containers/default-layout/_nav.ts new file mode 100644 index 00000000..4a414d99 --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/_nav.ts @@ -0,0 +1,240 @@ +import { INavData } from '@coreui/angular'; + +export const navItems: INavData[] = [ + { + name: 'Risk Dashboard', + url: '/dashboard', + iconComponent: { name: 'cil-speedometer' }, + }, + { + title: true, + name: 'Theme' + }, + { + name: 'Colors', + url: '/theme/colors', + iconComponent: { name: 'cil-drop' } + }, + { + name: 'Typography', + url: '/theme/typography', + linkProps: { fragment: 'someAnchor' }, + iconComponent: { name: 'cil-pencil' } + }, + { + name: 'Components', + title: true + }, + { + name: 'Base', + url: '/base', + iconComponent: { name: 'cil-puzzle' }, + children: [ + { + name: 'Accordion', + url: '/base/accordion' + }, + { + name: 'Breadcrumbs', + url: '/base/breadcrumbs' + }, + { + name: 'Cards', + url: '/base/cards' + }, + { + name: 'Carousel', + url: '/base/carousel' + }, + { + name: 'Collapse', + url: '/base/collapse' + }, + { + name: 'List Group', + url: '/base/list-group' + }, + { + name: 'Navs & Tabs', + url: '/base/navs' + }, + { + name: 'Pagination', + url: '/base/pagination' + }, + { + name: 'Placeholder', + url: '/base/placeholder' + }, + { + name: 'Popovers', + url: '/base/popovers' + }, + { + name: 'Progress', + url: '/base/progress' + }, + { + name: 'Spinners', + url: '/base/spinners' + }, + { + name: 'Tables', + url: '/base/tables' + }, + { + name: 'Tabs', + url: '/base/tabs' + }, + { + name: 'Tooltips', + url: '/base/tooltips' + } + ] + }, + { + name: 'Buttons', + url: '/buttons', + iconComponent: { name: 'cil-cursor' }, + children: [ + { + name: 'Buttons', + url: '/buttons/buttons' + }, + { + name: 'Button groups', + url: '/buttons/button-groups' + }, + { + name: 'Dropdowns', + url: '/buttons/dropdowns' + }, + ] + }, + { + name: 'Forms', + url: '/forms', + iconComponent: { name: 'cil-notes' }, + children: [ + { + name: 'Form Control', + url: '/forms/form-control' + }, + { + name: 'Select', + url: '/forms/select' + }, + { + name: 'Checks & Radios', + url: '/forms/checks-radios' + }, + { + name: 'Range', + url: '/forms/range' + }, + { + name: 'Input Group', + url: '/forms/input-group' + }, + { + name: 'Floating Labels', + url: '/forms/floating-labels' + }, + { + name: 'Layout', + url: '/forms/layout' + }, + { + name: 'Validation', + url: '/forms/validation' + } + ] + }, + { + name: 'Charts', + url: '/charts', + iconComponent: { name: 'cil-chart-pie' } + }, + { + name: 'Icons', + iconComponent: { name: 'cil-star' }, + url: '/icons', + children: [ + { + name: 'CoreUI Free', + url: '/icons/coreui-icons', + badge: { + color: 'success', + text: 'FREE' + } + }, + { + name: 'CoreUI Flags', + url: '/icons/flags' + }, + { + name: 'CoreUI Brands', + url: '/icons/brands' + } + ] + }, + { + name: 'Notifications', + url: '/notifications', + iconComponent: { name: 'cil-bell' }, + children: [ + { + name: 'Alerts', + url: '/notifications/alerts' + }, + { + name: 'Badges', + url: '/notifications/badges' + }, + { + name: 'Modal', + url: '/notifications/modal' + }, + { + name: 'Toast', + url: '/notifications/toasts' + } + ] + }, + { + name: 'Widgets', + url: '/widgets', + iconComponent: { name: 'cil-calculator' }, + badge: { + color: 'info', + text: 'NEW' + } + }, + { + title: true, + name: 'Extras' + }, + { + name: 'Pages', + url: '/login', + iconComponent: { name: 'cil-star' }, + children: [ + { + name: 'Login', + url: '/login' + }, + { + name: 'Register', + url: '/register' + }, + { + name: 'Error 404', + url: '/404' + }, + { + name: 'Error 500', + url: '/500' + } + ] + }, +]; diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.html b/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.html new file mode 100644 index 00000000..c7a4fe0e --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.html @@ -0,0 +1,12 @@ + +
+ CoreUI + © 2022 creativeLabs +
+ + diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.scss b/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.spec.ts b/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.spec.ts new file mode 100644 index 00000000..c287eb6a --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DefaultFooterComponent } from './default-footer.component'; + +describe('DefaultFooterComponent', () => { + let component: DefaultFooterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DefaultFooterComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DefaultFooterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.ts b/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.ts new file mode 100644 index 00000000..2002f42e --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-footer/default-footer.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { FooterComponent } from '@coreui/angular'; + +@Component({ + selector: 'app-default-footer', + templateUrl: './default-footer.component.html', + styleUrls: ['./default-footer.component.scss'], +}) +export class DefaultFooterComponent extends FooterComponent { + constructor() { + super(); + } +} diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.html b/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.html new file mode 100644 index 00000000..5b3144f6 --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.html @@ -0,0 +1,30 @@ + + + + + + + + Dashboard + + + + + + + + + + + + diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.scss b/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.spec.ts b/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.spec.ts new file mode 100644 index 00000000..ad6662e0 --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.spec.ts @@ -0,0 +1,43 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { + AvatarModule, + BadgeModule, + BreadcrumbModule, + DropdownModule, + GridModule, + HeaderModule, + NavModule, SidebarModule +} from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DefaultHeaderComponent } from './default-header.component'; +import { RouterTestingModule } from '@angular/router/testing'; + +describe('DefaultHeaderComponent', () => { + let component: DefaultHeaderComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DefaultHeaderComponent], + imports: [GridModule, HeaderModule, NavModule, BadgeModule, AvatarModule, DropdownModule, BreadcrumbModule, RouterTestingModule, SidebarModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(DefaultHeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.ts b/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.ts new file mode 100644 index 00000000..5e9e6def --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-header/default-header.component.ts @@ -0,0 +1,21 @@ +import { Component, Input } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; + +import { ClassToggleService, HeaderComponent } from '@coreui/angular'; + +@Component({ + selector: 'app-default-header', + templateUrl: './default-header.component.html', +}) +export class DefaultHeaderComponent extends HeaderComponent { + + @Input() sidebarId: string = "sidebar"; + + public newMessages = new Array(4) + public newTasks = new Array(5) + public newNotifications = new Array(5) + + constructor(private classToggler: ClassToggleService) { + super(); + } +} diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.html b/dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.html new file mode 100644 index 00000000..1439322b --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + +
diff --git a/dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.ts b/dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.ts new file mode 100644 index 00000000..ece4b874 --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/default-layout.component.ts @@ -0,0 +1,18 @@ +import { Component } from '@angular/core'; + +import { navItems } from './_nav'; + +@Component({ + selector: 'app-dashboard', + templateUrl: './default-layout.component.html', +}) +export class DefaultLayoutComponent { + + public navItems = navItems; + + public perfectScrollbarConfig = { + suppressScrollX: true, + }; + + constructor() {} +} diff --git a/dashboard-front/coreui/src/app/containers/default-layout/index.ts b/dashboard-front/coreui/src/app/containers/default-layout/index.ts new file mode 100644 index 00000000..158fc879 --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/default-layout/index.ts @@ -0,0 +1,3 @@ +export * from './default-footer/default-footer.component'; +export * from './default-header/default-header.component'; +export * from './default-layout.component'; diff --git a/dashboard-front/coreui/src/app/containers/index.ts b/dashboard-front/coreui/src/app/containers/index.ts new file mode 100644 index 00000000..473078d6 --- /dev/null +++ b/dashboard-front/coreui/src/app/containers/index.ts @@ -0,0 +1 @@ +export * from './default-layout'; diff --git a/dashboard-front/coreui/src/app/icons/icon-subset.ts b/dashboard-front/coreui/src/app/icons/icon-subset.ts new file mode 100644 index 00000000..eea24641 --- /dev/null +++ b/dashboard-front/coreui/src/app/icons/icon-subset.ts @@ -0,0 +1,278 @@ +import { + cibCcAmex, + cibCcApplePay, + cibCcMastercard, + cibCcPaypal, + cibCcStripe, + cibCcVisa, + cibFacebook, + cibGoogle, + cibLinkedin, + cibSkype, + cibTwitter, + cifBr, + cifEs, + cifFr, + cifIn, + cifPl, + cifUs, + cilAlignCenter, + cilAlignLeft, + cilAlignRight, + cilApplicationsSettings, + cilArrowBottom, + cilArrowRight, + cilArrowTop, + cilBasket, + cilBell, + cilBold, + cilBookmark, + cilCalculator, + cilCalendar, + cilChart, + cilChartPie, + cilCheck, + cilChevronLeft, + cilChevronRight, + cilCloudDownload, + cilCode, + cilCommentSquare, + cilCreditCard, + cilCursor, + cilDollar, + cilDrop, + cilEnvelopeClosed, + cilEnvelopeOpen, + cilFile, + cilHome, + cilInbox, + cilIndentDecrease, + cilIndentIncrease, + cilItalic, + cilJustifyCenter, + cilLayers, + cilList, + cilListNumbered, + cilLocationPin, + cilLockLocked, + cilMagnifyingGlass, + cilMap, + cilMediaPlay, + cilMenu, + cilMoon, + cilNotes, + cilOptions, + cilPaperclip, + cilPaperPlane, + cilPen, + cilPencil, + cilPeople, + cilPrint, + cilPuzzle, + cilReportSlash, + cilSave, + cilSettings, + cilShare, + cilShareAll, + cilShareBoxed, + cilSpeech, + cilSpeedometer, + cilSpreadsheet, + cilStar, + cilSun, + cilTags, + cilTask, + cilTrash, + cilUnderline, + cilUser, + cilUserFemale, + cilUserFollow, + cilUserUnfollow, + cilInfo, +} from '@coreui/icons'; + +export const iconSubset = { + cibCcAmex, + cibCcApplePay, + cibCcMastercard, + cibCcPaypal, + cibCcStripe, + cibCcVisa, + cibFacebook, + cibGoogle, + cibLinkedin, + cibSkype, + cibTwitter, + cifBr, + cifEs, + cifFr, + cifIn, + cifPl, + cifUs, + cilAlignCenter, + cilAlignLeft, + cilAlignRight, + cilApplicationsSettings, + cilArrowBottom, + cilArrowRight, + cilArrowTop, + cilBasket, + cilBell, + cilBold, + cilBookmark, + cilCalculator, + cilCalendar, + cilChart, + cilChartPie, + cilCheck, + cilChevronLeft, + cilChevronRight, + cilCloudDownload, + cilCode, + cilCommentSquare, + cilCreditCard, + cilCursor, + cilDollar, + cilDrop, + cilEnvelopeClosed, + cilEnvelopeOpen, + cilFile, + cilHome, + cilInbox, + cilIndentDecrease, + cilIndentIncrease, + cilItalic, + cilJustifyCenter, + cilLayers, + cilList, + cilListNumbered, + cilLocationPin, + cilLockLocked, + cilMagnifyingGlass, + cilMap, + cilMediaPlay, + cilMenu, + cilMoon, + cilNotes, + cilOptions, + cilPaperclip, + cilPaperPlane, + cilPen, + cilPencil, + cilPeople, + cilPrint, + cilPuzzle, + cilReportSlash, + cilSave, + cilSettings, + cilShare, + cilShareAll, + cilShareBoxed, + cilSpeech, + cilSpeedometer, + cilSpreadsheet, + cilStar, + cilSun, + cilTags, + cilTask, + cilTrash, + cilUnderline, + cilUser, + cilUserFemale, + cilUserFollow, + cilUserUnfollow, + cilInfo +}; + +export enum IconSubset { + cibCcAmex = 'cibCcAmex', + cibCcApplePay = 'cibCcApplePay', + cibCcMastercard = 'cibCcMastercard', + cibCcPaypal = 'cibCcPaypal', + cibCcStripe = 'cibCcStripe', + cibCcVisa = 'cibCcVisa', + cibFacebook = 'cibFacebook', + cibGoogle = 'cibGoogle', + cibLinkedin = 'cibLinkedin', + cibSkype = 'cibSkype', + cibTwitter = 'cibTwitter', + cifBr = 'cifBr', + cifEs = 'cifEs', + cifFr = 'cifFr', + cifIn = 'cifIn', + cifPl = 'cifPl', + cifUs = 'cifUs', + cilAlignCenter = 'cilAlignCenter', + cilAlignLeft = 'cilAlignLeft', + cilAlignRight = 'cilAlignRight', + cilApplicationsSettings = 'cilApplicationsSettings', + cilArrowBottom = 'cilArrowBottom', + cilArrowRight = 'cilArrowRight', + cilArrowTop = 'cilArrowTop', + cilBasket = 'cilBasket', + cilBell = 'cilBell', + cilBold = 'cilBold', + cilBookmark = 'cilBookmark', + cilCalculator = 'cilCalculator', + cilCalendar = 'cilCalendar', + cilChart = 'cilChart', + cilChartPie = 'cilChartPie', + cilCheck='cilCheck', + cilChevronLeft = 'cilChevronLeft', + cilChevronRight = 'cilChevronRight', + cilCloudDownload = 'cilCloudDownload', + cilCode = 'cilCode', + cilCommentSquare = 'cilCommentSquare', + cilCreditCard = 'cilCreditCard', + cilCursor = 'cilCursor', + cilDollar = 'cilDollar', + cilDrop = 'cilDrop', + cilEnvelopeClosed = 'cilEnvelopeClosed', + cilEnvelopeOpen = 'cilEnvelopeOpen', + cilFile = 'cilFile', + cilHome = 'cilHome', + cilInbox = 'cilInbox', + cilIndentDecrease = 'cilIndentDecrease', + cilIndentIncrease = 'cilIndentIncrease', + cilItalic = 'cilItalic', + cilJustifyCenter = 'cilJustifyCenter', + cilLayers = 'cilLayers', + cilList = 'cilList', + cilListNumbered = 'cilListNumbered', + cilLocationPin = 'cilLocationPin', + cilLockLocked = 'cilLockLocked', + cilMagnifyingGlass = 'cilMagnifyingGlass', + cilMap = 'cilMap', + cilMediaPlay = 'cilMediaPlay', + cilMenu = 'cilMenu', + cilMoon = 'cilMoon', + cilNotes = 'cilNotes', + cilOptions = 'cilOptions', + cilPaperclip = 'cilPaperclip', + cilPaperPlane = 'cilPaperPlane', + cilPen = 'cilPen', + cilPencil = 'cilPencil', + cilPeople = 'cilPeople', + cilPrint = 'cilPrint', + cilPuzzle = 'cilPuzzle', + cilReportSlash = 'cilReportSlash', + cilSave = 'cilSave', + cilSettings = 'cilSettings', + cilShare = 'cilShare', + cilShareAll = 'cilShareAll', + cilShareBoxed = 'cilShareBoxed', + cilSpeech = 'cilSpeech', + cilSpeedometer = 'cilSpeedometer', + cilSpreadsheet = 'cilSpreadsheet', + cilStar = 'cilStar', + cilSun = 'cilSun', + cilTags = 'cilTags', + cilTask = 'cilTask', + cilTrash = 'cilTrash', + cilUnderline = 'cilUnderline', + cilUser = 'cilUser', + cilUserFemale = 'cilUserFemale', + cilUserFollow = 'cilUserFollow', + cilUserUnfollow = 'cilUserUnfollow', + cilInfo = 'cilInfo' +} diff --git a/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.html b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.html new file mode 100644 index 00000000..83fecfa7 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.html @@ -0,0 +1,121 @@ + + + + + + + + Angular Accordion + + +

+ Click the accordions below to expand/collapse the accordion content. +

+ + + + + + + +
+
+
+ + + + + +
+ This is the + #second + item accordion body. It is hidden by + default, until the collapse plugin adds the appropriate classes that we use to + style each element. These classes control the overall appearance, as well as + the showing and hiding via CSS transitions. You can modify any of this with + custom CSS or overriding our default variables. It's also worth noting + that just about any HTML can go within the .accordion-body, + though the transition does limit overflow. +
+
+
+ + + + + +
+ +
+
+
+
+
+
+
+ + + Angular Accordion flush + + +

+ Click the accordions below to expand/collapse the accordion content. +

+ + + + + Accordion item #0 + + + + + + + + Accordion item #1 + + + + + + + + Accordion item #2 + + + + + + + +
+
+ + + Angular Accordion alwaysOpen + + + + + + + Custom Accordion item #{{i}} + + + {{i}}. + + + + + + + +
+
diff --git a/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.scss b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.scss new file mode 100644 index 00000000..9a3e48fa --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.scss @@ -0,0 +1,6 @@ +:host ::ng-deep .accordion-custom { + .accordion-button { + background-color: var(--cui-dark); + color: var(--cui-white); + } +} diff --git a/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.spec.ts b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.spec.ts new file mode 100644 index 00000000..a71201ce --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { AccordionModule, CardModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { AccordionsComponent } from './accordions.component'; + +describe('AccordionsComponent', () => { + let component: AccordionsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [AccordionsComponent], + imports: [AccordionModule, NoopAnimationsModule, CardModule, GridModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(AccordionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.ts b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.ts new file mode 100644 index 00000000..d9199d5d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/accordion/accordions.component.ts @@ -0,0 +1,29 @@ +import { Component } from '@angular/core'; +import { DomSanitizer } from '@angular/platform-browser'; + +@Component({ + selector: 'app-accordions', + templateUrl: './accordions.component.html', + styleUrls: ['./accordions.component.scss'] +}) +export class AccordionsComponent { + + items = [1, 2, 3, 4]; + + constructor( + private sanitizer: DomSanitizer + ) { } + + getAccordionBodyText(value: string) { + const textSample = ` + This is the #${value} item accordion body. It is hidden by + default, until the collapse plugin adds the appropriate classes that we use to + style each element. These classes control the overall appearance, as well as + the showing and hiding via CSS transitions. You can modify any of this with + custom CSS or overriding our default variables. It's also worth noting + that just about any HTML can go within the .accordion-body, + though the transition does limit overflow. + `; + return this.sanitizer.bypassSecurityTrustHtml(textSample); + } +} diff --git a/dashboard-front/coreui/src/app/views/base/base-routing.module.ts b/dashboard-front/coreui/src/app/views/base/base-routing.module.ts new file mode 100644 index 00000000..d8e68c66 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/base-routing.module.ts @@ -0,0 +1,146 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { AccordionsComponent } from './accordion/accordions.component'; +import { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component'; +import { CardsComponent } from './cards/cards.component'; +import { CarouselsComponent } from './carousels/carousels.component'; +import { CollapsesComponent } from './collapses/collapses.component'; +import { ListGroupsComponent } from './list-groups/list-groups.component'; +import { NavsComponent } from './navs/navs.component'; +import { PaginationsComponent } from './paginations/paginations.component'; +import { PopoversComponent } from './popovers/popovers.component'; +import { ProgressComponent } from './progress/progress.component'; +import { SpinnersComponent } from './spinners/spinners.component'; +import { TablesComponent } from './tables/tables.component'; +import { TooltipsComponent } from './tooltips/tooltips.component'; +import { TabsComponent } from './tabs/tabs.component'; +import { PlaceholdersComponent } from './placeholders/placeholders.component'; + +const routes: Routes = [ + { + path: '', + data: { + title: 'Base', + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'cards', + }, + { + path: 'accordion', + component: AccordionsComponent, + data: { + title: 'Accordion', + }, + }, + { + path: 'breadcrumbs', + component: BreadcrumbsComponent, + data: { + title: 'Breadcrumbs', + }, + }, + { + path: 'cards', + component: CardsComponent, + data: { + title: 'Cards', + }, + }, + { + path: 'carousel', + component: CarouselsComponent, + data: { + title: 'Carousel', + }, + }, + { + path: 'collapse', + component: CollapsesComponent, + data: { + title: 'Collapse', + }, + }, + { + path: 'list-group', + component: ListGroupsComponent, + data: { + title: 'List Group', + }, + }, + { + path: 'navs', + component: NavsComponent, + data: { + title: 'Navs & Tabs', + }, + }, + { + path: 'pagination', + component: PaginationsComponent, + data: { + title: 'Pagination', + }, + }, + { + path: 'placeholder', + component: PlaceholdersComponent, + data: { + title: 'Placeholder', + }, + }, + { + path: 'popovers', + component: PopoversComponent, + data: { + title: 'Popovers', + }, + }, + { + path: 'progress', + component: ProgressComponent, + data: { + title: 'Progress', + }, + }, + { + path: 'spinners', + component: SpinnersComponent, + data: { + title: 'Spinners', + }, + }, + { + path: 'tables', + component: TablesComponent, + data: { + title: 'Tables', + }, + }, + { + path: 'tabs', + component: TabsComponent, + data: { + title: 'Tabs', + }, + }, + { + path: 'tooltips', + component: TooltipsComponent, + data: { + title: 'Tooltips', + }, + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class BaseRoutingModule {} + diff --git a/dashboard-front/coreui/src/app/views/base/base.module.ts b/dashboard-front/coreui/src/app/views/base/base.module.ts new file mode 100644 index 00000000..d750dbbe --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/base.module.ts @@ -0,0 +1,105 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; + +// CoreUI Modules +import { + AccordionModule, + BadgeModule, + BreadcrumbModule, + ButtonModule, + CardModule, + CarouselModule, + CollapseModule, + DropdownModule, + FormModule, + GridModule, + ListGroupModule, + NavModule, + PaginationModule, + PlaceholderModule, + PopoverModule, + ProgressModule, + SharedModule, + SpinnerModule, + TableModule, + TabsModule, + TooltipModule, + UtilitiesModule +} from '@coreui/angular'; + +import { IconModule } from '@coreui/icons-angular'; + +// utils +import { DocsComponentsModule } from '@docs-components/docs-components.module'; + +// views +import { AccordionsComponent } from './accordion/accordions.component'; +import { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component'; +import { CardsComponent } from './cards/cards.component'; +import { CarouselsComponent } from './carousels/carousels.component'; +import { CollapsesComponent } from './collapses/collapses.component'; +import { ListGroupsComponent } from './list-groups/list-groups.component'; +import { NavsComponent } from './navs/navs.component'; +import { PaginationsComponent } from './paginations/paginations.component'; +import { PlaceholdersComponent } from './placeholders/placeholders.component'; +import { PopoversComponent } from './popovers/popovers.component'; +import { ProgressComponent } from './progress/progress.component'; +import { SpinnersComponent } from './spinners/spinners.component'; +import { TablesComponent } from './tables/tables.component'; +import { TooltipsComponent } from './tooltips/tooltips.component'; +import { TabsComponent } from './tabs/tabs.component'; + +// Components Routing +import { BaseRoutingModule } from './base-routing.module'; + +@NgModule({ + imports: [ + CommonModule, + BaseRoutingModule, + AccordionModule, + BadgeModule, + BreadcrumbModule, + ButtonModule, + CardModule, + CollapseModule, + GridModule, + UtilitiesModule, + SharedModule, + ListGroupModule, + IconModule, + ListGroupModule, + PlaceholderModule, + ProgressModule, + SpinnerModule, + TabsModule, + NavModule, + TooltipModule, + CarouselModule, + FormModule, + ReactiveFormsModule, + DropdownModule, + PaginationModule, + PopoverModule, + TableModule, + DocsComponentsModule, + ], + declarations: [ + AccordionsComponent, + BreadcrumbsComponent, + CardsComponent, + CarouselsComponent, + CollapsesComponent, + ListGroupsComponent, + NavsComponent, + PaginationsComponent, + PopoversComponent, + ProgressComponent, + SpinnersComponent, + TablesComponent, + TooltipsComponent, + TabsComponent, + PlaceholdersComponent, + ], +}) +export class BaseModule {} diff --git a/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.html b/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.html new file mode 100644 index 00000000..3055af9c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.html @@ -0,0 +1,95 @@ +
+ + + + + + + + Angular Breadcrumbs + + +

+ The breadcrumb navigation provides links back to each previous page the user navigated + through and shows the current location in a website or an application. You donโ€™t have + to add separators, because they automatically added in CSS through + + ::before + + and + + content + + . +

+ + + + {{item.label}} + + +
+ + + {{item.label}} + + + + + {{item.label}} + + + + + {{item.label}} + + + + + {{item.label}} + + +
+ + + Home + + + Library + + + Data + + + Bootstrap + + +
+
+
+
+ + + + Angular Breadcrumbs router + + + + + + + + + +
+
diff --git a/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.scss b/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.spec.ts b/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.spec.ts new file mode 100644 index 00000000..0fd8a0de --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { BreadcrumbModule, CardModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { BreadcrumbsComponent } from './breadcrumbs.component'; + +describe('BreadcrumbsComponent', () => { + let component: BreadcrumbsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [BreadcrumbsComponent], + imports: [CardModule, GridModule, BreadcrumbModule, RouterTestingModule, DocsComponentsModule], + providers: [IconSetService] + }).compileComponents(); + })); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(BreadcrumbsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.ts b/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.ts new file mode 100644 index 00000000..53e0b924 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/breadcrumbs/breadcrumbs.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + templateUrl: './breadcrumbs.component.html', + styleUrls: ['./breadcrumbs.component.scss'] +}) +export class BreadcrumbsComponent implements OnInit { + public items = []; + + constructor() {} + + ngOnInit(): void { + this.items = [ + { label: 'Home', url: '/', attributes: { title: 'Home' } }, + { label: 'Library', url: '/' }, + { label: 'Data', url: '/dashboard/' }, + { label: 'CoreUI', url: '/' } + ]; + + setTimeout(() => { + this.items = [ + { label: 'CoreUI', url: '/' }, + { label: 'Data', url: '/dashboard/' }, + { label: 'Library', url: '/' }, + { label: 'Home', url: '/', attributes: { title: 'Home' } } + ]; + }, 5000); + } +} diff --git a/dashboard-front/coreui/src/app/views/base/cards/cards.component.html b/dashboard-front/coreui/src/app/views/base/cards/cards.component.html new file mode 100644 index 00000000..e5189ded --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/cards/cards.component.html @@ -0,0 +1,864 @@ + + + + + + + + Angular Card + + +

+ Cards are built with as little markup and styles as possible but still + manage to deliver a bunch of control and customization. Built with + flexbox, they offer easy alignment and mix well with other CoreUI + components. Cards have no top, left, and right margins by default, so + use + spacing utilities + as needed. They have no fixed width to start, so they'll fill the + full width of its parent. +

+

+ Below is an example of a basic card with mixed content and a fixed + width. Cards have no fixed width to start, so they'll naturally + fill the full width of its parent element. +

+ + + + +
Card title
+

+ Some quick example text to build on the card title and make up the bulk of the card's content. +

+ +
+
+
+
+
+
+ + + + Angular Card Body + + +

+ The main block of a card is the <c-card-body>. Use + it whenever you need a padded section within a card. +

+ + + This is some text within a card body. + + +
+
+
+ + + + Angular Card Titles, text, and links + + +

+ Card titles are managed by cCardTitle directive for + <h*>. Identically, links are attached and collected + next to each other by cCardLink directive for + <a> tag. Subtitles are handled by + cCardSubtitle directive. +

+

+ Store cCardTitle and the cCardSubtitle items + in a <c-card-body>. The card title, and subtitle + are arranged properly. +

+ + + +
Card title
+
+ Card subtitle +
+

+ Some quick example text to build on the card title and make up the + bulk of the card content. +

+ Card link + Another link +
+
+
+
+
+
+ + + + Angular Card Images + + +

+ cCardImg="top" places a picture to the top of the card. + With cCardText, text can be added to the card. Text + within cCardText can additionally be styled with the + regular HTML tags. +

+ + + + +

+ Some quick example text to build on the card + title and make up the bulk of the card content. +

+
+
+
+
+
+
+ + + + Angular Card list groups + + +

+ Create lists of content in a card with a flush list group. +

+ + + + +
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Vestibulum at eros
  • +
+
+
+ + + Header +
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Vestibulum at eros
  • +
+
+
+ + +
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Vestibulum at eros
  • +
+ Footer +
+
+
+
+
+
+
+ + + + Angular Card kitchen sink + + +

+ Combine and match many content types to build the card you need, or + throw everything in there. Shown below are image styles, blocks, text + styles, and a list groupโ€”all wrapped in a fixed-width card. +

+ + + + +
Card title
+

+ Some quick example text to build on the card title and make up the + bulk of the card content. +

+
+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Vestibulum at eros
  • +
+ + Card link + Another link + +
+
+
+
+
+ + + + Card Header and footer + + + + +

+ Add an optional header and/or footer within a card. +

+ + + Header + + + + + +
+ +

+ Card headers can be styled by adding ex. + "h5". +

+ + + +
Header
+
+ + + +
+
+
+
+ + + + + Quote + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Integer posuere erat a ante. +

+
+ Someone famous in + Source Title +
+
+
+
+
+
+ + + + Header + + + + 2 days ago + + + + +
+
+
+
+ + + + Angular Card Sizing + + +

+ Cards assume no specific width to start, so they'll + be 100% wide unless otherwise stated. You can adjust this as required + with custom CSS, grid classes, grid Sass mixins, or services. +

+

Using grid markup

+

+ Using the grid, wrap cards in columns and rows as needed. +

+ + + + + + + + + + + + + + + + + + +

Using utilities

+

+ Use some of + available sizing utilities + to rapidly set a card width. +

+ + + + + + + + + + + + + Using custom CSS +

+ Use custom CSS in your stylesheets or as inline styles to set a width. +

+ + + + + + + +
+
+
+ + + + Card Text alignment + + +

+ You can instantly change the text arrangement of any cardโ€”in its whole + or specific partsโ€”with + text align + classes. +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Card Navigation + + +

+ Add some navigation to a <c-card-header> with our + <c-nav> component. +

+ + + + + + + + + Active + + + + Link + + + + Disabled + + + + + + + + + + + + + + + + + + Active + + + + Link + + + + Disabled + + + + + + + + + + + +
+
+
+ + + + Card Image caps + + +

+ Similar to headers and footers, cards can include top and bottom "image + caps"โ€”images at the top or bottom of a card. +

+ + + + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+

+ Last updated 3 mins ago +

+
+
+
+ + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+

+ Last updated 3 mins ago +

+
+ +
+
+
+
+
+
+
+ + + + Card Styles + + +

+ Cards include various options for customizing their backgrounds, borders, and color. +

+

Background and color

+

+ Use color property to change the appearance of a card. +

+ + + + + Header + +
{{item.color}} card title
+

+ Some quick example text to build on the card title and make up the bulk of + the card's content. +

+ +
+
+
+
+
+

Border

+

+ Use border utilities to change + just the border-color of a card. Note that you can set + textColor property on the <c-card> or a subset of the + card's contents as shown below. +

+ + + + + Header + +
{{item.color}} card title
+

+ Some quick example text to build on the card title and make up the bulk of + the card's content. +

+ +
+
+
+
+
+

Top border

+

+ Use border utilities to change + just the border-color of a card. Note that you can set + textColor property on the <c-card> or a subset of the + card's contents as shown below. +

+ + + + + Header + +
{{item.color}} card title
+

+ Some quick example text to build on the card title and make up the bulk of + the card's content. +

+ +
+
+
+
+
+
+
+
+ + + + + Card Card groups + + +

+ Use card groups to render cards as a single, attached element with equal width and + height columns. Card groups start off stacked and use display: flex; to + become attached with uniform dimensions starting at the sm breakpoint. +

+ + + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+

+ Last updated 3 mins ago +

+
+
+ + + +
Card title
+

+ This card has supporting text below as a natural lead-in to additional + content. +

+

+ Last updated 3 mins ago +

+
+
+ + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This card has even longer content than the first to show + that equal height action. +

+

+ Last updated 3 mins ago +

+
+
+
+
+

+ When using card groups with footers, their content will automatically line up. +

+ + + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+ + + +
Card title
+

+ This card has supporting text below as a natural lead-in to additional + content. +

+
+ + Last updated 3 mins ago + +
+ + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This card has even longer content than the first to show + that equal height action. +

+
+ + Last updated 3 mins ago + +
+
+
+
+
+
+ + + + Card Grid cards + + +

+ Use the c-row component and set xs|sm|md|lg|xl|xxl property + to control how many grid columns (wrapped around your cards) you show per row. For + example xs="1" laying out the cards on one column, and md="1" splitting + four cards to equal width across multiple rows, from the medium breakpoint up. +

+ + + + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+ + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+ + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+ + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+
+
+

+ Change it to md="3" and you'll see the fourth card wraps. +

+ + + + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+ + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+ + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+ + + + +
Card title
+

+ This is a wider card with supporting text below as a natural lead-in to + additional content. This content is a little bit longer. +

+
+ + Last updated 3 mins ago + +
+
+
+
+
+
+
+
+ + + + + Placeholder + + Image cap + + + + +
Card title
+

+ Some quick example text to build on the card title and make up the bulk of the card's content. +

+ +
diff --git a/dashboard-front/coreui/src/app/views/base/cards/cards.component.scss b/dashboard-front/coreui/src/app/views/base/cards/cards.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/cards/cards.component.spec.ts b/dashboard-front/coreui/src/app/views/base/cards/cards.component.spec.ts new file mode 100644 index 00000000..b470b8ff --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/cards/cards.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, GridModule, ListGroupModule, NavModule, UtilitiesModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { CardsComponent } from './cards.component'; + +describe('CardsComponent', () => { + let component: CardsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [CardsComponent], + imports: [CardModule, NavModule, GridModule, ListGroupModule, UtilitiesModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(CardsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/cards/cards.component.ts b/dashboard-front/coreui/src/app/views/base/cards/cards.component.ts new file mode 100644 index 00000000..c8752882 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/cards/cards.component.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-cards', + templateUrl: './cards.component.html', + styleUrls: ['./cards.component.scss'] +}) +export class CardsComponent { + + colors = [ + { color: 'primary', textColor: 'primary' }, + { color: 'secondary', textColor: 'secondary' }, + { color: 'success', textColor: 'success' }, + { color: 'danger', textColor: 'danger' }, + { color: 'warning', textColor: 'warning' }, + { color: 'info', textColor: 'info' }, + { color: 'light' }, + { color: 'dark' } + ]; + + imgContext = { $implicit: 'top', bottom: 'bottom' }; + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.html b/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.html new file mode 100644 index 00000000..b5986f30 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.html @@ -0,0 +1,227 @@ +
+ + + + + + + + Angular Carousel Slide only + + +

Hereโ€™s a carousel with slides

+ + + + + {{slide.title}} + + + + +
+
+
+ + + + Angular Carousel with controls + + +

+ Adding in the previous and next controls with c-carousel-controls component. +

+ + + + + {{slide.title}} + + + + + + +
+
+
+ + + + Angular Carousel with custom controls + + +

+ Adding in the previous and next controls with custom content of c-carousel-controls component. + + + + + {{slide.title}} + + + + + Previous + + + + Next + + + + + + + + + + Angular Carousel with indicators + + +

+ You can attach the indicators to the carousel, lengthwise the controls, too. +

+ + + + + + {{slide.title}} + + + + +
+
+
+ + + + Carousel with captions, controls and indicators + + +

+ You can add captions to slides with the <c-carousel-caption> element + within any <c-carousel-item>. They can be immediately hidden on + smaller viewports, as shown below, with optional display + utilities. + We hide them with .d-none and draw them back on medium-sized devices with + .d-md-block. +

+ + + + + + {{slide.title}} + +

{{slide.title}}

+

{{slide.subtitle}}

+
+
+
+ + +
+
+
+
+
+ + + + Angular Carousel Crossfade + + +

+ Add transition="crossfade" to your carousel to animate slides + with a fade transition instead of a slide. +

+ + + + + {{slide.title}} + +

{{slide.title}}

+

{{slide.subtitle}}

+
+
+
+ + +
+
+
+
+
+ + + + Angular Carousel Dark variant + + +

+ Add dark property to the c-carousel for darker controls, + indicators, and captions. Controls have been inverted from their default white fill + with the filter CSS property. Captions and controls have additional Sass + variables that customize the color and background-color. +

+ + + + + + {{slide.title}} + +

{{slide.title}}

+

{{slide.subtitle}}

+
+
+
+ + +
+
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.scss b/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.spec.ts b/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.spec.ts new file mode 100644 index 00000000..2b184e24 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.spec.ts @@ -0,0 +1,38 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, CarouselModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { CarouselsComponent } from './carousels.component'; + +describe('CarouselsComponent', () => { + let component: CarouselsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ CarouselsComponent ], + imports: [CarouselModule, NoopAnimationsModule, CardModule, GridModule, IconModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + })); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(CarouselsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.ts b/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.ts new file mode 100644 index 00000000..5faa9636 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/carousels/carousels.component.ts @@ -0,0 +1,100 @@ +import { Component } from '@angular/core'; +import { DomSanitizer } from '@angular/platform-browser'; + +@Component({ + selector: 'app-carousels', + templateUrl: './carousels.component.html', + styleUrls: ['./carousels.component.scss'] +}) +export class CarouselsComponent { + + imageSrc = [ + 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_1607923e7e2%20text%20%7B%20fill%3A%23555%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_1607923e7e2%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22285.9296875%22%20y%3D%22217.75625%22%3EFirst%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', + 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa20%20text%20%7B%20fill%3A%23444%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa20%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23666%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22247.3203125%22%20y%3D%22218.3%22%3ESecond%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', + 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa21%20text%20%7B%20fill%3A%23333%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa21%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23555%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22277%22%20y%3D%22218.3%22%3EThird%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', + 'https://picsum.photos/id/1/800/400', + 'https://picsum.photos/id/1026/800/400', + 'https://picsum.photos/id/1031/800/400' + ]; + + slidesLight = [ + 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_1607923e7e2%20text%20%7B%20fill%3A%23AAA%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_1607923e7e2%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23F5F5F5%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22285.9296875%22%20y%3D%22217.75625%22%3EFirst%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', + 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa20%20text%20%7B%20fill%3A%23BBB%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa20%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23EEE%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22247.3203125%22%20y%3D%22218.3%22%3ESecond%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', + 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa21%20text%20%7B%20fill%3A%23999%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa21%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23E5E5E5%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22277%22%20y%3D%22218.3%22%3EThird%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E' + ]; + + slides: any[] = []; + + constructor( + private domSanitizer: DomSanitizer + ) { + this.slides[0] = [ + { + id: 0, + src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[0]), + title: 'First slide', + subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' + }, + { + id: 1, + src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[1]), + title: 'Second slide', + subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' + }, + { + id: 2, + src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[2]), + title: 'Third slide', + subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' + } + ]; + + this.slides[1] = [ + { + id: 0, + src: this.imageSrc[3], + title: 'First slide', + subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' + }, + { + id: 1, + src: this.imageSrc[4], + title: 'Second slide', + subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' + }, + { + id: 2, + src: this.imageSrc[5], + title: 'Third slide', + subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' + } + ]; + + this.slides[2] = [ + { + id: 0, + src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[0]), + title: 'First slide', + subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' + }, + { + id: 1, + src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[1]), + title: 'Second slide', + subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' + }, + { + id: 2, + src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[2]), + title: 'Third slide', + subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' + } + ]; + + } + + onItemChange($event: any): void { + console.log('Carousel onItemChange', $event); + } + +} diff --git a/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.html b/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.html new file mode 100644 index 00000000..100efc73 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.html @@ -0,0 +1,84 @@ + + + + + + + + Angular Collapse + + +

You can use a link or a button component.

+ + Link + + + + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry + richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes + anderson cred nesciunt sapiente ea proident. + + + +
+
+
+ + + + Angular Collapse horizontal + + +

Add the horizontal property to transition the width instead of height and set a width on the immediate child element.

+ + +
+ + + This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered. + + +
+
+
+
+
+ + + + Angular Collapse multi target + + +

+ A <c-button> can show and hide multiple elements. +

+ + + + + + + + + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry + richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes + anderson cred nesciunt sapiente ea proident. + + + + + + + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry + richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes + anderson cred nesciunt sapiente ea proident. + + + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.scss b/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.spec.ts b/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.spec.ts new file mode 100644 index 00000000..8e771886 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, CollapseModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { CollapsesComponent } from './collapses.component'; + +describe('CollapsesComponent', () => { + let component: CollapsesComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [CollapsesComponent], + imports: [CardModule, CollapseModule, NoopAnimationsModule, GridModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(CollapsesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.ts b/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.ts new file mode 100644 index 00000000..5c8576f0 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/collapses/collapses.component.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-collapses', + templateUrl: './collapses.component.html', + styleUrls: ['./collapses.component.scss'] +}) +export class CollapsesComponent { + + collapses = [false, false, false, false]; + + constructor() { } + + toggleCollapse(id: number): void { + // @ts-ignore + this.collapses[id] = !this.collapses[id]; + } + +} diff --git a/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.html b/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.html new file mode 100644 index 00000000..015fa7da --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.html @@ -0,0 +1,364 @@ + + + + + + + + Angular List Group Basic example + + +

+ The default list group is an unordered list with items and the proper + CSS classes. Build upon it with the options that follow, or with your + CSS as required. +

+ +
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
  • Vestibulum at eros
  • +
+
+
+
+
+ + + + Angular List Group Active items + + +

+ Add active boolean property to a + cListGroupItem to show the current active selection. +

+ +
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
  • Vestibulum at eros
  • +
+
+
+
+
+ + + + Angular List Group Disabled items + + +

+ Add disabled boolean property to a + cListGroupItem to make it appear disabled. +

+ +
+ + + + + +
+
+
+
+
+ + + + Angular List Group Links and buttons + + +

+ Use <a>s or <button>s to create + actionable list group items with hover, disabled, and active + states by adding component="a|button". We + separate these pseudo-classes to ensure list groups made of + non-interactive elements (like <li> or + <div>) don't provide a click or tap affordance. +

+ + + +
+
+
+ + + + Angular List Group Flush + + +

+ Add flush boolean property to remove some borders and + rounded corners to render list group items edge-to-edge in a parent + container (e.g., cards). +

+ +
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
  • Vestibulum at eros
  • +
+
+
+
+
+ + + + Angular List Group Horizontal + + +

+ Add layout="horizontal" to change the layout of + list group items from vertical to horizontal across all breakpoints. + Alternatively, choose a responsive variant + .layout="horizontal-{sm | md | lg | xl | + xxl}" + to make a list group horizontal starting at that breakpoint's + min-width. Currently + horizontal list groups cannot be combined with flush list + groups. +

+ +
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
+
+
+
+
+ + + + Angular List Group Contextual classes + + +

+ Use contextual classes to style list items with a stateful background + and color. +

+ +
    +
  • + A simple {{ color }} list group item +
  • +
+
+

+ Contextual classes also work with <a> or + <button>. Note the addition of the hover styles + here not present in the previous example. Also supported is the + active state; apply it to indicate an active selection on + a contextual list group item. +

+ + + +
+
+
+ + + + Angular List Group With badges + + +

+ Add badges to any list group item to show unread counts, activity, and + more. +

+ +
+ + + + + +
+
+
+
+
+ + + + Angular List Group Custom content + + +

+ Add nearly any HTML within, even for linked list groups like the one + below, with the help of + flexbox utilities. +

+ + + +
+
+
+ + + + Angular List Group Checkboxes and radios + + +

+ Place CoreUI's checkboxes and radios within list group items and + customize as needed. +

+ +
+
    + + +
  • + + + + +
  • +
  • + + + + +
  • +
  • + + + + +
  • +
+ +
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.scss b/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.spec.ts b/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.spec.ts new file mode 100644 index 00000000..f3137b67 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ReactiveFormsModule } from '@angular/forms'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { BadgeModule, ButtonModule, CardModule, FormModule, GridModule, ListGroupModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ListGroupsComponent } from './list-groups.component'; + +describe('ListGroupsComponent', () => { + let component: ListGroupsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ListGroupsComponent], + imports: [ListGroupModule, ButtonModule, ReactiveFormsModule, BadgeModule, FormModule, GridModule, CardModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ListGroupsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.ts b/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.ts new file mode 100644 index 00000000..3db5922a --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/list-groups/list-groups.component.ts @@ -0,0 +1,41 @@ +import { Component } from '@angular/core'; +import { UntypedFormBuilder } from '@angular/forms'; + +@Component({ + selector: 'app-list-groups', + templateUrl: './list-groups.component.html', + styleUrls: ['./list-groups.component.scss'] +}) +export class ListGroupsComponent { + + breakpoints = [true, 'sm', 'md', 'lg', 'xl', 'xxl']; + colors = ['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark']; + + checkBoxes = this.formBuilder.group({ + one: false, + two: false, + three: true, + four: true, + five: {value: false, disabled: true} + }); + + constructor( + private formBuilder: UntypedFormBuilder + ) { } + + setValue(controlName: string) { + const prevValue = this.checkBoxes.get(controlName)?.value; + const value = this.checkBoxes.getRawValue(); + value[controlName] = !prevValue; + this.checkBoxes.setValue(value); + } + + logValue() { + console.log(this.checkBoxes.value); + this.checkBoxes.reset(); + } + + getValue(controlName: string) { + return this.checkBoxes.get(controlName); + } +} diff --git a/dashboard-front/coreui/src/app/views/base/navs/navs.component.html b/dashboard-front/coreui/src/app/views/base/navs/navs.component.html new file mode 100644 index 00000000..c472c8b6 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/navs/navs.component.html @@ -0,0 +1,380 @@ + + + + + + + + Angular Navs Base navs + + +

+ The base c-nav component is built with flexbox and provide a strong + foundation for building all types of navigation components. It includes some style + overrides (for working with lists), some link padding for larger hit areas, and basic + [disabled]="true" styling. +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +

+ Classes are used throughout, so your markup can be super flexible. Use + c-nav-item like above, or roll your own with a <c-nav> element. Because + the .nav uses display: flex, the cNavLink behaves the same as c-nav-item would, but + without the extra markup. +

+ + + + Active + + Link + Link + + Disabled + + + +
+
+
+ + + + Angular Navs Horizontal alignment + + +

+ Change the horizontal alignment of your nav with + + flexbox utilities + + . By default, navs are left-aligned, but you can easily change them to center or right + aligned. +

+

+ Centered with .justify-content-center: +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +

+ Right-aligned with .justify-content-end: +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +
+
+
+ + + + Angular Navs Vertical + + +

+ Stack your navigation by changing the flex item direction with the + .flex-column utility. Need to stack them on some viewports but not + others? Use the responsive versions (e.g., .flex-sm-column). +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +
+
+
+ + + + Angular Navs Tabs + + +

+ Take the basic nav from above and add the variant="tabs" class + to generate a tabbed interface +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +
+
+
+ + + + Angular Navs Pills + + +

+ Take that same HTML, but use variant="pills" instead: +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +
+
+
+ + + + Angular Navs Fill and justify + + +

+ Force your .nav's contents to extend the full available width one of + two modifier classes. To proportionately fill all available space with your + .nav-items, use layout="fill". Notice that all + horizontal space is occupied, but not every nav item has the same width. +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +

+ For equal-width elements, use layout="justified". All horizontal + space will be occupied by nav links, but unlike the .nav-fill above, every nav item + will be the same width. +

+ + + + + Active + + + + Link + + + Link + + + + Disabled + + + + +
+
+
+ + + + Angular Navs Working with flex utilities + + +

+ If you need responsive nav variations, consider using a series of + flexbox utilities. While more + verbose, these utilities offer greater customization across responsive breakpoints. In + the example below, our nav will be stacked on the lowest breakpoint, then adapt to a + horizontal layout that fills the available width starting from the small breakpoint. +

+ + + + Active + + Link + Link + + Disabled + + + +
+
+
+ + + + Angular Navs Tabs with dropdowns + + + + + + + Active + + + + + Dropdown button + + + + + Link + + + + Disabled + + + + + + + + + + + Angular Navs Pills with dropdowns + + + + + + + Active + + + + + Dropdown button + + + + + Link + + + + Disabled + + + + + + + +
diff --git a/dashboard-front/coreui/src/app/views/base/navs/navs.component.scss b/dashboard-front/coreui/src/app/views/base/navs/navs.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/navs/navs.component.spec.ts b/dashboard-front/coreui/src/app/views/base/navs/navs.component.spec.ts new file mode 100644 index 00000000..ffbfad1c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/navs/navs.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, DropdownModule, GridModule, NavModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { NavsComponent } from './navs.component'; +import { DocsComponentsModule } from '../../../../components'; + +describe('NavsComponent', () => { + let component: NavsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [NavsComponent], + imports: [GridModule, CardModule, RouterTestingModule, NavModule, DropdownModule, DocsComponentsModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(NavsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/navs/navs.component.ts b/dashboard-front/coreui/src/app/views/base/navs/navs.component.ts new file mode 100644 index 00000000..ab6c857a --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/navs/navs.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-navs', + templateUrl: './navs.component.html', + styleUrls: ['./navs.component.scss'] +}) +export class NavsComponent { + + constructor() { } +} + diff --git a/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.html b/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.html new file mode 100644 index 00000000..84605342 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.html @@ -0,0 +1,221 @@ + + + + + + + + Angular Pagination + + +

+ We use a large block of connected links for our pagination, making links hard to miss + and easily scalableโ€”all while providing large hit areas. Pagination is built with list + HTML elements so screen readers can announce the number of available links. Use a + wrapping <nav> element to identify it as a navigation section to + screen readers and other assistive technologies. +

+

+ In addition, as pages likely have more than one such navigation section, it's + advisable to provide a descriptive aria-label for the + <nav> to reflect its purpose. For example, if the pagination + component is used to navigate between a set of search results, an appropriate label + could be aria-label="Search results pages". +

+ + + + Previous + + + 1 + + + 2 + + + 3 + + + Next + + + +
+
+
+ + + + Angular Pagination Working with icons + + +

+ Looking to use an icon or symbol in place of text for some pagination links? Be sure + to provide proper screen reader support with aria attributes. +

+ + + + + + + 1 + + + 2 + + + 1 + + + + + + +
+
+
+ + + + Angular Pagination Disabled and active states + + +

+ Pagination links are customizable for different circumstances. Use + disabled for links that appear un-clickable and .active to + indicate the current page. +

+

+ While the disabled prop uses pointer-events: none to + try to disable the link functionality of <a>s, that CSS + property is not yet standardized and doesn'taccount for keyboard navigation. As + such, we always add tabindex="-1" on disabled links and use + custom JavaScript to fully disable their functionality. +

+ + + + + + + 1 + + + 2 + + + 3 + + + + + + +
+
+
+ + + + Angular Pagination Sizing + + +

+ Fancy larger or smaller pagination? Add sizing="lg" or + sizing="sm" for additional sizes. +

+ + + + Previous + + + 1 + + + 2 + + + 3 + + + Next + + + + + + + Previous + + + 1 + + + 2 + + + 3 + + + Next + + + +
+
+
+ + + + Angular Pagination Alignment + + +

+ Change the alignment of pagination components with + flexbox utilities. +

+ + + + Previous + + + 1 + + + 2 + + + 3 + + + Next + + + + + + + Previous + + + 1 + + + 2 + + + 3 + + + Next + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.scss b/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.spec.ts b/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.spec.ts new file mode 100644 index 00000000..3c3b3f88 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, GridModule, PaginationModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { PaginationsComponent } from './paginations.component'; + +describe('PaginationsComponent', () => { + let component: PaginationsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PaginationsComponent], + imports: [PaginationModule, CardModule, GridModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(PaginationsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.ts b/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.ts new file mode 100644 index 00000000..78eb6e43 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/paginations/paginations.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-paginations', + templateUrl: './paginations.component.html', + styleUrls: ['./paginations.component.scss'] +}) +export class PaginationsComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.html b/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.html new file mode 100644 index 00000000..1fdda5f9 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.html @@ -0,0 +1,160 @@ + + + + + + + + Angular Placeholder + + +

+ In the example below, we take a typical card component and recreate it with + placeholders applied to create a "loading card". Size and proportions are the + same between the two. +

+ +
+ + + +
Card title
+

+ Some quick example text to build on the card title and make up the bulk of the + card's content. +

+ Go somewhere +
+
+ + + Placeholder + + + +
+ +
+

+ + + + + +

+

+ +

+
+
+
+
+
+
+ + + Angular Placeholder + + +

+ Create placeholders with the cPlaceholder directive and a grid + column cCol directive (e.g., cCol="6") to set the width. They can + replace the text inside an element or be added as a modifier to an existing + component. +

+ + + + +
+
+ + + Angular Placeholder Width + + +

+ You can change the width through grid column classes, width utilities, or + inline styles. +

+ + + + + +
+
+ + + Angular Placeholder Color + + +

+ By default, the cPlaceholder uses currentColor. This + can be overridden with a custom color or utility class. +

+ + + + + + + + + + + + +
+
+ + + Angular Placeholder Sizing + + +

+ The size of <CPlaceholder>s are based on the typographic style of + the parent element. Customize them with size prop: lg + sm, or xs. +

+ + + + + + +
+
+ + + Angular Placeholder Animation + + +

+ Animate placeholders with cPlaceholderAnimation="glow" or + cPlaceholderAnimation="wave" to better convey the perception of something + being actively loaded. +

+ +

+ +

+ +

+ +

+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.scss b/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.spec.ts b/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.spec.ts new file mode 100644 index 00000000..764c0e11 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, GridModule, UtilitiesModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { PlaceholdersComponent } from './placeholders.component'; + +describe('PlaceholdersComponent', () => { + let component: PlaceholdersComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PlaceholdersComponent], + imports: [CardModule, GridModule, UtilitiesModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(PlaceholdersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.ts b/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.ts new file mode 100644 index 00000000..5fee1169 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/placeholders/placeholders.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-placeholders', + templateUrl: './placeholders.component.html', + styleUrls: ['./placeholders.component.scss'] +}) +export class PlaceholdersComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.html b/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.html new file mode 100644 index 00000000..5586e3c6 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.html @@ -0,0 +1,69 @@ + + + + + + + + Angular Popover Basic example + + + + + + + + + + + + Angular Popover Four directions + + +

+ Four options are available: top, right, bottom, and left aligned. +

+ + + + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.scss b/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.spec.ts b/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.spec.ts new file mode 100644 index 00000000..14f6672e --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, GridModule, PopoverModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { PopoversComponent } from './popovers.component'; + +describe('PopoversComponent', () => { + let component: PopoversComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PopoversComponent], + imports: [CardModule, GridModule, PopoverModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(PopoversComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.ts b/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.ts new file mode 100644 index 00000000..9095fc91 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/popovers/popovers.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-popovers', + templateUrl: './popovers.component.html', + styleUrls: ['./popovers.component.scss'] +}) +export class PopoversComponent implements OnInit { + + visible = true; + + constructor() { } + + ngOnInit(): void { + setTimeout(() => { + this.visible = !this.visible; + }, 3000); + } + +} diff --git a/dashboard-front/coreui/src/app/views/base/progress/progress.component.html b/dashboard-front/coreui/src/app/views/base/progress/progress.component.html new file mode 100644 index 00000000..53534210 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/progress/progress.component.html @@ -0,0 +1,197 @@ + + + + + + + + Angular Progress Basic example + + +

+ Progress components are built with two HTML elements, some CSS to set the width, and a + few attributes. We don't use + + the HTML5 <progress> element + + , ensuring you can stack progress bars, animate them, and place text labels over them. +

+ + + + + + + + + + + + + + + + + +
+
+
+ + + + Angular Progress Labels + + +

+ Add labels to your progress bars by placing text within the + <c-progress-bar>. +

+ + + 25% + + +
+
+
+ + + + Angular Progress Height + + +

+ We only set a height [value] on the <c-progress>, so if + you change that [value] the inner <c-progress-bar> will automatically + resize accordingly. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Angular Progress Backgrounds + + +

+ Use color prop to change the appearance of individual progress bars. +

+ + + + + + + + + + + + + + +
+
+
+ + + + Angular Progress Multiple bars + + +

+ Include multiple progress bars in a progress component if you need. +

+ + + 15 + 30 + 20 + + +
+
+
+ + + + Angular Progress Striped + + +

+ Add variant="striped" to any <c-progress-bar> to + apply a stripe via CSS gradient over the progress bar's background color. +

+ + + + + + + + + + + + + + +
+
+
+ + + + Angular Progress Animated stripes + + +

+ The striped gradient can also be animated. Add [animated]="true" property to + <c-progress-bar> to animate the stripes right to left via CSS3 + animations. +

+ + + + + + + + + + + + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/progress/progress.component.scss b/dashboard-front/coreui/src/app/views/base/progress/progress.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/progress/progress.component.spec.ts b/dashboard-front/coreui/src/app/views/base/progress/progress.component.spec.ts new file mode 100644 index 00000000..9533bd42 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/progress/progress.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, GridModule, ProgressModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ProgressComponent } from './progress.component'; + +describe('ProgressComponent', () => { + let component: ProgressComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ProgressComponent], + imports: [ProgressModule, CardModule, GridModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ProgressComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/progress/progress.component.ts b/dashboard-front/coreui/src/app/views/base/progress/progress.component.ts new file mode 100644 index 00000000..c1a1354d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/progress/progress.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-progress', + templateUrl: './progress.component.html', + styleUrls: ['./progress.component.scss'] +}) +export class ProgressComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.html b/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.html new file mode 100644 index 00000000..b0cde46d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.html @@ -0,0 +1,114 @@ + + + + + + + + Angular Spinner Border + + +

+ Use the border spinners for a lightweight loading indicator. +

+ + + +

+ The border spinner uses currentColor for its border-color. + You can use any of our text color utilities on the standard spinner. +

+ + + + + + + + + + +
+
+
+ + + + Angular Spinner Growing + + +

+ If you don'tfancy a border spinner, switch to the grow spinner. While it + doesn't technically spin, it does repeatedly grow! +

+ + + +

+ Once again, this spinner is built with currentColor, so you can easily + change its appearance. Here it is in blue, along with the supported variants. +

+ + + + + + + + + + +
+
+
+ + + + Angular Spinner Size + + +

+ Add size="sm" property to make a smaller spinner that can quickly + be used within other components. +

+ + + + +
+
+
+ + + + Angular Spinner Buttons + + +

+ Use spinners within buttons to indicate an action is currently processing or taking + place. You may also swap the text out of the spinner element and utilize button text + as needed. +

+ + + + + +
+ + +
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.scss b/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.spec.ts b/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.spec.ts new file mode 100644 index 00000000..c282f257 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, GridModule, SpinnerModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { SpinnersComponent } from './spinners.component'; + +describe('SpinnersComponent', () => { + let component: SpinnersComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [SpinnersComponent], + imports: [SpinnerModule, CardModule, GridModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(SpinnersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.ts b/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.ts new file mode 100644 index 00000000..d1bed974 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/spinners/spinners.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-spinners', + templateUrl: './spinners.component.html', + styleUrls: ['./spinners.component.scss'] +}) +export class SpinnersComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/base/tables/tables.component.html b/dashboard-front/coreui/src/app/views/base/tables/tables.component.html new file mode 100644 index 00000000..16b216fc --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tables/tables.component.html @@ -0,0 +1,1007 @@ + + + + + + + + Angular Table Basic example + + +

+ Using the most basic table CoreUI, here's how cTable-based + tables look in CoreUI. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Variants + + +

+ Use contextual classes to color tables, table rows or individual cells. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassHeadingHeading
DefaultCellCell
PrimaryCellCell
SecondaryCellCell
SuccessCellCell
DangerCellCell
WarningCellCell
InfoCellCell
LightCellCell
DarkCellCell
+
+
+
+
+ + + + Angular Table Striped rows + + +

+ Use striped property to add zebra-striping to any table row within the <tbody>. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+

+ These classes can also be added to table variants: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Striped columns + + +

+ Use stripedColumn property to add zebra-striping to any table column. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Hoverable rows + + +

+ Use [hover]="true" property to enable a hover state on table rows within a + <tbody>. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Active tables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3 + Larry the Bird + @twitter
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3 + Larry the Bird + @twitter
+
+
+
+
+ + + + Angular Table Bordered tables + + +

+ Add bordered property for borders on all sides of the table and cells. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+

+ + Border color utilities + can be added to change colors: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Tables without borders + + +

+ Add borderless property for a table without borders. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Small tables + + +

+ Add small property to make any cTable more compact + by cutting all cell padding in half. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Vertical alignment + + +

+ Table cells of <thead> are always vertical aligned to the + bottom. Table cells in <tbody> inherit their alignment from + cTable and are aligned to the the top by default. Use the align + property to re-align where needed. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Heading 1 + + Heading 2 + + Heading 3 + + Heading 4 +
+ This cell inherits vertical-align: middle; from the table + + This cell inherits vertical-align: middle; from the table + + This cell inherits vertical-align: middle; from the table + + This here is some placeholder text, intended to take up quite a bit of + vertical space, to demonstrate how the vertical alignment works in the + preceding cells. +
+ This cell inherits vertical-align: bottom; from the table row + + This cell inherits vertical-align: bottom; from the table row + + This cell inherits vertical-align: bottom; from the table row + + This here is some placeholder text, intended to take up quite a bit of + vertical space, to demonstrate how the vertical alignment works in the + preceding cells. +
+ This cell inherits vertical-align: middle; from the table + + This cell inherits vertical-align: middle; from the table + This cell is aligned to the top. + This here is some placeholder text, intended to take up quite a bit of + vertical space, to demonsCTableRowate how the vertical alignment works in the + preceding cells. +
+
+
+
+
+ + + + Angular Table Nesting + + +

+ Border styles, active styles, and table variants are not inherited by nested tables. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
+ + + + + + + + + + + + + + + + + + + + + + + + + +
HeaderHeaderHeader
AFirstLast
BFirstLast
CFirstLast
+
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Table head + + +

+ Similar to tables and dark tables, use the modifier prop + color="light" or color="dark" to make + <thead>s appear light or dark gray. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
+
+
+ + + + Angular Table Table foot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
FooterFooterFooterFooter
+
+
+
+
+ + + + Angular Table Captions + + +

+ A <caption> functions like a heading for a table. It helps + users with screen readers to find a table and understand what it's about and + decide if they want to read it. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
List of users
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+

+ You can also put the <caption> on the top of the table with + caption="top". +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
List of users
#ClassHeadingHeading
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/tables/tables.component.scss b/dashboard-front/coreui/src/app/views/base/tables/tables.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/tables/tables.component.spec.ts b/dashboard-front/coreui/src/app/views/base/tables/tables.component.spec.ts new file mode 100644 index 00000000..baad332f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tables/tables.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, GridModule, TableModule, UtilitiesModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { TablesComponent } from './tables.component'; +import { DocsComponentsModule } from '../../../../components'; + +describe('TablesComponent', () => { + let component: TablesComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TablesComponent ], + imports: [GridModule, CardModule, TableModule, GridModule, UtilitiesModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(TablesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/tables/tables.component.ts b/dashboard-front/coreui/src/app/views/base/tables/tables.component.ts new file mode 100644 index 00000000..96d23ca4 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tables/tables.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tables', + templateUrl: './tables.component.html', + styleUrls: ['./tables.component.scss'] +}) +export class TablesComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.html b/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.html new file mode 100644 index 00000000..aa04e8bb --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.html @@ -0,0 +1,123 @@ + + + + + + + + Angular Tabs underline + + + + + + + Home + + + + + + Profile + + + + + + Contact + + + + + + This is some placeholder content the Home tab's associated content. Clicking another tab + will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the + content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation. + + + This is some placeholder content the Profile tab's associated content. Clicking another + tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the + content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation. + + + This is some placeholder content the Contact tab's associated content. Clicking another + tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the + content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation. + + + + + + + + + Angular Tabs tabs + + + + + + + {{nav.name}} + + + + + + This is some placeholder content the {{pane.name}} tab's associated content. Clicking + another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to + control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered + navigation. + + + + + + + + + Angular Tabs pills + + + + + + + Home + + + + + + Profile + + + + + + Contact + + + + + + This is some placeholder content the Home tab's associated content. Clicking another tab + will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the + content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation. + + + This is some placeholder content the Profile tab's associated content. Clicking another + tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the + content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation. + + + This is some placeholder content the Contact tab's associated content. Clicking another + tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the + content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation. + + + + + + diff --git a/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.scss b/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.spec.ts b/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.spec.ts new file mode 100644 index 00000000..efde69ce --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, GridModule, NavModule, TabsModule } from '@coreui/angular'; +import { IconModule, IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { TabsComponent } from './tabs.component'; + +describe('TabsComponent', () => { + let component: TabsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TabsComponent], + imports: [TabsModule, GridModule, CardModule, IconModule, RouterTestingModule, NavModule, DocsComponentsModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(TabsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.ts b/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.ts new file mode 100644 index 00000000..15b8d3fd --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tabs/tabs.component.ts @@ -0,0 +1,18 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tabs', + templateUrl: './tabs.component.html', + styleUrls: ['./tabs.component.scss'] +}) +export class TabsComponent { + + public panes = [ + { name: 'Home 01', id: 'tab-01' }, + { name: 'Profile 02', id: 'tab-02' }, + { name: 'Contact 03', id: 'tab-03' } + ]; + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.html b/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.html new file mode 100644 index 00000000..c4a210d5 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.html @@ -0,0 +1,59 @@ + + + + + + + + Angular Tooltip Basic example + + +

+ Hover over the links below to see tooltips: +

+ +

+ Tight pants next level keffiyeh + you probably + haven'theard of them. Photo booth beard raw denim letterpress vegan messenger + bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit + american apparel + have a + terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo + thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney''s + cleanse vegan chambray. A really ironic artisan + whatever keytar + scenester farm-to-table banksy Austin + twitter handle + freegan cred raw denim single-origin coffee viral. +

+
+

+ Hover over the buttons below to see the four tooltips directions: top, right, bottom, + and left. +

+ + + + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.scss b/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.spec.ts b/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.spec.ts new file mode 100644 index 00000000..a6bdbc40 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, GridModule, TooltipModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { TooltipsComponent } from './tooltips.component'; + +describe('TooltipsComponent', () => { + let component: TooltipsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TooltipsComponent ], + imports: [CardModule, GridModule, TooltipModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(TooltipsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.ts b/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.ts new file mode 100644 index 00000000..399b231b --- /dev/null +++ b/dashboard-front/coreui/src/app/views/base/tooltips/tooltips.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tooltips', + templateUrl: './tooltips.component.html', + styleUrls: ['./tooltips.component.scss'] +}) +export class TooltipsComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.html b/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.html new file mode 100644 index 00000000..538d9b11 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.html @@ -0,0 +1,397 @@ + + + + + + + + Angular Button Group Basic example + + +

+ Wrap a series of <CButton> components in + <c-button-group>. +

+ + + + + + + +

+ These classes can also be added to groups of links, as an alternative to the + <CNav> components. +

+ + + + Active link + + + Link + + + Link + + + +
+
+
+ + + + Angular Button Group Mixed styles + + + + + + + + + + + + + + + + Angular Button Group Outlined styles + + + + + + + + + + + + + + + + Angular Button Group Checkbox and radio button groups + + +

+ Combine button-like checkbox and radio toggle buttons into a seamless looking button + group. +

+ +
+ + + + + + + + + + +
+
+
+ +
+ + + + + + + + + + +
+
+
+
+
+ + + + Angular Button Group Button toolbar + + +

+ Join sets of button groups into button toolbars for more complicated components. Use + utility classes as needed to space out groups, buttons, and more. +

+ + + + + + + + + + + + + + + + + + +

+ Feel free to combine input groups with button groups in your toolbars. Similar to the + example above, youโ€™ll likely need some utilities through to space items correctly. +

+ + + + + + + + + + @ + + + + + + + + + + + + @ + + + + +
+
+
+ + + + Angular Button Group Sizing + + +

+ Alternatively, of implementing button sizing classes to each button in a group, set + size property to all <c-button-group>'s, including + each one when nesting multiple groups. +

+ + + + + + +
+ + + + + +
+ + + + + +
+
+
+
+ + + + Angular Button Group Nesting + + +

+ Put a <c-button-group> inside another + <c-button-group> when you need dropdown menus combined with a series + of buttons. +

+ + + + + + + + + + +
+
+
+ + + + Angular Button Group Vertical variation + + +

+ Create a set of buttons that appear vertically stacked rather than horizontally. + Split button dropdowns are not supported here. +

+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.scss b/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.spec.ts b/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.spec.ts new file mode 100644 index 00000000..659790d1 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { ButtonGroupModule, ButtonModule, CardModule, DropdownModule, FormModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ButtonGroupsComponent } from './button-groups.component'; + +describe('ButtonGroupsComponent', () => { + let component: ButtonGroupsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ButtonGroupsComponent], + imports: [ReactiveFormsModule, ButtonModule, DropdownModule, FormModule, DocsComponentsModule, GridModule, CardModule, RouterTestingModule, ButtonModule, ButtonGroupModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ButtonGroupsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.ts b/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.ts new file mode 100644 index 00000000..d56b8163 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/button-groups/button-groups.component.ts @@ -0,0 +1,34 @@ +import { Component } from '@angular/core'; +import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; + +@Component({ + selector: 'app-button-groups', + templateUrl: './button-groups.component.html', + styleUrls: ['./button-groups.component.scss'] +}) +export class ButtonGroupsComponent { + + formCheck1 = this.formBuilder.group({ + checkbox1: false, + checkbox2: false, + checkbox3: false + }); + formRadio1 = new UntypedFormGroup({ + radio1: new UntypedFormControl('Radio1') + }); + + constructor( + private formBuilder: UntypedFormBuilder + ) { } + + setCheckBoxValue(controlName: string) { + const prevValue = this.formCheck1.get(controlName)?.value; + const value = this.formCheck1.value; + value[controlName] = !prevValue; + this.formCheck1.setValue(value); + } + + setRadioValue(value: string): void { + this.formRadio1.setValue({ radio1: value }); + } +} diff --git a/dashboard-front/coreui/src/app/views/buttons/buttons-routing.module.ts b/dashboard-front/coreui/src/app/views/buttons/buttons-routing.module.ts new file mode 100644 index 00000000..5a0a8a35 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/buttons-routing.module.ts @@ -0,0 +1,51 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { ButtonsComponent } from './buttons/buttons.component'; +import { ButtonGroupsComponent } from './button-groups/button-groups.component'; +import { DropdownsComponent } from './dropdowns/dropdowns.component'; + +const routes: Routes = [ + { + path: '', + data: { + title: 'Buttons' + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'buttons' + }, + { + path: 'buttons', + component: ButtonsComponent, + data: { + title: 'Buttons' + } + }, + { + path: 'button-groups', + component: ButtonGroupsComponent, + data: { + title: 'Button groups' + } + }, + { + path: 'dropdowns', + component: DropdownsComponent, + data: { + title: 'Dropdowns' + } + }, + ] + } +]; + + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class ButtonsRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/views/buttons/buttons.module.ts b/dashboard-front/coreui/src/app/views/buttons/buttons.module.ts new file mode 100644 index 00000000..212cbbb3 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/buttons.module.ts @@ -0,0 +1,55 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { DocsComponentsModule } from '@docs-components/docs-components.module'; +import { ButtonsComponent } from './buttons/buttons.component'; +import { ButtonGroupsComponent } from './button-groups/button-groups.component'; +import { DropdownsComponent } from './dropdowns/dropdowns.component'; + +import { ButtonsRoutingModule } from './buttons-routing.module'; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + CollapseModule, + DropdownModule, + FormModule, + GridModule, + NavbarModule, + NavModule, + SharedModule, + UtilitiesModule +} from '@coreui/angular'; + +import { IconModule } from '@coreui/icons-angular'; + +@NgModule({ + declarations: [ + ButtonsComponent, + ButtonGroupsComponent, + DropdownsComponent, + ], + imports: [ + CommonModule, + ButtonsRoutingModule, + ButtonModule, + ButtonGroupModule, + GridModule, + IconModule, + CardModule, + UtilitiesModule, + DropdownModule, + SharedModule, + FormModule, + ReactiveFormsModule, + DocsComponentsModule, + NavbarModule, + CollapseModule, + NavModule, + NavbarModule + ] +}) +export class ButtonsModule { +} diff --git a/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.html b/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.html new file mode 100644 index 00000000..34f11ef5 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.html @@ -0,0 +1,340 @@ + + + + + + + + Angular Button + + +

+ CoreUI includes a bunch of predefined buttons components, each serving its own + semantic purpose. Buttons show what action will happen when the user clicks or touches + it. CoreUI buttons are used to initialize operations, both in the background or + foreground of an experience. +

+ + + + {{state.charAt(0).toUpperCase() + state.slice(1)}} + + + + + + +
+
+
+ + + + Angular Button with icons + + +

+ You can combine button with our CoreUI Icons. +

+ + + + {{state.charAt(0).toUpperCase() + state.slice(1)}} + + + + + + +
+
+
+ + + + Angular Button Button components + + +

+ The <button> component are designed for + <button> , <a> or <input> + elements (though some browsers may apply a slightly different rendering). +

+

+ If you're using <button> component as <a> + elements that are used to trigger functionality ex. collapsing content, these links + should be given a role="button" to adequately communicate their + meaning to assistive technologies such as screen readers. +

+ + + Link + + + + + + +
+
+
+ + + + Angular Button outline + + +

+ If you need a button, but without the strong background colors. Set + variant="outline" prop to remove all background colors. +

+ + + + {{state.charAt(0).toUpperCase() + state.slice(1)}} + + + + + + + + +
+
+
+ + + + Angular Button ghost + + +

+ If you need a ghost variant of button, set variant="ghost" prop + to remove all background colors. +

+ + + + {{state.charAt(0).toUpperCase() + state.slice(1)}} + + + + + + + + +
+
+
+ + + + Angular Button Sizes + + +

+ Larger or smaller buttons? Add size="lg" + size="sm" for additional sizes. +

+ + + + + +
+ + +
+
+
+
+ + + + Angular Button Pill + + + + + + + + + + + + + + Angular Button Square + + + + + + + + + + + + + + Angular Button Disabled state + + +

+ Add the disabled boolean prop to any <button> + component to make buttons look inactive. Disabled button has + pointer-events: none applied to, disabling hover and active states from + triggering. +

+ + + + +

+ Disabled buttons using the <a> component act a little different: +

+

+ <a>s don'tsupport the disabled attribute, so + CoreUI has to add .disabled class to make buttons look inactive. + CoreUI also has to add to the disabled button component + aria-disabled="true" attribute to show the state of the component + to assistive technologies. +

+ + + Primary link + + + Link + + +
+
+
+ + + + Angular Button Block buttons + + +

+ Create buttons that span the full width of a parentโ€”by using utilities. +

+ +
+ + +
+
+

+ Here we create a responsive variation, starting with vertically stacked buttons until + the md breakpoint, where .d-md-block replaces the + .d-grid class, thus nullifying the gap-2 utility. Resize + your browser to see them change. +

+ +
+ + +
+
+

+ You can adjust the width of your block buttons with grid column width classes. For + example, for a half-width "block button", use .col-6. Center it + horizontally with .mx-auto, too. +

+ +
+ + +
+
+

+ Additional utilities can be used to adjust the alignment of buttons when horizontal. + Here we've taken our previous responsive example and added some flex utilities and + a margin utility on the button to right align the buttons when they're no longer + stacked. +

+ +
+ + +
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.scss b/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.spec.ts b/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.spec.ts new file mode 100644 index 00000000..b24f943c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ButtonsComponent } from './buttons.component'; + +describe('ButtonsComponent', () => { + let component: ButtonsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ButtonsComponent ], + imports: [CardModule, GridModule, ButtonModule, RouterTestingModule, IconModule, DocsComponentsModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ButtonsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.ts b/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.ts new file mode 100644 index 00000000..1f79a2b3 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/buttons/buttons.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-buttons', + templateUrl: './buttons.component.html', + styleUrls: ['./buttons.component.scss'] +}) +export class ButtonsComponent { + + states = ['normal', 'active', 'disabled']; + colors = ['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark']; + + constructor() { } +} diff --git a/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.html b/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.html new file mode 100644 index 00000000..5696290c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.html @@ -0,0 +1,510 @@ + + + + + + + + Angular Dropdown Single button + + +

+ Here's how you can put them to work with either <button> + elements: +

+ + + + + + +

+ The best part is you can do this with any button variant, too: +

+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+
+
+
+ + + + Angular Dropdown Split button + + +

+ Similarly, create split button dropdowns with virtually the same markup as single + button dropdowns, but with the addition of boolean prop split for proper + spacing around the dropdown caret. +

+

+ We use this extra class to reduce the horizontal padding on either side + of the caret by 25% and remove the margin-left that's attached for + normal button dropdowns. Those additional changes hold the caret centered in the split + button and implement a more properly sized hit area next to the main button. +

+ + + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+
+
+
+ + + + Angular Dropdown Sizing + + +

+ Button dropdowns work with buttons of all sizes, including default and split dropdown + buttons. +

+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+
+
+
+ + + + Angular Dropdown dark + + +

+ Opt into darker dropdowns to match a dark navbar or custom style by set + dark property. No changes are required to the dropdown items. +

+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+

And putting it to use in a navbar:

+ + + + + Navbar + + +
+ + + Home + + + Link + + + + + Dropdown + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+ + Disabled + +
+
+ + +
+
+
+
+
+
+
+
+ + + + Angular Dropdown Dropup + + +

+ Trigger dropdown menus above elements by adding + direction="dropup" to the <c-dropdown> + component. +

+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+
+
+
+ + + + Angular Dropdown Dropright + + +

+ Trigger dropdown menus at the right of the elements by adding + direction="dropend" to the <c-dropdown> + component. +

+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+
+
+
+
+
+ + + + Angular Dropdown Dropleft + + +

+ Trigger dropdown menus at the left of the elements by adding + direction="dropstart" to the <c-dropdown> + component. +

+ + + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
    +
  • +
  • + +
  • +
+ +
+
+
+
+
+
+ + + + Angular Dropdown Centered + + +

+ Trigger dropdown menus centered below the toggle by adding direction="center" to the c-dropdown component. +

+ + + +
    +
  • +
  • +
  • +
+
+ + +
    +
  • +
  • +
  • +
+
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.scss b/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.spec.ts b/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.spec.ts new file mode 100644 index 00000000..f3f0f6ab --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.spec.ts @@ -0,0 +1,46 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + CollapseModule, + DropdownModule, + GridModule, + NavbarModule, + NavModule +} from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { DropdownsComponent } from './dropdowns.component'; + +describe('DropdownsComponent', () => { + let component: DropdownsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DropdownsComponent], + imports: [ButtonModule, DropdownModule, CollapseModule, NoopAnimationsModule, GridModule, CardModule, DocsComponentsModule, RouterTestingModule, NavModule, NavbarModule, ButtonGroupModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(DropdownsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.ts b/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.ts new file mode 100644 index 00000000..c75624b6 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/buttons/dropdowns/dropdowns.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-dropdowns', + templateUrl: './dropdowns.component.html', + styleUrls: ['./dropdowns.component.scss'] +}) +export class DropdownsComponent { + + public colors = ['primary', 'secondary', 'success', 'info', 'warning', 'danger']; + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/charts/charts-routing.module.ts b/dashboard-front/coreui/src/app/views/charts/charts-routing.module.ts new file mode 100644 index 00000000..6ab60ba4 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/charts/charts-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { ChartsComponent } from './charts.component'; + +const routes: Routes = [ + { + path: '', + component: ChartsComponent, + data: { + title: 'Charts', + }, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ChartsRoutingModule {} + diff --git a/dashboard-front/coreui/src/app/views/charts/charts.component.html b/dashboard-front/coreui/src/app/views/charts/charts.component.html new file mode 100644 index 00000000..8abec2f4 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/charts/charts.component.html @@ -0,0 +1,73 @@ + + + + + Angular wrapper component for Chart.js 3.6, the most popular charting library. +
+
+
+ + + + Bar Chart + + + + + + + + + + Line Chart + + + + + + +
+ + + + + Doughnut Chart + + + + + + + + + + Pie Chart + + + + + + + + + + + + Polar Area Chart + + + + + + + + + + Radar Chart + + + + + + + diff --git a/dashboard-front/coreui/src/app/views/charts/charts.component.scss b/dashboard-front/coreui/src/app/views/charts/charts.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/charts/charts.component.spec.ts b/dashboard-front/coreui/src/app/views/charts/charts.component.spec.ts new file mode 100644 index 00000000..35cd3636 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/charts/charts.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { CardModule, GridModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../components'; +import { ChartsComponent } from './charts.component'; + +describe('ChartsComponent', () => { + let component: ChartsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ChartsComponent], + imports: [GridModule, CardModule, DocsComponentsModule, ChartjsModule], + providers: [IconSetService] + }).compileComponents(); + })); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ChartsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/charts/charts.component.ts b/dashboard-front/coreui/src/app/views/charts/charts.component.ts new file mode 100644 index 00000000..77953cbd --- /dev/null +++ b/dashboard-front/coreui/src/app/views/charts/charts.component.ts @@ -0,0 +1,136 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-charts', + templateUrl: './charts.component.html', + styleUrls: ['./charts.component.scss'] +}) +export class ChartsComponent { + + months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + + chartBarData = { + labels: [...this.months].slice(0, 7), + datasets: [ + { + label: 'GitHub Commits', + backgroundColor: '#f87979', + data: [40, 20, 12, 39, 17, 42, 79] + } + ] + }; + + // chartBarOptions = { + // maintainAspectRatio: false, + // }; + + chartLineData = { + labels: [...this.months].slice(0, 7), + datasets: [ + { + label: 'My First dataset', + backgroundColor: 'rgba(220, 220, 220, 0.2)', + borderColor: 'rgba(220, 220, 220, 1)', + pointBackgroundColor: 'rgba(220, 220, 220, 1)', + pointBorderColor: '#fff', + data: [this.randomData, this.randomData, this.randomData, this.randomData, this.randomData, this.randomData, this.randomData] + }, + { + label: 'My Second dataset', + backgroundColor: 'rgba(151, 187, 205, 0.2)', + borderColor: 'rgba(151, 187, 205, 1)', + pointBackgroundColor: 'rgba(151, 187, 205, 1)', + pointBorderColor: '#fff', + data: [this.randomData, this.randomData, this.randomData, this.randomData, this.randomData, this.randomData, this.randomData] + } + ] + }; + + chartLineOptions = { + maintainAspectRatio: false, + }; + + chartDoughnutData = { + labels: ['VueJs', 'EmberJs', 'ReactJs', 'Angular'], + datasets: [ + { + backgroundColor: ['#41B883', '#E46651', '#00D8FF', '#DD1B16'], + data: [40, 20, 80, 10] + } + ] + }; + + // chartDoughnutOptions = { + // aspectRatio: 1, + // responsive: true, + // maintainAspectRatio: false, + // radius: '100%' + // }; + + chartPieData = { + labels: ['Red', 'Green', 'Yellow'], + datasets: [ + { + data: [300, 50, 100], + backgroundColor: ['#FF6384', '#36A2EB', '#FFCE56'], + hoverBackgroundColor: ['#FF6384', '#36A2EB', '#FFCE56'] + } + ] + }; + + // chartPieOptions = { + // aspectRatio: 1, + // responsive: true, + // maintainAspectRatio: false, + // radius: '100%' + // }; + + chartPolarAreaData = { + labels: ['Red', 'Green', 'Yellow', 'Grey', 'Blue'], + datasets: [ + { + data: [11, 16, 7, 3, 14], + backgroundColor: ['#FF6384', '#4BC0C0', '#FFCE56', '#E7E9ED', '#36A2EB'] + } + ] + }; + + chartRadarData = { + labels: ['Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running'], + datasets: [ + { + label: '2020', + backgroundColor: 'rgba(179,181,198,0.2)', + borderColor: 'rgba(179,181,198,1)', + pointBackgroundColor: 'rgba(179,181,198,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(179,181,198,1)', + tooltipLabelColor: 'rgba(179,181,198,1)', + data: [65, 59, 90, 81, 56, 55, 40] + }, + { + label: '2021', + backgroundColor: 'rgba(255,99,132,0.2)', + borderColor: 'rgba(255,99,132,1)', + pointBackgroundColor: 'rgba(255,99,132,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(255,99,132,1)', + tooltipLabelColor: 'rgba(255,99,132,1)', + data: [this.randomData, this.randomData, this.randomData, this.randomData, this.randomData, this.randomData, this.randomData] + } + ] + }; + + // chartRadarOptions = { + // aspectRatio: 1.5, + // responsive: true, + // maintainAspectRatio: false, + // }; + + get randomData() { + return Math.round(Math.random() * 100); + } + +} diff --git a/dashboard-front/coreui/src/app/views/charts/charts.module.ts b/dashboard-front/coreui/src/app/views/charts/charts.module.ts new file mode 100644 index 00000000..976500bf --- /dev/null +++ b/dashboard-front/coreui/src/app/views/charts/charts.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { BadgeModule, CardModule, GridModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; + +import { ChartsComponent } from './charts.component'; +import { ChartsRoutingModule } from './charts-routing.module'; +import { DocsComponentsModule } from '@docs-components/docs-components.module'; + +@NgModule({ + declarations: [ChartsComponent], + imports: [ + CommonModule, + ChartsRoutingModule, + ChartjsModule, + CardModule, + GridModule, + BadgeModule, + DocsComponentsModule + ] +}) +export class ChartsModule { +} diff --git a/dashboard-front/coreui/src/app/views/dashboard/dashboard-charts-data.ts b/dashboard-front/coreui/src/app/views/dashboard/dashboard-charts-data.ts new file mode 100644 index 00000000..6cbbb55b --- /dev/null +++ b/dashboard-front/coreui/src/app/views/dashboard/dashboard-charts-data.ts @@ -0,0 +1,176 @@ +import { Injectable } from '@angular/core'; +import { getStyle, hexToRgba } from '@coreui/utils/src'; + +export interface IChartProps { + data?: any; + labels?: any; + options?: any; + colors?: any; + type?: any; + legend?: any; + + [propName: string]: any; +} + +@Injectable({ + providedIn: 'any' +}) +export class DashboardChartsData { + constructor() { + this.initMainChart(); + } + + public mainChart: IChartProps = {}; + + public random(min: number, max: number) { + return Math.floor(Math.random() * (max - min + 1) + min); + } + + initMainChart(period: string = 'Month') { + const brandSuccess = getStyle('--cui-success') ?? '#4dbd74'; + const brandInfo = getStyle('--cui-info') ?? '#20a8d8'; + const brandInfoBg = hexToRgba(getStyle('--cui-info'), 10) ?? '#20a8d8'; + const brandDanger = getStyle('--cui-danger') || '#f86c6b'; + + // mainChart + // mainChart + this.mainChart['elements'] = period === 'Month' ? 12 : 27; + this.mainChart['Data1'] = []; + this.mainChart['Data2'] = []; + this.mainChart['Data3'] = []; + + // generate random values for mainChart + for (let i = 0; i <= this.mainChart['elements']; i++) { + this.mainChart['Data1'].push(this.random(50, 240)); + this.mainChart['Data2'].push(this.random(20, 160)); + this.mainChart['Data3'].push(65); + } + + let labels: string[] = []; + if (period === 'Month') { + labels = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December' + ]; + } else { + /* tslint:disable:max-line-length */ + const week = [ + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday', + 'Sunday' + ]; + labels = week.concat(week, week, week); + } + + const colors = [ + { + // brandInfo + backgroundColor: brandInfoBg, + borderColor: brandInfo, + pointHoverBackgroundColor: brandInfo, + borderWidth: 2, + fill: true + }, + { + // brandSuccess + backgroundColor: 'transparent', + borderColor: brandSuccess || '#4dbd74', + pointHoverBackgroundColor: '#fff' + }, + { + // brandDanger + backgroundColor: 'transparent', + borderColor: brandDanger || '#f86c6b', + pointHoverBackgroundColor: brandDanger, + borderWidth: 1, + borderDash: [8, 5] + } + ]; + + const datasets = [ + { + data: this.mainChart['Data1'], + label: 'Current', + ...colors[0] + }, + { + data: this.mainChart['Data2'], + label: 'Previous', + ...colors[1] + }, + { + data: this.mainChart['Data3'], + label: 'BEP', + ...colors[2] + } + ]; + + const plugins = { + legend: { + display: false + }, + tooltip: { + callbacks: { + labelColor: function(context: any) { + return { + backgroundColor: context.dataset.borderColor + }; + } + } + } + }; + + const options = { + maintainAspectRatio: false, + plugins, + scales: { + x: { + grid: { + drawOnChartArea: false + } + }, + y: { + beginAtZero: true, + max: 250, + ticks: { + maxTicksLimit: 5, + stepSize: Math.ceil(250 / 5) + } + } + }, + elements: { + line: { + tension: 0.4 + }, + point: { + radius: 0, + hitRadius: 10, + hoverRadius: 4, + hoverBorderWidth: 3 + } + } + }; + + this.mainChart.type = 'line'; + this.mainChart.options = options; + this.mainChart.data = { + datasets, + labels + }; + } + +} diff --git a/dashboard-front/coreui/src/app/views/dashboard/dashboard-routing.module.ts b/dashboard-front/coreui/src/app/views/dashboard/dashboard-routing.module.ts new file mode 100644 index 00000000..ee61ebf7 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/dashboard/dashboard-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { DashboardComponent } from './dashboard.component'; + +const routes: Routes = [ + { + path: '', + component: DashboardComponent, + data: { + title: $localize`Dashboard` + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class DashboardRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.html b/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.html new file mode 100644 index 00000000..0ee2354c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.html @@ -0,0 +1,100 @@ + + + + + Fraud Classifier + + + + + + + +
F1 Score + + + +
+ 81% +
+ +
Precision + + + +
+ 71% +
+ +
Recall + + + +
+ 96% +
+
+
+
+
+
+ + + + + + + Transactions + + + + + + + + + + + + + + + + + + +
EmailIPStatusAction
+
{{ user.name }}
+
+ {{ user.state }} | Registered: + {{ user.registered }} +
+
+ + + {{ user.status }} + + +
+
+
+
+
\ No newline at end of file diff --git a/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.scss b/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.scss new file mode 100644 index 00000000..299a4048 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.scss @@ -0,0 +1,12 @@ +:host { + .legend { + small { + font-size: x-small; + } + } +} + + +span { + cursor: pointer; +} \ No newline at end of file diff --git a/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.ts b/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.ts new file mode 100644 index 00000000..16781fb7 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/dashboard/dashboard.component.ts @@ -0,0 +1,129 @@ +import { Component, OnInit } from '@angular/core'; +import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; + +import { DashboardChartsData, IChartProps } from './dashboard-charts-data'; + +interface IUser { + name: string; + state: string; + registered: string; + country: string; + usage: number; + period: string; + payment: string; + activity: string; + avatar: string; + status: string; + color: string; +} + +@Component({ + templateUrl: 'dashboard.component.html', + styleUrls: ['dashboard.component.scss'] +}) +export class DashboardComponent implements OnInit { + constructor(private chartsData: DashboardChartsData) { + } + + public users: IUser[] = [ + { + name: 'Yiorgos Avraamu', + state: 'New', + registered: 'Jan 1, 2021', + country: 'Us', + usage: 50, + period: 'Jun 11, 2021 - Jul 10, 2021', + payment: 'Mastercard', + activity: '10 sec ago', + avatar: './assets/img/avatars/1.jpg', + status: 'accepted', + color: 'success' + }, + { + name: 'Avram Tarasios', + state: 'Recurring ', + registered: 'Jan 1, 2021', + country: 'Br', + usage: 10, + period: 'Jun 11, 2021 - Jul 10, 2021', + payment: 'Visa', + activity: '5 minutes ago', + avatar: './assets/img/avatars/2.jpg', + status: 'refused', + color: 'info' + }, + { + name: 'Quintin Ed', + state: 'New', + registered: 'Jan 1, 2021', + country: 'In', + usage: 74, + period: 'Jun 11, 2021 - Jul 10, 2021', + payment: 'Stripe', + activity: '1 hour ago', + avatar: './assets/img/avatars/3.jpg', + status: 'refused', + color: 'warning' + }, + { + name: 'Enรฉas Kwadwo', + state: 'Sleep', + registered: 'Jan 1, 2021', + country: 'Fr', + usage: 98, + period: 'Jun 11, 2021 - Jul 10, 2021', + payment: 'Paypal', + activity: 'Last month', + avatar: './assets/img/avatars/4.jpg', + status: 'accepted', + color: 'danger' + }, + { + name: 'Agapetus Tadeรกลก', + state: 'New', + registered: 'Jan 1, 2021', + country: 'Es', + usage: 22, + period: 'Jun 11, 2021 - Jul 10, 2021', + payment: 'ApplePay', + activity: 'Last week', + avatar: './assets/img/avatars/5.jpg', + status: 'accepted', + color: 'primary' + }, + { + name: 'Friderik Dรกvid', + state: 'New', + registered: 'Jan 1, 2021', + country: 'Pl', + usage: 43, + period: 'Jun 11, 2021 - Jul 10, 2021', + payment: 'Amex', + activity: 'Yesterday', + avatar: './assets/img/avatars/6.jpg', + status: 'accepted', + color: 'dark' + } + ]; + public mainChart: IChartProps = {}; + public chart: Array = []; + public trafficRadioGroup = new UntypedFormGroup({ + trafficRadio: new UntypedFormControl('Month') + }); + public classification_sensitivity: Number = 0.5; + + ngOnInit(): void { + this.initCharts(); + + } + + initCharts(): void { + this.mainChart = this.chartsData.mainChart; + } + + setTrafficPeriod(value: string): void { + this.trafficRadioGroup.setValue({ trafficRadio: value }); + this.chartsData.initMainChart(value); + this.initCharts(); + } +} diff --git a/dashboard-front/coreui/src/app/views/dashboard/dashboard.module.ts b/dashboard-front/coreui/src/app/views/dashboard/dashboard.module.ts new file mode 100644 index 00000000..395e4d8e --- /dev/null +++ b/dashboard-front/coreui/src/app/views/dashboard/dashboard.module.ts @@ -0,0 +1,49 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule,FormsModule } from '@angular/forms'; +import { TooltipModule } from '@coreui/angular'; + +import { + AvatarModule, + ButtonGroupModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + NavModule, + ProgressModule, + TableModule, + TabsModule +} from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { DashboardRoutingModule } from './dashboard-routing.module'; +import { DashboardComponent } from './dashboard.component'; +import { WidgetsModule } from '../widgets/widgets.module'; + +@NgModule({ + imports: [ + DashboardRoutingModule, + CardModule, + NavModule, + IconModule, + TabsModule, + CommonModule, + GridModule, + ProgressModule, + ReactiveFormsModule, + ButtonModule, + FormModule, + ButtonModule, + ButtonGroupModule, + ChartjsModule, + AvatarModule, + TableModule, + WidgetsModule, + FormsModule, + TooltipModule + ], + declarations: [DashboardComponent] +}) +export class DashboardModule { +} diff --git a/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.html b/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.html new file mode 100644 index 00000000..ec077974 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.html @@ -0,0 +1,340 @@ + + + + +
+ + + + Angular Checkbox + + + +
+ + + + + + + + +
+
+
+
+
+ + + + Angular Checkbox Disabled + + +

+ Add the disabled attribute and the associated <label>s + are automatically styled to match with a lighter color to help indicate the + input's state. +

+ +
+ + + + + + + + +
+
+
+
+
+ + + + Angular Radio + + + +
+ + + + + + + + +
+
+
+
+
+ + + + Angular Radio Disabled + + +

+ Add the disabled attribute and the associated <label>s + are automatically styled to match with a lighter color to help indicate the + input's state. +

+ +
+ + + + + + + + +
+
+
+
+
+ + + + Angular Switches + + +

+ A switch has the markup of a custom checkbox but uses the switch boolean + properly to render a toggle switch. Switches also support the disabled + attribute. +

+ + + + + + + + + + + + + + + + + + +
+
+
+ + + + Angular Switches Sizes + + + + + + + + + + + + + + + + + + + + + + + Angular Checks and Radios Default layout (stacked) + + +

+ By default, any number of checkboxes and radios that are immediate sibling will be + vertically stacked and appropriately spaced. +

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Angular Checks and Radios Inline + + +

+ Group checkboxes or radios on the same horizontal row by adding inline + boolean property to any <c-form-check>. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Angular Checks and Radios Without labels + + +

+ Remember to still provide some form of accessible name for assistive technologies (for + instance, using aria-label). +

+ +
+ +
+
+ +
+
+
+
+
+ + + + Toggle buttons + + +

+ Create button-like checkboxes and radio buttons by using button boolean + property on the <CFormCheck> component. These toggle buttons can + further be grouped in a button group if needed. +

+ +
+ + + + + + + + + + +
+
+ +
+ + + + + + +
+ + +
+
+
+
+
Outlined styles
+

+ Different variants of button, such at the various outlined styles, are supported. +

+ +
+ + + + + + + + + + +
+
+ +
+ + + + + + + + + + +
+
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.scss b/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.spec.ts new file mode 100644 index 00000000..2f6d5d2d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ReactiveFormsModule } from '@angular/forms'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonGroupModule, ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ChecksRadiosComponent } from './checks-radios.component'; + +describe('ChecksRadiosComponent', () => { + let component: ChecksRadiosComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ChecksRadiosComponent], + imports: [CardModule, GridModule, ButtonModule, FormModule, ReactiveFormsModule, DocsComponentsModule, RouterTestingModule, ButtonGroupModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ChecksRadiosComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.ts b/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.ts new file mode 100644 index 00000000..4c24c8a9 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/checks-radios/checks-radios.component.ts @@ -0,0 +1,54 @@ +import { Component } from '@angular/core'; +import { UntypedFormBuilder } from '@angular/forms'; + +@Component({ + selector: 'app-checks-radios', + templateUrl: './checks-radios.component.html', + styleUrls: ['./checks-radios.component.scss'] +}) +export class ChecksRadiosComponent { + + formGroup = this.formBuilder.group({ + flexRadioGroup: this.formBuilder.group({ + flexRadioDefault: this.formBuilder.control('two') + }), + flexRadioGroupDisabled: this.formBuilder.group({ + flexRadioDefault: this.formBuilder.control({ value: 'two', disabled: true }) + }), + flexCheckGroup: this.formBuilder.group({ + checkOne: [false], + checkTwo: [true] + }), + flexCheckGroupDisabled: this.formBuilder.group({ + checkThree: [{ value: false, disabled: true }], + checkFour: [{ value: true, disabled: true }] + }), + btnCheckGroup: this.formBuilder.group({ + checkbox1: [true], + checkbox2: [false], + checkbox3: [{value: false, disabled: true}] + }), + btnRadioGroup: this.formBuilder.group({ + radio1: this.formBuilder.control({ value: 'Radio2' }) + }) + }); + + + constructor( + private formBuilder: UntypedFormBuilder + ) { } + + setCheckBoxValue(controlName: string) { + const btnCheckGroup = this.formGroup.controls['btnCheckGroup']; + const prevValue = btnCheckGroup.get(controlName)?.value; + const groupValue = {...btnCheckGroup.value}; + groupValue[controlName] = !prevValue; + btnCheckGroup.patchValue(groupValue); + } + + setRadioValue(value: string): void { + const group = this.formGroup.controls['btnRadioGroup']; + group.setValue({ radio1: value }); + } + +} diff --git a/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.html b/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.html new file mode 100644 index 00000000..fefcdbf6 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.html @@ -0,0 +1,157 @@ + + + + + + + + Angular Floating labels + + +

+ Wrap a pair of <cFormControl> and <label> + elements in cFormControl to enable floating labels with textual form + fields. A placeholder is required on each <input> + as our method of CSS-only floating labels uses the :placeholder-shown + pseudo-element. Also note that the <cFormControl> must come first so + we can utilize a sibling selector (e.g., ~). +

+ +
+ + +
+
+ + +
+
+

+ When there's a value already defined, <label> + s will automatically adjust to their floated position. +

+ +
+ + +
+
+
+
+
+ + + + Angular Floating labels Textareas + + +

+ By default, <CFormTextarea>s will be the same height as + <input>s. +

+ +
+ + +
+
+

+ To set a custom height on your <CFormTextarea;>, do not use the + rows attribute. Instead, set an explicit height (either + inline or via custom CSS). +

+ +
+ + +
+
+
+
+
+ + + + Angular Floating labels Selects + + +

+ Other than <input>, floating labels are only available on + <cSelect>s. They work in the same way, but unlike + <input>s, they'll always show the + <label> in its floated state. + + Selects with size and multiple are not supported. + +

+ +
+ + +
+
+
+
+
+ + + + Angular Floating labels Layout + + +

+ When working with the CoreUI for Bootstrap grid system, be sure to place form elements + within column classes. +

+ + + +
+ + +
+
+ +
+ + +
+
+
+
+
+
+
+
+ diff --git a/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.scss b/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.spec.ts new file mode 100644 index 00000000..481071cb --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { FloatingLabelsComponent } from './floating-labels.component'; + +describe('FloatingLabelsComponent', () => { + let component: FloatingLabelsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [FloatingLabelsComponent], + imports: [CardModule, GridModule, DocsComponentsModule, RouterTestingModule, FormModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(FloatingLabelsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.ts b/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.ts new file mode 100644 index 00000000..6608b97d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/floating-labels/floating-labels.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-floating-labels', + templateUrl: './floating-labels.component.html', + styleUrls: ['./floating-labels.component.scss'] +}) +export class FloatingLabelsComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.html b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.html new file mode 100644 index 00000000..d278ba7c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.html @@ -0,0 +1,241 @@ + + + + + + + + Angular Form Control + + + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + + + Angular Form Control Sizing + + +

+ Set heights using sizing property like sizing="lg" and + sizing="sm". +

+ + +
+ +
+ +
+
+
+
+ + + + Angular Form Control Disabled + + +

+ Add the disabled boolean attribute on an input to give it a grayed out + appearance and remove pointer events. +

+ + +
+ +
+
+
+
+
+ + + + Angular Form Control Readonly + + +

+ Add the readOnly boolean attribute on an input to prevent modification of + the input's value. Read-only inputs appear lighter (just like disabled inputs), + but retain the standard cursor. +

+ + + +
+
+
+ + + + Angular Form Control Readonly plain text + + +

+ If you want to have <input readonly> elements in your form styled + as plain text, use the plainText boolean property to remove the default + form field styling and preserve the correct margin and padding. +

+ + + +
+ +
+
+ + +
+ +
+
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+ + + + Angular Form Control File input + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ + + + Angular Form Control Color + + + + + + + + + + + +
+
+ + {{favoriteColor}} + +
+
+
+
+
+ diff --git a/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.scss b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.scss new file mode 100644 index 00000000..f14fad01 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.scss @@ -0,0 +1,9 @@ +:host { + #exampleColorInput { + min-width: 2.5rem; + } + .color-box { + min-width: 2rem; + min-height: 2rem; + } +} diff --git a/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.spec.ts new file mode 100644 index 00000000..92e95509 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormsModule } from '@angular/forms'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { FormControlsComponent } from './form-controls.component'; + +describe('FormControlsComponent', () => { + let component: FormControlsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [FormControlsComponent], + imports: [CardModule, GridModule, FormsModule, FormModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(FormControlsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.ts b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.ts new file mode 100644 index 00000000..8e9dd497 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/form-controls/form-controls.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-form-controls', + templateUrl: './form-controls.component.html', + styleUrls: ['./form-controls.component.scss'] +}) +export class FormControlsComponent { + + public favoriteColor = '#26ab3c'; + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/forms/forms-routing.module.ts b/dashboard-front/coreui/src/app/views/forms/forms-routing.module.ts new file mode 100644 index 00000000..3c76d4fd --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/forms-routing.module.ts @@ -0,0 +1,90 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { FloatingLabelsComponent } from './floating-labels/floating-labels.component'; +import { FormControlsComponent } from './form-controls/form-controls.component'; +import { InputGroupsComponent } from './input-groups/input-groups.component'; +import { RangesComponent } from './ranges/ranges.component'; +import { SelectComponent } from './select/select.component'; +import { ChecksRadiosComponent } from './checks-radios/checks-radios.component'; +import { LayoutComponent } from './layout/layout.component'; +import { ValidationComponent } from './validation/validation.component'; + +const routes: Routes = [ + { + path: '', + data: { + title: 'Forms' + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'form-control' + }, + { + path: 'form-control', + component: FormControlsComponent, + data: { + title: 'Form Control' + } + }, + { + path: 'select', + component: SelectComponent, + data: { + title: 'Select' + } + }, + { + path: 'checks-radios', + component: ChecksRadiosComponent, + data: { + title: 'Checks & Radios' + } + }, + { + path: 'range', + component: RangesComponent, + data: { + title: 'Range' + } + }, + { + path: 'input-group', + component: InputGroupsComponent, + data: { + title: 'Input Group' + } + }, + { + path: 'floating-labels', + component: FloatingLabelsComponent, + data: { + title: 'Floating Labels' + } + }, + { + path: 'layout', + component: LayoutComponent, + data: { + title: 'Layout' + } + }, + { + path: 'validation', + component: ValidationComponent, + data: { + title: 'Validation' + } + } + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class FormsRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/views/forms/forms.module.ts b/dashboard-front/coreui/src/app/views/forms/forms.module.ts new file mode 100644 index 00000000..6dc3d451 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/forms.module.ts @@ -0,0 +1,59 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + +import { + ButtonGroupModule, + ButtonModule, + CardModule, + DropdownModule, + FormModule, + GridModule, + ListGroupModule, + SharedModule +} from '@coreui/angular'; + +import { DocsComponentsModule } from '@docs-components/docs-components.module'; + +import { FormsRoutingModule } from './forms-routing.module'; +import { RangesComponent } from './ranges/ranges.component'; +import { FloatingLabelsComponent } from './floating-labels/floating-labels.component'; +import { FormControlsComponent } from './form-controls/form-controls.component'; +import { SelectComponent } from './select/select.component'; +import { ChecksRadiosComponent } from './checks-radios/checks-radios.component'; +import { InputGroupsComponent } from './input-groups/input-groups.component'; +import { LayoutComponent } from './layout/layout.component'; +import { ValidationComponent } from './validation/validation.component'; + + +@NgModule({ + declarations: [ + RangesComponent, + FloatingLabelsComponent, + FormControlsComponent, + SelectComponent, + ChecksRadiosComponent, + InputGroupsComponent, + LayoutComponent, + ValidationComponent + ], + imports: [ + CommonModule, + FormsRoutingModule, + DocsComponentsModule, + CardModule, + FormModule, + GridModule, + ButtonModule, + FormsModule, + ReactiveFormsModule, + FormModule, + ButtonModule, + ButtonGroupModule, + DropdownModule, + SharedModule, + ListGroupModule + ] +}) +export class CoreUIFormsModule { +} diff --git a/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.html b/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.html new file mode 100644 index 00000000..d4c3a961 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.html @@ -0,0 +1,525 @@ + + + + + + + + Angular Input group Basic example + + +

+ Place one add-on or button on either side of an input. You may also place one on both + sides of an input. Remember to place <label>s outside the + input group. +

+ + + @ + + + + + @example.com + + + + https://example.com/users/ + + + + $ + + .00 + + + + @ + + + + With textarea + + + +
+
+
+ + + + Angular Input group Wrapping + + +

+ Input groups wrap by default via flex-wrap: wrap in order to accommodate + custom form field validation within an input group. You may disable this with + .flex-nowrap. +

+ + + @ + + + +
+
+
+ + + + Angular Input group Sizing + + +

+ Add the relative form sizing classes to the <c-input-group> itself + and contents within will automatically resizeโ€”no need for repeating the form control + size classes on each element. +

+

+ Sizing on the individual input group elements isn't supported. +

+ + + Small + + + + Default + + + + Large + + + +
+
+
+ + + + Angular Input group Checkboxes and radios + + +

+ Place any checkbox or radio option within an input group's addon instead of text. +

+ + + +
+ +
+
+ +
+ + +
+ +
+
+ +
+
+
+
+
+ + + + Angular Input group Multiple inputs + + +

+ While multiple <CFormInput>s are supported visually, validation + styles are only available for input groups with a single + cFormControl. +

+ + + First and last name + + + + +
+
+
+ + + + Angular Input group Multiple addons + + +

+ Multiple add-ons are supported and can be mixed with checkbox and radio input + versions.. +

+ + + $ + 0.00 + + + + + $ + 0.00 + + +
+
+
+ + + + Angular Input group Button addons + + +

+ Button add-ons are supported. +

+ + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Angular Input group Buttons with dropdowns + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Angular Input group Segmented buttons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Angular Input group Custom select + + + + + + + + + + + + + + + + + + + + + + + + + + + Angular Input group Custom file input + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.scss b/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.spec.ts new file mode 100644 index 00000000..942353c4 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, DropdownModule, FormModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { InputGroupsComponent } from './input-groups.component'; +import { DocsComponentsModule } from '../../../../components'; + +describe('InputGroupsComponent', () => { + let component: InputGroupsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [InputGroupsComponent], + imports: [FormModule, CardModule, GridModule, ButtonModule, DropdownModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(InputGroupsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.ts b/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.ts new file mode 100644 index 00000000..784b2c48 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/input-groups/input-groups.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-input-groups', + templateUrl: './input-groups.component.html', + styleUrls: ['./input-groups.component.scss'] +}) +export class InputGroupsComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/forms/layout/layout.component.html b/dashboard-front/coreui/src/app/views/forms/layout/layout.component.html new file mode 100644 index 00000000..d75e778f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/layout/layout.component.html @@ -0,0 +1,394 @@ + + + + + Layout Form grid + + +

+ More complex forms can be built using our grid classes. Use these for form layouts + that require multiple columns, varied widths, and additional alignment options. +

+ + + + + + + + + + +
+
+
+ + + + Layout Gutters + + +

+ By adding gutter modifier classes + , you can have control over the gutter width in as well the inline as block direction. +

+ + + + + + + + + + +

+ More complex layouts can also be created with the grid system. +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + Layout Horizontal form + + +

+ Create horizontal forms with the grid by adding the .row class to form + groups and using the .col-*-* classes to specify the width of your labels + and controls. Be sure to add .col-form-label to your + <label>s as well so they're vertically centered with their + associated form controls. +

+

+ At times, you maybe need to use margin or padding utilities to create that perfect + alignment you need. For example, we've removed the padding-top on our + stacked radio inputs label to better align the text baseline. +

+ +
+ + + + + + + + + + + + +
+ Radios + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+
+
+ + + + Layout Horizontal form label sizing + + +

+ Be sure to use .col-form-label-sm or .col-form-label-lg to + your <label>s or <legend>s to correctly + follow the size of .form-control-lg and .form-control-sm. +

+ + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Layout Column sizing + + +

+ As shown in the previous examples, our grid system allows you to place any number of + <c-col>s within a <c-row>. They'll split the + available width equally between them. You may also pick a subset of your columns to + take up more or less space, while the remaining <c-col>s equally + split the rest, with specific column classes like + <c-col sm="7">. +

+ + + + + + + + + + + + + +
+
+
+ + + + Layout Auto-sizing + + +

+ The example below uses a flexbox utility to vertically center the contents and changes + <c-col> to <c-col xs="auto"> so that your + columns only take up as much space as needed. Put another way, the column sizes itself + based on the contents. +

+ +
+ + + + + + + + @ + + + + + + + + + + + + + + + + +
+
+

+ You can then remix that once again with size-specific column classes. +

+ +
+ + + + + + + + @ + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + Layout Inline forms + + +

+ Use the <c-col xs="auto"> class to create horizontal + layouts. By adding + gutter modifier classes, we will + have gutters in horizontal and vertical directions. The + .align-items-center aligns the form elements to the middle, making the + <CFormCheck> align properly. +

+ +
+ + + + @ + + + + + + + + + + + + + + + + +
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/forms/layout/layout.component.scss b/dashboard-front/coreui/src/app/views/forms/layout/layout.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/forms/layout/layout.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/layout/layout.component.spec.ts new file mode 100644 index 00000000..31028f4e --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/layout/layout.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { LayoutComponent } from './layout.component'; + +describe('LayoutComponent', () => { + let component: LayoutComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [LayoutComponent], + imports: [FormModule, CardModule, GridModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(LayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/layout/layout.component.ts b/dashboard-front/coreui/src/app/views/forms/layout/layout.component.ts new file mode 100644 index 00000000..f91749b0 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/layout/layout.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-layout', + templateUrl: './layout.component.html', + styleUrls: ['./layout.component.scss'] +}) +export class LayoutComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.html b/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.html new file mode 100644 index 00000000..8789118d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.html @@ -0,0 +1,92 @@ + + + + + + + + Angular Range + + +

+ Create custom <input type="range"> controls + with <input cFormControl type="range">. +

+ + + + +
+
+
+ + + + Angular Range Disabled + + +

+ Add the disabled boolean attribute on an input to give it + a grayed out appearance and remove pointer events. +

+ + + + +
+
+
+ + + + Angular Range Min and max + + +

+ Range inputs have implicit values for min-0 and + max-100, respectively. + You may specify new values for those using the min and + max attributes. +

+ + + + +
+
+
+ + + + Angular Range Steps + + +

+ By default, range inputs "snap" to integer values. To change + this, you can specify a step value. In the example below, + we double the number of steps by using + step="0.5". +

+ + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.scss b/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.spec.ts new file mode 100644 index 00000000..8b736e75 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { RangesComponent } from './ranges.component'; + +describe('RangesComponent', () => { + let component: RangesComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RangesComponent ], + imports: [CardModule, GridModule, FormModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(RangesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.ts b/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.ts new file mode 100644 index 00000000..d21ac00a --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/ranges/ranges.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-ranges', + templateUrl: './ranges.component.html', + styleUrls: ['./ranges.component.scss'] +}) +export class RangesComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/forms/select/select.component.html b/dashboard-front/coreui/src/app/views/forms/select/select.component.html new file mode 100644 index 00000000..d84ffc5d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/select/select.component.html @@ -0,0 +1,94 @@ + + + + + + + + Angular Select Default + + + + + + + + + + + + Angular Select Sizing + + +

+ You may also choose from small and large custom selects to match our similarly sized + text inputs. +

+ + + + +

+ The multiple attribute is also supported: +

+ + + +

+ As is the html size property: +

+ + + +
+
+
+ + + + Angular Select Disabled + + +

+ Add the disabled boolean attribute on a select to give it a grayed out + appearance and remove pointer events. +

+ + + +
+
+
+
+ diff --git a/dashboard-front/coreui/src/app/views/forms/select/select.component.scss b/dashboard-front/coreui/src/app/views/forms/select/select.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/forms/select/select.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/select/select.component.spec.ts new file mode 100644 index 00000000..2366c46f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/select/select.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { SelectComponent } from './select.component'; + +describe('SelectComponent', () => { + let component: SelectComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [SelectComponent], + imports: [CardModule, GridModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(SelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/select/select.component.ts b/dashboard-front/coreui/src/app/views/forms/select/select.component.ts new file mode 100644 index 00000000..56684956 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/select/select.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-select', + templateUrl: './select.component.html', + styleUrls: ['./select.component.scss'] +}) +export class SelectComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/forms/validation/validation.component.html b/dashboard-front/coreui/src/app/views/forms/validation/validation.component.html new file mode 100644 index 00000000..f8cd83db --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/validation/validation.component.html @@ -0,0 +1,433 @@ + + + + + + + + Validation Custom styles + + +

+ For custom CoreUI form validation messages, you'll need to add the + noValidate boolean property to your <CForm>. This + disables the browser default feedback tooltips, but still provides access to the form + validation APIs in JavaScript. Try to submit the form below; our JavaScript will + intercept the submit button and relay feedback to you. When attempting to submit, + you'll see the :invalid and :valid styles applied to + your form controls. +

+

+ Custom feedback styles apply custom colors, borders, focus styles, and background + icons to better communicate feedback. +

+ + +
+ + + + Looks good! + + + + + Looks good! + + + + + @ + + Please choose a username. + + + + + + Please provide a valid city. + + + + + Please provide a valid State. + + + + + Please provide a valid zip. + + + + + + + You must agree before submitting. + + + + + +
+
+
+
+
+ + + + Validation Browser defaults + + +

+ Not interested in custom validation feedback messages or writing JavaScript to change + form behaviors? All good, you can use the browser defaults. Try submitting the form + below. Depending on your browser and OS, you'll see a slightly different style of + feedback. +

+

+ While these feedback styles cannot be styled with CSS, you can still customize the + feedback text through JavaScript. +

+ + +
+ + + + Looks good! + + + + + Looks good! + + + + + @ + + Please choose a username. + + + + + + Please provide a valid city. + + + + + Please provide a valid State. + + + + + Please provide a valid zip. + + + + + + + You must agree before submitting. + + + + + +
+
+
+
+
+ + + + Validation Server side + + +

+ We recommend using client-side validation, but in case you require server-side + validation, you can indicate invalid and valid form fields with invalid + and valid boolean properties. +

+

+ For invalid fields, ensure that the invalid feedback/error message is associated with + the relevant form field using aria-describedby (noting that this + attribute allows more than one id to be referenced, in case the field + already points to additional form text). +

+ +
+ + + + Looks good! + + + + + Looks good! + + + + + @ + + Please choose a username. + + + + + + Please provide a valid city. + + + + + Please provide a valid state. + + + + + Please provide a valid zip. + + + + + + + You must agree before submitting. + + + + +
+
+
+
+
+ + + + Validation Supported elements + + +

+ Validation styles are available for the following form controls and components: +

+
    +
  • + <input cFormControl> +
  • +
  • + <select cSelect> +
  • +
  • + <c-form-check> +
  • +
+ +
+
+ + + Please enter a message in the textarea. +
+ + + + + Example invalid feedback text + + + + + + + + + + + + More example invalid feedback text + +
+ + Example invalid select feedback +
+ +
+ + Example invalid form file feedback +
+ +
+ +
+
+
+
+
+
+ + + + Validation Tooltips + + +

+ If your form layout allows it, you can swap the text for the tooltip to display + validation feedback in a styled tooltip. Be sure to have a parent with + position: relative on it for tooltip positioning. In the example below, + our column classes have this already, but your project may require an alternative + setup. +

+ + +
+ + + + Looks good! + + + + + Looks good! + + + + + @ + + Please choose a username. + + + + + + Please provide a valid city. + + + + + Please provide a valid State. + + + + + Please provide a valid zip. + + + + + + + You must agree before submitting. + + + + + +
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/forms/validation/validation.component.scss b/dashboard-front/coreui/src/app/views/forms/validation/validation.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/forms/validation/validation.component.spec.ts b/dashboard-front/coreui/src/app/views/forms/validation/validation.component.spec.ts new file mode 100644 index 00000000..1708455b --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/validation/validation.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormsModule } from '@angular/forms'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, FormModule, GridModule, ListGroupModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ValidationComponent } from './validation.component'; + +describe('ValidationComponent', () => { + let component: ValidationComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ValidationComponent], + imports: [FormModule, ButtonModule, ListGroupModule, FormsModule, GridModule, CardModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ValidationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/forms/validation/validation.component.ts b/dashboard-front/coreui/src/app/views/forms/validation/validation.component.ts new file mode 100644 index 00000000..71617b35 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/forms/validation/validation.component.ts @@ -0,0 +1,49 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-validation', + templateUrl: './validation.component.html', + styleUrls: ['./validation.component.scss'] +}) +export class ValidationComponent implements OnInit { + + customStylesValidated = false; + browserDefaultsValidated = false; + tooltipValidated = false; + + constructor() { } + + ngOnInit(): void { } + + onSubmit1() { + this.customStylesValidated = true; + console.log('Submit... 1'); + } + + onReset1() { + this.customStylesValidated = false; + console.log('Reset... 1'); + } + + onSubmit2() { + this.browserDefaultsValidated = true; + console.log('Submit... 2'); + } + + onReset2() { + this.browserDefaultsValidated = false; + console.log('Reset... 3'); + } + + onSubmit3() { + this.tooltipValidated = true; + console.log('Submit... 3'); + } + + onReset3() { + this.tooltipValidated = false; + console.log('Reset... 3'); + } + + +} diff --git a/dashboard-front/coreui/src/app/views/icons/coreui-icons.component.html b/dashboard-front/coreui/src/app/views/icons/coreui-icons.component.html new file mode 100644 index 00000000..5f3ee3a1 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/icons/coreui-icons.component.html @@ -0,0 +1,16 @@ +
+ + + {{ title }} + + + + + + +
{{ toKebabCase(icon[0]) }}
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/icons/coreui-icons.component.ts b/dashboard-front/coreui/src/app/views/icons/coreui-icons.component.ts new file mode 100644 index 00000000..92bae591 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/icons/coreui-icons.component.ts @@ -0,0 +1,46 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +import { IconSetService } from '@coreui/icons-angular'; +import { brandSet, flagSet, freeSet } from '@coreui/icons'; + +@Component({ + templateUrl: 'coreui-icons.component.html', + providers: [IconSetService], +}) +export class CoreUIIconsComponent implements OnInit { + public title = 'CoreUI Icons'; + public icons!: [string, string[]][]; + + constructor( + private route: ActivatedRoute, public iconSet: IconSetService + ) { + iconSet.icons = { ...freeSet, ...brandSet, ...flagSet }; + } + + ngOnInit() { + const path = this.route?.routeConfig?.path; + let prefix = 'cil'; + if (path === 'coreui-icons') { + this.title = `${this.title} - Free`; + prefix = 'cil'; + } else if (path === 'brands') { + this.title = `${this.title} - Brands`; + prefix = 'cib'; + } else if (path === 'flags') { + this.title = `${this.title} - Flags`; + prefix = 'cif'; + } + this.icons = this.getIconsView(prefix); + } + + toKebabCase(str: string) { + return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase(); + } + + getIconsView(prefix: string) { + return Object.entries(this.iconSet.icons).filter((icon) => { + return icon[0].startsWith(prefix); + }); + } +} diff --git a/dashboard-front/coreui/src/app/views/icons/icons-routing.module.ts b/dashboard-front/coreui/src/app/views/icons/icons-routing.module.ts new file mode 100644 index 00000000..e9d21fea --- /dev/null +++ b/dashboard-front/coreui/src/app/views/icons/icons-routing.module.ts @@ -0,0 +1,48 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { CoreUIIconsComponent } from './coreui-icons.component'; + +const routes: Routes = [ + { + path: '', + data: { + title: 'Icons' + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'coreui-icons' + }, + { + path: 'coreui-icons', + component: CoreUIIconsComponent, + data: { + title: 'CoreUI Icons' + } + }, + { + path: 'brands', + component: CoreUIIconsComponent, + data: { + title: 'Brands' + } + }, + { + path: 'flags', + component: CoreUIIconsComponent, + data: { + title: 'Flags' + } + } + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class IconsRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/views/icons/icons.module.ts b/dashboard-front/coreui/src/app/views/icons/icons.module.ts new file mode 100644 index 00000000..ca4b7b99 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/icons/icons.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { CardModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; + +import { CoreUIIconsComponent } from './coreui-icons.component'; +import { IconsRoutingModule } from './icons-routing.module'; +import { DocsComponentsModule } from '@docs-components/docs-components.module'; + +@NgModule({ + imports: [ + IconsRoutingModule, + CardModule, + GridModule, + IconModule, + CommonModule, + DocsComponentsModule + ], + declarations: [ + CoreUIIconsComponent + ] +}) +export class IconsModule { +} diff --git a/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.html b/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.html new file mode 100644 index 00000000..9838e0f1 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.html @@ -0,0 +1,211 @@ + + + + + + + + Angular Alert + + +

+ Angular Alert is prepared for any length of text, as well as an optional close button. + For a styling, use one of the required contextual color + props (e.g., primary). For inline dismissal, use the + + dismissing prop + + . +

+ + A simple primary alertโ€”check it out! + A simple secondary alertโ€”check it out! + A simple success alertโ€”check it out! + A simple danger alertโ€”check it out! + A simple warning alertโ€”check it out! + A simple info alertโ€”check it out! + A simple light alertโ€”check it out! + A simple dark alertโ€”check it out! + +
+
+
+ + + + Angular Alert solid variant + + + + A solid primary alertโ€”check it out! + A solid secondary alertโ€”check it out! + A solid success alertโ€”check it out! + A solid danger alertโ€”check it out! + A solid warning alertโ€”check it out! + A solid info alertโ€”check it out! + A solid light alertโ€”check it out! + A solid dark alertโ€”check it out! + + + + + + + + Angular Alert Link color + + +

+ Use the cAlertLink directive to immediately give matching colored + links inside any alert. +

+ + + A simple primary alert with an example link. Give + it a click if you like. + + + A simple secondary alert with an example link. + Give it a click if you like. + + + A simple success alert with an example link. Give + it a click if you like. + + + A simple danger alert with an example link. Give + it a click if you like. + + + A simple warning alert with an example link. Give + it a click if you like. + + + A simple info alert with an example link. Give it + a click if you like. + + + A simple light alert with an example link. Give it + a click if you like. + + + A simple dark alert with an example link. Give it + a click if you like. + + +
+
+
+ + + + Angular Alert Additional content + + +

+ Alert can also incorporate supplementary components & elements like heading, + paragraph, and divider. +

+ + +

Well done!

+

+ Aww yeah, you successfully read this important alert message. This example text is + going to run a bit longer so that you can see how spacing within an alert works + with this kind of content. +

+
+

+ Whenever you need to, be sure to use margin utilities to keep things nice and + tidy. +

+
+
+
+
+
+ + + + Angular Alert Icons + + + + + +
An example alert with an icon
+
+ + + + +
An example alert with an icon
+
+ +
+ + + + + + + + + + + + + + + +
An example primary alert with an icon
+
+ + +
An example success alert with an icon
+
+ + +
An example warning alert with an icon
+
+ + +
An example danger alert with an icon
+
+
+
+
+
+ + + + Angular Alert Dismissing + + +

+ Alerts can also be easily dismissed. Just add the dismissible prop. +

+ + + Go right ahead and click that dismiss over there on the right. + + + + + + Go right ahead and click that dismiss over there on the right. + +
+ + +
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.scss b/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.spec.ts b/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.spec.ts new file mode 100644 index 00000000..b1671a6b --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { AlertModule, ButtonModule, CardModule, GridModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { AlertsComponent } from './alerts.component'; + +describe('AlertsComponent', () => { + let component: AlertsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [AlertsComponent], + imports: [AlertModule, ButtonModule, NoopAnimationsModule, GridModule, CardModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(AlertsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.ts b/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.ts new file mode 100644 index 00000000..7206fa79 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/alerts/alerts.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-alerts', + templateUrl: './alerts.component.html', + styleUrls: ['./alerts.component.scss'] +}) +export class AlertsComponent implements OnInit { + + visible = [true, true]; + dismissible = true; + + constructor() { } + + ngOnInit(): void { + } + + onAlertVisibleChange(eventValue: any = this.visible) { + this.visible[1] = eventValue; + } + + onResetDismiss() { + this.visible = [true, true]; + } + + onToggleDismiss() { + this.dismissible = !this.dismissible; + } + +} diff --git a/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.html b/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.html new file mode 100644 index 00000000..c17e4dd4 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.html @@ -0,0 +1,175 @@ + + + + + + + + Angular Badges + + +

+ Bootstrap badge scale to suit the size of the parent element by using relative font + sizing and em units. +

+ +

+ Example heading + New +

+

+ Example heading + New +

+

+ Example heading + New +

+

+ Example heading + New +

+
+ Example heading + New +
+
+ Example heading + New +
+
+

+ Badges can be used as part of links or buttons to provide a counter. +

+ + + +

+ Remark that depending on how you use them, badges may be complicated for users of + screen readers and related assistive technologies. +

+

+ Unless the context is clear, consider including additional context with a visually + hidden piece of additional text. +

+ + + +
+
+
+ + + + AngularBadges Contextual variations + + +

+ Add any of the below-mentioned color props to modify the presentation of + a badge. +

+ + primary + success + danger + warning + info + light + dark + +
+
+ + + Angular Badges Pill badges + + +

+ Apply the shape="rounded-pill" prop to make badges rounded. +

+ + + primary + + + success + + + danger + + + warning + + + info + + + light + + + dark + + +
+
+ + + Angular Badges Positioned + + +

+ Use position prop to modify a component and position it in the corner of a link or button. +

+ + + +
+ + +
+
+
+ + + Angular Badges Indicator + + +

+ You can also create more generic indicators without a counter using a few more utilities. +

+ + + +
+
+
+
+ diff --git a/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.scss b/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.spec.ts b/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.spec.ts new file mode 100644 index 00000000..ab90270f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { BadgeModule, ButtonModule, CardModule, GridModule, UtilitiesModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { BadgesComponent } from './badges.component'; + +describe('BadgesComponent', () => { + let component: BadgesComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BadgesComponent ], + imports: [BadgeModule, CardModule, GridModule, UtilitiesModule, ButtonModule, DocsComponentsModule, RouterTestingModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(BadgesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.ts b/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.ts new file mode 100644 index 00000000..256ce899 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/badges/badges.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-badges', + templateUrl: './badges.component.html', + styleUrls: ['./badges.component.scss'] +}) +export class BadgesComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.html b/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.html new file mode 100644 index 00000000..307cca3f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.html @@ -0,0 +1,583 @@ + + + + + + + + Angular Modal + + +

+ Below is a static modal example (meaning its position and + display have been overridden). Included are the modal header, modal body + (required for padding), and modal footer (optional). We ask that you + include modal headers with dismiss actions whenever possible, or provide another + explicit dismiss action. +

+ + + +
Modal title
+ +
+ Modal body text goes here. + + + + +
+
+
+
+
+ + + + Angular Modal Live demo + + +

+ Toggle a working modal demo by clicking the button below. It will slide down and fade + in from the top of the page. +

+ + + +
+
+
+ + + + Angular Modal Static backdrop + + +

+ If you donโ€™t provide an (visibleChange) handler to the Modal component, your + modal will behave as though the backdrop is static, meaning it will not close when + clicking outside it. Click the button below to try it. +

+ + + +
+
+
+ + + + Angular Modal Scrolling long content + + +

+ If your modals are too long for the userโ€™s viewport, they scroll the page by itself. +

+ + + +

+ You can also create a scrollable modal that allows scroll the modal body by adding scrollable + prop. +

+ + + +
+
+
+ + + + Angular Modal Vertically centered + + +

+ Add alignment="center" to <c-modal> to + vertically center the modal. +

+ + + + + + +
+
+
+ + + + Angular Modal Tooltips and popovers + + +

+ cTooltip and cPopover can be placed within + modals as needed. When modals are closed, any tooltips and popovers within are also + automatically dismissed. +

+ + + +
+
+
+ + + + Angular Modal Optional sizes + + +

+ Modals have three optional sizes, available via modifier classes to be placed on a + <c-modal>. These sizes kick in at certain breakpoints to avoid + horizontal scrollbars on narrower viewports. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SizeProperty sizeModal max-width
Small + 'sm' + + 300px +
DefaultNone + 500px +
Large + 'lg' + + 800px +
Extra large + 'xl' + + 1140px +
+ + + +
+
+
+ + + + Angular Modal Fullscreen Modal + + +

+ Another override is the option to pop up a modal that covers the user viewport, + available via property fullscreen. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Property fullscreanAvailability
+ true + Always
+ 'sm' + + Below 576px +
+ 'md' + + Below 768px +
+ 'lg' + + Below 992px +
+ 'xl' + + Below 1200px +
+ 'xxl' + + Below 1400px +
+ + + +
+
+
+
+ + + + + +
Modal title
+ +
+ Woohoo, you're reading this text in a modal! + + + + +
+
+ + + + + +
Modal title
+ +
+ I will not close if you click outside of me. Don't even try to press escape key. + + + + +
+
+ + + + + +
Modal title
+ +
+ + + + + + + +
+
+ + + + + +
Modal title
+ +
+ + + + + + + +
+
+ + + + + +
Modal title
+ +
+ + Woohoo, you're reading this text in a modal! + + + + + +
+
+ + + + + +
Modal title
+ +
+ +

+ This is some placeholder content to show a vertically centered modal. We've added some extra copy here to show + how vertically centering the modal works when combined with scrollable modals. We also use some repeated line + breaks to quickly extend the height of the content, thereby triggering the scrolling. When content becomes + longer than the predefined max-height of modal, content will be cropped and scrollable within the modal. +

+









+

Just like that.

+
+ + + + +
+
+ + + + + +
Modal title
+ +
+ +
Popover in a modal
+ This + + triggers a popover on click. + +

+ Popover title +

+
+ And hereโ€™s some amazing content. Itโ€™s very engaging. Right? +
+
+
+
Tooltips in a modal
+

+ This link and that link + have tooltips on hover. +

+
+ + + + +
+
+ + + + + + + +
Extra large modal
+
+ ... +
+ + +
Large modal
+
+ ... +
+ + +
Small modal
+
+ ... +
+
+ + + + + + + + + + +
Full screen
+ +
+ ... + + + +
+ + +
Full screen below sm
+ +
+ ... +
+ + +
Full screen below md
+ +
+ ... +
+ + +
Full screen below lg
+ +
+ ... +
+ + +
Full screen below xl
+ +
+ ... +
+ + +
Full screen below xxl
+ +
+ ... +
+
+ + +

+ Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis + in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. +

+

+ Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis + lacus vel augue laoreet rutrum faucibus dolor auctor. +

+

+ Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel + scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus + auctor fringilla. +

+

+ Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis + in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. +

+

+ Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis + lacus vel augue laoreet rutrum faucibus dolor auctor. +

+

+ Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel + scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus + auctor fringilla. +

+

+ Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis + in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. +

+

+ Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis + lacus vel augue laoreet rutrum faucibus dolor auctor. +

+

+ Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel + scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus + auctor fringilla. +

+

+ Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis + in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. +

+

+ Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis + lacus vel augue laoreet rutrum faucibus dolor auctor. +

+

+ Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel + scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus + auctor fringilla. +

+

+ Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis + in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. +

+

+ Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis + lacus vel augue laoreet rutrum faucibus dolor auctor. +

+

+ Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel + scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus + auctor fringilla. +

+

+ Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis + in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. +

+

+ Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis + lacus vel augue laoreet rutrum faucibus dolor auctor. +

+

+ Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel + scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus + auctor fringilla. +

+
diff --git a/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.scss b/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.spec.ts b/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.spec.ts new file mode 100644 index 00000000..3b380d12 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { ButtonModule, CardModule, GridModule, ModalModule, PopoverModule, TooltipModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ModalsComponent } from './modals.component'; + +describe('ModalsComponent', () => { + let component: ModalsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ModalsComponent], + imports: [ModalModule, NoopAnimationsModule, GridModule, CardModule, PopoverModule, ButtonModule, DocsComponentsModule, RouterTestingModule, TooltipModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ModalsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.ts b/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.ts new file mode 100644 index 00000000..e4a11e5a --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/modals/modals.component.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-modals', + templateUrl: './modals.component.html', + styleUrls: ['./modals.component.scss'] +}) +export class ModalsComponent { + + public liveDemoVisible = false; + + constructor() { } + + toggleLiveDemo() { + this.liveDemoVisible = !this.liveDemoVisible; + } + + handleLiveDemoChange(event: boolean) { + this.liveDemoVisible = event; + } +} diff --git a/dashboard-front/coreui/src/app/views/notifications/notifications-routing.module.ts b/dashboard-front/coreui/src/app/views/notifications/notifications-routing.module.ts new file mode 100644 index 00000000..8be31f0d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/notifications-routing.module.ts @@ -0,0 +1,58 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { BadgesComponent } from './badges/badges.component'; +import { AlertsComponent } from './alerts/alerts.component'; +import { ModalsComponent } from './modals/modals.component'; +import { ToastersComponent } from './toasters/toasters.component'; + +const routes: Routes = [ + { + path: '', + data: { + title: 'Notifications' + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'badges' + }, + { + path: 'alerts', + component: AlertsComponent, + data: { + title: 'Alerts' + } + }, + { + path: 'badges', + component: BadgesComponent, + data: { + title: 'Badges' + } + }, + { + path: 'modal', + component: ModalsComponent, + data: { + title: 'Modal' + } + }, + { + path: 'toasts', + component: ToastersComponent, + data: { + title: 'Toasts' + } + } + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class NotificationsRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/views/notifications/notifications.module.ts b/dashboard-front/coreui/src/app/views/notifications/notifications.module.ts new file mode 100644 index 00000000..610ca59f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/notifications.module.ts @@ -0,0 +1,64 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { + AlertModule, + BadgeModule, + ButtonModule, + CardModule, + FormModule, + GridModule, + ModalModule, + PopoverModule, + ProgressModule, + SharedModule, + ToastModule, + TooltipModule, + UtilitiesModule +} from '@coreui/angular'; + +import { IconModule } from '@coreui/icons-angular'; + +import { DocsComponentsModule } from '@docs-components/docs-components.module'; +import { NotificationsRoutingModule } from './notifications-routing.module'; + +import { AlertsComponent } from './alerts/alerts.component'; +import { BadgesComponent } from './badges/badges.component'; +import { ModalsComponent } from './modals/modals.component'; +// import { ToastsComponent } from './toasts/toasts.component'; +import { ToastersComponent } from './toasters/toasters.component'; +import { ReactiveFormsModule } from '@angular/forms'; +import { AppToastComponent } from './toasters/toast-simple/toast.component'; + +@NgModule({ + declarations: [ + BadgesComponent, + AlertsComponent, + ModalsComponent, + // ToastsComponent, + ToastersComponent, + AppToastComponent, + ], + imports: [ + CommonModule, + ReactiveFormsModule, + NotificationsRoutingModule, + DocsComponentsModule, + AlertModule, + GridModule, + CardModule, + BadgeModule, + ButtonModule, + FormModule, + ModalModule, + ToastModule, + SharedModule, + UtilitiesModule, + TooltipModule, + PopoverModule, + ProgressModule, + IconModule + ], +}) +export class NotificationsModule { +} diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.svg b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.svg new file mode 100644 index 00000000..64a6cdc2 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.svg @@ -0,0 +1,11 @@ + + + diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.ts b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.ts new file mode 100644 index 00000000..e55408b7 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast-sample-icon.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'toast-sample-icon', + templateUrl: './toast-sample-icon.component.svg', +}) +export class ToastSampleIconComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.html b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.html new file mode 100644 index 00000000..f85415ca --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.html @@ -0,0 +1,16 @@ + + + + + + {{title}} + + +

This is a dynamic toast no {{toastBody.toast?.index}} {{toastBody.toast?.clock}}

+ + + + +
+
diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.scss b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.scss new file mode 100644 index 00000000..20947d5c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.scss @@ -0,0 +1,4 @@ +:host { + display: block; + overflow: hidden; +} diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.spec.ts b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.spec.ts new file mode 100644 index 00000000..2a819972 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { ButtonModule, ProgressModule, ToastModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../../icons/icon-subset'; +import { AppToastComponent } from './toast.component'; + +describe('ToastComponent', () => { + let component: AppToastComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [AppToastComponent], + imports: [NoopAnimationsModule, ToastModule, ProgressModule, ButtonModule], + providers: [IconSetService] + }) + .compileComponents(); + })); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(AppToastComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.ts b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.ts new file mode 100644 index 00000000..440ffd9d --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toast-simple/toast.component.ts @@ -0,0 +1,24 @@ +import { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, Renderer2 } from '@angular/core'; + +import { ToastComponent, ToasterService } from '@coreui/angular'; + +@Component({ + selector: 'app-toast-simple', + templateUrl: './toast.component.html', + styleUrls: ['./toast.component.scss'], + providers: [{ provide: ToastComponent, useExisting: forwardRef(() => AppToastComponent) }] +}) +export class AppToastComponent extends ToastComponent { + + @Input() closeButton = true; + @Input() title = ''; + + constructor( + public override hostElement: ElementRef, + public override renderer: Renderer2, + public override toasterService: ToasterService, + public override changeDetectorRef: ChangeDetectorRef + ) { + super(hostElement, renderer, toasterService, changeDetectorRef); + } +} diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.html b/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.html new file mode 100644 index 00000000..2c476ae1 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.html @@ -0,0 +1,94 @@ +
+ + + + + + + + + Toaster + + + + + +
+
Add toast with following props:
+ + + + + + + + Delay + + + + + Position + + + + + Color + + + + + + + + + + + + +
+ +
+
+ + + + Toast title + This is a static toast in a static toaster + + + Toast title + This is a static toast in a static toaster + + This is a toast in static positioned App + toaster! {{toast.index}} + + +
+
+
+
+ + + + +

Form value: {{ toasterForm.value | json }}

+
+
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.scss b/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.spec.ts b/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.spec.ts new file mode 100644 index 00000000..a0fa33f0 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.spec.ts @@ -0,0 +1,38 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { ButtonModule, CardModule, FormModule, GridModule, ProgressModule, ToastModule } from '@coreui/angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { ToastersComponent } from './toasters.component'; +import { AppToastComponent } from './toast-simple/toast.component'; + +describe('ToastersComponent', () => { + let component: ToastersComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ToastersComponent, AppToastComponent], + imports: [NoopAnimationsModule, GridModule, ToastModule, CardModule, FormModule, ButtonModule, ProgressModule, FormsModule, ReactiveFormsModule, DocsComponentsModule], + providers: [IconSetService] + }) + .compileComponents(); + })); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(ToastersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.ts b/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.ts new file mode 100644 index 00000000..55cf0108 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/notifications/toasters/toasters.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit, QueryList, ViewChildren } from '@angular/core'; +import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; +import { Observable } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import { ToasterComponent, ToasterPlacement } from '@coreui/angular'; +import { AppToastComponent } from './toast-simple/toast.component'; + +export enum Colors { + '' = '', + primary = 'primary', + secondary = 'secondary', + success = 'success', + info = 'info', + warning = 'warning', + danger = 'danger', + dark = 'dark', + light = 'light', +} + +@Component({ + selector: 'app-toasters', + templateUrl: './toasters.component.html', + styleUrls: ['./toasters.component.scss'] +}) +export class ToastersComponent implements OnInit { + + positions = Object.values(ToasterPlacement); + position = ToasterPlacement.TopEnd; + positionStatic = ToasterPlacement.Static; + colors = Object.keys(Colors); + autohide = true; + delay = 5000; + fade = true; + + formChanges!: Observable; + + toasterForm = new UntypedFormGroup({ + autohide: new UntypedFormControl(this.autohide), + delay: new UntypedFormControl({value: this.delay, disabled: !this.autohide}), + position: new UntypedFormControl(this.position), + fade: new UntypedFormControl({value: true, disabled: false}), + closeButton: new UntypedFormControl(true), + color: new UntypedFormControl('') + }); + + @ViewChildren(ToasterComponent) viewChildren!: QueryList; + + ngOnInit(): void { + this.formChanges = this.toasterForm.valueChanges.pipe(filter(e => e.autohide !== this.autohide)); + this.formChanges.subscribe(e => { + this.autohide = e.autohide; + this.position = e.position; + this.fade = e.fade; + const control = this.toasterForm?.get('delay'); + this.autohide ? control?.enable() : control?.disable(); + this.delay = control?.enabled ? e.timeout : this.delay; + }); + } + + addToast() { + const formValues = this.toasterForm.value; + const toasterPosition = this.viewChildren.filter(item => item.placement === this.toasterForm.value.position); + toasterPosition.forEach((item) => { + const title = `Toast ${formValues.color} ${formValues.position}`; + const {...props} = {...formValues, title}; + const componentRef = item.addToast(AppToastComponent, props, {}); + componentRef.instance['closeButton'] = props.closeButton; + }); + } +} diff --git a/dashboard-front/coreui/src/app/views/pages/login/login.component.html b/dashboard-front/coreui/src/app/views/pages/login/login.component.html new file mode 100644 index 00000000..dcbf28a6 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/login/login.component.html @@ -0,0 +1,61 @@ +
+ + + + + + +
+

Login

+

Sign In to your account

+ + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Sign up

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. +

+ +
+
+
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/pages/login/login.component.scss b/dashboard-front/coreui/src/app/views/pages/login/login.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/pages/login/login.component.spec.ts b/dashboard-front/coreui/src/app/views/pages/login/login.component.spec.ts new file mode 100644 index 00000000..494e9b07 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/login/login.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { LoginComponent } from './login.component'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LoginComponent ], + imports: [FormModule, CardModule, GridModule, ButtonModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/pages/login/login.component.ts b/dashboard-front/coreui/src/app/views/pages/login/login.component.ts new file mode 100644 index 00000000..5485ab13 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/login/login.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/pages/page404/page404.component.html b/dashboard-front/coreui/src/app/views/pages/page404/page404.component.html new file mode 100644 index 00000000..77d684e8 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/page404/page404.component.html @@ -0,0 +1,22 @@ +
+ + + +
+

404

+

Oops! You're lost.

+

+ The page you are looking for was not found. +

+
+ + + + + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/pages/page404/page404.component.scss b/dashboard-front/coreui/src/app/views/pages/page404/page404.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/pages/page404/page404.component.spec.ts b/dashboard-front/coreui/src/app/views/pages/page404/page404.component.spec.ts new file mode 100644 index 00000000..c7bbf329 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/page404/page404.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, FormModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { Page404Component } from './page404.component'; + +describe('Page404Component', () => { + let component: Page404Component; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ Page404Component ], + imports: [FormModule, GridModule, ButtonModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(Page404Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/pages/page404/page404.component.ts b/dashboard-front/coreui/src/app/views/pages/page404/page404.component.ts new file mode 100644 index 00000000..1155906f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/page404/page404.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-page404', + templateUrl: './page404.component.html', + styleUrls: ['./page404.component.scss'] +}) +export class Page404Component { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/pages/page500/page500.component.html b/dashboard-front/coreui/src/app/views/pages/page500/page500.component.html new file mode 100644 index 00000000..7bf7d0b7 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/page500/page500.component.html @@ -0,0 +1,22 @@ +
+ + + + +

500

+

Houston, we have a problem!

+

+ The page you are looking for is temporarily unavailable. +

+
+ + + + + + + +
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/pages/page500/page500.component.scss b/dashboard-front/coreui/src/app/views/pages/page500/page500.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/pages/page500/page500.component.spec.ts b/dashboard-front/coreui/src/app/views/pages/page500/page500.component.spec.ts new file mode 100644 index 00000000..5b4ebafd --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/page500/page500.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, FormModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { Page500Component } from './page500.component'; + +describe('Page500Component', () => { + let component: Page500Component; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ Page500Component ], + imports: [GridModule, ButtonModule, FormModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(Page500Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/pages/page500/page500.component.ts b/dashboard-front/coreui/src/app/views/pages/page500/page500.component.ts new file mode 100644 index 00000000..114d810a --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/page500/page500.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-page500', + templateUrl: './page500.component.html', + styleUrls: ['./page500.component.scss'] +}) +export class Page500Component { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/pages/pages-routing.module.ts b/dashboard-front/coreui/src/app/views/pages/pages-routing.module.ts new file mode 100644 index 00000000..1b9beaaa --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/pages-routing.module.ts @@ -0,0 +1,44 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { Page404Component } from './page404/page404.component'; +import { Page500Component } from './page500/page500.component'; +import { LoginComponent } from './login/login.component'; +import { RegisterComponent } from './register/register.component'; + +const routes: Routes = [ + { + path: '404', + component: Page404Component, + data: { + title: 'Page 404' + } + }, + { + path: '500', + component: Page500Component, + data: { + title: 'Page 500' + } + }, + { + path: 'login', + component: LoginComponent, + data: { + title: 'Login Page' + } + }, + { + path: 'register', + component: RegisterComponent, + data: { + title: 'Register Page' + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class PagesRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/views/pages/pages.module.ts b/dashboard-front/coreui/src/app/views/pages/pages.module.ts new file mode 100644 index 00000000..c5fbf607 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/pages.module.ts @@ -0,0 +1,31 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { PagesRoutingModule } from './pages-routing.module'; +import { LoginComponent } from './login/login.component'; +import { RegisterComponent } from './register/register.component'; +import { Page404Component } from './page404/page404.component'; +import { Page500Component } from './page500/page500.component'; +import { ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; + + +@NgModule({ + declarations: [ + LoginComponent, + RegisterComponent, + Page404Component, + Page500Component + ], + imports: [ + CommonModule, + PagesRoutingModule, + CardModule, + ButtonModule, + GridModule, + IconModule, + FormModule + ] +}) +export class PagesModule { +} diff --git a/dashboard-front/coreui/src/app/views/pages/register/register.component.html b/dashboard-front/coreui/src/app/views/pages/register/register.component.html new file mode 100644 index 00000000..a02a8589 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/register/register.component.html @@ -0,0 +1,41 @@ +
+ + + + + +
+

Register

+

Create your account

+ + + + + + + + @ + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/pages/register/register.component.scss b/dashboard-front/coreui/src/app/views/pages/register/register.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/pages/register/register.component.spec.ts b/dashboard-front/coreui/src/app/views/pages/register/register.component.spec.ts new file mode 100644 index 00000000..54d75058 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/register/register.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, CardModule, FormModule, GridModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { RegisterComponent } from './register.component'; + +describe('RegisterComponent', () => { + let component: RegisterComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RegisterComponent ], + imports: [CardModule, FormModule, GridModule, ButtonModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(RegisterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/pages/register/register.component.ts b/dashboard-front/coreui/src/app/views/pages/register/register.component.ts new file mode 100644 index 00000000..10a2fcd8 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/pages/register/register.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-register', + templateUrl: './register.component.html', + styleUrls: ['./register.component.scss'] +}) +export class RegisterComponent { + + constructor() { } + +} diff --git a/dashboard-front/coreui/src/app/views/theme/colors.component.html b/dashboard-front/coreui/src/app/views/theme/colors.component.html new file mode 100644 index 00000000..4d0bbdd3 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/theme/colors.component.html @@ -0,0 +1,35 @@ +
+ + + Theme colors + + + + +
Brand Primary Color
+
+ +
Brand Secondary Color
+
+ +
Brand Success Color
+
+ +
Brand Danger Color
+
+ +
Brand Warning Color
+
+ +
Brand Info Color
+
+ +
Brand Light Color
+
+ +
Brand Dark Color
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/theme/colors.component.ts b/dashboard-front/coreui/src/app/views/theme/colors.component.ts new file mode 100644 index 00000000..f6bef330 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/theme/colors.component.ts @@ -0,0 +1,73 @@ +import { AfterViewInit, Component, HostBinding, Inject, Input, OnInit, Renderer2 } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; + +import { getStyle, rgbToHex } from '@coreui/utils/src'; + +@Component({ + templateUrl: 'colors.component.html' +}) +export class ColorsComponent implements OnInit, AfterViewInit { + + constructor( + @Inject(DOCUMENT) private document: Document, + private renderer: Renderer2 + ) { + } + + public themeColors(): void { + Array.from(this.document.querySelectorAll('.theme-color')).forEach( + // @ts-ignore + (el: HTMLElement) => { + const background = getStyle('background-color', el); + const table = this.renderer.createElement('table'); + table.innerHTML = ` + + + + + + + + + +
HEX:${rgbToHex(background)}
RGB:${background}
+ `; + this.renderer.appendChild(el.parentNode, table); + // @ts-ignore + // el.parentNode.appendChild(table); + } + ); + } + + ngOnInit(): void {} + + ngAfterViewInit(): void { + this.themeColors(); + } +} + +@Component({ + selector: 'app-theme-color', + template: ` + +
+ +
+ ` +}) +export class ThemeColorComponent implements OnInit { + @Input() color = ''; + public colorClasses = { + 'theme-color w-75 rounded mb-3': true + }; + + @HostBinding('style.display') display = 'contents'; + + ngOnInit(): void { + this.colorClasses = { + ...this.colorClasses, + [`bg-${this.color}`]: !!this.color + }; + } +} + diff --git a/dashboard-front/coreui/src/app/views/theme/theme-routing.module.ts b/dashboard-front/coreui/src/app/views/theme/theme-routing.module.ts new file mode 100644 index 00000000..2ba062d9 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/theme/theme-routing.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ColorsComponent } from './colors.component'; +import { TypographyComponent } from './typography.component'; + +const routes: Routes = [ + { + path: '', + data: { + title: 'Theme', + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'colors', + }, + { + path: 'colors', + component: ColorsComponent, + data: { + title: 'Colors', + }, + }, + { + path: 'typography', + component: TypographyComponent, + data: { + title: 'Typography', + }, + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ThemeRoutingModule {} diff --git a/dashboard-front/coreui/src/app/views/theme/theme.module.ts b/dashboard-front/coreui/src/app/views/theme/theme.module.ts new file mode 100644 index 00000000..fef509fa --- /dev/null +++ b/dashboard-front/coreui/src/app/views/theme/theme.module.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; + +import { CardModule, GridModule, NavModule, UtilitiesModule, TabsModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; + +import { ColorsComponent, ThemeColorComponent } from './colors.component'; +import { TypographyComponent } from './typography.component'; + +// Theme Routing +import { ThemeRoutingModule } from './theme-routing.module'; + +@NgModule({ + imports: [ + CommonModule, + ThemeRoutingModule, + CardModule, + GridModule, + UtilitiesModule, + IconModule, + NavModule, + TabsModule + ], + declarations: [ + ColorsComponent, + ThemeColorComponent, + TypographyComponent, + ] +}) +export class ThemeModule { +} diff --git a/dashboard-front/coreui/src/app/views/theme/typography.component.html b/dashboard-front/coreui/src/app/views/theme/typography.component.html new file mode 100644 index 00000000..17d0d091 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/theme/typography.component.html @@ -0,0 +1,150 @@ +
+ + + Headings + + +

Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HeadingExample
+

<h1></h1>

+

h1. Bootstrap heading

+

<h2></h2>

+

h2. Bootstrap heading

+

<h3></h3>

+

h3. Bootstrap heading

+

<h4></h4>

+

h4. Bootstrap heading

+

<h5></h5>

+
h5. Bootstrap heading
+

<h6></h6>

+
h6. Bootstrap heading
+
+
+ + + Headings + + +

.h1 through .h6 classes are also available, for when you want to match the font styling of a heading but cannot use the associated HTML element.

+
+

h1. Bootstrap heading

+

h2. Bootstrap heading

+

h3. Bootstrap heading

+

h4. Bootstrap heading

+

h5. Bootstrap heading

+

h6. Bootstrap heading

+
+
+
+ + + Display headings + + +

Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a display headingโ€”a larger, slightly more opinionated heading style.

+
+ + + + + + + + + + + + + + + +
Display 1
Display 2
Display 3
Display 4
+
+
+
+ + + Inline text elements + + +

Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a display headingโ€”a larger, slightly more opinionated heading style.

+
+

You can use the mark tag to highlight text.

+

This line of text is meant to be treated as deleted text.

+

This line of text is meant to be treated as no longer accurate.

+

This line of text is meant to be treated as an addition to the document.

+

This line of text will render as underlined

+

This line of text is meant to be treated as fine print.

+

This line rendered as bold text.

+

This line rendered as italicized text.

+
+
+
+ + + Description list alignment + + +

Align terms and descriptions horizontally by using our grid systemโ€™s predefined classes (or semantic mixins). For longer terms, you can optionally add a .text-truncate class to truncate the text with an ellipsis.

+
+
+
Description lists
+
A description list is perfect for defining terms.
+ +
Euismod
+
+

Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.

+

Donec id elit non mi porta gravida at eget metus.

+
+ +
Malesuada porta
+
Etiam porta sem malesuada magna mollis euismod.
+ +
Truncated term is truncated with d-block
+
Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
+ +
Nesting
+
+
+
Nested definition list
+
Aenean posuere, tortor sed cursus feugiat, nunc augue blandit nunc.
+
+
+
+
+
+
+
diff --git a/dashboard-front/coreui/src/app/views/theme/typography.component.ts b/dashboard-front/coreui/src/app/views/theme/typography.component.ts new file mode 100644 index 00000000..62fa3a0b --- /dev/null +++ b/dashboard-front/coreui/src/app/views/theme/typography.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + templateUrl: 'typography.component.html', +}) +export class TypographyComponent { + constructor() {} +} diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.html b/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.html new file mode 100644 index 00000000..c992c9a8 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.html @@ -0,0 +1,22 @@ + + + + + + {{ chart.id }} + + + + diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.scss b/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts b/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts new file mode 100644 index 00000000..b5b944f0 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GridModule, WidgetModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconModule } from '@coreui/icons-angular'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { WidgetsBrandComponent } from './widgets-brand.component'; + +describe('WidgetsBrandComponent', () => { + let component: WidgetsBrandComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ WidgetsBrandComponent ], + imports: [WidgetModule, GridModule, ChartjsModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsBrandComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.ts b/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.ts new file mode 100644 index 00000000..258d471f --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-brand/widgets-brand.component.ts @@ -0,0 +1,101 @@ +import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core'; + +@Component({ + selector: 'app-widgets-brand', + templateUrl: './widgets-brand.component.html', + styleUrls: ['./widgets-brand.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsBrandComponent implements AfterContentInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef + ) {} + + @Input() withCharts?: boolean; + // @ts-ignore + chartOptions = { + elements: { + line: { + tension: 0.4 + }, + point: { + radius: 0, + hitRadius: 10, + hoverRadius: 4, + hoverBorderWidth: 3 + } + }, + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + display: false + }, + y: { + display: false + } + } + }; + labels = ['January', 'February', 'March', 'April', 'May', 'June', 'July']; + datasets = { + borderWidth: 2, + fill: true + }; + colors = { + backgroundColor: 'rgba(255,255,255,.1)', + borderColor: 'rgba(255,255,255,.55)', + pointHoverBackgroundColor: '#fff' + }; + brandData = [ + { + icon: 'cibFacebook', + values: [{ title: 'friends', value: '89K' }, { title: 'feeds', value: '459' }], + capBg: { '--cui-card-cap-bg': '#3b5998' }, + labels: [...this.labels], + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [65, 59, 84, 84, 51, 55, 40], label: 'Facebook', ...this.colors }] + } + }, + { + icon: 'cibTwitter', + values: [{ title: 'followers', value: '973k' }, { title: 'tweets', value: '1.792' }], + capBg: { '--cui-card-cap-bg': '#00aced' }, + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [1, 13, 9, 17, 34, 41, 38], label: 'Twitter', ...this.colors }] + } + }, + { + icon: 'cib-linkedin', + values: [{ title: 'contacts', value: '500' }, { title: 'feeds', value: '1.292' }], + capBg: { '--cui-card-cap-bg': '#4875b4' }, + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [78, 81, 80, 45, 34, 12, 40], label: 'LinkedIn', ...this.colors }] + } + }, + { + icon: 'cilCalendar', + values: [{ title: 'events', value: '12+' }, { title: 'meetings', value: '4' }], + color: 'warning', + data: { + labels: [...this.labels], + datasets: [{ ...this.datasets, data: [35, 23, 56, 22, 97, 23, 64], label: 'Events', ...this.colors }] + } + } + ]; + + capStyle(value: string) { + return !!value ? { '--cui-card-cap-bg': value } : {}; + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } +} diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html b/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html new file mode 100644 index 00000000..c5d5f217 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.html @@ -0,0 +1,127 @@ + + + + + 5% + + (-12.4% ) + + + + + + + + + + + + + + + + + 5% + + (40.9% ) + + + + + + + + + + + + + + + + + 22K + + (84.7% ) + + + + + + + + + + + + + + + + + 3K + + (-23.6% ) + + + + + + + + + + + + + + diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.scss b/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts b/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts new file mode 100644 index 00000000..e0ea365e --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonModule, DropdownModule, GridModule, WidgetModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { WidgetsDropdownComponent } from './widgets-dropdown.component'; + +describe('WidgetsDropdownComponent', () => { + let component: WidgetsDropdownComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ WidgetsDropdownComponent ], + imports: [WidgetModule, DropdownModule, IconModule, ButtonModule, ChartjsModule, GridModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsDropdownComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts b/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts new file mode 100644 index 00000000..85e26819 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-dropdown/widgets-dropdown.component.ts @@ -0,0 +1,254 @@ +import { + AfterContentInit, + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + OnInit, + ViewChild +} from '@angular/core'; +import { getStyle } from '@coreui/utils/src'; +import { ChartjsComponent } from '@coreui/angular-chartjs'; + +@Component({ + selector: 'app-widgets-dropdown', + templateUrl: './widgets-dropdown.component.html', + styleUrls: ['./widgets-dropdown.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsDropdownComponent implements OnInit, AfterContentInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef + ) {} + + data: any[] = []; + options: any[] = []; + labels = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + 'January', + 'February', + 'March', + 'April' + ]; + datasets = [ + [{ + label: 'My First dataset', + backgroundColor: 'transparent', + borderColor: 'rgba(255,255,255,.55)', + pointBackgroundColor: getStyle('--cui-primary'), + pointHoverBorderColor: getStyle('--cui-primary'), + data: [65, 59, 84, 84, 51, 55, 40] + }], [{ + label: 'My Second dataset', + backgroundColor: 'transparent', + borderColor: 'rgba(255,255,255,.55)', + pointBackgroundColor: getStyle('--cui-info'), + pointHoverBorderColor: getStyle('--cui-info'), + data: [1, 18, 9, 17, 34, 22, 11] + }], [{ + label: 'My Third dataset', + backgroundColor: 'rgba(255,255,255,.2)', + borderColor: 'rgba(255,255,255,.55)', + pointBackgroundColor: getStyle('--cui-warning'), + pointHoverBorderColor: getStyle('--cui-warning'), + data: [78, 81, 80, 45, 34, 12, 40], + fill: true + }], [{ + label: 'My Fourth dataset', + backgroundColor: 'rgba(255,255,255,.2)', + borderColor: 'rgba(255,255,255,.55)', + data: [78, 81, 80, 45, 34, 12, 40, 85, 65, 23, 12, 98, 34, 84, 67, 82], + barPercentage: 0.7 + }] + ]; + optionsDefault = { + plugins: { + legend: { + display: false + } + }, + maintainAspectRatio: false, + scales: { + x: { + grid: { + display: false, + drawBorder: false + }, + ticks: { + display: false + } + }, + y: { + min: 30, + max: 89, + display: false, + grid: { + display: false + }, + ticks: { + display: false + } + } + }, + elements: { + line: { + borderWidth: 1, + tension: 0.4 + }, + point: { + radius: 4, + hitRadius: 10, + hoverRadius: 4 + } + } + }; + + ngOnInit(): void { + this.setData(); + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + + } + + setData() { + for (let idx = 0; idx < 4; idx++) { + this.data[idx] = { + labels: idx < 3 ? this.labels.slice(0, 7) : this.labels, + datasets: this.datasets[idx] + }; + } + this.setOptions(); + } + + setOptions() { + for (let idx = 0; idx < 4; idx++) { + const options = JSON.parse(JSON.stringify(this.optionsDefault)); + switch (idx) { + case 0: { + this.options.push(options); + break; + } + case 1: { + options.scales.y.min = -9; + options.scales.y.max = 39; + this.options.push(options); + break; + } + case 2: { + options.scales.x = { display: false }; + options.scales.y = { display: false }; + options.elements.line.borderWidth = 2; + options.elements.point.radius = 0; + this.options.push(options); + break; + } + case 3: { + options.scales.x.grid = { display: false, drawTicks: false }; + options.scales.x.grid = { display: false, drawTicks: false, drawBorder: false }; + options.scales.y.min = undefined; + options.scales.y.max = undefined; + options.elements = {}; + this.options.push(options); + break; + } + } + } + } +} + +@Component({ + selector: 'app-chart-sample', + template: '' +}) +export class ChartSample implements AfterViewInit { + + constructor() {} + + @ViewChild('chart') chartComponent!: ChartjsComponent; + + colors = { + label: 'My dataset', + backgroundColor: 'rgba(77,189,116,.2)', + borderColor: '#4dbd74', + pointHoverBackgroundColor: '#fff' + }; + + labels = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + + data = { + labels: this.labels, + datasets: [{ + data: [65, 59, 84, 84, 51, 55, 40], + ...this.colors, + fill: { value: 65 } + }] + }; + + options = { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + elements: { + line: { + tension: 0.4 + } + } + }; + + ngAfterViewInit(): void { + setTimeout(() => { + const data = () => { + return { + ...this.data, + labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May'], + datasets: [{ + ...this.data.datasets[0], + data: [42, 88, 42, 66, 77], + fill: { value: 55 } + }, { ...this.data.datasets[0], borderColor: '#ffbd47', data: [88, 42, 66, 77, 42] }] + }; + }; + const newLabels = ['Jan', 'Feb', 'Mar', 'Apr', 'May']; + const newData = [42, 88, 42, 66, 77]; + let { datasets, labels } = { ...this.data }; + // @ts-ignore + const before = this.chartComponent?.chart?.data.datasets.length; + console.log('before', before); + // console.log('datasets, labels', datasets, labels) + // @ts-ignore + // this.data = data() + this.data = { + ...this.data, + datasets: [{ ...this.data.datasets[0], data: newData }, { + ...this.data.datasets[0], + borderColor: '#ffbd47', + data: [88, 42, 66, 77, 42] + }], + labels: newLabels + }; + // console.log('datasets, labels', { datasets, labels } = {...this.data}) + // @ts-ignore + setTimeout(() => { + const after = this.chartComponent?.chart?.data.datasets.length; + console.log('after', after); + }); + }, 5000); + } +} diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.html b/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.html new file mode 100644 index 00000000..2c63c7c4 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.scss b/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.spec.ts b/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.spec.ts new file mode 100644 index 00000000..85469b99 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GridModule, WidgetModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { WidgetsEComponent } from './widgets-e.component'; + +describe('WidgetsEComponent', () => { + let component: WidgetsEComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ WidgetsEComponent ], + imports: [WidgetModule, GridModule, ChartjsModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsEComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.ts b/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.ts new file mode 100644 index 00000000..9b15cb1e --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-e/widgets-e.component.ts @@ -0,0 +1,146 @@ +import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core'; +import { getStyle } from '@coreui/utils/src'; + +@Component({ + selector: 'app-widgets-e', + templateUrl: './widgets-e.component.html', + styleUrls: ['./widgets-e.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsEComponent implements AfterContentInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef + ) { + this.prepareLabels(); + this.prepareDatasets(); + this.prepareData(); + } + + datasets: any[] = []; + labels: string[] = []; + data: any[] = []; + barOptions = { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + display: false + }, + y: { + display: false + } + } + }; + lineOptions = { + maintainAspectRatio: false, + elements: { + line: { + tension: 0.4 + }, + point: { + radius: 0 + } + }, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + display: false + }, + y: { + display: false + } + } + }; + + get random() { + const min = 40, + max = 100; + return Math.floor(Math.random() * (max - min + 1) + min); + } + + get randomData() { + const data = []; + for (let i = 0; i < 15; i++) { + data.push(this.random); + } + return data; + } + + get baseDatasets(): Array { + return [ + { + data: this.randomData, + barThickness: 'flex', + borderColor: 'transparent', + backgroundColor: 'transparent', + borderWidth: 1 + } + ]; + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } + + prepareData() { + for (let i = 0; i < 6; i++) { + this.data.push({ labels: this.labels, datasets: this.datasets[i] }); + } + } + + prepareLabels() { + for (let i = 0; i < 15; i++) { + this.labels.push(this.getDayName(i)); + } + } + + prepareDatasets() { + const params = [ + { backgroundColor: 'danger' }, + { backgroundColor: 'primary' }, + { backgroundColor: 'dark' }, + { borderColor: 'danger', borderWidth: 2 }, + { borderColor: 'success', borderWidth: 2 }, + { borderColor: 'info', borderWidth: 2 } + ]; + for (let i = 0; i < 6; i++) { + this.datasets.push(this.getDataset(params[i])); + } + } + + getDataset({ + backgroundColor = 'transparent', + borderColor = 'transparent', + borderWidth = 1 + }) { + const dataset = this.baseDatasets; + dataset[0].backgroundColor = + backgroundColor !== 'transparent' + ? getStyle(`--cui-${backgroundColor}`) + : backgroundColor; + dataset[0].borderColor = + borderColor !== 'transparent' + ? getStyle(`--cui-${borderColor}`) + : borderColor; + dataset[0].borderWidth = borderWidth; + return dataset; + } + + getDayName(shift = 0) { + // @ts-ignore + const locale = navigator.language ?? navigator.userLanguage ?? navigator.systemLanguage ?? navigator.browserLanguage ?? 'en-US'; + const baseDate = new Date(Date.UTC(2000, 1, 0)); // Monday + baseDate.setDate(baseDate.getDate() + shift); + return baseDate.toLocaleDateString(locale, { weekday: 'short' }); + } + +} diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets-routing.module.ts b/dashboard-front/coreui/src/app/views/widgets/widgets-routing.module.ts new file mode 100644 index 00000000..5d95afe3 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { WidgetsComponent } from './widgets/widgets.component'; + +const routes: Routes = [ + { + path: '', + component: WidgetsComponent, + data: { + title: 'Widgets' + } + } +]; + + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class WidgetsRoutingModule { +} diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets.module.ts b/dashboard-front/coreui/src/app/views/widgets/widgets.module.ts new file mode 100644 index 00000000..1736936c --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets.module.ts @@ -0,0 +1,52 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { + ButtonModule, + CardModule, + DropdownModule, + GridModule, + ProgressModule, + SharedModule, + WidgetModule +} from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; + +import { DocsComponentsModule } from '@docs-components/docs-components.module'; + +import { WidgetsRoutingModule } from './widgets-routing.module'; +import { WidgetsComponent } from './widgets/widgets.component'; +import { WidgetsBrandComponent } from './widgets-brand/widgets-brand.component'; +import { ChartSample, WidgetsDropdownComponent } from './widgets-dropdown/widgets-dropdown.component'; +import { WidgetsEComponent } from './widgets-e/widgets-e.component'; + +@NgModule({ + declarations: [ + WidgetsComponent, + WidgetsBrandComponent, + WidgetsDropdownComponent, + ChartSample, + WidgetsEComponent + ], + imports: [ + CommonModule, + WidgetsRoutingModule, + GridModule, + WidgetModule, + IconModule, + DropdownModule, + SharedModule, + ButtonModule, + CardModule, + DocsComponentsModule, + ProgressModule, + ChartjsModule + ], + exports: [ + WidgetsBrandComponent, + WidgetsDropdownComponent + ] +}) +export class WidgetsModule { +} diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.html b/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.html new file mode 100644 index 00000000..b9c73ce1 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.html @@ -0,0 +1,616 @@ + + Widgets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + View more + + + + + + + + + + + + + View more + + + + + + + + + + + + + View more + + + + + + + + + + + + + View more + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.scss b/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.spec.ts b/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.spec.ts new file mode 100644 index 00000000..6ff2dd35 --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.spec.ts @@ -0,0 +1,40 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { CardModule, GridModule, ProgressModule, WidgetModule } from '@coreui/angular'; +import { ChartjsModule } from '@coreui/angular-chartjs'; +import { IconModule, IconSetService } from '@coreui/icons-angular'; +import { iconSubset } from '../../../icons/icon-subset'; +import { DocsComponentsModule } from '../../../../components'; +import { WidgetsBrandComponent } from '../widgets-brand/widgets-brand.component'; +import { WidgetsDropdownComponent } from '../widgets-dropdown/widgets-dropdown.component'; +import { WidgetsEComponent } from '../widgets-e/widgets-e.component'; +import { WidgetsComponent } from './widgets.component'; + +describe('WidgetsComponent', () => { + let component: WidgetsComponent; + let fixture: ComponentFixture; + let iconSetService: IconSetService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [WidgetsComponent, WidgetsBrandComponent, WidgetsDropdownComponent, WidgetsEComponent], + imports: [WidgetModule, ProgressModule, GridModule, DocsComponentsModule, CardModule, RouterTestingModule, ChartjsModule, IconModule], + providers: [IconSetService] + }) + .compileComponents(); + }); + + beforeEach(() => { + iconSetService = TestBed.inject(IconSetService); + iconSetService.icons = { ...iconSubset }; + + fixture = TestBed.createComponent(WidgetsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.ts b/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.ts new file mode 100644 index 00000000..1b49a6db --- /dev/null +++ b/dashboard-front/coreui/src/app/views/widgets/widgets/widgets.component.ts @@ -0,0 +1,17 @@ +import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core'; + +@Component({ + selector: 'app-widgets', + templateUrl: './widgets.component.html', + styleUrls: ['./widgets.component.scss'], + changeDetection: ChangeDetectionStrategy.Default +}) +export class WidgetsComponent implements AfterContentInit { + constructor( + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } +} diff --git a/dashboard-front/coreui/src/assets/.gitkeep b/dashboard-front/coreui/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/assets/angular.ico b/dashboard-front/coreui/src/assets/angular.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000}Hl~4)&H8i#+9eC8hz-A_~io|~)7Lz7sD;g2P z?9VXzd|z*?tqO_Te%`(Bobx^Jym#(33-OD`jqAA8B4(pzmI6#znsz2Ld?T?Y!F|tV zXWg^SoM(PMJ;Ypr2S>%(Ofmh2pO?-XAbuJy;0X>LTFW-A7{#^*d9AuKqvs~!1YY4B zQd@sGm!R%4!57J0G0grB$b`|8ifn`t)XYdRqP)w($z1}M=$#(^( z)IY3Py(2_ePl4+CQI9VK*RZ3wenWO>KeK23Fa2&Y+fl#g>JQ%Guk}l>?{^3Kep&eK z`?dQ=k30K!gtn`H^f%1jQ2!1X9G}5*P`PJt?oS$^p`Dy7jf1O`%i1+9@zk%)B`Taon?(WX##KrM$VwN^eR#-7>C!F|wOJ{LO zF$r<#yvluNOKV50JFgYi&K|GCzgW}2&ued^#D7CZTSD7e4SUD_@&i|_{)1}<)(;%5 z6>RublzGqJKX)JJjKjKH^4`bY#k-xmuf$L7{2aK4i^chQsa4z^mH02fqw*SS>+-5O zxng-`#AHRSC8cF}GQ6hwH@5|Z-b67u4bQlgTw=cFahq0zkmT>M}(R~y@N zdKWeR84G+<;{WGI-Me>B?4FdEldGM$q=JHixCB}pjTQwpMBTjb?w0pO@oobD_HYsF zX6~8Ob=Y@N;v~u!rSKG*$KEgTO1UDVoc?t0k&PUC;9?PlQR zj1||zx;c5cT4OCmPwBQ!OisX}|xj@TyouAGUeb@zbs45`Eu6KmK^zFy- zUux1;u6sieGYx3RO2Z1NK)VQ)u!aE))cq2r3r`l2QuNI3mq_r`UFy_XS~AojL;_z( zWG?mlNiiBB2hW!?MGl_7Iqssa4Ok1u;{&zcO{3ehtmalkn!3>T8Pu8(Ju1bxstp6a zuplJqPItZtJvt#liEAZ0utze>DeV_y zn(A}4WCBw<&R~v0w;Fr?631PA`&=4sfx=pi!N#1yisH}CeZ}CS3;x>yagV zbeef67>j}Ek{-#?OQe`xQnr2W^;5hFn0d?Eu*?0SaT%%16D~D3tJY5a90+i#xq&Tc=C^m8iBa5RFnU$!y@E zi5rK+lSW%qfHIAc)!J_%eUUMvM+B6UfNZ$~E43APCk~pNWK-iu6AEsSq+2_E*6lF9 zXJE-8M7)t`n*q21Q#Ig4#Di5s@^a#}FZU;^0I;3GFWYbOd| zSWCKdjWD1!^ANqE1Wnwaj+(0_O9tqMmlgc1AlyZC288S)FkF!2bQ1J;o~|5aj_yLU zK%HLvZT+EKcW6!>uWSoT($p;=KwU_QKk@80zn6| z%%nV{dJkWdogsj=7N^(_IG)7tf*)iO#}ryNA&EC};%_UHFc-K0#i~LyM-3r@1bD+@ z^0&dSa%t?e3~@z{F$6t8U~bbP{JCY$*-~DZFn?sug@mr0wF^??1@bKE)>fvlNNg5# zgE)!&EMOL2^(bf~Sn3c%Y!v1Jza!{iSamyvWnY*uKz=%D>#Ij3iMQ23)sr1`+jqj= zo;+rnoPzXs!88OPUP77>AX|702nwwhmELBL(3RQ?T2oK(Y8~y=TR36J~Pzqi+&Xy8@0k=?Rg#@X95^ccQ{zsDR_Ezp& zv%(W>=cYvoD) z!C~+9^$lahth%IGuRkYNQkbhb-{M&cKusiq+Zf%73%@6L`Pt;V{)&*Ns4KrWxH@ck z4Fq3u>N3*V(a-^5Qy?lG078k$fYA0KuCxq%$uDRvQ}n#p(X%b28GjaDFq#0?mQq6T5D5T6$Pp=dCjg=?Kg$e#qi3U_ zC0bpNYC^Z^p|aaor11Ku+v1qov=}rS8QZeU{TV-mB~#6f73DPx#ExR71HFY?J(8+) zew%Xyvi+^TXAlgPV#zw;sk- z-lY7}b8z%5@=dG$(_>*esr-?$FkJLQ?8(8rv|^R~%HevIue&#T+t*XX*Vail7y1gE zpDHE$i1F+n{qrYnWMB_k`#xy5T~KvgWleG_eftRqvF(r3+Hcb;y*+;zR`l*3Y$ zi$Cu{Q(TL~zFzgexaZ@#Z)Lk_#+*0ZSj=2G!P9pC;kA+IANbOiff@^$eftyFHD%{w z4j_&#)ChieP%q%Zz!OGrKe`z|{#b+n?rHJo;x%N+%v`P*NMo$bCPswg)rW2pjVx9* zGyQN}t0P||+(gRrSP186j-0u2P-dF?;slc~S}>F4yH-VFBs-IUWr}m44b`%TU2Zpk zm53ZG%nR{7*A-%qY=KoCj43QzMxnRqOgrh00bdi0#~gDMZ9gXjTdlD}kecjMdi{MY zp6$k1@KLMM}O4t2_Y$W(?k2k04>IZ(yV89C#aoVxc1%O*h+(_vtd5#;L;6 zYejjX3)-XXZ56D#eXr;0Ag5CbqoQv%p+G4TSRX|uf-Wym00YU3ccs8~j_{@Bi#*lD zE*Z-}3+<*W?KI>Dg0Uca$c5Ca71kc0N`N574?&_G;1kH%7u$iWZMNTOTM*Ca8#rmV zG4Ypa4WwN8qJpOS!`g#P{!R?8ieSV;@2zAFDk2-yK zZqQaY1F_@ff@`qf|dwTsTt~9pW3Ca52obmY6oQ(;0tP)41W8`O4}I zd{HX#)TPq{ZbOc#PV94Xqxkzft3>tqQ=ZylENypa{wJ7`00n2PlSqv%C-EKgO$KXf!Bz&3T#5?4i@-cAVqfEEfzvl(I&a! zwPk~FZLAms=c&n%c$QgPS;KR;Y}+EOm)^B;>M~GhiNJ0@$5p=21)fABon>uZc9ada zTod+LP;QSzOoDC~@cYpi3yP`53L73Ts;PDUUrF&K<} z;EG;X>n$$v=G3mQ@u<2$41?_lG=z;y(FMK>B2Lr}@m0{xc90W8`$i3(E2PoUO~Ux= z^7|ui=Gp)w*aa5~Fk-yXMl`aofpBVcw7}LFNLYVkTxvy!*>cy@isqza1khh}DPA=L zJfbz?_U6B1S6Rx~Im9{SPk>mMXc=VpI|G$L>?r%7c=}awU%=W>9S%K9lr(6=`~Q?& zPyzwDY$9MJC@Van4q9jxF0i;0rOzKP<#N441k+agOJbfe8$D8DcD2rD0`Ou8LM`_fHMp*x-c84r{&QGqW>{|CjkbYW?;x7TNM`c?GuPD-;+IdRAYH~1x6ohxr;dt0dZy-)AdjuKwb$0Oe4Rb1uC zXeEyDbpCnI+Bev9HU*}UywJV{O5Unz)Av{C!HFd~Zqe{1MUOYQis6uek0OKk;o6Lk#QS?C@#~+NAMc!GZ^-0ldW&qCOp<$j6eAj@*U$Upuzz2u$YB{grStU3 zYqQoG`-pE6=`pl-kOu>7rDDHEw!!O)RH)UiqF|AnaMYk@86%qu!WM4ko9((nf=B|r z-Q706-jsc^vl&sHxN_Zs0I&-}1;i*D6HehPbXFaK7rhCWigmG4?&3|`=-ChXEN9u# zuyF)SZ7FI~05MO-FI02Ql?=Mt#71GD_6D)WJp;}ajqJE?dmr$)sXH$c!PG)hlZ7KNdV_+$ zqJrQK&$7dn9t)lVsstHy@gqJTF9!7e2T8V4NxzrGOW{6|AB;o(udiumUJ)cp|X51{d(R zfFTw@!|@EY0D@+HMnBbQ|3D3qxUkHok)V_{t0~7}#w;nvNiwd(vouCBC@Hs_d|DUD z`Gx^JrV$O5!kf7BgzLG^ShQ9iYW4SH5&X$OOQeyo6j9BFW%_gct=x%zvPgV+WuHms zT&)Fpb1Q#7gUH#3bI8Hhr&d4BO)S)mOP(+6As)IkrTlft_v+xX39kE`S^O!bZSVC6 zrzguQc0UHEN8EPG(tfNB{Jxc+F3|jAMR0D@B6|;NTWam?@J=5Z(SLu-wMO+vp}zUx zA08FIL)tt!o1+~*PNj<8-J3V&i1=)x={;%ZTIJ^>xV|KAwWCvD&uz1Tml!>AxgSJw zX`I5)-{khJq^Aye9?q$8U*~?>v1BTai71P?Y^raX*7Yp2%gdwR~1k? zI^8~$Da==b9Xx&vIPFwP2M?KnS(A~+Uja^_BR>Tl1d70QH@nJ4f*m-JOhL5oq=rBY z3@!pNxg^z_!Il^Z_DoQ^6-)$B9QKy&t3cXG7orS!*$|RFnTEjt+%?zur*yhXp0|r- zK020PJUJro)^#V8Aml?23@TlfP0?)-pp$GfT`hMsd^lG6C5a9!P|KiAor%q{?hMcq zUx)!O_<&dghzv$RAHW5o-)D&UWswj8`ebZbDPEVCTFgd41Va9z%>t~U0oB1;*EKhS zH6>tGYFSr5szP(KE4#|&oCJt^{`LaYJjFyZn$_n?Nb*50=B zqhGl9pc9J?*E)+zuj$bCCe5!9`*MCLC;T2!rrelK9^$Izs8iCsMJ&+2-u7!4PfYkG zv)bq5c8u@W?Jm``&0_{#s;41lVzi7v8reGdtyv>1Is$rpqD?R2AOz>tKufTa5W}Bi zYbCSH=hS+~Y!&941+7aGUN8q!j%pgYzOCuIjJ^I(s1M?(0&_j4BoNDVnjN^>Ul4~m z5cw_WmzYUGSvJ`EMH_>T(1=bsXk=N29xbycw4M!2L^#v-^0QcyUTI{xlJCAShTY6I z2uZuZVi1Mo#Q>cGVJC@GI)Qbc){F2)0z4mpuK*8M(>d3=#8Uh+E7BRb&hVz&ovZ2G z!Kn)ZXZ92c+FTZ(N3?i``1WJu-M0RY%-+ z1Ds`Jr@$1%3mxbCYl66A^kjrsUhifpKi+iUBv&v9#0`$|V|y!-yR^y-nP4|uw+(uP zz(7z!(AD>M-~m9K&#Mjr{H07J>2{x1CFft2f>9#+BS>0RAmVT>R5=m_NqG#{xoTu} zm_DJ&WU%_c3qJsE5bVxFC?XSz1wwiL5-GgeZpeKWl!1ViJBGm!Kq@zBApyEMrkQ{e z_r6aJhS}J{r09OKeZlmq@2UA=T=xLc+U@y?V)6Zs(>}#h(!V3VoIf-q`=y|I{(OvU zME3OR5>M3D9@IJe)FKP0LeQuFf{LqGOB>f6vj$XT=GT;zipAy01kFaypV+c;2YSqb zMj{hX|Fi)OroI%{OIIWU;F${D4#IVmE!uAv37~CTUzM%3mVcrcuMlNTbBna^N!P^j zQW|1gWKz85Q}H|m9}wCt#E)#PbIA%C^^5CI?esDhOKzo)?XGS8*chCo+}L-bd8Waj zvqJfziF4isJxZx-&uNWpn=lAVPQqH_1aJ4n$ej=2Z)?XjUj`-%3Kg8A?sGJfm0wW! zgX&d4-HF_|3=9JW@kHMk2lo6XQvk%kb7klhmIM16%>i$p12XJt+0MJXm)CyJFlWB< zZ7Rh(inBF=IGNJ`$R`-!?W@8j_5cP*2ueg+8k45#uFh7DvPP2#!16Odm{fv>K?Myj zu>BfY4jN3bXZ{bm1K_tjSO3UdR^1j7c$1IeXa)=(7KF2@9FJAV1@{QnIB}}yM?2R} zvT+@nc>%{|z$k)+238qGYLODqQ;2$r2`%V5)Otb8s`iMRfXeqOH^Q_2iHpEL32_B( z2NehnHiUMw=Y0-&3|(63Dt7qpR@rx!!ibK>cJ`v<_s5}c6J1?7hxpPgaZK$|`e zG+I&^ihpxa7qYA15Ki_ivKG>>NDz*l_omlsy`wk5XN&TZ+586%25an*xm?nI4AMC}YSvZvg zA0lR~{$uqzc5sdubb9TNkKL^D`f{I1i|^Zs`r(gcQ(%){h{Wk+=EPSw@U87Z(W3(s z%E@GrQqM1Ol|`u3DeoHmpv+Z>*)%G?4MrqSzPwpw`|~N+=STSfDh9zVKLIGzaGa(S zLy%!g+U2mzQ(y`EVqB+2SpTGthI=N5aBg^}9U}T!uk1lhF13ELN{&X8`r3Pt+eZ39 zT<7{86yzTFg`7w)=EXl57!~a+ljSb7-vu&Boc1|gx*?#SpjZ%YTi6(+2xUMB6buW% zrl^N(#r*tQB3@gbj02&~L0o$-B@sg>dU@h71FG&tGQ8V`1ynFKfu&bDj=``tOc>#? z72l1cx(2oB#m@$?R*58;pqsstL;CI5%7>A>ph39nDOTAYc{^IW=@iL)q30jEXAly| zE(9&~MbiYhndlLK-Ec}*jw=LAGm~Rg;WiM&u7F9%VxR?%CI(XYK$5bvF zDVo`&O7+S6qR+04PX0y*gE;6k3Yh9;5ny|>Ap*(IAT4e5)5j{>>28wr7XuJ!0mBkM z#(Wxd3pz%kKiTFm&y>uMnI$P2cbT=!&!E$z$XzzuQA1tB36hE4C=Lmxu*OqjV4wex z=Nf1YuPl%%0*Jj%{}=j&APNmpXgZ1{(cR16*1BaKbU=ZiCX0~7Sbryp;w1(l8x?5QCaddBv_qL*vUa z`le?0RtC*SttWiRp9ibImVPeCIgyjo+bkXdWHM^-N{cUPY`4Fx#kxit`%F0@VX%4G z;^8012gM)P(p1zO9gK#u)vf)%Cxa-9_+@mUc3@d!$|dU28=#99?>+@fPn*TwJuH9w zYJcz%n$#ZqDDJ3eutr2kr-PYD|Ik6JoMI++n6xDL&P>DfS(#^%XlIO`B}?YAPJ zUaVl*g@ecQMddyed<7Quy=duKcIZE-EHW;#C0A1y!2S>>AwU>{T{o0TMS_;5g4PYG zThbs(e*rO9P4|~tiz?S0xEenlpZqQt0cy45X(dd9XDBHyl^=o;5DIY$DGPEok!>vC zWdWI^Pr(Ft4LJwcjUz#AaIpp2flOKoh5&dK!*+#bK#-P~@5v$$H?Q3nwD}qritd*L|7wQ1 zb5Tf0V=@l}p&+OS38t?Cn^`Lj*`=P!K`&dc4r(PF^qk_%p#2-GAzXAhGXSdaH>m?_ z4ckX%h&4MzTv*iA!A(v$tI8JTN(wgoPv8Jn-5<#NpZg5xyl4xkXub%8_(4)*9l2m*_B2FkNG3|sKBg2-rqidL$B-{P=P zM4Wb>d_mR`t-N3Vo(#NS?O*8*#4ihd>1yA+eD2LCFD^%WHyAJZ(r7y2injE^FR#x{ z7e%!1G)&2@)GEL1R+JvZJw55}U07LTZde<_CqN&|#Q8>p3YYXw6_`mSSC<(PKq~10 zFgXGkfcofk_=~o^cN61!XY-nk!q}ZSZ&u{i2QrB$ju$DTIHEFR()$CBQk6XZepTGX zfAWS6iY~QmZTSu^s0974RY_eHbJF`!Md|GwF0EPT>ix22di(|@f$K!CXxZcs`G=1O z#y|wz>3liGOyhw38nEj<)68L=u}F82T8jndL^PTK#5B53d-P`MqEgqI>7NrMV1tM{ zOMv5kUDF`lCIX0M`ULGt_~GScv(ywmN2>1cAFp+8PjL+f_U{bcSxZcJ1ykplGtEQh zH)5Ebk;;keCW2ME?;U1f?>U@o3kw_)_49z>g&?mB0nB6ADppuXq0sI;6Mk=A3@_X_ zz_dzGZ&ay~3dpa30+3(394bgn{V{`G9`7j#ZLH;y|SXf71s*HtR@4 zvCCk`fS^DSLW=Ku7u=Uqbnvj#u7p6q}uyD*XvbmY}m)zAljP)0Ikc= zOhf*`#qT1wB3=}Fne^?uk}o@bfETRQa;_GJlOPFiQX*}Kmr&MA1w)V7gID zP5qfcA{73CAgh~!!iJKA9$t4%%5gxwvL6c48n{)Q=Ss49O?4h18VMs2I9&^0K>r!~ z6R}k+LlX)qEUyD(Kr~cfqjPXeh48%Ia_%! z{nEsF^{qlp+pn)XljfF|x6{QJeA;L8*ZdG`-Fe0%$sHv=PT~i7!hl2DzW!`S*nV=w zb0Dkm+EmpE(n()C@=vE9=3eGD0OD7V5wlIUDZtvaelBiLn?wcK3wB-mdhdc%9BgW7 zIOJcx3%mT5i~csy&DRQTS|ZKp&Ojim`x~RJ%f&z*tF1p#!N!yzg*TjBDE>+QE~gV$ zY%jV~lqRJdwcWnHw%{~S=@Oe>ke;@+WoNgdGQJHk=n%@1x9y>)Ud5lu8}H-FaNotW zRyI5*>v|%xltX&hK5{=6EW0E-)fZUV4;F_Z^1u}d&49NDHO;n6i?Gcq(b69}I%A)( zL8iRz?;Vpr*l3KE$9qW` zqRTHwn+0~}1OB@4{*QjO8~5n)f=57ffo+*)bbzxWf;I(tM{W725?^sW2~G`w3If9H zNIC#Tko}nnDAJV4v32tJBN73?YE?D`p2#jbNI^~nIA6SQRt~3HhPaOO3$j22d<&Pp z?RdiEK@_X3yzMWu@m=+&!vNVn4KdJjrvDLpjN5f` zBNl7RgPak&Z3r+3hrfc$S^YE8L4*5|C>&LQ9O(-T+&|D#JfnkYkX8u++-qT^Y}va> z-%Pk-m@D-tRQH*ac$Ni1{M^QWns2RmEp&4u)%(qMe*0QoPFe)T_scH_X>$4F#;p@4 z%v26-r;n7256EsFy<<w(8Qk(k@v| zK0*cv*N6c({zO#ZDt^{_l;`F> zj`_Sg3E&0mZ-+dpT-2D@MWdb^Rs~ynJoN>GC?>=;;EftmM$p80W-h50*Kn4ib~daj zGJZmVC`7?k`lIk?lKu)O9l8@`^-j_YUOonbh7omzsV~$)OJYPd{soGG7lLexdLGJo)9+i*5LRYYL<=3<4eTO~>hzVQR9yhl$X9>(V|CLHvR7G?dsBcayITQd%xpfXXsKX|Q zv%@s#%0_9Vuk^kNx^0XVgWVD4q1@X*bHz|rx02@7yX~as%{pVG=f}__?5k&_4mvMxcD99LT4*Tnx-Q7WS1aFH`iLWOhIm93MO7g%N(eT#il zRT4j;qP}Hnxs@D$i=4b|u*qX_X;vk6ecPk>o5i6wL^UVJV4wV=eP8=bii&6b?hS1| zP-@Q!#v@5Yp&<-&{8*g?1y%9;PWR`&Ev>~l+rH@unSV|#bl=OXCTT0C ztiSzZQBmpXcV$;a^L+ZT`y=Z$OYsvM;t{`<>JPI<=sY1RiCNN{w)KZU#D#MT!> zKM*->Jrfkdv!lX_93@JH6^>nMR8Q)pPo_rufG|Po{H8GlmIp|o4Vvv2Z7W8X&4w^T zOH$V`7=VpK2)*&hZj#k(^nuH7|0}AzXH4Gr3!Uwv$qn0N7R-eq+ZK3(u=c4(2}c9F zgxE2DINE0nEa&ySK0)2?*FhL~uz$A&ss}=aW4r#QTMs4)r^3oXr5%(RGHx`A@g8Q; z80%phxY`Ju6JXf6fEXjV124qIh}qnw5q)dZsfY_YAWwi>K}dlE?eRDOxPptBvb+|r zkp&`u){>Tj5NCgXx+!L>Too=_=-fBc;e3Y~N0a2)IhV|}-Z!!_Tet%2FTKU96>}Tu z(>tZYYs1_R-3!bjvbL4i70(47Bgb4PNp!`Ds@}@NKDkGOs>sVnWPnjL#>DZsP64+7 zq1y*r#hmSqRq*GWjxA?CuYE1v-QSH(GoVJm7H3z<9sbHltHh!`D^^SF^aVi%BDw5VkI%%b!q8e<3qS_I1ta5_V6fuA zv>(+tAX=qbPDQ5@t~0z~Md|(Wk3;|?2Pwq97m}})3NX55V%0>im1%Nho(F-dvdLxZA|UT!t^=FNhqK*xex~A`YJ0P61_pLaMVr_O z0Qm7|7M70-`THILP6Z&$To!_mkR*+-N|u2A=d;r z{eNRA8>;PPQ&Z?*7X?Du>7vysKoyf0A+9f=L*JW6c9UDaY;uKNOA;*nOSOPyjv01% zAsBMYV5R0u-oE+(GH_J<3(kR2`EY>gg5vCC(0RwW@d40bK-U1iGX)+b!)>Ug<7{0} zwrRuUvFF{|?}c3hL3iK+Qkh~xJbe+qXBaU7Qh6Je%I<=MS70zzP)d)c7ip?{65hAd z{m}ZE#`cV-m+!#FZ$DL^?8^D_Yl$ZT?A|xObAR{Yc0;kurt3@1M;j;JPygV!B{U^< z(n`Zd%8}z1y^+Slr1ZFVu!V#Gf6Cynb8w1RnwDhvg3G%!_Nft+{mn0tWb_hf5)_+8G}Th>OeNOivQ+c^pBxgPKK!i zyp(@j4YZL0h5-7KjXzn%{psVtU=7jfMPc#1wQqA4uYc@8NL!l@TxIpz=JE8e7We)z zJk%kcuPh`QnynG%$n*6Ft2Z9v1}Y|3wnlY&cIPL*N&5}ytnW7wsvjQgyQVVpea<8z z|C~jM{Jn6UU_xAg`#k}7r z`Qk$Vmeail#=9*84h`5G#g*N68%5QA!YgunP?}%GGPz;j%-Vs%^(V`U#+eUlv<;mq zPAlN1=Zamv_x-&8K!^OMVg5m${(`w*6{n6K_A`H`xj@`nMZ6W{U!vN9CreW?Wzoca09^V`-|U!sf1|CQLR^G%g5Kij^+6T=DkB=B>8@!LJ}kCV0LM+AyA)7w6^UiVP4QB zYzWIh;7I_G#&~quzX&-)M|W}NuX9S9Yku$QPdTAd(-jvNH~uta)_?u*^HXUnqxZ?J z6H;6a&;8EK{lRbkC`uMlK9zHGqd<<1c=9RbX<&;RUTcT~PnrQFi2;Ngbh5jUO>4@M z(h9r10P(-t(dJ+vScQ!rzw$_nL_Fz~#nkK#sDS`4M}&;x5|ob;7X+&uO;Xbz`)pN3 z3}5}pK1wsbGrz!7zRT0S{iE=nXW_aFXaBi8+Kk!obxnux%2xDMu_sWywmD{h`S$YOp)FK=pe9 zohinXTYnN2=N~3(>fkbcGqsmIbJdgQE8Znp_YL-Tn$6opeDUVlIzGD||F!D()_jgX zS%$Jw?AK81Il1y$=)uaSd5s&9b;1O z%lWIfLd>4-I$hG)DUSHov=!5Fb9P64-C5t=`_i9#7CXgZ8~6IQiaYE{57vo$(2?Su z@m*Z>j>`UDzj=m#7$SbAsF(GgXCzH7dCaAiU1gl|KekK>kS*KTnaV6~j06c28>wVUSStZ^jQ zP2s4S(Qiwsj-%7tJxT9hHH0iJO0MNlPB5)IMJ?5YDIWHlwVxZ#fBC5g*S6#|JvZwW zkv}~@xhRz#_glL?aSD|v?% zLqORZE^Wjc$%1s;3@wm8Dp&9?k?s!g65bVf!X!bEM(qJa7BwRI?dm|C1h6RZCGd|Wkh&9O08x&>bh5vo7#vMQFqi2x1YJu4{KL~A(trSx zk^=H3rjh&vjV$NxBy3i70?OL{q)og83kEcx;jluF6tLo`X*57k0{~c3B_Wp$#K`~b zvA`Wdi1FN8s~l}GdXLKdx;i7XYj1dEVpEDAo0c@BTDPOXQ42hgKgg}rOWY)5u zD^zm^5Z-~WeV<%YBfFX47cg5fKGPXx0(c5Mv;|wI5K9Ht#X6#IH#g+W!TJB3I{o>@EHq)IRG4un!elE<^Ha;wTE4!-T zHmR)Lv+DW4y_G&-09<%#cPe(f?#!9w)Nge@+>&joyWgGtqyFavz{b>uXIG|@R;qR* zdUuLv<{KgcdRKkRiKF+^5kSM#*G5Cgcclxjw&Z1F8|w0ygnpFXUFp?6KO>Xqom#t7 z-!qy}G*D+g*@nL-S5r|@RBtx%DaZVja3$IEM{#<5%#-5kg~fb@w6iA497NfrnSS@? zFY2LV6GiDr@uu_VuG|1P(vyxzjgrpn!{Z`xD4d4}J!kyu6vKRrM)!WN>JyjTi1y@M zip&+~x}b`ojuc10g{bb^3hHi6Auq0NJ`7VV^c>!*6rPXJ&sy!8O-S3ZFYHNR|E;Y5 z^HACDq>jF(#v*rh9c2%Ccy}Oq!COD`a_cUSMPHHd=bVwP28*o*cVGQkm9L|UC6zmV z?1kCWp5I^h52RI_3DEb-?m_x}=62#QCbx?RM<$)f7IBN-zFY4dhBNDj9Opemaey(m zP??{`y!_Rp_Sfdk`Jz6_3Hqoi!8|-C8fKv|R|Cfs#A3)7A*u`lp~fL-aNZ=Z34;Ao z=0MD|gN=!pO6GEreu$NM1Ou3~)I_SfCDqOJ4}ZLct31Ci@He|6S@o$7Bh z!E`h{4I0}`67b;#@r^+RQ{xf97r(64$dMdqCkxyFjj^ME;t&JQF}x6kQ>y=UsM#ut zwde_;1U3++)U0DX%=H1vt&!Elj)5)x7}_QN(T1m z1G?C7dR4{A{$XNv@0ZNq3Y%sQD?8fwk>Y6!fO-v8hlF))k5b6%4KMvTUP(uEA4=YG zQn9@IUCZv5l7+cz>pEBc)2f%sp%Kbt>mYy(Nj{@F0%G=Os5csba|C14|GG8225v`0 ztnZEsaY%;iFUJ^Z_NAPnDmkFRNInE{TfB`%=(y_F#<1;j!p{j{i$2+%2Apb3k~Aez zH5ksv?(dX)WKvSxxBFoaa;)v8_@s32LHB}}*oq#eK78m=QSkJSXidc7zR6YM>dX?4 z_=4Y=@zwk3HBKLaK8JkqX;=#)@0{`2I@3*( zKL!a}8pm2u=gsf4eg31d6Ww3?>AQN9wy)p~Idl6??~@@Yr@+gVB{P|f3RZ?E9PA#u zqCd%nbi}Und7adJF83(#MsvoTHQRWLvaxMguMx&;!Vy=W|ZojskG$1s%;34}cQtj_)4{KH&o) ze_2uhwgf#fz&Unck6=I`0~iOG;0Hco#3WC`A47HjAvwB#PyXb>oiSf$p!ee{DBS>& zeJ}tiV49IGji_v=uwGl2v|*be)M-OOuN-R~&%j!GZ{J2>6RuKYBAmDU%Zt;KNYC zjSGqXq6QKQl$j*@EXyi3aH0$*O0&%34Unie-o2FSP91yKM4zxNzo_>Elb1g3s_1ln z+)i4zt!Z%Y2e#Yy_irA@yFGB z5=+Z#6iS%m4Ffm;(gLC&dnAGTQTg4duD%d(;;b7Gy1?Q}ISOJi1n4l!G24CIMGM|# zr~U6XvO;m*`#&wQ3jS#Be;viZ{KlYk(VK(pYrUZTxkl%3dH*2kP4U3I=ln_nckx^9 z-@iu(?>eF<7uURfE0c!CcMh)&Zn=#4_7gR|W>lQIydK{0sXR9?EpyapXenG|Q`yg= z^L;9*xNE0)TKPShXrV$b-nKBQUrq_@yXml+{W8xsE!ij^*TL2}GLnMZjX05ZZmzep zPfn&~z!tj)2%z;}?R5;*rG9IiG^{@C@%Bc*CUSXNRPCw#n?jdIUQyPff{c?lLiF0o zW1WspGW}xe?&UMm;NI{?4wx3Y>i01Am^2?2tI&TmC1An0S^vTWUy^#G>{3Tti@b=r zbf#Hb!E~IVx!B@yW4iSEp~f z$vds8tPGZS{^3z7l1ucxKCL|b+nif(UWIRRbtM|-J71}!ed?g(o8`sX`qcLg+AAwb z1JiT*Iy46WYTT__1|K4fq&d*53JxB|VVLtC*hn=Ve3St(XgXU*HkEsKuCX(AcspgXq#FS(srAmMZ z;9nRpCI;G-@PbrlubQ3$u2R=DxPueOq`zp>73cIwHcCT&gxluhzkWHI3-ediGHgH< zSj!3Y+-?2Tqeav_2Rsz>5MLa4%F0{t6+Zsh3<$yC@E6EDP|FzsRSz#e??%lCfB-cB zkP|ig1Y3>W@R}Q~vkY2>jQ*fC{Y^D_u>pm1G+=v&FGMt{j`;M`;$UU$f_b~#tW-_s zTIII)=!a29+}7RFrkA&D50$U3`YG?;=t~$mQRBS*3rrCS@Z|v1z4Kv~1?Z8x!ZB2C z6%zn9%#(;BiLgm(=@tAA;9}`!*KUnj23;f@1tS&509bcj1I(|yyibjohIiM$OboFg zop36zl=kVJc+<1Aow80}?7O^*&f(Et-d$HzdAXzHGPAvHF~h2@HG z?K>}@yAjx-2g}RDuT1P;CbhA{CoWkrwC_+h<;k4!^r;i#&OEd$un% zZ>4w5&HC|(5Bpg>`MLQp^~uvA@?`DNzDw9Q<$ zM)6bZf$X?4frCYdlP?KL)S)N*O>if75|@sNgf_+IW}@;FEd1roO){ILbRHRf6t};Y zShKIW(r$pEOiId=E!rsiiTM3FjTx_^kl_oDa}+$xW1<5WqlHDY<`PUuFXB?A-0Ve! zW=cEQwF<8I45~f#$s1=>R-f~m_Bv;-=0@}r${rQ@NJ_`TVeCecFq?I`#&S|x9S?!b~-B;Q*cMgo>_V~^wUO^ zP4}Qnek!E3^F^}hvA(xv{DwxACi^~rS@RODt@`OOYqWz_S0`vGy92#Z!QIB}#w zARyy-g`ms+$#4hAzcz-RyZz`TrOIB`=n+n};{*t@Rg(?WnxdD-M121}`fT?lTbC}U zKkYjP&c_EwXy@{b@8&xSTIzuigKK``@bd9mr5RVOq6J@E*Cj_OuUFQ5s={*T!!DOe z7=gb2lNpC201%+Vhs)WafB7$rcVO;-z(1DBQ4lsdG_t|qgPO5#_Tq}N0Z0|Z*5&{F zI>UjtqHjUm)7T$tM@(`hDQaky^{IE71cOHKfxY_T`Qd{*j>l}%>ksZ8mH_~6)F_wA z%Ub$~`ENq~^5&C2H@X~l?`?3=jx4VVRkgGLiaH|KA>C+gETBXu%5ag+kj0m z5v(8$TZ+%J>U)2i7~{3*Kw?1gG~hzSi8GshJt^dvlB$`Y6Fw_UU4d+Q4oJR3=WiZxTy>whJFQhJcDnJih1AI$mu6Bj0~GvT9y3Nt_S zaI56^wIT>rBXHg0c6T8yeFmz74meP`A|15bw`VA!azZGk>=ukS^Q}b@w^3%@+4@oD zuG{f$rZ9mMW=uS1=3s!2u6T*-$q4Xe0B(cVZ%%Y;y<|VzZ^bLgvQFDM4vV9X z`A&7Wc>0<~SbPqg->yA3(;&6xJ3F*RaQ8O3_T*bA~`T#f7R zzFX(+-y2pr`!-un>$G26bAAerbX{^Nx~bDT&Dr3}E7#!%G7-GN6Q8|j#*HkkgY6T3 z6?Y4rD>rb)<%W5?XCpNg=fzg%J;W05VWY~?-U0&QqZX!J3%(Z9_3c}a-zkn1 zeVXqHi`exX@;KuD?)TzkeX)63ns3arKZ-FGHTY}fxZ^~jBArb6iPj}!YBt;u?6dy* zuhjT-p=)t~oXic_xWc^fPK^@gMCh6Zs3j91TI<6yk#LdI5fe_bQ_$7fa25!28u0zh z%@(|P%Ouo+>0poK$YPAlg-NgQKePbhJp3ONTB+eH_245SzF9W#8b~ZayCupon~zZB z3gE%OBu4?(fWXGv-Fm@R9{`Lu#s+xfx8I@W)h*iQXBSW*e~#C_-#69kIA+cvd3@jG z*_&@A!M`YgQ)^TU0-vW>%>Y?=kSu1;fO8taf-sxS0GiI|-7+I!3IH1~2m?sRAR!2j zeNY(>;Aext1l@{m=|HuBxdOX%RYU*~IAQ!z(%$8T=%sIaki-0}UTeZ3m-%1MRg|`K zUI_q_H7aN8p`${UkB^XypYqm2U-M!c`)O5EfLsi+KK7qpiCj z2qWNpJ>eeWzJtTtc!0%&e+{6Tdo2J(kb;^rGmZ_nI;Xz4B_GwPH;qj&n`11+^E;}D zmTVtdY&d1}{VS#1O!CE&@_Lr<;6}v$(1vuG#hq@`g-JK%qk}SANJmb01V|}A%l{8EtC(?QdW{vZqy3IZZ_>&K`TkBcIcMF0k{XJk~8J!D5 zh6-{*o>k+mqa9^#@Jb*h;;~FU_b~*(5TXA64QglvxGt%a+jwwV1Aq7H#(ZVb50~6e zM)pHPm2RZ51pNp0mFs{Jp`#+|Ct4)1-cYGBRLnCmkRG{}Z`3_7uD*7EUT*hV>X)Kz z#iSMQ`d8IDoqp>oDu9-pxU#xaFU9kDQ??;GOwqGONlB@atSv0^sqa?2uwHP;we`Nx zYXVcgJT;1DgRiT%id+{e@%Ni?nK1>O2VYwmvL)ZUb^h_?arwiT<(>-T;N71sFiG%>-B$L+@TQM(wkxYzOTn;zGU$3l2?~9pYe}S zZ-%&pz|kQ7w$7FTtLGWsujN{P5kDS!q`{qx4SPUe5}OvAJPBELXdWHT%U0)+X0?+M zyl2><`#bQUK%z3|*b=Ui^6<5SSqb?`!0;j2?^7YHvmJ_QVwLUmwq=>9@hJ8rZ`WHN z-wywInU7w&%FlO>GW!&ygw75>Qt{WP^rFpKPHPrw4bM28HJ!?^S zl~+fyO?lRD35)GVn+B$4R-c+PB9jlCxhHe?VWecjS?||nl*&}$zy}92uT?+Tj8}=? zxKewnLiM}QmfGP%_Bk^$Y(EE#zMI_hcxvI`IIDeL;rRby>b>KVZo~F}>Td5eS6WuC z+~&xcmYL?xJy1zaO$irnQyY#-(>rJGEcYxG5FC^<2U;$Yp*e67n0wpzqWgKC-;aL^ zUid*l&+EF*^ElpzNLluB?r9kQx5lGQGXDa@uNIZ95ztGPVwOc1orxm$1JjrvMVX!UTvCAxn5 z0?AXE6udTo2u(1raeuq2eG~H616=&q1pSof3E}Or``~XFa-zB>=+?khXB4>8jf@In zN2?Z})qi^Q=5xuZzqRJS!2(#y#AJZl46JIb%Ea^69@y=e3C>LaNP_uZFKg_0_wU&8 zY$R~`+dbK@|L@iR>dapu90%x^IDh<)w)yK66iQ|JHJsoY8~bHrg4& zLN+$C@6NPKp2NR5-Ky#I^xXgG0#pAAti^Bc^E|+E&+uSr3}9BhYh$^h4-Kfy<{eZ&r|k;R5}8P+UTn3>zgb(3{)t zLf^m56S9<)kpDZ=u#Fy&DFy=?a45TmtkPTsHbnR6nLHpRI+h0tBa57{uXkpPhgqXs z>23Mzv-#sOiUU-?X1ll%Y2#o~i*rcT~ z_^Q&wFEx^e!B-1puBoNJzFBGbopjy2GCLLi`AC$6RL~z3ewK?;_C@lPpSbc$OVh@_V zl`A!4+W|`@e>8OMb4wT;8^~;ZjK}U2#SBlvs5R>myw$(Q9x)Ij8#fAbGA#>$%1a!D zvdyp0Huh@@SDCb$X$-ruH@&&i5T3vbg_&708Tth{d^+{$Tg*~^d(GMA;fgd4y`-c> z!MYC!1Lt#={k*g1`>u{%C*|X!gUg3iCO9sb`($0^4Cu}fN=1H-mFbS-qDRPSMifLR0@|R zSG0RpGfW=&HP#Hr;ZvnPNO?|63mn`sHvhPCWjuK>|6_P(yN)7t75U8vwwzA<7<8e&GCnBT%y2h5?X7)I+%&yWp@l{$Al!r{ zTd9V-+>van&AHg@TP2_$iv4Z~E$+7xIf|l8-$+XD_j2?fZdjkHRlMGKV{c5yv`4k_ zlWJx-|QLDyVx%1u#AnO~^A2AVb=j1S85~E6A3(Td;?u>Ou zU>x8b>mG=ddMXEn5zv;=Se9ba;dOE~%XejNVFuqP9YsN4c;TZtlR9RaE0Y+@4z~{W zG<%$lgVF=B17`@>d(RGh05l))d-#MK^vJ<7S$q?6;IHd!ALJHK;_&$$S1WNDotl@% zZHYCSmn@FNQ6?cZ8Pi{fSnYYpe%XS#W1qo)1ROK(m4g{(hut%1j2fYC?e$xXFq?@? z-TPc1#RCm^??j$1_Nym~fhG8i$?p9yRoLL|OThk?oM%(5C4SYFvJaSGK{r(Re9{rH zwE?2y@g#!)(CMhXYj-pQTSAHj{`ojyOzN7xQ2wAx{=2VUWVMC10T=|z?&E!WS=f$n z9dhA_(^4KNTr4rHGvecyBJc|TTeo;@$}tDu2!csJOCxj?xLhFr#}I?aIpwkVEbx;Z zrupeeS#savR@fH(gy~vMh{3P%wd*^6;frgPqmlzfrw6w$o?qILUTVt58=>+Of4-qN z;w6!A)4HUiuUdRP48VyB?8T6P40rPGwDyxj2y<5!g^JC@$BM&MQ@|VinWrP7mw@vZ z@XVscA|ZnLGIf=ndk0#syQGr21)C3s^a)MXs)a{wWu%cZP`H}hqC#9p5q&pocRf*O z`S93SNMmndVRU>^xB2*YiAy`g(QWL6)e3AJ|MCxnv--!5_AYs7Fi=spFD6VwZ1=&^ zjzTae?9N8XfZ->*wX7RsuZ?!KHZCrlraDN63(zgtX2TS_8%sdx{Qn6mv{*wd$iBf3 znev0T0WrkfU1L!0LAh_|d0*72Q2hX{2jo|We4>tv@a#X*{8#aNgmURWsWi)t54-&{ z{0BIT`glryUnIks)uwo#uuAF$`DMg6`phK0qSbqSTU`Tcz<_<@_uPF7o{gsV{()e+ zg70`>?ZZkL7sOM-p|I912hgc)$s~k(0nUNwnmX}(I2C4sT{@3rjuV(wOa zjqe(2WOu_4IJ|NBwK}P3TdtUJ#3I9FP+W4nCH~%d#|CBL9LI9U)C~!NtZm(7hEya~ z7}-{)r)xJ4Hppl5X>0>4haXZ3N7+a)s&C7_s5tZz0u$TbpnT88`Z4eOvgzMFxncyD z5_hu$nZfK&vl3G>D?%N8+x74gl!=#?yxvJ3o<$``-dNo&@Al36E*9Z)I@&==h|k{s zj&(~#O&mITdg5-)E5eVfW!|IbGF&z^htr$s8K%jieMjiWN7YTlC0)MEjDB*o_B7Q~ zx2&j-y6B34rP{tkG=oAT>*3DV8O7*3PiZoWkVY~qIFG+na!7PLJ?|g(>10*goz7N+ zL4C7+`UmBS>YsXbj>P&oebkyDl`X7k$--r)1fAr!X@A+eX!(GVR4l5#h;urU$G!iY zvR>=#*xW6S-kCe>NKX!@igCNV6XjVSCwMLNFDi;>eT!9fcUWPfNEFJp*RAfDD$NWl9~090H#Gku5$&2lg2H<(2McgZh2w7FUcO>qn_phmYWQ+ErT)B z)1WTh6@ez7Y@H9v9%I;_nkn21Q>indAjuuj0W{tXx;t>X7Z4>JyxORNOosIEfQ2pY z=xD~=%dWYm#`?aF;A~Hrf^Pr@(McLQ?_StgB(8OdH8A|!Ko9~0#zQO@99V->z>eYJ z>o$Yb388B{GHKk}0;*2ca|h!b#10v}0(wX-!R}mHFrm3l1A7k0zMuyKkejTUC#m@n zY|ZiuUJ@i*ebaGnE1&1$`6_DtOY>sQ3T>{m>J@CjqBCCz$R#s(9_W7w(k5CBN4hQ< zFZIMF>9%s~PH-JpS~_w@w~t~TVV!$tR|{O6RV-Bh9<^8wAc@zy(R!d>{STDqFXRo} z1Gdhz{Yz6^(a$q;HIYPrp(8Zq43%5j#1XRi9LwSbIzXpTWPn^eo_PBKhgEUrYQH>^k$N zm~~bJZ}Z1dO>iV7pFcrO1|I>CF5AdX{isD9iKF_XOR)K=k5VTj(%>yqJ7d&Pey)Ph zkkoadHsiXb(A^5P8LtxH298_XR$b&L@P|ZT6`47O@nbe?JDma4-qVDzv8iPr{%@@6 zH@V!U?nY`eS&a7+5 z^7DV8l3yXIdIHxPzD7$={?21#eRzQH5p^j^%CM7n_82gu`+XzRJyDOoljmR+Wuca2 zm(==7#EOCtCR#G1hxlvkQ3NUw=9%*c!Zf^-mnTN6`Sb^p9^e!B&)DS3Uf_hf2zd`? zFFi?XVYaSQ5DB12&#%98Qv~)Z@1%$q#t$3GMDU52#svy|*O zCBI0Y^tZ+>q*MLvOBB5Hw)0b$s=Wy=2AZDdoKlc8aS3nI!z?=8tg`kZdo9xBO_RKY z7_Bj<{K_S&0(yE3+@5)>97Rg=+evi#3m74fmYE{%bXrO>H%$wm6I?v{8PU@oO)dye zk5AtoY`RQO9_#K5)V9&fjqFm047mb>l#IQ-$y+{Z)nQ6?V=XGjqYb$?ixgAG6R@vIGlTgEs9#W zYtl@24*EpT|Bvd*;>a%F1MFMYoSX2@=-y?4E4p%TwBDY1dm^1}h0rU?ovIyJcfa!f zsoc0O0UwDNPedm#Fd6>m5&K`0C7Ap?C@%)k2+^M+B1Tfvl!0SXhjp*%o1%D9&01 zz)h&`Y+acgsSX4F<|A)H!V<_h_xZU#f$!sTF#gSxRTF#9e_IN@%lO&EzL^W_3MVcD zs0=zVbn?T@6Hut1R0G9P39n0yf^4D|;pS6q=ubg_n(7B8B8$|?;&w~0V|)Z&1}KG6 zdi5=7d!#Sv@cc#XznWFJZ{_M4}Whwv8KEcj_VvLJ-b`W+co=+AYtdC3 zQ9ko3iEZ5NRo}PRr?`pVNb5(1M_a`Dc#02qYz*y}p<2rO>n|URRgdTN{aQRmH&{N- zT@Z8#8;AZ_Wu#?SbFGCac9y$MIjEp7J;>or1HaJ5EQc_A(RE5g$rE+!W>X*ACF}SM zUivALL7Uv=Xp!%V$7A)Cge~Qen@%1RoX5=K>i(JX;PMkcyzLs71|36{O1iG(1(njz=}Do6*>s)uE+G-O zJt`F81)f;yS?Q~sl{_!3mD0M*JKkUWUEYPvF2f4`4(~~3S1Xg<=uStJyXe%_NpUC4 zp)j0Onfm(73H`2WngWNu8r;8WNlZviC(`#`ve-|fv%MN6w76!JYi{jp$IQYKL!zcB zMd+wv=VePd1*E=3*Qj#$`?Y{hA)kjxqddpdETy4S0v3-d{_?*L(k=taJ0Mb zzVz(7c!@s{Q^cw>alKmbzpk@zvEd)_KhVFz@*H1x4T;w` zIxpoj?BL7SmM}%4dLyRW#Yr!5QhIhfL1)8FC^VJs7imWA+bNvJkeV2{qAkv_UOLb^ z>+ztK!oWc@vrzU}<-qzt4Ar)L^x@om*^n2*k}`KLE<<~InN|@YsXRQsJbL?A)$yrp zQl>kJ4wK$N{U{hR(UW_;GJ*%EocUblGyC^7)3d3Zho)McD8o9m z=F9(rXW(0TT;JV19`os}s%B~V7F&Uik2irK{QQuOm_|h(64XuBOMg|-0tgy_@95pJ-wi`BIG zi{WO;ex87@QnvS7Q4~I;$GQTb<=)(XTl~81Qnl}1 zHo|VG6`h@{#8PNAeVz^@f)8HJx%4`7ElN1M%WU!UOrkJW+*!W)dt0ts`Ry{ z_8gzBqPWFjgggWBxbxnwG;wQd(_;revduN{NC$I6n)`s~i9JDDPhHEybD;V9myQQy zE5D8iyv=h$WO=vT%O9M^hAW=1K);VVYx?@$dyboV5UM2uCB$sHQ#b@PPfZ0B}+;Tg-5Tlib}V6xM9vW@GQW@`nSpc?8Z6$8g} zXR9l!A~KN5~_|w7#r_y|{C@y;DR7A4W%X?AdGFgqU ztGQiK-N!g=+FF;5MgOhM5cN*Xg&&VmeqYu$X}g>##pcFGqgg?|#5qk6I}YEixOyv1 z?p68E_iVGAj?qKc(oMQ*?R><>Gm|PTU>+#HXD76pqi6Hlu1+*Hn+U(|JHf$+d*c&r zFB*ONx#tWiO;DZFH(r>ntTZm|oruBcw%MySlw?C@+0*DE;0p4{)kEM)cYYv+X0v7K zvJ*~k#VsYP#T9U#e&{x;N5?6(iF`(g)BL(^hW>P=ZuR4AImyByIm4BV;|ROE$td3n z!uZ+Dov3O)QcE+%6T9YXSy=SbwJg&;kdnEX7&%Ygz4ThEz%(te+cGm4_0N<`OX~ah z!6DoCsU@*J7i7joJYF!Z?C7y&Wk3Hd+cm|DnV1*g=es3taeF$kVIO}Z+2bX@Ya|L= zL>IEV8-BOO)}?(vI46z6+!6L9OfLO=@NX2Ajp?rFudHQtEXBu=2V`pHI*p!9g zjo_N90Hn1?jdppc!VIG!%laBA{|Z8*!d}(COB(kXC<{`PqWv8D4}^x#=;37VX~wC_vtgFV@sLdxP3kWz;ppY8-%7B;;{XIu+{*z5Ku|o&RKM|6kV=)X)oM ztgryU?geM~!_|x1X?ewE&kgU}2kgKJYijr#u&Uk08OA5;O8k+w+}qvc(_aB?bVX_; zJhyhqmNypRL6el|3usDmqwO|fic&&(j7p1#u)#e*G7dy~zK+q7u4_G&!afFOSRd{} zaY-Qis|I~fma5%5zmr93RPh7fSm+xct8+|l83M7)%&*Yvi13LUhm)4;4WrWR!wVWa z)qX35gwD-e9IIMs3|pJq(4pd)_8D+1V;u`q3#p%2x$&?*nsB2P10M@|0GLPiA2tER zm)fwTlJ*CZ83;#A44v-Y&27XKFo2l5V8<#qZtnLMZr$TL+0%{lF%?~JMFQPJfp*z% zhu`F(hlp6HOGS6wsf=Jo<9PP~5vJVDP%|c5IWX{+#C9Iw)LLAJXKdiTHbtw9zh4hm zz3uJ7Vslu!;Mczrh)nwsDW8?IQ>KS`waHLaO|(pA5!QYFTg(` zpz6#5MOT2|hks*J2#%AQD3xR7m_q^N6T_$O?u*U(eqTFZvYO7cw1MO3S>gyo^zMGL zVE7xLZVhZ&3d^h#Qk6`RiY+NC^P-7VbE;DC6W-566Auq-md5IF+cia>lVT4h?cv^>DFpt8~^t-h24KlE}mlh17R;0o8sat z^Ab!#Xcb58?El(rBch}kZ{2k3f%7rNYs)IGxzn;)!*))yO`hzUE~b@sR)Vvnn{!$H z1!Bo4v0vU-s%HySn$t3(iPP#^4F<3kvY3HnBS)uvUpo|B@CyJ<1!eM%Bh58O&1W3?|=uV~wScZS-Ze_?!D)9u(a z-S@reDu+j|i`nd*4V?h73aL(pH#0*$(uTW=(EMZb1D6MU-DHWqe%=zn~?es8rz)>y%{;Gub$X;_`~C^j`>NiM4ZY^ z$%v+4OKXRLX{Kch%2fEuk9Iaf`Q67#rQfe-rXeGl_CK~#LM+MADdLY5bwcz$EnHb? zfr()_;N~bNhS}!7dZ;+zveO5e?7}ox+QwufH?I#}9h-jkaeSRJ_ecm)f+i*B@I1kG z*B?l>O(`|4M?3Jnh)3Fr`hO{HVRQ(2oRnR{)r^D&x{!|z4^GfGUygLCag?kT4t;`` z4(L^SHbdg=yLexDTaLgtEtCk>3@I0V#q$|RvY+}`st=-WQlTx?1>YU-U^+^u@F?@F zL0=$}vWX&gzZ3Ti_0^TYF*oY>sA-4)mP)`pN;IE=gIXZ0-qq;M?HS^y(-U4UX*e#KgyCG}lXJuHaX4Iz9BX|sKkGkB}huc;f1|D05lz0~pml@DM7LaYHkYrY-z02ENr z0-=1n!k%)pS4W(=moo3EAAP;@PWPo>;7LipmHwN!Lqq`d{LD`UPdZig`VQ@3+l77FIp zNW8lj2qokY!;+V+>+VhU>iod?xzx~r)h$f**!`>4|aYy|2?Ou-a1~ z7m5_@&JoUpEC#9)E}$wI`iy%YlbyW`{rv{|BJ^99`LW?UA?t=%fY8w+zmV0z}D z0kdPk>Nccn9&3=%(26?Cg~0D}Ay!Zq%A1AdrRAmEif}JRgb-s*N?}4h1{zpWc4x`@ zBbp@Gc#>NE+t3y1AdgKoj{aCO{IO`L{Qz&u#x&27gJ*HhZ!BF>a**+-UghZ;xwKi{ zP(G-XPn(`iLbg1WE$hy@{;4JQGF)2BF~MfqtTv6U5E^vb=ggfqm7J5uk4#LJaerx; z;Yn0bb`5SdQH=9BX_UT}pDHDkpPyZHl|Ha>*Hg=Xj^k~-{AW=IQQMkw%s)wd)zjyj zUj>!azkr{eVyy8}$M$l)O2Vo$n>aGuMUHtkox4J>B>VMlyB7tXzP2GrH@p$Sk673L z70S3cHSHRIG9or&wqtXr0DK(Cw&6tw9j`wSIrkF(*VMg$Ok0u(cW-P^dQ&L<_i$5A z=&CbOhX6~Pj?Sp65#UpyK8jN?Iz`VkO)i-G3Ze?12ML4UmV)o<#mOz1W_-N4sV0EEmCqt1f&-q>`X)Ta&T>)w^7 zi=lN9wevE}oFOSGgwzjX{!X@0t`l{JnCBT+x0I|7x5n~#sAl)F<4T%-=-w}iJE%R_ zbGy0Qx5((gHM?Dh8w4EYZi1t>Pvnvpm*tQX=RLjhF0{+ly&rq|(;-oecqup~$;Xnp znI-bCd4^c~HC?P$sYup+&6)rZ)kl@8VLx|3$2uUtzRKSt{Ek(e<{c~bdGYs>vGo=g zzEjBx)}69-&89=}AltH|6N~GKDI#d{C$J|Men``)jitIum3pT!B^b_8sOwX6%(9Ohj zPwi9A(sX@}FCBzeIWjLSc>_&HXPNFoM@3w$?g+6tk^y<%7oB3LZD(Wgsw=``XfQG_ zu*7|bayBW_+)NUKgjsM@h)BlkqQ8@oH*L+iG#9G3uF{46~yceRSng;hOJeQ_|mXcuH41Ro}h=C&%g7jR+XPT$(<2Ud`_m7KAT;86I$%EG~QGHL{|)o_(ro@)%aCYQJH(m;#)bo0&DAIOXCDlZ&*$bYWK z3|BO=v>md*AHSX3x)nT{3oF3(6ZPoQMoB$u@FvtEW^t@{=@+60V(^(0= zTsDb#*9`qiaP&r6R!TsxbRx!=n%tO(qJ#nbPPav;+TgdvZ7^`0oZU5^Yz%LwYUGB4 zt+X$G+NPk)I9&+t(;~1uhTJsphvD|5|3Kn9V{0QcHgmC<@Y|--tDX#GW~sl1;+p#O zUdnb=$xa|RW-QreU>v|s4bi#0M*6iy3MM$eOw;!90}9+32Jou=1>;Zk?uDyvS!EJ` zxzF$iPpFSPHDc7QvpqWkKtF)tLwb5*jRJVz}F>s2==X&0gk$o8)ARSir8nJ!=)IPLZ8)19%8 zvkN_|!MhRJxdPz*5m$ISkg=<13`NxRL%lBKxkjgyh<*}>#>W)N8t62SZiO(inGWKO z6k2x>dL%a3;C`TY$4?Pqc5K69D-j+&fYjmZH=Z!}^nMvxVkBRl{=O&@?;y>_?Jzs8 zjLdV4%m|mcV|RhVVcVt|@A4(umGiL@ks=;XV{aeVHZ+T!qV^*ii+`f*D#xboxquB4MILW13#}8KB9;sM-&fc zcq+c}uW6^MhFjAGROo}*%(rSGKFQOsj?ZN%BeOw2ysmE3PxguBAK@hg*JneAMlDG(f8Qj=|lPl0V(~)p5eb zABnTaMwsm$eZyhjIgX67;I;_4CF|GaVP-bw8(EmTQ$3l-b;`XsP)I|rO{_L4kBdtn z!_b*amdg0~q}$VD_?%uDPM}PeOQhwf&W44v;<8HhV{tWlWI?VGkCT!mub=OrqCdfz z9CxHa&M$usQPwILKW50z^+DhTDyVi0QJ9RZ&^Q(7I@F0a5F(ntVZ@hEG0)_ig%APN^G~;dl8RzYt zeTxvei?a9wxx(ktHE(ZixQ0z1cSw#jL!URKKDzBWoO-4n8sy7=#7N$g`Be`)T4~Qt zNGzXwTTerE;pn7hRRk_ARQL%kGcgeQNWSQ>uO}DmiGE9_hm^m^% z=TdxYQqDDm?Dvab%e3s3BAf0};5>^wl}YdmjL|Vfe0Q01jIZ~m=p)0*^O^K4qGUU< z!z&5;`Zzl_fA0<_`RuMunkoto0Ktg+<>Y3~yh5ngV$OT>pQQ3BkkrK_1$%=KqKb;4W(&JZ0F4 zm3aXYcv#sHtea653+O<;2j&ng4IGQSn*q)!-7c*D9@x19tiOxVsIcdVY-4e+dq(`| z!7f^2>A@3JgKF*nzHe4yAD~kU+VBzN|K^dhF1xPr zZ7|A>4mjfyvQOt?a`yaJgh#`Z(wY|WNG3W^$ba1|_n)dX(pYa( z1ZhvYW7K=s>+|mR3N*ax1MY&xo3(KK65HBN%o6`+=i*&t+wOM^mFy8%NO8^Iz6gWc z16Km9jkP{n71Z?)o4IsuamN-_86lktVrio48l*iPdx2G0`ya?Y zd_`)Y-}Hqw{RLgJNO(Z6 z*(8KHTgaP~f_tNk*y>ro<*d6+MV%fFBRCG;e);7r^}~4b`nKXq{8oLoA-s@Yl7jUXnMpgEA17&K zWcRZ;Hl?K$&%te4EG*#OgOro(vM!`)r%;Z6i7ra85&GHYu8y2_6Ay7$FVJF^3z+yc z8<}<|?O)f3mD4L}?Kn`hIOux(nR$iXq9^vLaKd4EEj!DP6&zf(Wdhv91U}s~-J=^x z0w)V*Cn7y`((^u2;iM{z@!CofvZ8!A^>qodNoYmI@cO6gV}`2uJqOK!MbhaVf}!Es z`yvK{_=}NbUa@Ym{9bx8e<4kk-Zbzs0gUc`!>0UG;t41mR8mCFlk^o^)V{u~;U1y7 z*urJE?z@_1$3&o+UaFa%&@7ucj7$>D?c>*M7~iu`axxEp&Nzywc! z9FXQmgg#`FJ^FJ8mT-$&_-Jb1UT?;jy&HqPyHm6U-yWZ1ro$7MivT)kbz+2e2Z?ao**wlAM zj7w2uV&%9?tit>j2*epVRW>UW`U3yD)cT)>U); zwC+dhzDvh@`N;1ra>yBa@wSt#w~vr?jVufC1>#bERpsa6iukuFA7K*SabL^vOoZi# zo>6TczQE+U`5og>-#uAyMf96_;3#7ip2&1Gt%!z$7F*Zl9{gRwC;o zkku7+%rnhT&Gv=Kn-BR>M!zbf-&-x;jRw)o!h5M?-zM=FWg3>^iYlU(1$t658gG)S zV}*><*CPyjQPb)cQb-F?RZ=Pu`Ne7wdBsJ;m+rR4bXT8^%#7UgvMi27HHJxe6VU`{ zsK12Cb8MxQyAt}f-pU;PE!eD!{FJZCMjYI>jkjf(dpZ>plAI$XZ)g-e_H2qrkIocT zIHTu$0#_(l?&^-`MEjlXpsEBDJ|}%{JF&jSmuICA8Xf!6qq5o!%497;dk7RM0rBg9 zk>7X0R01t&|1Xnm8C}YTw|!Qg?KquKEx$u37EU2B|%Km5VedCLZDRw%lv`F<0Jg(@?Hmpcz0Vvf1?T(hKslnM%-a3-y?JrfiJ`t8Xg&Eybk5~x1Sh**;ThW+0=T6qDFo`;jDQbPZITL^-rycjd@Pm>` zx0Fl8^IQncy%i@cpxcmpOw7FGfxmhC{IYKs;dNQr(ULC9LpIYm5ixed8ReRL%|)jg z1vbx1xNEeZ(Xx2867=SLpmz&-@qjtS`F3!{1jJ@zJC4SoXdwD*r$gk(sHEEa;H~HT zJrcIl;L zG(<&z9kr!^kPNfI&cxHR*NA&Isi_NaOjHfYwi302+b$*!zipGw3q3A{Tjg78%Ix*p z&bin$3H9Dat$GbUzR-t~dMl`p_(im-GLriu)cHmH?igC+8^MydP`zKeTUx^?$UK(& zvEJZKOBd&X)py#weTRv!eI;7#1$S<|b7=?ywkf5_1^p)#!ohf$nLuWh!9PK8V>2_o zsg+gf0S|GPULupHAnCOFm~=hk7cnH1AYX5pL)W944>0mVB|7ZJLqN1y`|uym0r{5HA}zIh}s1JHLUj(E24`ek+(!@kH zI~W?so@510MIyQlaVE}pX7jNI-YqkCJoz}pc9Rcrm$#OxniXr+r&9g60UT7&i%xi1(<}3NA84d!!;$!{16r09G7!kEbgt- zRYqAnnbe8R(Eln1CchqgZpWO6N;K0GLW!wk9!!K(c)#W+nY0u3ZinVA+ToHdL73i} z9Y9^}wRWNjf86BNtpxsjJE@^nh0KccdbZZTwSMXsLVX9Y#etfsi#|#cnmgB?)r)Wz zob0))T1-(g6tS`pm7fTUmB~HzILT|uDp1|X_XF&Ws&ZVQsA0EZ8OJN)O6kn*NOF(s z6a#}=YpX#t4tb0)U(sxRc{y0xvR9IHUOr$&9;|&!v|g zNv7^{n%V|jO%J-ID)ecR?vAVH4+SS)`Rn6izcuZwJ{WtwT7gn?Qm4tatCHq@8TlWq zI7oY{9W7pH+sqr2M`oLFx->93HASY6C|GjeN!l6@?Y`e6=k8l31?KmO--8rYf^#mYgSUL#vG!|Rx zeTE!4D`puCc?!h3djF)t%oK8RhiCdD?%n1M_-FCM$?cPb2Oe5dSMoGCj=lniO9;y* z>j+jZb15-atoFW}U`^_x7sj4`S#mb%=KonNAV*s6+1R0nwLu1h-{ttvPgw3KVB3kJsq!_HYFBVocxaR#gFQtssQ# zMPW!W(ez|>w?sOf78Fvxw3gLW)w(-|8=-nMZRg!_DbjNdX;5DyS#^P_TyUt7z#44d z`fkRnw(tsfg_zdu2-xP)&~Rz6{#_p^-nHu3{Zcy$h3|H|%!ta(2k*WPOz7I)Jq;5d zpj3p3&!Z%(ls0l+qN_y4Yd2gO?XO=s6f}Jg9F`ae4GGb>yw2I@=F+z=nVbWEt`riM z?Uw+H`L?!7E}D$+i>M0;kkt2EHQg$%G&|h74eNwg851LTcMg%Ae(VJS<#R9y4Up&HCCXK6EAG6XGg0$f?-5AZ_ejO zcF)si_z#aU7>%I?9;iDdLSHUc=7=NA6a^%wUV;zQy-3j#KHj`s4c5A=`=USW?;0!} zk|~jkOiMlLY3ma0#p*EpGi8o#$^0;(AH&-N(_)HbCWsnnJ^HOPHUY8v?1-?m{$X~ycbkM8TVE% zE8Z}|=iq$!MMA->E?{nQ3^zE0t)FI|dN31EF99-p(WBW)K0>`GR77}MzE&5?&Q}@F z`!svRC%M}((W<05+0n<{OR3i@!zm(a1g&Zn+fD!U6V~&U*0)#h87H9!RyTN|=hG+Y zv0u|tz5BiE%!an_X4jUQx4>Q8XjHiNV* zkLG=?AIjACDxCHYJn3F^T9D3EF}_iCLx^ms>d#o*;Lm>lqmky9wth%xx*E@*;2)@k;hks0i-&d@&+^+HvrnXfr@8mj-+ zWMM!653R#Iv!d>VrI28&Q;uS z_uHz?`-abIY#a6}S|jrWY*YkfW0-4!wc`#Il-Z>U=>${z$7`FP`a?sErtrU!^=)vf zJ-Ue;lF591!Np}c>d{b)(b2a}&>dgO+EU|mMAaV%K)ikjVi2oH6RBk(lf6 z+A`r}bTvW=>(heD&$AF5a!U|UHjrV2HH3#W$EiED@L|0lJC>TPE9aD_H;?lXhG23< ze8KE>jw!2dXFa?>nplpVGwtPmi?#sjEI1b>YrI<~SAvp+l8}t`#OiOlb3CcJ_JY~Y zQBrTuW{wKgGJ2aHsN^B6T6p1y&-lM{J|;yeQl(ZV^}$#|=^4km@QP-?s5=tuq5)ii zD(H%P$zA2rnrCB6$x+ne+3AdchA#Z>o4PdFX?En@O@y9Oq!aBVhHVUvd3A5*`_w7E zN@OH8*5|0gqh4-3n^P~9tRuv{n=BrS=ZUY8SR&IBu>!uiB)i0gt=YuYxjQ zM$&fHCPvJP#B&riD=Oz(h3h)5T&U4C?1LNjxX3>J{kn-L=ZUZ#vN-46dg6PNsBNO& zL-2_|aCqB^vJzv)3F)4@>!zhuUt&4e`8d{ z=w3LIy<1QJ`zV7tZ=MjfMu~|=;igeS8^+y()Z}hq=bbnsMKB$u@lF?cZEA2n2*#1Qh>p9TdL=zNl>t8WNlMpxPqSW?+b^7M_z| zZ*(!&0dWzpQPY&&g!G@3s&?epAkVAkCXh3ADr&5PtMNE;WfY+>XmO5a&untQEp3f) zt)pii_Tx?GeZ2du62``Ky0$f%H?~*#5qW#GF~lo>2fhdE#v&&x_+l*Qi=L~y;g>=gOS^{$_x|bY9^b6| z1Li<-v~X$})Zf*I7RqmSM! zT))T*_3^Ky+xa}F0@K%MgF28T*bA&^@T~1-co6+xA|Gz!p|b=x>E~?eriQM|+Ps>uqG=!TFeJZ%U%j zeqUH8cW&&IhmPdhhK`9dCn@^T=Sa}M#y_ph%({V(|DD+<5LVhPg>E0D44YmHn44MK zz8Ef-v3uBMV#h1GnvCMWk>(5@RH`@|D|W7ItB*NNItVmj5{HRlWm7fci1!J%c|+{8 zP+MDb1X>rlNO?vW9^_|bnefA!kfl1}Us=-h>oS0&r>d6aR-q4+#OO=KL>ba;NNVwG zvstToWx>cS%b_0z)C`kb(%WW5=A+WnF`{87FUZ-nlp-d^a5>E`IhncB9w1w(%kI-x zVcrzA_qqG!x&u(hdHnOwG-DE5egISbQ>B*SbAoqTn&QbY?@4{VT|LXGT$hwydU0a` z(H=dEu@4=ek<1y>`2(@S8quWJ0`NC>Da;5l(9IP5e@wk~Sd;Dl$IWfspjaRxf}+yh zC1uhf-9uVpBSxnMC@HnksB}wgW2AzBFa{C>VFRQ=9NjUWbKc+I^E~Gt9CBUTb#2EX zpX)r|=jZ);uV5$5{?G`zAH%X^rPHqmD)<1xkBrs9)XWM$CMD+{TpTuZ8U|o`ro}PmDVgnONkDVerdG;LL`P7U9yHN4ZkwV>r?bU^2I&IJIp%=XwN5-kC!V4+jh27 z>JiN)TN_d`RmyY;E53L8D7l@ZPy+b+4nagxLlKD&bw~$8)-5Y4`t1Lq3FF<#IB)-l zW^ncJ#t&zA@A0=5F@B4bXE`$i+g3bH`yjLz^K7dtQIW!i6LsTZkUZo6azhYF(!m&(&+dR1&9L|tz3 z75jJ~p;s*<4A|&|movVUk@BhxuDqW6tT~us?JyFeGvcMm1jk%6#NX>4eH}&gGSZl> z&eb0ed=oP$=Zf`vi1Zn+jdLZ5H&(A%b!k|Ye4Vm#Lodj@pci}X*5JC;~tjyDe!4tVgr3Fp_Ji~hlk5;~D8S^v$bVpf| z>RL`4mqyMzNU*Jz`1WJf^TV4a1+jezd2@(?`m1!c6Hs&Pye3XuG(&?x=frkp;GtO{ ze&tm~`KJo^`jxAdz3Pxkc6I+s1MtVce*<;kCz6BO>6KtG>+#whS!?Ov-#+kLbajEE zoOUJ0SvwB78JEAd$Mcxbomv7M57dc&z$4)8JDrbA;IT#H5aGh~H#r_Kk%bJy(~_%2 z_n$gd=ozBq=JaVYG=D#mJqy6`^9BJbbOhxTI4G=y}T>{f%x4pwjWiJ;IJ zWY4O?LxZbrU-z3QjeB!+JIS5htI`=+SH~-65k^W*g>eVXn0O50xH-)H*nSKH?fanqu&&`qw_2eG)e?;j6%`Zi4lpY?0DrHm;gn^tpTNx z_TwhSie;XXLbkrD?dCXZ_TKnX_xqWC`}@V2YW#%!02S)jx*;6UQ0kL z<3fWzpx5Am!mSR3*w27Xa#cl!NYC_*IpKl};M)WHfyy_q;c7$tT#XXodcq5I-}VfT zruQe@Zoe2&g_hShS>)T*TWZNB8N4J{Bq7K4Ced5oQ1ipXfxJ?PQitn$5(d9}I8rWG z>0Um&h2EibbmP2#YuxC1=+T9#TwL!HY7+JhoZOayjE@}QH$N|AHsHfpB75 zu&7-a<7q^VPs*%CaIw~~zgKlk&l_vzYr~tW!D0}=H}E5ri>emN491-@w)=`9S$xX3+pU_ zNrF=Y6U#YJGzQ*13ay*vk!Vo%NMsy;@I2 zEpqX(rJ~|SD?2WA@AUrEwS`5?w{7_r?e7c!%_uE18G6ZM9%vx*P@zNyc{*OSTJ#49 zwlCi6t9YdKiNrPRmG-sTql$;E_`85|A=>PW#Z*_YW_X*@3a24%An-na^}JZ-VpH~O zvk1=+uVm&a#FB&->t2wWTuFV1-Z{Z@pHpTKyllo+A!+qxJ(h$wlc$qacV#oxh8*gNxBcrjeirpb1=?7|-(eeMP&U)*Wp$b7bQx)Z4=xoZwSc^|U|vUJQX2~zG{*7i@ z3eaCLjHLuY_PH?-AGG-Dx_PgZq|Xkr(Y?QAS8_o)$@m#oLOQ@Y=B}=;b*3?U9LA)c zj6Q_cA(CqJn$Weoet&2TiQVsX*B44iJA?D!0nYrk95w#Tz{I_@prxhCIu8jAb-mGr z;TFztCHai3Pk1``d;2yIe?)6UtdQGBPSvI1jLkHYWjYd!%r!%JL6>((Q~&v~DK5iI zTxaoJ<*PS@F|zs@A5+*5^M9{MTobgCU%IedV_70{SrpfPm)ENb%H^lTDT-%Wl129w zFKnO~_J#^%ZIlzV`^QDjP7J$8&>DSBN$0F^5ialQ>}g2WP)jQiZTn(DR2;@!>$6Mq zWb8|IqWwkqL^S3etdOj9r*T_2t~}FhztUbX?fep;k8F^aBbY6Tt~ci=Q6EKMaA7M} zvie=Z{Bbxx7vC_$eimM`FOT`{F_(=LTpbiz{R^|1Jt0C5DaTq?9Kbw7J)yC@M=ykWA+Jmt zT!xM0S@x7oKL!%%$7H;Q;DSqdk5}Iaej7-0)bl~LzFrkuoAA)bJW}X z9gYh(G`Uqdo>3DnG`TL}lh57C|N76H+tHs-)0~3C0NoOBJF@w2&_pKfGxleRxh9_8)VnTf*3YKDlmnsTmk}d09a*RsI0+DcAVpA$nl>3Bbb{WB`Z(csToy1VqcM>s z!$bYWfTqye@!#u!x)~50`iJK8F4)hM`L+)h5062g$7I#!b;>#8VT#Gf#kZS&2Nn+7 z-V{|!S&N@OurSS?v>eUg0x)^&+YZXgA;vZYm4$W$9yN#KzL1YzcV4Vnr(D2uW}vvf zA1bkHTFD2ySM3U~<_``G_M-%Z)OMH4hCTKh+})uWUSvQ=rOo}DhvWPySEy4DLuWAY?YNRO$;r0vJ%BDeDG_ZNM2qISo($99czfr zXkK7reCC;z7O4fk~Y`JrjQ}*8LyEM^J7D(A=8K6?!u1TR?LTrf;2y!XY-=DY8oA^ zCQ>Rxk|kA!ceP{WEqrw`!Xx9!p<-+jcIBu(g6_Pt7!LoP2=iGkEEunoU)lE_Dg96^ z+=Uu}O!zcF3nD4GX3N&>8?~akStG3J%km!0=5fh#GV)%EbFI&W%yG}@Z{sVwcza?9S-r{+8W(G;ab7iu?`JQ2R z!afTNVl9*7<@?fB-3raK^AEI!@21oytRZs!g>_G~ijDj%{a(&9yQX=@fhF7UO*v60Ptukb{Q} zwu?X(On!4bbg`1vHwrQ-|3@NHCizi&<3QQvkF^z{Z(l{Q>1j3Sr?21X$&EK+DE`e> zdJXQAB0eJGY$RNvQF-0i#fdK?f+ydBw;Qz+RZ(w&AC3tfM(3AGX86veJB&a->@8bW zOf0#E{n`l%3DBE_wp5iJd*>=~9p$e$H2F?K%59eXkFEDDVnfPT>qlUyXh=so`Jg;H zk!NNhaB3isyeZy3ArIenRzy#KL$z#;l`J=#g=rsSwCp&WErPv9_Jb>Xl?lt+f-UN( za)%wr&^W9dX-cpOG3|;L^f`jd+Omg4RbqRlHtloNixHk;mMd?fYEuUBZM)1<_HzOe zGV)omT)tO-WKe8}+GK3puhn~4>uYl&9^X5zofv{h^WLw@a=UTDAJLNVrm@U$U(52FLvPiUxXOLTA(^fOJ)dp|0|`bF*TL zM2^NOo0b9rQsL>?>Y;;MO`>CYl?B4^S21sT&C(}Y+M>F~&AHCno{+fU7-g<5Bg8q^ z;=d<$kRWnapd21br&X8v4FD+eWmDiLHecW~CnVf#a2+UPPU748MVu7J&&*+~P$P>> zqL`WnH`66U_c>>ojf&-Jo!|1#S&p=7_&)TUi#rNMyb|&$i|3tg^3NI<%5vhz@Tg$K ziEDvgg(cz39^(gW@lV85%z3awDnx&;#$bD za%bb1vcT~72D@g`Z}&onRRf*kis4_$@Zz`%w%Y3L&2OxrU;?uhF_|B%Flaz0ouK6g zKrnGRgR+#74H@{>L4}dt;&tq&yZ2JO#s!2iU!o=nJf}ALA)f?`t}F;<4F{EhW{OAr z&%>4dSL}h)@-**pI?)C4*a|Ko-;2IKG5tbJ#R7yG+v83zJej|bXPX?B(%Zj^B}FUQ1@S$#NQss2PHBmxJNGc3`RbsKGAF*0EP@#V}6~= ztTD9vGWduIM=!Ax8<2wS7-%S4toT3kWc2mJ(!}bHB>ykjAfj)3!0Vt16FcU=Y+Nu^ zied_KmN->6te})*7p5Zx9}m#1(ACwE+#)a-e!#g~xMr?*${@pb4qsar`~jDZu_UZsqpBc z;I{Jo3cFXfaS4b1a;1*R;Gpw?RB1hdaIgv!t$Kh8w0JQ8yMrUrk9qyG2RN4|pnqJ4 zka$zvIdh`z-)U`rmd4j}Yrh_oi5xy4Q^Z8Tp^) z&+K8>mo`_4IWrH$xKING{Z|V4(?rY$}tgWLUA1 zPXA^&UEV&LDRpl!@eR*8gyUPgml`>#D7~*%11L}BZ|`g@$zH`wDg27zH;o#O@zH3q z?syg7Z;(f0zI@FJ^r&-xO>M~)F>xqnZ>S9vnGZSCwy0e}%pFxgE4*0-VKZf0TRC7u z$wUTCoIoCg%vCQR24%?r_g6`m-lFn(ccX#8zO?u)c#BiRpv&?Wta&oy2+uoQwW~Lx zjz(C~TPw~OxGNSiO>q{x`=G}+&9j1jqh!=N5R5NF*+0 zX5&lU*S$WVbO?SIf?I8(i_+D#xO|05%i##d1b&B%58eLKS>K5n8EN@kDPq?ULnw9h z?>p9h|0eFfQ#&Y!!Rl9LGcv8e+~*rSk4tX0fT@eDKvio*@i?J&G%*H}gvVBPZqcoE zs|ya*W!~0)XyqH**E7fCQa#tZqSVUbbZF$<+cf^Elg~gF#;|{93^lGIs={rMFXVDX z7f&P}b=S4qnfD%w4ER4LDLFxFls||FlvmF!9{E<1-Gv8pewCw)ru21K5638>a=|$h zME5Ns8NEXcg4Q#Ur3@!scMY>Mp~&{Nt>c^}$Q#9PkN!W{!5K3%j3DMpPc?(6F~~<} zft`vWqpu0PyF}x-R;2UQO@dmTX#gev#4Q>c&5!)1Ro$6d8;CI(MHL3HGXYv_8A!^N zeMOY?1z)At<;#PdPe4IZ+2AU6<@~Q2gW@W~WLMRWEtMI#EkwmA{2l)wKt4zxwCd~A zie~_ZeT7E1gVyQ&tu`;1%4{q1l?Sw-(f{7xBx~x+|L5I3V-c4}&3^t2%JTo=8cxX( zQ$QY2n{d9}Erx{z+fMOmNyhan-(O=+3aMv;squaD2j;gENt`kU)-kpdPo9IzQ4Lzu z%u7A`BEZ+C#%GlL-83;uU&1ll3j8Ame^GQgwFp3U0;n0DS`LT^mKs{B@`dkxSG9Nb zaR)@MziUue@*4cP+POJGn_XN zw+PxMm*cXnJHs^7x9$@0+K%HR%5Is`=$++?B(t{8z@{G*$1vWJ8LzA*8~u6qIFlA^ zYj=L1AVt;(HFY81u`|Unw?1Cjj8+Ho0Gj6_VIQ{xff)1yGpvtT^M|JOS2NC5E=y{2qVe!BU}<9~ zFeoJZCD4=gR@@DJm+AjG}BdnzNbK!~d&C{ycPRMqu#owLrOo4aRgBCHIJi&0wofd7-c5BGsK zZkjDbN^mIO)Rfzc5~o~Bf-28HeoOX*d}2ZjZ9%=EI+iCooR~90Y9vlsicdEa+JpF+ zA`=aJ<$7%qxqFx;v)u%a%$Y1F1=8ibw(Bi%f~Un}a%!Xc{_S>HKl^niQy^PA+2LpP zN2rD+olEt&g-&_N-2KsO#|$&ZMou}8hDvxd-x>{oMs2y@L(QFC9g^Q1+c193%?B{a zT0iN0fn7nXKQxENZID6h?4Vi1vTR-8IAN!4sNWh*k|_-GTN-zP)76jJE{j+yLPC>Z z0$+(MTe~-Q3Vsh)sT9Ocnp=~yo$)LYJHy?pJ~tdlDZ^5UD;`Mtlh@$o*W;FxT&3)r zM=J#35pHlD9`;hKoVE5_lvw*AUM#@NyN}hxS2U|na9or_F;2-}yCr3KQF}ZpJn=rl zQX8w`tN<$;Nm8T7Bpba(a zi3l6>4aLC#xjR4tlG(YSP`5o6TG@*ZY-vIdv?xvB zu+{~K?4Q4430uKCN3|)l5zm3#{G{yElOkYi!I#OL$?H}}oR_8=!EHWv3gvg-H=w;l z%P?KSa!IU}iH7DLe)cH<1^|AR<@~3P02YMk(-SnX6Be8{WrN6rG@Nv3{BOo(ws99(sf3H$C)wUK}It>=iQdn($9jCDvk&$i2g_3Lf@ZJ zOx#b(jG;h$wJ-!9MECtKXaBjEhP{45$A&k(iK?r17vvbK=nA|%}4Ey4Q_hXBz>D5{8Z25tv z{Mhu~-Z>DUWIWdJJWMaPTpn7I9)aY>4GxAb=Z_uK6NZNBSM;a6xW>rD91!05V{qrE zcNWt)?Sci0Vpi+squny~xmS-6e3Hq2@-yl1O*xO$jLJgzL!o4qpV8d<0TrK&K3C01 zEv51o4rKQQ=;tIwO_^MIKzN&@AU1n1#M6BgSV=us`1QVF-`%?<{49lSA|Fj3^?&s`i;E%gdS?pUXD;AE=Ukf-HoEidP0Wl& zqjR{>Qcp>$@cH0Dql+iJgKMq{a@kQB6$F6FI&+x`lLb!v*Bs%2C^KbvU{aw}7BQYcHJA7Ak zBVBK`Id`b*_{(MDUc6q8;Ssx#y7@KDFg2>q)ZlvPd%Ly0_;A&0@X|6Ivp~1T(o0CD z+&hiO0s6J3)2+lv856mIk=LB1yoF4?vsg|-R|!_9uJIQ`vq@NCDQ3bCS`pikg@H*Q ziTpP3i9eFbz3KpRbwp+sq?>#oo33?(6VO_zE$gm2^th%F3^C5M5)))uU~AbK6gR$7 z?@%aQ0?|pj(orjgygTRpu;$c?_Gac4{@O$qI~a&a2#XN$nj7~D7p(Bf%qo8X6{yL3 z|F+#Jme0b!+MXOSkX$;>=E#6(lZjwew}R}<)N@%}t2MTjL&AOYp+DLUM}!&El#Cr- zPYE)_F&XoR`kW>+GetxBV7H6=-d?_`;Yi?fBBf_;o^d@dpW~Iff4gNVtmC}{mlnC9 zo@g9WTqgdmXiktB*z-M%aiv>D5OJLDT$gsjc(k)0c1q*^P|<`h%L^EO6^y^t+;ePBQ> z5KZf$(WtJ>HSE;;=fDi8325660CNw3hM&le)k8%_&K6(OH1!H1w7vpr$2@5ZG<@2y zK1WZz5~Nl@>QMd0)qBl(-Zhd{dfy%dBvYrYR96HQJImqVICOO?S@eV8w+O-aV)ved zbM(dbAS*#-`hz7gQHJ{xI0T9&5G}wdT3Z6`|8j>&C%izMvm5W@;8qmYnx=eqcVEM$V z&dhjf4#yz9(;)O}$ko7PuF5zMha;~_O)DISY-a?8Il+?i&;Oy}h@;dk%^dk|VJlTj z%R_dx$)x>yj_`>F*Sv(*;!nX#a(zDV;VHpS@ z65}ZKxV9flVeg5x<+`55NWTH^B-0r*B}2D=-m0m2ISA^iLt;Yn&bmNdku#Nk$%9yw z@#GoOw|(h^Ip^^tmF8;!(&IXoui-Vwl)}eR@#a|)QZW!KgIRS4$IeF!B07*r>j<~D zrn=BuIlRka`**q!Vu_^DhJoRM9738yeoWY|cBQv+G323b zW0}3zQ59=LAj}MT`>0zYtT_9;9h%uLnTG38YOh^OJ9d3!T(8^tiQl{Og4@eSc#HIA zv9~6IC|Lt#=gd+mib#Txq2E~Pq)SQ1EaH+*94WgZ(ftT7nV$E{LM;Hto*df~TUwIt zi%}Ln&wqH5cRB8Cz}(F>?(-&s+{HS#^=-%6?{LUSahssooFv4&ZIZqr**Uvq4A*vS z*S5GlP1wZ38G=8?zhHXvI^QYWZaj5QUZ-vVYjDx?OqjXuCqzu>yH7C>)mPd#&n9&! zKQL-Lf5IW1%wl`~Cwx#X&MJr%S z{$)mYQUnCGgnxALrVHkdzWIzR@z;Cc*-=SSQkP&?oJExnZm`m`k_q*58R*-o#G0|0 zrQe|C1l8D^T~V00Ua}Yjoj}h(l?{lllbc-U4q$uP){1`sO&Nk6S$1|`JY*`rG+(Z8 zXUSuT@7t=dX>;b;?Tl0(B*Qer2h*b()u6(GWOO1r9@|$}ye~SY-agvtUF@f&4ZoTU z-IceSe?4VXw4D8qI8Fm1qt4W~TxNuwt~>AruAF}LGxrv6ZVzwmtt0SP|R zAlYL~uba8Teo0lrEONs^RkV%XN-QW9)o3TH`Gebh-=k_z)mF#dllw2LGQFqkWr%I4m zPYO@cTrLF{!hDn;V?ckJ(m9X$Lvxg~({h&R8rqprJv=?$k<{N13EwZ@&FvFb3?uwn zuLD_~rOP^fM*nXVfhrx77!u^3_x@Egv%d$&G0zOCzyLc+08Xt#>Jp=w;@4>Yxu*G! zA(zez_aQH{dIfAX0oWzd$06uvqIlv2NB-V}k2LlL;$J&uRwN>n1;t5#GwXUtd!YO4 zDX4r8xTcZ>--9|s6aLvA57Oljj=6e?B~rJRkj`Esb8KUda0EOVtb6|(Cz%zH#caF8 zsh6VQ06iwb-t3y>cj}7#Rl$??xd-4No#P{L4pcil_UyNRx&Jarsjh5Lm;chM9!djg z_8)|?U@O?L)0W`|?TbKp{Q%$<|074!oRCb5Hj%uAQ#Tp^I)t~xGGBg|^CtF*-8r^y zkWa-(gO~<(Zcp@B7vPY;2Uk92KX`Q()Xsm18D8H=Q@_zckKxC74fB$up7u(fmS%2_ zZ{w>B)~I|6C4dJc6{r2uOt1Yb>W)C@l|^@Bej7M)$q zSpREnelaGfk#I^)C8>@WMBmR(pb#verD-GvzsbW zALFN8BYXo8gkq0a*TI~N$~sKNkD0|SaPq1Nc0XMOA=!^peXdtQjM8k7XdVuqNQY$> zhll1nxcr*EpWdkSRoB+)I%6}A3lSg7{?Ld)i^jqV>;yN)JP*{aNZvjT_1LnE^0F-| zZsWdC+$-_r-X3%Or(V6Zt(nBn5JP`X`8W(T6~_qoqi{#sUkz0s$8(%=}sf$7;7>XaSA24C>oxBj)H z9J!uz(W;m-wa;4McUaiB3p1a@VVp6 z!PRH7a}OGh8#X3)-O*bP};mwp4`<`Sxakl2A zN5f-P<<|C1@iNSn`BJ%=^*cK~18}%x0Povh%xt-DDfd*(q6q5X^!`J{osOGV<}80o zrX5hk@A%G6Sh?&cajGJ@2e!}lx`>&|Wttk!^wzX0D|{=%C^Ff_`6oAu<U_o)pl;|+~BlAZ-WJXrv?ribR=6=_;y(KDj`&rQ6Nm%N_pF4hIo-L zEN;ViRmiKMvc{M-y4J_pm#KgUmod78{6XxsE(caw>;a{(duiF(!mDAMkq@hxPsoH;w|Dx_WJ+OVYeD%y$1 zt&z#pb;FS2T1wZE>t}md6JmD)=yu&6WBMzt#pZ)>{Lhy?PyHLJS60cT(dH|0LPh@y zN=}C1P0VMapbuJ~myt$#NVOlCn7ktCw$_ZqpjdU#;)m=g0PengQ* zqvdH;em)CJzSqQ#-*P9>=EgB zG}03?G-x$oJnA3~(Lbl5nZNb9gX5ofpwND%2F>*VIWA|_d%*%(-zCu+0gRzJDEpT` z;mcCM*8vZJ+K2o=9Aw6>3CZ-WO-Z}l zy)4Te@`7^-!h2z3Q_$n>MuXN!5Q8_|B zA1_aLY%q&4f=`>{iuE4U=FBJu*hvjMczmAMuy6F8cuDQ9C%-T|eH}|H0 zsv%6hlB;=l2{RDEqrwf=NeIW5#31-vp9>LKP;h^{nXRcYZq-a^5|}|Bu98i7AlGi* zP(n8Uq2Z+XnJJ@Ie;-P$2u!;Tpiq1|xrKK*$|y3Ul}D7E!Xt=wj%~nUm9L<3!S36Z zBkTOED$M3auxgUiVZZ|H09B5%JNFoKu~d-4PpOa(Q$`)%)XpJSCOhlQ&wdJ<8*3Wy z&iUF$=mtcimaPC_O+~YgY_IsFgcT6=ut&x%gg*C$Cifod85FX1!LuGZJEqM$8yhy= z2&Pau6!(eA6<{9O>Dy_6mhQ~Y=zf8TG%dM8QCGvq;#rMWW($*)`qnp(7@SQHAvuSA zx%)@U)-`gb>u_ZQ=Pz3u`)ZrnsZVp(SUAoD+gsmnuUk0c^scju|J8DbKaBn9<@KLy9iKGA9o8%hGQ-{i&&yVsRR6a{)pWzQ zs2m&7;7_D3qtqj>mx3xY*M8>k<-9ShP+y4Ue;6sBt=?{fq;t)(lguyU-?))F#rOM- z*;-t_m{+e5p6_+LsET>2qY=7*a0SyolAyJARJd|}1lHEI!dkHaKa|GiAVws&6q-k_ z4{hZjNrTqMV*95@aPU{KNc`834F3>a;)MPxad4oi&n{f#C3(KjBzrIZRWtXFvf3DI zrM}&(R9!i}7_*|z(KyvjEDsu2RQE6GwkjzPG2F3*8E>|Anbb=+7f{TD(S^D;Wn~qK z)6Qa$MHlmrA1siFe9n)oX`Ygr*PCx+J%)6>W`bghS~x$qg5WUD6>|N2?r9UnOQQ2* z>Uv)-ysT<82$=S#56}6q*PHjTWM-J1W3tm`_$cvSA zIU+i#%|3IhbN*1nu^b|n$8f6B=QL$xz6pD%Ob)vn;J})S!wmj%f^yO-F{+m(C9Lwz3@7}E=I?UUXG%6{E_>cvGott{xCzD ze*{naI9IM`CuB~)PJ24|4ES>K|I>@9mj#-~@Z$~^dU`4+!9|6Z`VgS@ zNEm|sI|kA}pa7o`MGE`LEyA?ufz(1j_Te4am6P}{_MYYp^ip>!u-_Jbz>3BsQ?qnV zyvT|OdV+TqBo(~l@*4Zy{lvnnLnVnz~7>MVaD2 zRN$5b>Z|r{x+@Yj)C8?rNMz`^!B13=)d3ZdwWlpR*X2 zi>RcRNy{Ex!D6_2V%6qX<2xQ%yupv?oP5j3VlzoMN9)LFl2F~ygm#74<aR^%-6w3a7h7 z#q8z4$2O0xiw>F@&7}6?zfQ&y4qtUYBgy+6s#|cBqK| z>MSUT;>!(}MXnLxk7pzc(EM{35|wGOqYc5Z6s5-*t(pJMFi_NvLZT0h0t{GsLdBH5 z9ezV8#1K7YmaCz<26NtjXuey|C}d~d#DzGdSJd{8>|1U{3GgD9*rM zb1b|}IIc$+<29iK)W8i)ang8ZBZFP^dfUzUxsu@~xuk-RPQI6_@?DJf9QrEYrYYYt zb1yi0xJK$cYDy}&$u`3!_f!kT5_S=;qGEBBU>>uuvh}E>m;IvYyQbXu-V+_xGo@VO z^Hcgpa>lmL?F#b+&VMr)zffm;KXqG=&GBwHPN?G=N=7a<;WMt2zF5)mgF*aN`Gj>i@LpK35y zX9nje!9RY_i*GK+dGjk+%~z74GIz@d@B-tqqz^2Z%T3&V344{}z-)|}*)eBiwmwWB z5%#Myy?L?9^J4iQ8iN%mX7Pxqzi1u9pb#b!Ro@W z@fj~b61IxED=r#i1W8IQ?xl2c`bnjQ0|PoR8F@I8i7YurDOBd_UdkzqlNl9cWZ~yT&bfYst>)JjA$ZP$#CunV}56MpJDTIN?vAN{M!t}x1f0md4A@l-^s$>fUx~~ zomzF77($EZ&3Jj`PKfbRUjzYKxqor$8|IKbV+Tkql{+n2N1c>>?*_0Co}0v&9TOHp zQ02t(`tQ(=f~@*thw(x`*IfySNv3=N#M(0O1`tyIbB0`e>t)6w{`?*daK2ns6++{< zo`SLjLBrt{~iTDI6PR;YV)eXpWl#9106*2G)$ zUsO1aN-OYlex_c4?pef@|I3W9x%Qusa|X%+qq_q|Uz42vhb3B6Y^=k)$G+q=jd(tl z0R+d+z8Q*1TpJ`py@ylc^?!RJJjVbsd+P|@_GM%!5GlP@s`*mkkVF`;RXA5s%3ym} zPX4`z*1RY5MEr z{@9xxPM#55D%@$Ds9LEV@^MjhR}2`_Oqh^`68i>?1eZEp-)tsko?qf8sUi!KodlFr zDq%jeqvF_&B-5$h#zPOQt86Oy0mk1k7{LY$>rTce6+7!&)1Np}e02q@k0c5b8Sduc z*YE*X4cHRD{3|b^4jqz`^)U;*rQ+%;7=?$~1mDWdfH{P_B%FJ7Of#~!gSlI&rO+zD~4xmbP_7QwSG z5_WO^qD*t(7_u#|y`=7Ed|%+I-{=9G?nU-xYtU7Iv4+ZG{L1Yoi~ZnGPk7Er;?_~9 z>&E1_km%;Uut#L+XkBgIH<}kBN0Kh4NgYE%>NT#6eJ~PsX!GxGl02@qZxhBDe2g4u zp8i%X*TCejU~=_hhn#ic7h|it-($v2kIOuaJQbee+qqH83I&75PH_|DA^FPhL%#a9 zhs-M$tEwXES&-G@WePjg_gJ9!&^>_C(CX#`3mHq7ZfdUd8+z4IG+&BzU z-^7hST}blU)ci1@(1WogJ*`96ovd|d(qa-w;>t^N8YD9LCzhT+RAv&Fh*z0|e=tH^ zm5997uKbX{SL(<^Knr6zbAoFrVzOoZjT!EI&*n~CYlV24I+yv;r9DIcIi?wX`W_#j z)UFEz{DNwGyR)b`3PGtb%5)N^9k(u!NPpR?!rB&oBS4nL`KCXH|E`SjH;z7jyUzgH z5%ZC@3NKgkx+>&ZO-~+H&8))xdUs~mnxh;>?aTD>yH6dO8(9+FqR1~TKO>B8vTcx9iU>^$*r)^G&(s$p5w`<#hHP z__+@^UxfR?vR0FWo`JQ?q@Al&CA%FQeQ3F0m`wV)xQ{w;e=}4sSlTVBKk|8N$se8; zGCVw68uLishO1{0KeytYMbNSK)|-Lj1|ro5E1DE$*G%M1yvUjILH;IbRvaO?^xW`E zV_grHep%KoN$ICl5TW~)+SMQWlsH`l3#ArRwQrnK zRi0NMs`EwpJq}E;@%1erMpuVlao;-S1#=)$SiPt8yV`Mm+rp>34WoeXgPW3J$$v0S zo1k^uG+o1^Qh}gWtZa1UAv~(Gk7KrN{-_n;)pb^c8M4pve2-T}?u?|=RlXr;YaW*( z6e|{=SnsoE9%_zz9fi0(?r z`jRirbBDSQ_GWSp)u=!ltT>)(K5q-Ss;Y?Iv#)pxd?SVoHW}&R7`nJit)Ng|a~u*j z`;R`&2}I>VK`_syrQrhcjcHCG5=VSA@)j-FQlqpfMIYn}rTza)?0nkwgyKsjpp6We zMXDcB%iiBX-A(g?nXy6fCvIJ%YR#8G{kxpk&Evvi`DyU8)kmw`Q}_NWiB#lEm+8Z+ zvkrB?)TyC8pZ*biE=FTZ>)3OWj+zTeb7~QMxO?D(Mpr}$YTlZM($GAxcrN;$<`(sx z)caApBd(lewo2TVx+9nV_Y=_IKgyiZALRg@#vR0GPiV9@ZZ*-9@_Nin1#EyI4xlqs z7Yc}Jlb%SaG%zL_pDhDIOXo;fhhp~pwnMbKN9Dtak;^}aLoFPZR_m+2&hUslnwqgZ z);67}>cR>X>XQ z-I4b4SF3D&L2_hDp&Kgs@R|8SK&2GC-DaqM{p^O|#y77zrDWaV=x?gf(xo7*;j0;G8dkCZk@|Gh54*;X5fp85LugBTA`xH z`MN1bL0Uv6)~Tg#J=!jdz*T`+??yx z9edPVuwY?rpid!d2dy+8W*|-Y0@+WJ4~~>gwuAFq22DEs-ES1n2Nxg`t;Wm)qYl@d zv9kdR!7GPAD)@Gs(`K^mPMi?NXHROhyQrIgO#Oa15vXmqfgaz%hlHc^5+=>k>tN?Y z1rS!sEO$c1%--ro=K+{yofAsmRjXL^C*si@o}x(qBh|A$*|aCM@$#1fr@~R+<~EF5O49RTYqTIv0b?nV>un2ksU%?6|ubXWlHif3oK5qLhnVo z1iZ|4oKNmaNoQXFAcEyW3QuC?{QZCVWp1X#32a^QY@q8c$6Hy_je5TJH+qWgy=D8G z$@Q{o2JU+fw;1lcZ9{UuhF9)jizLoMhZw@b)kAa3^eB z(8P7}LamTWJ; z{6e|$kDDCJ*j6nY7$9mZr8^QEl!g-Z)X<|l5(XDWeXRxg^balIiX-wyZ-Y)6Fgb4! zD)cVp6ArG!9Gn@6bn+{jEc;c98%ze#5i5~iY2nsGQ8IK>u_IRA()r^r0|*xrIl}Z2 zN$S{xPb*uk;cUe0g)8KJA-&6r$G!eZ`KpF18c`FAd7L@S ziv2XYLstJsIwNQBZn_o5*^cxJaierE9vQ~|yYhDX1dov<#Y&(sJx=*@Sk?X{N^D1& zaI`-^vcC*w`;0gYv~RWYVuuxR*4I6*skFZ!x^P!zd*<2krENvf|IZ+p2A3oX;<2_n zKy`3vzFAf+hW-I!dqK6LHh397wI!9D0(vi(4XYT;cns&k$%#9Y?f^Cd0U`OMhgdRN z_4Z&amiE6Q$^N6T>G+{S?pM4fkrP}3jFSLA0=y0OgZD01o2R@IeE#<+_;G3pkG1z2 zn}2VAk_wiL?fMTydASPIVTX5g=bm@ZzpK0D_^yuTwYcM_q3byPxf9RN0w#3T*tJ@f zpTI5wf@I!<3yF)b@>C(q4;aXJ9k@^74v*)eRmPv&@SipM-CC)vGg?!&GKHnrF47h@F01 z@#|c3g;(dgn4&9QT0}?_FECrj1ZiRG8VZ&T38WY&DZAfj>9CYSfpfandh^@ZQL>wk zPJNHdCK=)r6`d85KkPN*ACT@m?XvR~DI%h6vi_pR3F(p@k=G_Yt$^pO3JA4hsW8O{ z`0{V>UKwkQHoOYAoSPe)NOW0CnKfUse5!KS2a^`6UtifN?PA{UBg5jXI{h#Iuc}l5 zewwq`pwEMacc=G~c`B@<-r&1?HW8Y-33U=o@qR1s}G=9%PVIq#LXXvsGcA9&F_cS;oSBtESmeUO(V;DQ-{ij zK|2cv&~s8KC}{h=m zH-NQ`cbE}D$|bZnPL^_*s!TQshDglXq0`(&I@ww~WDz8O&o7Tyj4gJ9y36XdLV4+{ zNg^Hgs?y7QUy63mG+!|4O_kyG;AWcZ7kn=uae1KWX*BU7dpqMVAT89(<;0pW+|hDe z5=BVn-+kAX(J6~O_kHBtT54d6FSn8M&F2pF4q2i-0+|b1!j|dBvZox{A)3+9hC~C! zGkS;t&-Ox}arSvRcZk029agJed5E9-t+wtOEl0+vCsl$r6xnIbN6?;inByJm`KvZ- z5I;}W%G>4Am0O1<4izmHU{4NtIS1s)yIX~sA2IqAZA+nq(=xJjQ!rAinCsuRGH`|Z zxGqbRH-A@Jmv<5=9LUZ3z=qd>be!)$w}*RlDfOE%!5-I`6F0A0v(faUMeRy zmwpY)TC&J!^$6-&NH*CmbDuF@fEH!)Fq`TvJ&NWhwBy6>F|ry+!`R6`}~9;sjPd491Vzgb)%Dr*dEoOAJW_|;Hk zX_jjzH{SVEk)pmCF(eT=shnb5c<%>8PQK96y2VQW-edq0@q_!L<+Re0gBQM4ASA`c zhqxHm(HKP+EUc&8m$jXJM+I134>!<&#N_yBS!ucQpzYAPoAf`VAFR!h-c^p&CmDmJ9PB`OJI_xXG-3b?uMsQb2xb#V_6f z_W=X5#kBua65MqcXt4Z@wWmew^f(ul^DPaVLR$Rz{W1&oVb^eU^5@gLS{?cn_^diZXWu*I z0;~&qxl&A`FK~4iq`%tygE3julRm!MJdJ?P{;4%_m~5Po*2xhcJhAM*pf~5S-gJB3 z95UNvsWA3$qm-W~`ePjPQQ=oM2^qhAi?qy9vLA77Tn-Fa$8g)q6}}MjO0QTRkh@FA zNQQ~d6j4()5rj2U+=tjXnbr{18bH|Y6*z2sW!zjTZ3vY}|+a)%@#Ct-#@B{NW|fm<(p%KjMRc`Q0wi|dLk~W-{8y(TD5At zISfg5Vj`Ow(gi6ZfSQ|D9$k_4X;lD*?h9_e7M-TC=*#|T_Zq9vY)*01mA;_v&wGK! z6^NW2N!fHTp1Je5bPgB@wvKlWm7TSapMVlsGB9@>(Hq`KHvtSbu;o^$-{{+ z*~PH3O5TE0>=+cTvDTTPj7V~0_YmfmxQ4&f$E?N<^e*DFyRhx(Rf;0FDJGbF@(;-0 z(`|a|J|=9!Npmy}0EY@bC-ELYdGDo9KJ02SLlJJ{CfPjX56;5Z?qllI!U9zrCgbw2EH4BGg zG&d`|6=x>p0)38*>eo?%JijNAGRJWoO&zsU!El%be7AExwH_4(&5>E1YEo>PoY=1) z1k%gLRZlE$f{&*9+s7x1MMV#P5{SSCYOvAM_+-MrwKU|l_ezf!ner7A*=jPF;Wp#y zHL^nV(ob4>2O!u{O!=~RrAmL94l5Ty5RxZWrR-=H;)HyZg-3f^UjCr?+6S-~^3LPK zVE+P9)(cuiaPdPZ>T1g3q>TGN`P~A1#MvZOZ%;j3W3XM~di|nA{l}(Xmw1Ym^PQcZ z5sA_K8mc_X2uz2~gT)=2(roT~a|L`OA9(QUb)IV~pKj00=1pig(3v>4|4_V&7i@dx zg@h=VZWVqj*;RB%S-~3YJW7Ks%@k-IHynBq^OifD`2fh>Fi2ak!u|L!6=8n-fH7OI zqL7`U{M+A`2nXf`w!R*R;Wf|~(=@R0y0oSOQh|8@b|fiQD< z?7fK|Afw^)(+iJXZ}GaMp#;j(AdifJiW8HD5W{|<>od@uIddS?-d;J6vkxZ zJ!6KpXWC~4`^wVn!pgt!v(o}d1w?e%0q?RIRCEMtTZAe` zvikI~X9v*aY&fqoKFtwzInxxqNEC?qx7+OW3^m~*iZ<=#*+sy6=6~<4Vc@&7f_7Me z+UfIH<`h-yO(B~lwlW8%5XB2THkbYr@6w#5IG#OXLL--n6%6g_xOnd~6*UZXs???a z^?!{3ATB*JRazzS(K0UG`2pzZ=`F%kus{C?s5k=>-LAWEy}RINu1o?!G*;ERbdc7w zhyJCQyoIA|3VvPYwI#i)M1W?q1&awcIdd!GupZX%y}9O!y!DhxctDuB{ixS043~(^ zjTyw+Ol1m(WV$bDjH3N~<)cUEll!vN=>sqs;*eBK=+K9pkkoK-=^pu*>MW>4#{xuM ziC5b%IQ)xax1-9YLQP@cE_!@ZvqvD~iAtY!ZtF#9>F2QpT zb(04Vn_m|o_TO!65Zr(C1q$|H*U)RNGlYmOTa+6eqzpI8O}x)4FY_ZWIp@W$9Vi!o zLMlE4@ON^0MAv5c>)lxy9Ak2yYd*)KA#2|rr5fF)^_S`vRO9*n*2gDBh9HXLA(N_l z=7@f&lzF+%TDm$f%WzTFwt_^T_P*iud`DJY z#9m`Tx)K{Hs1lXCM`U3@=B3a){<#lfwNzVH@2Few#yupvYrdP)Lj14_e&A={d~b0$ zWoEIj(XYgjqpio>K9v>zq(b62)a^uh;xc5EoNbp*m#av$=8cEGp+fpvU!ehU~^5J%$A(mNbhCUI^HIetYb0n15 zK9aX(-y-Y>UjH8%HE%y!O9gDf!-Gim!7Qsil8-1eC3@W;^SvmI%FV3nblspQmPBN;Whs|kaab`4RxauE5 z^&4_r&%IW=5wD?Ev;8ttWL64RYCKw-Z@-t|6^)|jbA^jlkI{_XrWQy@8TAZT=$6cq zS*X7AT3A%`Njj3gtZrR>d#-C^G1CNEYcY>t{7WTt3=TQs`34#ZhHt>9g0BK)c6mhY z5Cy}=FYo^OOO->3Q$rQ3xnZr;{!&eGIa*Gn?kj1yHr;etA;za_2&}yo)HLP14+wji z!l3afiz%WAoSbR*!6{Rl>UP3#$F1(xQxoq4LAsZ{T?=@ZQIQ8vuYOXW5UcS>qL#l# z4~bZcoR>3UqT6k-o$Ub<=o0A8Oc0vxC+!LwD?efyZbbss?1K9Pz_EoqwKjCcgdl*3 zr~e(|ufqN>fe_^SIIZ~VJ^q)cr>HTW_8I^26@X9H=mM4a;(M;wobh2=-%ign`4pI! z6;E`S2*~V8Fg4iIP(9B=pPo1mNFIh~(M>z9*#n&a4{wvF zqjqLSnmEyjK{ zLLhBvm)Jis-`9j(O5r!T+0{W%>)&1ESp0AHGL#4_^ zkBrP&xYfq=Y*nNkFje@v^?d6Fl}Ye;rd1_7n~!HZv0HZZQKqu^GII-a7%C8z15b#D zQ1hf6#|G0wWaFBEvqFBKpU1K=&#<$WYI&Q#@gsn7C!cYbHO3z6yv#JU)qGp**d&RXF zP}_5os7?CPwSja z_7N?dqg@93^D=`w3ug;Bo&!qGt7|KVmI%0zfBDYHa1*aGVfc6%7y*)kE7w*IAcrQ^ zM=Y&Y3n*+rDTLDCN*vJE%UkW6Ho$I=Z?+^J857j@7-PoqsDbL?uXLs=HxXr+*)9@k zkaNms)Y>Cu_}TAK&jkB&ukx`2kw6I)r98+2>^1_VGF%6j7uz@O?-TMt&Oava^6Xr zLG&^E4FMcw#o~)_4)fs3{1qkKu~&<%)q&!V9;mE@8d2fq6_;Mm*i7m&>@nP}$nevN zhQi{#lv%w;u%2q&w_(#yelO}4wy8L*)@$?F&tyc<^#7)`ebJH$NH4g+DcJuzNh=g{ zqk07V!)|(>&Z|jg7Ni@6eJc`}uv!mh%?iF`Z21H`w)xp$mZM!id-@r_Qsmo|EJbQ8am zYkGBC%M7v(rs&&5>4R%nZQ{veZIDTPezEU?RdYBKzA(Q7u|fnnDv}^3{gqXl6G0`@ zaAwYe%(0wct1m7tc?dqbHT69Oj%&ig1wXB{FusAMqaqg9g)!r%xl7*ppN>lx%gA;R zb5tn~`7PN2KuETCsMf#cy@5oBG@SMkR^DrvLIlT_BI=haG=3GZRXD~i7#Ch_##`^J zJo=({G|K~kH&|ZG;f?B)kqyEQ63 zt*m>*gL_b4unO2Uw}T}jHqg{^{w9N(u+GwA&wBXAwaX`9TeS8l*c&;K|13Ka#245k z{3$=Bw1uj$?pr)u~Hd-KnR`sqOUTwZP{fQJzzfbd*N_M4lpLI`uDyvFq zT`}NUI{9W;bJSldQbez-j#YtD=`hJLyqcgY^kP+2ul=E;$bG7Zu6_?N;@b$;;pY%L zo#xi6lf0qAvS^M}>a8#ObAU1!81!q}o@o|trN;Lx3xDjmtO2kMfK<}+ROijnjoLo* zeq{v87e^uM&u@U{M#8s~4u$^J2me*{b9I1}*6G`40GX+L7LtBeMH#3*pD{Oq;hB0k z8xjj3ak>(K7QxHYvp`9A7=?D-I{o`;Gvk!zGaM~-3G5EUlfF6o^5UBm5n>|9!H_8G z)3ca88fNmy2sm+;S=0^KRKX!^V!#RlsLFaHMK5wkGM&m6I$r^ooQlZac%rdV5B%(k z&YpEyunX7!fRlw7d+(G#N=3zbCYL*{>Af`yHR*4~f%|UVWO>!FFU~Z(A>Tk)-=UOO zEs^larZcwwsZkx9d*v#$mbL?|Zm981<`JA9s_+lP5SU#YQDH|cpsr-!&FuW5$SB_k zCRUyg6nE*rp);xzjb)vH&`aB?S6hp-W7}5t-2``K4}BV}$VOzIXD*)IQeTRg;Rh=>lUFpv^%I`Z6#?gb3QHedAKYB|(hYiqC}l_KE!wwtu>1 z%2n#d3IbJ_>(YbL8KIHpU?d)ytTyM2rg!HZ0E<(-S+kmdAz~=ir+j5*>rLoa%9lCcd|td&LO<*7B$vSmXBd$Knx7w z3#YvkeUJshCYJkBlfZo51(SoSJfsLs>c*`ovWKs;$>5zJ6U|UIl}Vb&v5p(TaVCQ; z&1>Y&rC=#68!b3%5!|_^s zFgmyV2nqHq8?Cc$BWWD6ni$uW8Q;GCtwJYWTDgyb@=SVCwZ5MFUn6XUBD+Ml!wTKp zhnCs+^d?2C^&7;d6XEWO2G?;nC`u3Qkz28onP|Baw$GwL1_J6~ZgPLAp8TbX4#ENd zf3D>%I_1b!{NNsMsZ8LZz$eN*TV$?qbY)cjxy?45Xf*#n>==Q8Yna8r^-7-&r>`ejf^vxU%6a;nudnfyqZ22MO6PXWHmu;4f%8HAc$lJN ze&70u8BX3VaB2JZV5}7PpW=vlz&HGTsGPKCj_ZuvJ*s4|<9E{FbL4fC!D8Knn}6ls zEg9r}SLt&tesWMTTvdNP!bx(|Fw%?PqE~*6&ND0EOK;nwPZA=-{*jB<(a_pvbM_bC zx($&{%-icl!-I?T!er~MRu+DPPt{*gn&!IqKJmk8R`5m?^?b@>`BbKhLTSz)cqhT> z76a4*zcs#Pl!I}NJctDqw2i~mDwrm+96u<2rQ0(~KO!S}U`2reSNd&t@%wj9WW z_(2$+8Pcj*+-&)nvu71b>1gQ(v}vV2FZ?O2%lq)E9b*Fn-IV;eEMcuSH{l_OU^~;F z*U;!XkGS^l#!m&DX>7k!(ch7EJjxYjU0Hip6JS>cdUGEL@OsYIZT=l7gBOy=wC{4z zb%_WA^S*0g8cT1ebZfcmJkf1i#c0-s3Y*#xDxj(^|GGjFU5D$@LVtz4I15AtQsemE zJii<9?39iP9OqM%ufL5Fd2k2lQv+QQ00Fs(9JjCI7Xu3ZQ{Wb0F|k8Ly@)vd8*pI# z9RSxd&CvDkl>fH~P+g$Kl}-JOI5QL4w_@lG1hqyrJ~KI0-F3%mGbg(aysHlT-_^9q zQJ!Hgx4IbbP@ffhYxHk`7J;Fyl6-cyo46nujk*}0g~VLWd;|R4h3g9-=JN$&stR@tNPEoFu2Lz7xshde(x3GY5KomF z=jlF>*6v08QI>{S={QpQ1d;I@8$XzHKveXzuQ5M7F|V_LRDL(NjzKh`Nx9OF5>e&; ze6&KIS#jZ;_oM^jt`=mk`?1N_6|Z^BQO@JxthZO=cb0FEzz1{2P_+M5yO`aS#;7|F zc!j_w$u?hu+nmZa*ORVd?=Fsxn56)ztCB^ATpFW1X+Ty`3$3akwy8wPz|+$>CRg2L zFvOvr%g|}FU*2=|B46cvF++Y_EBvj&tiR*dJF_T^qQgHYkH6DOac3c-m86dL0V`WR zzLMojpjA=BzM#B7Bv^+xgZLWfz+rN*aRc5REDL|)58YU|3OGqNL<bx?^fldf2rI@s~Reu#>G`4N$mZF^FR|tsf&`a(#$a^Cs;o?gy8xXp;((( z*b}Es>Mi#R>!K(eSMxT4-F9>6DNT*5%I33<<~CuQTb-fJ1K^l!WTNN#5RkuYWTczQ zDfNjs-!e<&-^{76oeG`e@8&upO<>hPm77-h$ko7&8c~Pok$vy61n4PuFS zKo@7S=raw3jPAIU23N!uIx-X&x~=1hXwK9E^k|ck$taLuk6N)*!#ALsHZ!!1@hvI} z&4n-k&JL43oW`m)FXtRIPYum&lZf-g^!6LEkG9+o9@6&0jtOsLMF+St!XFq!x6J>! zAQ7vLVko-}a^YG*V^}YJO@Vr&2(+`# zzQ79o=O$Z9bB$j8F5M(X?p1C{5$R%ltbz5=XnW4R;1FE) zrAU21x=;E-0ZRv8U0p(XnIs;%yxR3a8ppsM=zQ5pM-V%ga2(#cohAUAy{gogw`l4w z41YMwzcVd`)&w#WP}ek7iTobkkScb#rbzY6VD%YCEj z&y4qhn|aexQfsInVX>_^a=vTGO|m!Tar@}x4Og^&V;Ed@FHUkiX`-x|Kp3(9IfkuW z8K@EsBcv8AxP^Zpe{IZQusyUlEH-GBGtj@x15!)ijtg(7~GLPm!shr*}GuOVnKg+>?>h#~rpoEqX@C zu@eUNqP-@Qlt-D0U;K**(^=}~1$Vk}*7ZQ`u0@!ekZOGlZ9CD8T3OW)AonO$#lgrC zwytdt-<)Uu}?7m$$bWCxpe z3uAe&1T2VAE4dAc__h0p^)*bWBMpvw_z*A7H*bv6TYU<2{6 z?YUuQ^Tm!M6V&|*owjc4RK~&st2SK7WCum@DvXC7LY5(UDq}d}kAmMP?gUhxE0l{O zy!6?|l?P0d_4bWHZ&!&kD2XY&r%DHXVSwP`&ze*@&uzgWugvRtBMYU#P;78axge}Q zy5Sc(`2L3>0J<_+D!Sb)e>4&j27 z{v`>i*JScUDk>PUZ%$a4y3%?SJW5ak@5xK_CYD>#&m+yUt-76{Kx8|3c?t z{Y%;Ty0MZZ}||Hjn}|JL!qTYYLnZ8PNhI}xG!E9`Qi(EjCJg#q-F@ihXMWN zxZFKa6omcm97VMZ|67TiHL|9r7W$#Me!m9`8D8!iyQv$NK3Rc>yEaY(vMyo(|C2uh zgF`f4WeP2?Wgu0eC8x{oa3 zb4PcTv=IZck|$!Xmv5Lz+b?UB^vM^5sIjcYUPW%cd+ApnGb-+(l9faH0& zO%3SJ_Vej!JX_3|kWPPOa7|kMUt@j~^^j%RIa$klfzDrz*mZZ$qxQV?ziCg*L@WpO zw0rMp@+{%IO@R0k;V#8l0?Cg!n%7{t27^^dfgw58^Q5{FpPU>*;$JGQU=>*V)^Y!Z zfrepM^EHbT258GCKLuA`f4OS`2nO+v8}W;Kb#Vjo_T@fhtj7Es3bMPi{C|*php++; zyc>I=dN^o^@Tx@5TFTaPyws+a#4Jf7R5_1$zWBn|2>*wTS9IYqv6K8*C~7IMLx}zI zq3Yh<@s}Sb};yk%Uar02Qa-_rjE*%?MA9 zD#Hb*8djv~5#32<>6(Z(gpweKWRJMGLTUZPbN7ZXZOxi*APe3f;6vWU9fH`@L;7mY z&|7QU=pUu77HPXQZ8HfPED)xsMLUDV4`ltrbPrg!dDXjr*5sRf$Zo9mGg&q!bjS6F zaG0Wm&Y1C7xa~~wJzYArjuQ>|NHFidM9Z>s3GdN>T6d;`u&_esqSC-Ne;l=_5jiX) zOOE3}@Gn(Qob6c0ZM=l#k9Wpqah-HRdY-+d5ic*Z%s%T{Ml8Qoh5eS%!phi{y*>9c zOgtGFZ+-y*#qY9E{o|bP)pjt6=m>}J_x}$p#QD8SG*zzj;QR1wX&L4QqoklsH zWLoou|HT5so-6?C2q2!WJLO-VCWc+$wjrDeMovwQ)xh>Z3#kc0P`^2S0&oBt!IW?I zAE_>%%1Q7qsi=T}fFxir@Dw8SKDb+tv1#`82CKJII_&L2282yMI-yLd|D^k~Ng24bD~S z-SyMx9B)A?cHr&y)H&N-*+xFx^<4Jxt{(SDXlvqHYHTnLZZ$&G<~6DEBanzqURy-T zZCi#iZO-!22TH~P6{AH)61-T!t1y3N&0k&`zeDUb-iZx6F_;zH2~vD;v)$58k&)KD z>%HJyQ&791pvnC7I!6wI(C8Bbz;-7a_SSV*hn=H-ZU(iOD^71sF={IbXAB)Kcdb{9 z4A=hw13Zst!f(K>I~H^p93EFWL$Rea9(k{<;L)R1CrhOpXoT4?*~$P*FWf}|q6W6f z)<>gwZ6^@4Sm3Vtt03Mmwbaco_}Tn5Q=G>hu*+1g_sC2#A$U&IZjmIL)Jj|GbDHFW z5}c95a<~M=TWFto=TjQRGN;NhB@s($fLFEw8iD@gYtpTZmkv{#*>wzn#^)u=&;!Gc z?3mW>)H?gEDfqMLJu{OhDcKvE25v=}i1$X)8$9rl-R6qv)X*GRLW{(ak{K~Bd0SDE zMEpZg(0;PAO#l|~WlF%oYYVdz11)03U#ha;@h`sK9~Q69rtNZw8Lz_=I~jWGTI-sF zo7}~X(Uyg*grQhERhQ&Bt606OB?8iM@7xb3fyk`iinCja&#x;?qW*ZN&)Xh?dy0=@ zImXv=M)m^XYZQgu!_3Z!RUv#W_x39=uSmJtORiSfzCtWJ0=2M z+#?lqg`pyE>{Hi-N(E%!$sjX_8Xl=jNFUY3s|g|!!!yyx`R~IlL^UcZsh5(Sr7b~m zDZxo=Fk*+H3Pi6*qzRmo?kq?&B;6m%@b>ze|KMfaXI#-d-{`{!*1dt8^qGTq+>$(PGp4cJrai_hSYQZ zJvLaMbi?DJK0Wb;QwRIbijLubEbnbnrjGs`uP^ztkt)@^C&#S3A+Y`GW}h*Mb$R2Q zpq0&rIj=aW^5B^Ha`nR2-+T_=FHQBr|O%;OGAN1rEQ@yKkI-Ip>KFD}jDBg@>;;{8y zfVfdpSk&P`%^<^U>uTLt*1P6{n~AthU_O1aA8*I ze+`j$UM4hW(qTu{u7R{mt+10Y^~YtC!f}nE>Q00uR})_EJ~^YFb{Fo@i^d#SmzSGJ zAT>^iu`!S>pXZOhaf3mtE5*(-*0QumV*;Ou2plZndEm+Ay>qf8Z$G`8Uc6|Jd!DBz zHm9hxZE%vim4hCJKpdHil{8p`*ujKANPhXrBbc)fMMBA7_f=ds7{%pCpK9XifYu`%fatijx40HcYgjx75I;+;z8p0C8ZawwY5s z_eIx>A%M#L7Zom7FkbL%h7IhR4nrCnq0ZCxjc|k1a!R3Y*~AJ7YNE0xAzs!|8MOji zEpRE94;a*LEv&0{Z%;9a3rah=oq`yjw{YBfh|6@XhTjpj%|plD7#nW?L=@*2no_P4 z@Ln2a;3A_>+7GUZDtG8TKN1!e}y19ljzZc1@Q9o+Chn8S4lTIj6K z?QE#`?)%Zy>p5UuL10&)hL*8~{>-j$otPSsD3hCu+SQvc2U=?7Cub;SmYKS zid)YclgOEqP2rPX*3h{SmrzZx*?G|fkU3uqE9C7-D%BzRWfF{6G!aMMn>I6c9vz1QgLUg&! zHs4Q{$HlM*R6h5vU)ss`J|Xnx#`NFomY?G-YW3Q3D}{`r%OI$cQS9fqHuEWjgK#3C~lMIQ$hQXLpaZ+Z%APSYL=osdaY|WzT zfN~}4lTM2Glw1l%Z`9fUjKBuDYrgltw3wOYX}K)3MT7Cqrdw>&>Il5rLyEf+YjD+I zG5ULNS!VOE=oIhJUjFO6@6?|g+`-1t-F1&y-ljZRB=#0l?z!?6C4Z~Vu?KqlH|l1- zGGcC3rKY%Xx65Ao5Ytz~Uh>nu4dH8|HQJxDSPMbE825NJH(iD#&`0s|!R#<0k?)04Tngu3l^GSZ&Ry#PC+ug7E7aJ5MGD1brIPeeh~7ON?zd2FEgpwOk40o3k{Sf3%)_FsJ1SaOwyd06D+9%i8Xq zT{~Lu+v!{vD3{a(AO=NiZ_efEC1tUqu2kxKPl1lTQwq>vPo55eNIUvaFWsVwE*pPQ zbn*G!xIeZNCwcicybxLxSOr)T z_0S@KrH2a3U8eyIi%-u21>dgB2l$iz0^b?dx8q}jJZD;N49LgwqqoN-j2I<0}9cRdF<9}~5KL3nicnPc?17zALH1~E5 zM=+G}tLdF(w(y?qjmg|rL3GLd~w{I+h|ADsRAe-CT^(46#uo+oUIm#C5xU& zhfmg*r%XH5(qAMobxCD|?8g0A|5CAX|41SDGDE=6P1N&73$jKr9^j-vb+~FRerw8P zPRW;80ltnTJ|5Y^XJZM9>v-XHqu+jtqb)T`x$FMj&3Fi~6|^T`!3VV0O}w(K(6+Eo zoWAq{uN`BMMDWi0vzWwoa zRlj6eTd8X_tuw#LKlrvW$1O^|kKea)3I((mMHEKJ962d;@>|0^Ku<4h>P{}vfYtJv&=;}J(zN;2 z%bxk>g^{1>xc5BN$uG>mEg2BQGW#^xM6SM8d*9tbBc~5Nms0rEvlR0g1oD%$+3ftu zzi><{37Bloz&zJA02Ow~Sii*%&g`|sjkb&&+)NpLeKZ+>PuW0|QM|po=*ekqhirXC zxG((Bgqxx*9GK?5UpGXttS6*+twzaI(*HTu$r8+~SLC(efpjAl_Z#?axbvMgEH!H4 zf5&){wHXX^E;%C>l5KY+_{#!VUL_div-?VJuQF#fW;n0w?a1X%0*-x?NFfN|tuHmA zH=y~mrEWw1Q7p2SLg;ksokVDqHXJbWU(s|+$!Ox&SI4F%dDuY~EpWbaX6uMje$mNT zdE0ZF)ykTPynIqWu`rrYvc7xW;ZA=&vfp=4abi&9yoDe(b|Xble*_R%@O8D1`P3`# z`xNysYyVXFAn2>l>;~YvN%Zlb@)J&8p|yMR&yM^d@WV(Tj=q4(K2#y6RWGVV0kY( z`MG3?*l9rpDj3%0T4cOP+PECO>!~5hcNt*iYmbv z_M+@d#?zjbvk3x$W%M5Qit5Mql3P?UVNkoXW()8*AOZf-xjG;i9fy803q^!&OFZm4 z6V_i8f5r5IdK`qH`ENIHu5Vd^7Qu7R^-K|TF7nc8B=70*jJ7__X8X-4%xd^-2o1E6 z-T`iS`?IFcSxVUbr@+tfXPia~Qv-^j^G{51FrQ6{L|zC}m@N+!`|ndKhn@>t7Zhkw zmw*{@n>Ct085v5&11L+M41aq11#sePVz_NjmqIEk-e>n3qg{v;++1Y7=RtQ&OH=0` zbAQE^ab_QGN_EWa<|1X}M}@>Szl!VXY}}Ymw8@sfZMa-5BHVe#VO3+%C%vujai)wM zpCc~>``!NxrSAYc0cS1lI#;~m7OzC+;-p#eKjKwTP9mT0cZOiHW*%K@CsoX=y-i;Q|qf{>p6y3hm-yakQM*ae1oc<@` zJC(eD`mg&YZC~>aidk_oPsuFS?&CSBj9Wxnu^j3GF4$XsoC zFCfaKaus-3VO&+7`7Fq7tGB&$=zDYjUPh^8&53Gc4XnwJzYKv(hjkn!A-<=tWwqpv zEW&@x2L-z^|D~$L0c|0?Tvnf@(6mQb(z_M^QaQw%XCbzf^h!*)(g0b%}AvmK3C7%h+zBg(O9YJ@JpiS_9-H zn>1PwmOr5_B_tSB$EsK{jkeKGgT11Qb7rx_af;A1KQ~F_UXvk0{qeg0cc!;8? zR{7q;8sX@MFa6XPuFsFO7J-=Ds3S|PF=9St03{US&qr8e-|m2x5vJvxlxH<{Dn(HI zO2cy_Qd}ce-lGfuh?(~03)Ze}?sA%2r)(Ao*UOw37K0{cyAi@8{bgj@=!I!sVRFG^ zoi`2@u^$HbdUY4hwYeMiJ$`rc!1e}<{-g<0|IXFkXu>=z_yxM9E3&Q3Bm1|xX5yXp zeE9>DyE@5-o!Nv5gnUI~%l0nxXH|vZ^MgzU$ytTNbO?EDHX}xdVxiWtOy-cQCxOC? zCR@HvL60IfDH+4=g9br0?aU+dO^Q1mAWd5uJs~wHCsx!asH3NE#D#miP)D#xPD%;A zEBjcZ3LTQza8LbcyilFo*ua7wkkO;tL>SzW@k+cY))g{!O|QtvwJmqFE(7zrF-BTr zYFVK=LBD8CZ0oyD7TBo$nbng4Zs$Y&C6=fdrQ*Eo7XWE2q$g3c!t{Bhj?8drw0kAj zCUUscc$%?Qk5K>}&Tv>&l9T#wpP?vbz*eM8FRA|M$_0g=SwD+!3w=8=<9eQ9T4q5Q z%FPzU2G5$vXx8cJEe(c!)ylm-U@zenk$QZ-^Zi20F6w16%KWQ?+;+CS=A`#_-T2&r z?}_EtPlwiU0n2YR9e5O1FgW)AgPM8uQ-wfMK=LEsltrZ8ppC za8?P<2T!S}Vnc*!)2vVLJ|z(V;Mu2M4`Mr5vP0w1Oh6a|6&2lXw<+y}*r44hCxAAs zh&Tf>Hn#p+@#0bMFUK2D?CnlSIxuPY|D~Q`mo)&(>)8QN!$o1Ut6VU=TX^bh*#@B@ zm7{lAW&(I0^_<6%#_*zpj9*5Zc@Q0IN@JwJdG=@|1CH6*}mUu6Wf;gyb`&4>3>{DUcYEuE}977#9q($*pCiiWTEIGA7 z)kE3WW&*qbQ>p^7p{dYi9#A-7!obF;cVGDI$IVix6YO3MN|uunkx=O4-P!~(i2X}o+qcU6WJQ=%~N;^@y^?^?!?8%DsLji}DI49;vBhQgx zlm@o4c@c^Pd+!qn{7}Tdjams76`Y4H8@hEu(;E_dMt`XmC)S64BAuWqgSv4fN=_l! z3cNK6IoV%G1(!BYIzelPeAlKDqoLK#{fT7_>tqf$ycLIlQl4V(rm>3;5Zr5{=e$bL zaU_tZtimcg0?5-=S}nTO?a*RAu41A>g7pWsAX$@#<6-fQ6#s`l^4c9u^~@%#lR}dc zB8By9%}J?pS+}Dwm8scN&55AxjT-zk@@LGy0a@+StG;ew`8|SFp4Ag*r18Za8zIT`y%E)Em)A6V94{3?S|40DCN;5K$-=SY)d@=limxs-by#wp~Lk4&sH z>);EY>*=$hJQ7*9Nfe0B4&I8?!oO)^F?X^!?NV_lI6O?ja}QwO|5!d!DDys1)jr}az?Sedls7%F~ zxY5qX4fHefwXC`iCLedW56TKWd{ijeRn}Z(eAsGwJVO*F9pr80Rjsj_s$D>PRZ z3SBg2$q96%&J}(avN@Ls=z#s2r7t(o69Ka)Ev*tbj=@$74HT+Hf=3CZ_f=rNvb!;|Xc zAyURLqIRVjxmyo6fU?T(_4r3Ej6*yO->rPhx>q_h6O?IzKH ztEbN@mePs-vo$d$CG1_-ynX)1NI8ZdBWg+ASd=^g1 ztS)rV_t`=s-R4?Y%3V#J)v4jqgmnYU$9KIZMwyKo$Y4-|oe|{n{KZ7*%-8Xd@Yd?} zo+{70I@d*z|99X+iE~OmLtU=8a+NkABglO(2>y~D z8IZ_k2EucJ(1!nQ5KfCJAg&L2!Fj#^xxNe(3Az5m&fye+1)Mko4F11#8{i9@<%GS5 zT|Zc;Vv?g?6rJ9CDlGyA3JySZzkk`)A8_ivbomMN`vH4vieS&J(@Ussr-)ZyehO4< zaab21_PO-x^h-{_n{f3%p7&+8#_RT;3xuBp0O1Xcct7SupEngD>BY8;G?8kF8(L#p18&UUL=kr=y~e+&;_L@mFLTe1>tqF~oy+Y>oe zGW$8%`@0Q)C~9Geo&DP_!Uabcepoe40x#F2)iD)qqjw9X#Ygt!VV=j++i+*1`$_6A zVoGds@w2b*|3E}JI6<+NedAvS&81?m9DEV0@U@8X(6?u2kI7j@)p+|%Dd2;;M<*?a zJy2BokWpYq;x=9>cRYvEGS+{L-=jzXV1od>B;Fq-wi3&03F#cRao>Nme3%#^GATx4 zI`2{k@lGJu4i2LdYjG#V0{dHWE>;DIi&o~}blmm!_ASxx@T^>b{mS&`Yz#&GBPK%H{* zC!9gadsoSu)w&*TD~lYiSMV?A=;9o?V~t_z>hwY%C-2$bapB^)Svto!M5$Z+Q2nMA zbYa)KVKMIFc)M6~q$(;FrunRZe<#AL&4aQUp3Zm6v+V_+?Mij}lQ#CqSb8NKTwMLb zPrLU93wW*IH{LOLyu2ege3=mHl&7;@ z@n^0@=1cqm&h%l!WKL!fb;DZejDrquRnLpX7g_GM71b-yI47vYN8K2u_@dpijACQ$ zdaI}P#j)kJmNSG(>T#th?n5F@PwWS@FVFKNXO*QQr6i9~-Bx(9&L|S4w0B~pz-P}p z%3qMFeo`Jt_qAn-N6KZj$FTBY=XV{ZJjojc~R93TrSqMpgHWir2CuAa}C$g z70{6ZYN7a3`uFfxl;?NW*rN#RA_yh0ZLyr^S+IG}lu?ZrSno8s7Qx44m?TJO*Y7k9TN_ zuv_FOz-V_Y))bb_cH?s~Ln0rO^Y1tzrua8vAZ#-J4(0U!NJW$;fJ>SnTK_H9F4K6- z-3A1nw@6O`I1l!tb?`^K=w0`{VA5G@4&LZV?&^lGFWPuQH?mu}2iKMv{cUV&kjTj1 zwkp6c{@xKkxS^+6D=I9p_PI!aA(^7WhrP;p`+@YM4zqt71g#Y527FJ~1L*Jkv?O-% zrFm}?jxsdG>Q7ZetdIX*ciYDuO(rG5t%jtZxzga_VIw_M>jUMbzUeFb0~J*t8qx=i zsyY!U>Xv&W+H4{!OepQ$@aI(5=g!eGR0!xr_n(zLS8>O7Y^BnN9J{7IbOQuI`Ap&r6)1mjChr_n!*~vj$R)aiV4&T*Hl1cm<3&fZPImMzg(p#WHM(N} z*)w?lT$@Fn>(pqxv726P@vOxE?tQ!pt;B$7=r*TYH6p`!S=$y$7yDNsM@)eEHShlI z9*l4O&b7EH>E=ey2WQeYlBPT{B%Lw#w36+DtKy7DlHFqrcLrm**zqcI@B5&!njI^P z>JHW)>GbcmTbO`lo@#`7|9^|<-#rbo=U{f3Da z`I?QPytFt3NMr(zH(nM0dLRGdRzhGE$>Ml!kLKGERXJQdHBWW9k)G3Pm}8BM{gnEUhS`XWNe$PT4CI!o85F@(=4E{e6MvO!_rMs z${4ygPs+C98)||lQD;w?&;4PaZ{y>zNybiE>BxUq@UzpK&nqlPojexZ-DC>eKhHnG z%@w>iz1n!Bg!UN!`t>v1;{#qM$ahGq7B}UW8@0+jpoP2ULnHPWlK59@Yn5!uPE+AO+xWJ zk(nKoHFIQR1fEyQh9GR6Lf!4-t4n-k`V=u=Q}UNY@{2w9i>2)E=wmwX@6o)RK9e>q zO{;rEj;Q2i`!b*}0|pv0mf@-~mC&32xCh zq^rpB5%<78;nGKP`a>uP>jBmXzmNaT0$=GswEE(I4gJT!?G^%gwRWu&f04}%N;b*; zz(a;*g)URSt4^q5tOj94zYp75iCQQAZk-3J2vN;fV2C`IyqOUJ6AgHB75>h+>+s9U z%pH$J0lN%8AIA7=SXrMnzOh{x$P~V!peZ zeQ?I`DgCR_pE&g{8i6bY!8x34%jk;3cbmE{lfLfOaWP5hXj2Y&_@^)%dgI!{Pf>{L zWltEP^=8@Wc79=OQ8nCDa}4#p?R8NpEOD=;v{PjL0#&%a?;OB>L1dM`kxFf*?N{U# zE#*Mijq=desVSXuV;?Pl zsc#k|s^Rs!tA5I+h}b{kiCc?u@zn&)U2NLY5#2+hT zT$ErB@of+3dKv|sCRFwC%g%_?tWM%2m5TEg?&q;(`Tn}208-6%FO#HgUwKY-weSoF z4;ftwISPVg3h)=H~dkb7k_nsS5?Z6_cWXh&|q&bUhc}!CG%xB+fW* z<>P_^2rFeSMpe5(PRA?3af-WlL*l*-t)GWz9vNpjMV-0JS1O>xRc^ia^2Bd4mnM%P z0GH#OV(_l`)a13%D@JlwZ9nZp4XjHFxJy@kd=yz%&n(V$2S%D4Dt;h58jb2FJdo&- z5TntZZuHo^_Gl{6bP_gT8@VvnD^Fh-Zc)>vyK&20Xup_+!4*>&qtDksd@QO_l4550 zBg%2Nx0j4$D2BFtV{Rbi*0YOgmmXAwheTg9>h?Q-d6e!w)b}yh zJ9n^ZQ`%K;VtHeJ!}9fsrcrtGcnc= zj503eLV07-^lmy_s&5sM6DUnWu%|pVmSoi)pKdLRGFrLKs)oL~$;)Wqk~1S9YM?N- za;v_usp-lJ_M?m}JoA?B#M1a1rvsbCVB=+Yd5QHj#?vc0+u{~ytw1*99WNACAfJd6N*y{Gm4A$L_?U}_x+IMyu`6XQZjC2{J_ft$`foCr0 zrQhKJ`r9vm0Y+ons|%wXa00ohVxeEM>M1iMXk}-1h^c_OOZ5Js?FTKQ*?vpGpl_Al z1BH-!$xi24-%bVJ^O{sm>4N?WsGi`k8>TF}49s<2+Q6z-9D4pkQLlj)D6D5*-=YAP z58ogDK9SAss>t`5vA!4jAcpxbG8hcG48*pz6!Vl ztMf~Wk#Bb{9KRM;x(CqXcz(NyJ8zW0aveCHgL?pg_fL(Fv7g8`KoFWAkt9YtkHHb+ z9b95=<^m5uUKzlIA~JHtZI$YEaTuIOY}i%U&kq_;8JWAvu_-TjcM_qL@cE__WBK2h z!u3qlm4@+`!lH3~DM^!ThGoas2ApdnzSzw~{DMeXDdnh3^Z!%yAaZ*(Exq`-BQoSK zD}+VneZkl(De^{XyN13kVfE{W$+KvFUQ<0U0>i=l_W1n9@w_XP?ZjqNkUMzQ)No_V z$FewRat4<^vqJUyumx^ecG{{ZeH@py-72fscOuWvo-sVqB0HmrHW!Uw1)*h!ejy1& zJxzDkv3b{HoJ2a4H_n;EQB_&hU12o^8CKalTS2rvcpt3d*Y1u9HQ@+X&}Y+v5xJPT zq$v(8^x#CM+a?u+v00}z=l#m0WFWt~xehi~HT^IPZ1Jk(!N3MIgVfzLI#T;YUH!>Z z<&>Bxt$sX5jIfVP?Qpc`p1(hAW6ir|xRs&NOB80O%u6_n80A;+)k7#+Wg^+X*H#$Z z5Z&0aOj9bnV^p&7o}N#lp{U%vN6V_f{IJZmhMQHsF1wP6_MO%GkCI?~iDFmgBtoQ6 zd>actX$c$ks;wuO3ShN}SU;RsWlbN#6?8)Voyr3O#etU06@9RF5)!^EbNhU#+#3)i zxO{@nlT`!J4Z&T31bMELO%~EoHZBMzforxRcJ=9DwI(u$W!woJr#gFLeh5h_NwXK_ z81s`w)pu{?0!qWEw@5ENmL{+7WxLfzys@(R8q}WeT^NHkoL+Z65JMX(OO!Gzo=*%a zBu10sLcY%L9Fbiz^QSgLCYVq@11EWSDDevPS?-HqLyAaC&?=fWI`DQ__CC3>bb@nCK3x2b_@&%)(Iz<~DNHI>u z$GS#&v1tt6tkCOYbx>AhaC3jgX&~f%p!Y*-vfkW26F-z@?X7VAYWc%4TDcUg_#W{c zGI7F<=zN~RRR;9F@3sBT)3H>OnEBFT_~7d1$Hh3i8I{u6MpM`0tO55(n#s36EwaTU zP0W56?+|>03L|UrHSxP8Dzp`G94oEM_AvgQ$H^{y`&zi-}3EC>LdW#2ulY=vFu1FjM`;KKjC4{9=E2Sg&k9hWrK4%W2_ssculMNnL9mc&q6%C_($2T1`D#jieY29qv zX^+&o4@F2!u%O%xYmRG7ibHRelzBwk?umHs`24$%x<70h#}sT=2y?=X9Y;Evo2E!f z<=Qp+DJCFx0=ed{lL}3%Sm`M!CufOX9BgB=Ig%A$xIH z>q>5b=c3o>*O_P$zAv}k*p#Yy7}al8>qHKeq5t@qC}8^!IUv~(0xTxG9U*^`%@N)e zG4_7ETvB#Q7i%xzJeqi;R#!ZtN9&R5>vv@d6Hj>hD8GfiyaX2eg6pwHji(pQs>l@? z9KZe2K}=_#EG+DXR28|4{;Y>gqW^0EbBX7-TNL>R!Zd00_=B;QFIZ+3p$E9D;D3DY+s;Edlh1BB)ZwBsf4g9pN6 zaGi!y9w~Dl`1dLq)iC}(4kfbtF&Jk9+OZE1c6Q2f@;vqmI14F%Z|7Il?eDTO9r!NH z%aAVO1h8aOJ^Dz}#9^ElD;frz?wZW}u+S-oLs%KKO-73~^AM*Hdt{PUcqjEcA=)uw ztiok-EY-z%(I4@7hsJFX=dnTvdLn8sTei>11R8U5x*F_LQDw$2Gz8$xEag%iwu4KC zEX_JXYJKQej)oG4L;rq7k?!}1BQYDh*!}XLHl6EI^0cNFylx|?66})a#IqrBO-U)r zS(n~oH$fUk2h$GQ43jrszNmY!J?K;){rIv+e*~g-OK0VS_+^~G>il$#*7k8cwI`aNj zU25MkO$tz$EEsL?qncL40smO6&Eo+luwxh5&%l)Q6(0l_rf^#ROKd%w943Z^C5%>^ zhO3++l~vMJ60gY!cv=>lSi1*~9zI}89x9_j0S5ML2Fu(pNIR(ZA2QHQvV?iq{mCLX&A4)=gO;8q>rfzspHn=hyY z9_PnHwn=)6U0X+7J(Is64Nm@+h+@TEqXWeq1EAv13YwYg$TcKQ zaaVUQ8GNO+QZHP&B+X}AT3!SmK#I`XE$p32ZW%GOq#Hw)!sg4<(QdG zee;U6r2vHr?`flMk~+?`aQRfREYP&+5SD#?I{rv}ZM&|^Viptap2@cOzF~dk)M%9F zuNEmwZS57Q3g1rOO$%{9;)}Or%g{#ubfY}N_-K!OzWJMG8s4;}8dR`Xp1a2S2le$zL96lQXvuUn(JwJSiWM#S806doqn1?=6T=Ip7XD9JC3s%UZP(ayZ)jTK?9R zAJeW&78#^U&Tp==<;EqZ{0eg@w!FpfCIzMuQLu$1ad?OK2G`P$%;q1PMv`hB0Wlhq zV@A}`JDD{4JRP~J^~8W|G4tM3H@XU2m`pRUDQ)1omNbxH&vv8!BgR_|uGW~NO$rC5 zN|7!?W!7BRcgrW<*RA958Z`ob3XF~jzDd|r;Gpk^qMh8-pfUZFWkvUN`*)vb2U*O` zZ?pHF3GIaPKY5n}mcN49cYJU}reeW0n2mTxEozdOUD&C(XOaW;;gMM}*$ZI{aas!A z)@dAXt2Zk;0VaE$=)(}y33Q-v=J-$0SSZ7nm;Zufq)loQ{N=DHfP z1G&I+Fa>@1`yy26zpy39k0(e+2*9vyQ}){vJ)X^^UXLt#M1C`fxJH55^Y?YAyNFFi zRTg`Bsn#=94i_yh3xE3qw7Ue%6wG?2px`QIJ%T`oy1NuxP4VfCSREhB4> zBvS@y5)b5#2iLYjSh+S#3=bWQQw%HpCK-e6olaa{>*Sc_#~LX=$)pu9GM(*7LtM8r zn~mY_n8fqmHeMNd$>7Zu#>SSRqx>gtnf5itL7M&v3*<#R)~Jm7YMKcS;ZxyiH1xwCX6C{GUdI4z#=d!XBs0|3A+PwfaYW{vcK18sjEyf4NG)|h##U>BGEJg@@ zJ0)4BOa)ecZ=LXsTerMXRqOPz&=HNUA6K&uY7sxPW6dIMAh7!9zAV9a%nCTL_B1Tj z-oa@_AK0SKY+iHsg>IqX-N@#FP#pC!>pUxAV!qc^{4BO}wszKO-s^O}zEDL^r_8*8 z^MsX^KrY5xSiBT!zZJQMv|m3Vv22_Nv!=|FaDMq-J)4ARFn-#v@Cx!(%%_<~8?eUDWUyxRXJC+1wg74;mjJI*s!C^`Wec}253AlcQU`j)9 zg7^cAYptaVLsFg|bG#wBPwWt$xR+T-|f!r@^E_KU@J3_ilV~eiXKGkX4Zm z^cf3!+!l#c4+sUG1#-RtWnQV$SuiDo{HUe zxNiV&^e)~b(ID1y1z8mag)Q^zC>4jz=qWx|>-7rdH?(Kctxav~v7uF=W|`9Y8`@ko zr%*jWU+><>zrS=m`l|d{^06nU(YvNAHIevjik0mOuY)v;*9N4UD)pTz5OpQ+6B{LdR#Q6>lV>=1>S`W>d?P{ofE(Zova!hV>c9G zAyWLkRd*w=@y0D&9Skjx84R4gw|omZhpS^KfH=t*Zhw`ZJDbjGpwBpNfKd01BZ zSBwhuu2;-|Z1utHUP!f%|;6+s@@1eJwPEvd)Tz!z1^$nCsE9PJFPw z0nNdmaHHG1bIp>hq9`4+rbL&zy3*~a74HiEqOP%oP0{K7*p)@@)2w2xt33Vm(n15{ zCp5{onxds+^P0=H*q6oHG0W->6nUw(7#Drq)#i+X%PXBiX=R7KeJeeQQq-d;jOV)s z*^0AxLA9=Hb$Yi4OpU1$L}vJ`PD4@4o7nxMvWLapJP4Cobiqyx>7Yl`+_HCVc*(JO z{>xtOa_}}Pq^KpI)~2`oaLLA%5U3F{8mvDEYaRMD1NJsRQhC5syYXj;Ai-yESp_Xq z2Z8YQz6PYy8m+0vSADkmj6a+FfVmw4(ZDEKyZrnW2#0p0%3 zqTB`M0f`>tI-dK|UuYuwlm02TxsN#fdmlN*yh(;G))K_XHJmIs@cwXRfdfbtzJrvi zGITuIRr(QliDsDc;r}0|CdXlu!=n?#E`y1~LGmjI5)=Y^C3OfgGAys{ipyn@GP1V?E(qAPJqA%)WRV<%5_~#fQ&)ExsGos<-oyvnyHp>zTzw7?5#DQZ z!OrJ}H~cDC;m&?oorwCmh<#}LUfO^a?o$?uSH3LOtou&+z7+@jt%Pl%ylO1;J$o4e zapAazmcfWOu|t&iibS85kK~&n`cKc`&D~~tC zPg<~dC!7AW+;2LlBy^5UES!kS{ybH*pYT0dJimIV@(OKJH=Lp11FKj!gdPT?5zD1J z^EQ)bt#K3kKM5#4A^GY-6*W?zkejTb-mzipt6Yn@gp`+qlo(kj>a3vUhxnkZ9;@&M zw+xN$vdOO|sd=ZxL07|BawjaSMqSq|8kRXj7&`l{j?V=N#uJ%6#}V~1A>WdWD4EtR zKdV%alEy7`UY)&&vME50xum)&Bf;W@WO6Tf?U_qnlAy z_J@4C&l;k{%R}<21#@Gsy*sn<#VC$UZ=S;26y%~JYK#yc(e)ikJgp25mTxw$AKtFO z=|)=!GyEB7Wj|f|raP|4&@|T!sqH4TQvrXcWBavijyGo3Y;-QKUBDH2GcvYyNms#X zNGoPev1clF(hFpZo-tJ(sIXvNMp_XgwSM);vY(Z>O%6n|OY13)lM zgZB(EzJE0=g}&AOCh}&tWUN@eTm0+rs~pj4%h22kKE`(byli+zxcKTPQ30rH>~-Ft z&?R1Jc=v}~0jCpc=*r09{sL{iKzAHfgqbMAY3ThnL}Vpj1gG0h56EN+&dcS;OUWGk zTc$@JZf5ugk0!5nidg^!#;Wz!FUU20wa5M413{llNfz^eOZhj}?3vdy%nO&haN>gF zk6mZTW%axGtr1*$Zt`x$%up5qUVTs?hvW?ig)d}CceMy`__&}-n)Eyx6!P;Ic@s3TP%%ExEk%ojzpipLsJ(`oj%vs{@$tasH^H8q`G61 zBprW5Sh7<6IA6HjbOoK2pQ?A>EQiJ7vYgq=8YK&AU@EG{dME1}`j0=O2DsHYp4Kw% zv0fW=mvS@4fHgVWK(j(Jzj|l_eJZDB2l|G9fb@c0bgM8=C(YWPv>3b%!4{{e-=t&+qp7!nW*z-~h<-eCRkOAIlj14M({{K|YsVl-UKUXAoMu@}Kv|Ta z8RLEU0z}va z;xseWd>@|Q3v+*b{k6hnzx>f2uAp(0}}pw%|^pu2nY-==9ykYG`cVYLctn zf9<8@47cAgCSZUZVG2l}F=Q^%Z?gsnh22*XP<4NM^#5N)1XULe`ArlBX4T~D08@*5 z7ZR$CUDejuU0`%&cYGS(`!hz_CpsNYF6AG{XOR&OJUQ{@ z1!Q1|9GjK?59Eq~ZLH}`jUmWfZdIF1t$nQ6Wu|KgYwRUE879qgZ- zH)G6lKgJY-D8j^Rc>glQqS>^@y9T)TP6?Zt^AZ7{+Mb*uLU`17vtMI0a)IEGfJ(92 z=HxJok9+XKzO90=x%AVjBYg+48z5gT$F@Ob7I&?ELI2AwAeaz+t*Q0u14M_?!r*bP zd-q7yJI1s)SK7xU*NjLy%d1D&3=2gY?@_hQSyU^VQQ?(>t{oeg(YN*xixqy&A+V_~fTk1>4g4;a-@uolD)Ibde?x-{Zxg`}XaxC<=sH9KR?t z#l7iqzacWVjA-^uUN*OeGjwU6&`Q~DAgX} z=(1yyrEQOE`Wnt#lXbt^fk>`8bp z)jaE-Q-S_$?E-OSZW z8u+M+KDxdrU7@iCI9yn|HG6j(AsD;Y*mrJQ5^P>SN1VSrofx~n-+wy4Vfp5S-*R@= zadv<>gOm)&n#;0ZUS%6|5g?3Uv!s{U2Da+ODxr>RaeT%9#vyS(&TNsI!jAGN87JJp z8oYMvP-3Yi^E^DqGkyP5zEN$`Q)xQO13q1FL)Hn0bEr(A4V9>$QizRhm7cm8ocU)t2znL^|dm&-oI#XCtzFmqdbx~z(LN@Vr^9P zDGmOiy0lxNsC26S;Hq}YEx|SK?+xSc%EWI>Vve{og^wNtR@zj;HC154&oY``k3Chd zh1oNrVti@w!OWv2r2JS_x1&(^$>jWCtqqs57X_7HYf*73%lR&MrP?BrR?|urK?{%2 zYQIHw{#b{VPrS(8dZ;+xHn^OpaAf!hhv3qMqElZ1o?9GL5?7QyHP25$5iiYCYw|{t|M<;-aVv zLwI~yyRaf_ni7yRg}GcYWs|^P1d6Nt(bKm8xupd;k7?wt_k}2r`?o0CK}0IxKc<+z z=^_W8egZE5P`LLUbuzfgEAR}gMd{_@Z!1%f*_S5&u_1xQ!oB~?mg*z3>p==D$Zz?? z01^2Hct7{Z?-F(V2<+Ab`~>xMIi>%XiAwei;wTHdV5cN{Jgk22`q!{q7bRKLAM^lD z&JDGzb~gW_KK<_010#RQ0<|xK7nzCwd3Z)MIfL#`4>_s3o06{o68!>vZbiJ(^=s?I za1`y@reG!>SXfLQA|3{5?d;f7(wS{Sb7N{I@Ky=q7$DQ7DKO?Y;vL(C(wGUOraHfx z@+iA#mQdT@6ik(UB0)K~glklMoq{4%UT|J_nq?iEY~EPLO&z++EwAgoZMC@W@xgAD z>@dOK;6T~)PXXrQg-7@LO_Lw<^mDiG+2wRGt*-T#QV&l~ePwW;*%Yg93NjxoRU6=C z+4SR9E0DnL#H{55loVPflCh27Z{za~(}EJuR~#%;Kup_z9~fh(&9) z%rVJ{V)y4#(J4Dmc7Ls$(Az@$Tuq#ID9r3t+;~H0axvpj!QD?4fviyYW44Sl59Y^R zHW3;kBT#O&%ztD#tA|i>HSl%eSf(>;@5(RXi;S43G{y@0jHY>IhXTHoqdQS7!i$Cr zG1j*CrQN@#6)rP6o$$~nZYQ&pQi|p*wfjaUNjugpz9C&murOOnT4HJ!g?4gi;Kfo) zX(~+KyE1s@*}s<&W}`P4eyBYxYe46ljEM1eOjfO5&ryX|GHt>?OEP-iG?IoRT{CXB2 z-*sCQbJwiv${qa!^~Mwzmbfg8Z1NBU3t-YF2*cMZSHT8%|O| zx2L}mGWnmMLkk^7ryPbK8mp z6cw&InqSNvsbP{NBOC0v! zrLfj_TZ1y68!eVrf5*iQY4$3nFEqMveezRs@wqOIv5%yaX8r8oPuuQKcKV(6?6Y*b zIck3~qZZd3m*ySS;%Rc^L$fMcTBzb2Tv#{?_WJh3afn^k!+FUgpEII6+^P4fe<0Nf z?=Ej^DRwD@7SW!!b`avKcxv7T0;oVcesi#uKHO3v`*`!mg+DnO9#@6IE>g7B9Fw@e zRt+-vj*d_l7_JIEsOcfQJTmgq0dDw(R5dI^kqwQ=tOs2N`k^w&SEcDv>-7=fr~i`= zI~W@ESILExeq0LdWyFQ^*Z^Qt_Lkn}hw;o>LJ@gO9`O`7%(Ic@NWLIb#0r=Vd;^8< zB01)d;t#S@@K18#1O3}U8FGp=S&x+QpCROBQ5Oh^6uCHa-HPvbs~y^YT!U+O}X!JP+ys`Cl_{c;P1txki$Rgur8k3``;{_$WL z%|J;$3mnmOuRz4#8_7Swov)-{e05Qp$*twp6N%_XU`6I)(Ibr3+>i<`KU_h&OiA_8 z7A6IUoZKj%-Ir9CnTp)D2^aQ@u9@+Y4i*PlEcMXr66dA$9|CUGDfu*ag|Dzq6^ep2M06j#LE)q;9j!b&6I;G{B z27J}>Ao58LD|{CIt!XQK->}c6POQA1=f}+72QS-KorLfD7wCzK_G0LsnxOjxUm0n; zF2+McVng-mLs_0lqef~B+W+Dgejdhq(-(e7R|fW^fmaW0!ec6ID7T0;@PL_pZC>lyq#5(iFoy0oQgktCD zdL#c8X(($z4B9U!*)u+$<^O>ne5zo!+oEJwUumuP;a_Fyu=*;pkPTH|Py{&jioW&y#XR zZa+-qp}SQ$@QEY2+v1?`V`*TwUDm+J!*bT^dl6^$oATZEaq53o78e%{ff&>L^Lf{E zw%tSDtV(TYBi!F|y5&fJJa8+hww6g^;74QgWCSsUv5;;dnN9IYeLVgoD7JU3T<3f| z5Q@W(c%HKG-RgE6FsQ@6x2a1FU=g1#6(OkE@cm=BDzGN0a&z@2x5_805xLOmCf!Es zae@0%Jx|TuZ=*{~Li8~GxZTnE+n!6ijQD8*mO8b19IP3prr&+r!o;-L(V$V*PQQ+r z7szKs=Oa~$Ix^&ljp#4r*D+#GM^WP4;>1!M@)JI0XylKIq(A@ItQ%;l^R1&|{8|*o z@cyjVKMGXwG7_V(cEf^=btdgJ6a3+kx0+6ZQAc8~NbTlHMukvS`-S1%&hen)A;-;> zOmhMG>%$D=4r}XtO_q*1Wl9ay#hI-EFNr=Po8IkSpGJ|hs{=oRw=~yro=>Zii&w9e z)9jxekb2MF>TO_2yscdHs-tVIb0K&a#0_&vLUq=ee?_Znj;sviagNlNfd(zw2N0#y zuILxd46g_AX6Io!o9e5>Uw z$(gHbb@3G_g$(F>|1ZQ0V%wm^4(i~=T%g3fPqqn$0Q&e90JgE*H%33CzVoINQ2742 z_B*l@4>DYHrkDd&=c0HP&&uFceRvA^ou^P7h=t9}< z+HJ$G;aRnr?RB5sWg|;8ye=SRxp+dOIpMb&i8X?v`VuD;h^h>98F~kqSIiySneJrr z%LJH1G)4A1Z^j`ib~DZe@6=4pI*K*%J9f;EdsD2o&WBaZDVX}7sb>=(pSWx2fY7sUM=QT!L=aY$@%;fb80CU#-v%<&iGJiGlD z#NLhc5R6xW9&z{@`b_bx@Vv1zF7X>aG<|EA_1(D@Nt<^Eea83;QV-f(q#>KP`lB=M z*_VN**SXPIHfzEBwl>i_vGRP#UT*(j!BYCPa&=Kb;uqwt;vs?ZEPFWQl;2*Jbs1Tv z*t2{JzSt$wJX+@$WL6?l#6)J(6x>34*LOY!yU@2o^omQtaqj$r6ilpjAeWKg%UJ^3 zq_=`rDDWk`a5gDn=#}n8MZL3Z^7tG1*l{bo*aIOGre^=BJo3k}1RqDGdP>rgH#bs; zgfy)C-gE4vV6?Z_ZA7|G3b#R~jOZaw%{6FN-9uPH^!9eodB^>Dfh?FGtLzA*CI-%{obcUQ1VhtR~v2XR6qa2cHPdrNMVk4!QF0 zm5&anirOCxEXP+F+KWA_Q*uq(RQbQnou0oXsWV{pL^fG!n{{ILv+Pu)B*~3AI40^ zt#ZO>tc)fn@(h_V4g$|c<}&9Qaw7)WB-Do3PHkeT=9KgLt%i3E{PfE$*y!@WF2d$j zS#rJ;b5Ucws6}PJBWWmh(&-M-+44A(*4b*b%id?n(%Z>M- zSfe%xzvY6-@Zxb7g6aJA+>v`&!L*IKrpfradaqk6BjPfCM-6e!-;9a$k~g}fS@x6L zsSlc*tW48Y1?b+E5k}+>6Y>_X@n=&Bvn&tPM)R27L@jTL{n+JKeb|lBq%(t+0gZ$DZwkxdjZ2w zHO1_Kx+Y)ECvVSzonvdWr`9hJ$%Bwr5YN{lq4ta9HN5nPLEnB`j5zZl<~Qf?!o`P% zE^!OSv3i{EIC2qADVBvKO%qsv0 zy!enzD*4Vso@RhWCHLhtxXZKoXHOY_Qye;Sj zK2K4*eDTMH{_$S26lXn#9Hf5Yt_R096(KZQNG8_?B|mF-=wn_+&{kykBB_)eN_QNMDqs(assEs&!T z(_@42u49Fe>B9tt)vusa8jCrp{DdZEpadFu;X(EJQ5fWPr<0$=CV~Ps>HvF4B+O5Z z)Vh~DuRDqdB)=OwMgC_OKOeBR7QTrK;`Q7gQHxagb2yH(mWp>a!eUy#C!pO!e3o`} zNyKUa7P9U`zm-Xvdy93g?Gk9Zq516S!NzGzHg;dm9yvHOPa0m4Jl?;JU$$*Fyrw_= z^7iBSFxEKV-bJBUZ9XVnS|3hjRz$|QFK_r|A-&)Vk4XYnGLG@n{ek*ID*Y=Ko}SRM zZw{#j_+yJaUhKeO|TkN&ZA$t&_mM7j%VYfs?rrk-17Z8o=}-|YFD)SD5$otS#g)n^W-PpHw& zWNYlXqV^7kI(=}!kzjrj{G$E2b_X`wlqKtmS}Le;NR$^@QE>6|yRmfcTN6F|*4H|T z``s5QxrDQlB{;>7U`A$JZ!&0LUSW2vnKcz0X<8erA;=cq#37udw?tV24;u+-+uNjx zaaY^MDT`l_{%;#|2`(+~4-?x~jheQc1k0wq>iXtM!tzuPg5@npuVE1yz`tj`g_BwZhKtSE&`m z-PX4?w{LW@DliwTUUd@S-imE`B5Nh=_X`5aoE!*hFW!aKDPnczJ%Gb>QP=pW`tb=N zBzJqL0nOUdIu_1tHu9rYZ#BT|C)UEIH^gYbY*FG^l-j2ud2J`i1x9>=pL3e_C35bc zknBjz^8P`aZPUit7PU9Em9wNZ6bha5zg4N3;>9FcP;p)b#6%w*O`6gs)D!&1W+_s--jf_XUO!?f>FPE4q8zom z1Rc?PnBLiIeQW6U-vf)DJTIEEn3qnIb-Dzw0_tz#9#t6ij*dB4=U50${_zRR)%O*K zJXhD21vsu?pQ2;PuzyGs&c|WE1jYSbeROZO_Y7{5o{rp^-H|#IKp!f+C4hxjsaYMe zB`Yw%Yd1*xhc^TIkF~damx0^LC4Rh$7zvCx8V1Dv+JPhZdwt4HkbdVw7DRmh9%$pZsPf#(kaie~i) zs5wOjalyiGwdAYjK&T&Zi3fF-4B~wNED4j}$smx+mohw*zqe68&R6re7H zTc-35U>)0)w~I-6AZD!X^mgiU&^5W$2@pc?mne_{D)`u- z@AK@sWe9;FW@>_K!otk3$NrX+Avs5h^iJWW8%`B2M6XIk65CMyfV?c<@UVHKi6Otd zIO$gP`i_jLOq>Fau!fpG(&-=>Q)hCD_xd(UCDbKUueGuF;<*&xxX^5*eoENMS(%yO z{>eScFw*S4qOavuvc7|SeHpg2)NDl?8qe$%n2FhEE`bMT+1&kLBV&~kSi@nVtE>AF z9$1{EtexV~W@;=(;#Bhdf9N{PxF#F0?N3Y;ML`m7sO(ny; ztJIjat1AO`jul{;!-bfCK&xqiD%g8}_Dt_1ioC~*T)i11vjSZ4Weeae@2>UHj$LSx zT2?wf6Mc};p4VKKrR&&-7aG^Zq8k|rCI35kLqDeJ%3QV5|w`} zc?w#bnsBs)l67CVx$jPRA_dVrxn>2^KYzpr@l2XkdY(rv*l8zhhDjDlIDh`CtEp7h zTEs_&?68bwQaR``}Sm`nmspGm@#yoJN{End&OCkA0}J3QsyxG zdx_-$0cW&+dc8bYKqrRFd$JHpXv+bE-{eLhHq|d`HO*MeYSF;?68Cvdx}k9*!vzY^ zd_GN?facQX3>dAJmE`+-u@lOUh#U{N9QCVVU58tvFazbvwuiQp5U+Zram2mDJI%=z zW*aU`5SJL!Gcm4O!%;o&frL*8cTXlIs{llEZdIeY?(*hylwPva(spB1%5`e@UXiB` zYz-O)-x5>xJR1uFBj_rHja~S?8}f*7Zt!W{_hB0;UU1SzBUh!o(bKtp|6We!pw55< zA%gx-cJ3zGY^ew36TBZ&^T$eK8X(dmQMY4_8sJ6TvVxKObB+p@iuHvX4Qd7YOQ{Nz z3W9nE*6KAhu|NHSg6G?rCJQS|0g>uqW)O|(3G)dNd2UY(-rmg&o_Ek@o(=#k4||-s zo4XIA7nK=`^+6Xv1mbWN7dw{sy#hv2qtgQget#YGcu4xOX$bEF5M_Qys|aBEk3rau zrZW)-fbw`TW>Wi^hZQ5;90eDMB6(;GbakJc7;KChmKH^@dNLH{xr#8J4%u1g%vk$-t4~{tH}tw zeSBsPa`3W`-D4hD#wRXRQLO|UojF(7kr(Hg5sybIhsXYz@yV=qZGAmBAGV)2T0T^1 zF?DQ|r__-FRHjUd#LEv^a-!t>lz+G=_EeZ?;oG-CCDeDeDN`c=gUw9ux z!?le=C5TjKWFdY-56lwavXw3o?7F6p79=T`X4`^r{?juBDdy)|;a=HUCG(>Z3P#wy zptzO5;4WhY=dCRC!P+XesK{K?IXR`Wie?egHe9wZ?+~8C(i|AGf7YzomON>?BbKqi zcfw+d+8RIn11AOsvQ)oWDdR(ou-g+Oe)c*MICw zMCvXG^5N5ls~EmlFg)w58>%Wvn4$XV*3piSZy~MX?v^l zb4XAw&H)ud5IcnI*OWt=v6;}bCl>r;(WVvSXc_u?US`=eXS(!-o0}!cx2pCqkblR#S9?cV{SOg?_=ct|g5sTJX90K=O`Q@Fh#XZ-@bb3m&(*}JC9d0>} z|5Vm;=Vk!6sp90wszs6=Cf;lJf+(WRy(~W7pz;`Ka9haA2Ox-J~?^_EF1ia;M-Lww@N9Kvg z%9?0fdi(vc=BAU41&G6k{avGq8O3!I}h z9Y0fmxBJs5cfW=5`Mh}fl3)S01o7Lm)R|*6{e;WNT-IMx$|Xh|dWTcpT5YYoN@Rx0 z;6o<;W?dIk@ciNRDKAZS7wQos_GmOkv$GFap`x&fOIO;_X=WI%@*^21Cz0}x@ZqO=qb?iQqz*BWsXw12+q^dU|oxojQ1xAnCuT3eHnjpri zkvT8e7p+%|4RjmT)7xLCQgx$BJMD0C$}T#YVE6lIG)=OLbXc1bZGJ;U2YVzzC%rBm z;301AU$(#7V^CF?y_MoSWVYc6xkU{{E7S5y<99I5=hZ{<=r*Z-bA{nESosNDvkBbk zXcfcc#=deiJbpL>4CHi5+k1h?up~|CpBq6_!Al#ke?UCL&?QR&-u4{Vav4*Yr&T&h z%SNskr)yF?mTQwV#I&5F9if*VD;=Pw@#W>UU;mEFN%{%ad*HC^OMsIS=(a%~O)I%w z^G+J9>@C1vlGFCdUMUorI+~SDxhQ#7^;27Y2gild zJM0@Qb{!w!7v_t)P-voSz2Dg2-t^1$eTk3#+BU&1B(nbWvNLY2 z{@3zvl^ss48kHZ%Rb|)$m)PXSeIDlixE{jHlHa;Aqf_vE4>XqdI_u7*u3MQ$B8e$x z?YdSid=Gn#sO}4O7g3?{Vk^<0<>hZ_?`V7dYA)XyUcA~Hh$mERwJ8wq%PyE&OgeSQ zf`>1n|BxVxUv~o(``hsVM3Iue#jgo=I!rgCP=3gK4g=?uZjNqFZdb{!&r*6P&Q{D6 zRIL2=FmWu=Khw%F9U#^MQ*-wH+OA{&p0~swKjCc2LUBJ%Oa|Q!{dQ2(R!8<=72|AL zT_B5zPUs(yV({0yah6rG6=3<83M??ICTvt%{zOy{1}}JWDDsBac53qrRvfOK1)s@R zpt(X4R88%ocy&XP+>}qM*wHP(5M4Ugh5GArSGg7H&98SLu*;rkEB|gr7dm>Ky7b0j zdg3JqI@~jl(r-Fjmo*BlbRSA)>Rdijv*|5$kInp!!pG%v9>>34x+?{v{KN=G91*JZ zBUR}OErK)8?=ezaJJY6q`aVFzFqx$Fk~Zb+5O=4<&oLs$wyTSbJbL?`2=JFN5W zq+~3gsEaeZ?OOC4LE|*`UY7Q6?3$Amwg|Fc%swxkKlCez_kg+GzTZ@Qyy;}N>|;OC zz07iY-*q?0<@cgDW^*s2eg{(>DjX*7d$(1=^;hF>l%{4s#9|(h-nmlNY$2W^Qcbmt z?~D5i$|@io-Wn!qI4yi#_L?mE0UmX%S52m5dAU~Q>YSeuI7bkg5|hYu7v%O7QOmS*EKvtI zJ8`d0LUgb%wE4p51;9T$J2afO$Op7 zC@=tE1$6P`(tdmCJ5|;1_C)rV<&qrvU9niZFkpJED$-H-9jKyz#}~>2=!T~?z*oS{ z8o=KIS=Gw#{@1?vw=e_364EpSz~B0-v+9aCe)+360Rht!%=^!z=P}gtgn&R0;C%6Y z>{G`V(xHD#I2BO!N%a~%#Py+%p!^+(*So;q4Y)_7uwar)|6kQ}Gy>p3++2)$$jXrp z0@6>f=wB3YB(sVs{Ec(Eo2LHlkWREssKe}?^sL2rPr)DIm9q**>~0l&*G6ly|L#se z@FF6v*1@6oart!DMJ7A`u8dF(^z-Q2d&JEVrtyx!F~lP(x7<7|Hi;(yu z(_RJ<6hE@WcA#&sIqppP1CaA`kZS|`aomozG%ajXmo`a|hZH5uPMdQ)qx(Fo?bH8Y zS@|1b)s)Uz=;@R47co6_d_}6U!t!b;{x*yL!_er(vSkf?kka~d-moPLG$Qo)psoTi zD+L(og6kK`{G7e9l!W#cIXsp)gD46fsPy{%_NPhOR?uYa9*g!G+BOa~ot{CQ08*;W zG4%mxySLj4UNywp@q@skl+`bt7zg>H@9x;|M zAnz`(_i0#XRMAiWA*1_b&cpQTE=$Ad`?7n2?sg^hz4TD^_@&D5Osl(*FUuv;@}^T8et~GF2^t7$Ko1nLBqhxchsA z-$rJy>xGrh%ZE}&oF@v3e;U5}b}t-8_@!Sdcvne8HSs++5$b58OOBKbf$-FN8rVdY zeW%!}6ik($1;xag#BsGTAFyGE`1!pR+* z++hyk)#uW;#yMIoeByyc+nb<$q-p(XbsQZ)_W#^BPOs*`({b%c)Tc{Aufo zafwHNVTD7~jE!&Y=;67gWuW5jdLLzb6mmaZBDet1QdW z=!lk@RnihgCvw-N$T_d5wYYaYeMeZF_A5ijx0;>;mrG2@w-lS;L4oq@XLMNSE`}5z`9D(Hl+#)5 zCWjf>oD4GuRIAV&uZrQ1q3is_oj@1wie>Jx`VyP4SBq#Z zZ!oDYd{XO@MOM*%>qey8jM^{tFb^Yh)?dG;=6^Zz>ROJ*n65^y35O>-6*+}`MIlU7 zpFyo!w%2Q2uZDk%SzTixJnO|8imBb!ZlX#vmxEksH9t0-)iv}mX34qz`pcn0LtbujHVH{dW_KRLu;Dk-EN5~ z4NZDhjd}JJr2$>UYD3EWxbW(uEf$HAW>?Croly28=UJ9HpJ1rqaiFvr{`vIhs-by8 zJHs?EKZCmWcuETcZ$b`sL$awX7V`(Xq$x|v!`MR_y#@idF6cWnfi<8XNOB3wr3GrT zh#|O-ii8tqKr)_bN*`d^;Gg?|8Ys}j74?7s{?{dF#mi25whC$9VW_-N>;Q;OR0Jk0 zF2inkAw;I=%xXDarAem#BAM>$$rxU~8~88o4*1%7>CP*FwiWXZsMi0+*8O$)fmq2& zS#VS>wEzUA1K0pQB~c9j9V`RS0@;s0djO&UP7dSgpCMxJNQZ=73`p%aup)c_fU+8q zFM)*X7~mfAze&{p=8=+G^e?1#9G)`wpD~6Mg-6OMC5=U<(%ldk&_&_tvLaW}?7dc> zxCw-P$nISgnOM8o7C zCsJ<(6dm0nXB6ZYJzQc_HXSI7aHmt2uSzlaN>9EzZ>WCj{&kOt$&9^1#*SMey+vrd zi5@|CrI_>7BUI#R&PHI)pF{9Qq$S}kbfam82fLac>j0ZIJDOcSw(tthICf=rzyM=s z*_*BCB5!LWPLl$bcsYr|fM9c%Y=q(y#0p&H+ENH}k)|($3E{{=Zg5IuORxvv>~4$A zZ*91%ox5}JxfL zD?UJ6wOF)b6nn+2;Op?>EAwTHftfqv|^%4 zKSDm?R)U>3_9cqz`LMDpOwd5(-vZ;E35U%!zy#Up0OPfwK@;J_kvD%Io=7RFsqGBo z1&qyZxa1MJ47xJ}5vudiQPJ^EtU5%E{=&8ip@oNp-SU8v2$P_)|QjHt>q!&F*Qs0t2Ur;4Z3UNPo|-fgvvB z3mMc=?#vjrUk2Y@s)81v4jVPQ`{-2k4#KLJZf}{QAgJ(L$70!?)Rp?))3*EH3ra@Z=xKC>KnRT z@=6{_4+*?7X^Tm6TmwOG3t%`fgqfI`IYUQ%w4}*CM41D+!mi)H;Rq?#%EWL&8-6$s zlg0exM~aDxq%PY1Zr6qMo*|jk89P8R9`-Yt4+7OoIEYM)?8q>&UREh>H7yOCjriDUv}{Tz~Roj)ao!oPMDK82bm{UiYBC&(WUx6 zD~+C%P%19WS@NZ)Sl%rvLcZAFf<=E6@R>V800P7i z%BZ0P4ZQJz{n#M)VxLD$(+Mq|bh2@PV}~cFbEkixP&X@ow|l@9dVDsM4}HPolB`EQ zwoM(3@h~bDeqSCg^&d(JMiS?Rtu3N`MaBWJBy3r|X$4)I=00XO@zWVfze+C!P&)dL zR?hCifeC|Vknes_E7qLw2RVaVah}FxF`1pjFK)KSP6R~rI|M{*QmGrIkNUu z`!3tzqn(sjU`g71J|;Or!HTtPwMR0z%)k>^+;*k9(w*2zhCIabNep+<;g&Q;@Rq)@3N;R#=kwG@&ZJZMRrzPtzD#ndlm2WSnUs7&8_mW|pBbn2l^@t+ zZ}CBVYggr|k1CMp)(pHK5ce|3`Jcfftl9b>4sk!UbMxEQZD;H=OG?g)?kdC5nq85j z13~wNw=TO!Mf#pZ)ClfCR#w44PH5TtC(5iX!_`R(>&$$3crUAY^}vruH_v>yaiSGL zSakcdz4JELb%a?}1gVPcgX`e=+g+DGAfM-QBzqRRP&CP4Mk>si$8}aelp^4|bm)SHwIW8C8@hSz+NzOSlbA9%4 zEBlbSn<^0Hm|0I5|5_qRW+J8DaEH@cv0#FIB&ZmXprB!!&B9*t4D4-w^Mx`e{$+z# z5lZ9~P7_1Z*j}Qh`lXh_Y~h;LB4PYYLgi5}*m^lA@)!ExiE+T*>~T|Fn>YWWpi5ir zc~s9ymKIjaB3 zTT)+NvMo3L{Dt&6DCRpGDn8|VF~E&|_*d!uuNoXAV#q&m>E1h_r^P-7kV=50;(w;w zz)wobf&g7=M4Cl$sPJj#l3s@-2M2)w3V03h;Xhzt(F@=Xp{dco_8d|!5lBsg=$1@T ze1}X3y#jsA1(-RmM z>oql7EVkR&PB%G@J8e|z$n%Nkr{LEB&BDjEg>&EmIK{Kp7|4*Ri(N()+eh%yQI)QM zl(i3!r|;fH>5(+Kl-qY)vJXpPYkh3dGSX-Rw@i9nK|9{4Pb+GR(zj?M-516v@L_Tu zW;}Q8CK;D;0oO!k03B^fp+ZQXe?w8!uKokm@F+G+$>KM1vh>kzP&}7@dHoIS*7csi z-Htihd(kVmr+SQ^C+#4^Ii5wvAaA)#wSAzN=5KqsbSZLzDWl&i?qyHc&!Y@~x>*3+ zGY1E6d^&dN?md%NvRtuPH`}uUv~SJU&Yqc`P#>R}d!0!I z)z^&ushQMH9~+le`@ZiCVWyOYReOL(wg~|JCo^KeYJS=|cStW&C^+&K(|UEs_K<~- z_A=G{h8S^jWc+7iKvR?ViUJHn9K^R|Xoyz=eAdB3pPV;q(`5^A1gw3>%Wu*cT7fc$ zdC4fe$)=Z)2PQe{Ei=%%z?(xH9_gh6Z~ug+2NmPQZ_060(G^`tCWgc4UjYP+)o1wF zDhaGhtVph|0ZJV{$(`nz`jx(+D>q=_?&z46M2)bZg4rVjHNtRlsl<~+X_~E$OV&#& zM>w^RL>N9O7%F3W<^`N&oxDtToJPYd5{)b^|4bS!%EUFT<=o4VV-ZxImUr1$9*x^* zo^r+Qoc$sCs59(Q%?GkXRV%gNGBVe9j=fI66*WYIkffdc`+MSrdA-De3kC+X)_7{y*v#VZj|#C(pd{} zNthifL3CYpfdK2Z92iwEOXjTNVpXsA?$j)ra}2+Y zuhQo1l-f24*oDIoW3Jj8(4F(c6TR975XH2o9_D#*p`vchlHe!j+punih=-41sqck9 z-mcBJvmbo$m|Q;ing!#KPPbh|CRVpUOxl)V_`*vv$?MM-Jv^pr-8w}~Lva8O=-O>7 zL5k$$8%ftd*Djm|WUBtDK6`4WY@F3>hi+Up25@#H(KCqEjbGg@B2`tVW{7$!texvU z1Z00f5ooQ+?61F3p1a>z&lfXvJMw??cP=eIqyG#D_YnV<=}K^a;fLbCVDC$pfjs96 zq}TjcQy0^j&>!F5SSC60;P1g)fV+L=e>HWId@=nY*MTbp*Y< zc2&|W#{rkCXCXC&%smB%cG$1o7L}C%$<6JJ)>~ccl#S4OjJHdR zeQUaeStS^=l^B;Zx<4$8{1ce7t&KVVuxUYWWRq89hYd6}M-;HsLrRz9%9ikmrUlCP z0f7=&@jXLqiIe5xnjXOH@Lr5ZM|XWpVGV||VxCoJMCI~oS%H@uMUc$+jLM-l3kIz07VE&sX#F!4^``?B z>^GN!^2&nBSEN#X&jJOj3Vye6PBYK29YIw1tzcKxdX@B3BXVUQ@O+TSaLkc=ubXc%*$|UoaOcxXDuW9=ExY1^(CR``qe#hC*$^v* z`3q4|p&556ckWNaZJg;Y57I0We1d!~+~+-dA91Q+uGVs)@Gdxjew$UoL|wgXSaR*1 zOst*}b+(TNlFfoHC<4;)T#t-nP$u}=s(x4J?DF~fsHt{L?3xWHSb19Jka*~)b{e;F zqS&{UtrO^H^t-5Z`RmFwX6a}D+zFFv{qlixC3IGMA35X0k8V0Kzp3N_0mBXQR9xk2 zSp+oR9%q8JQU$;*4_07>YpILlZg?h+GKw3SqR_6;ZGr(W@0i^%*n)q9_qrqb)Aul* zEwf|Ba-*+XGG#Ug3OmkFu>*{uOWg$d`RaO;;ugkZ=PVl$ROOXnX;~DPC3wn96v*@J z7-fo6&m;(^fER=Xs^V!Q)qEzX4YX=SQ>pz1B{QOI0|eZbm%rJLK#CT&OeQ*m z1GCXeCgpxvi=HD2;Vubzz48Tz&9zVnNc#{nQ~>;9PUlJxLbj@J-y9L zJ!U-&Czd8Yl;cM#7MHTG#n#@6UALQnap{rcGV7x}#LD0pvczfO%r131Qqoc`ZhjGR%rC!=>E-t(aCX)W~YdDw1ekB1t7Q zU#UzV7v>VhKD`-A#X>z~+%lzXe&5}^4wu?59qO_H4%CCV=1@toNS6b{W;ac>ih=BT zQxtHmxS!bu?Bjp(6&fUGtekBe z2YUwgPfw9pNvHl~yf@qy$6qscs}RpFFupD}guG)MxCHXMw8RAjt~ij_za3E!C0{ydUahSZvq4qdqAwFtD;{D56uJ@y8A#8Ui6A+M>Lt9YKvkN=x|19H4& z0H93@Tb5%`A5E(VzQcbVH;9Cw8%xz96o-jqh&X=!n+^e-1MqXKvg)s#ZmPrh;itfi z8|eDczeIUu0|l{u<`_ghawaXtK~QoUyY=%pvY>Q^Ty;G$d`VF9;dAS;>i&9xFI_hQ z_yf46nu1I8{m>y&ME%X8y1t0CWm=SLJfd07Rtot9305QlksQAEdA6Md$^BQQ|Wg=3fUbb@rik8i7W zH|NrtI4+%Dxs~S4$p9FykmO7eD>pYab<*+#V`u_$d6eX{OiG^n=q8+*5|rX$3FmJE zC?qEosE)pgN=?ofCT_)XGo>lr5MO^@B6CkYHfXL9(m3v}_W>fE>`dFQLSgznITM2_ z6qS>q73#I<+$B6g^qqm5zy z`|_MdlvYKJn?MMhX8;}Q>A2X>>Xl-%3Oi)Za^kul;9psl`3E!=U<1&zwIa32+jUK} z8iY?2m4Ji(LG7E-!BcX2Ip;r%qPg02S(uRPXOw5is$F1Qptu$wYp`|Kl_5q`N&C%E zPHu3{AN#WHfN7WyTt>0Xrg-6%b+NpJ7Ba$r{u`;{etb+L$1kKhQ->m6$Z zj2~>tRZSdbS`5h%!c3+WiU=C0s!adgZu^I9i38Q9Ns#a45VeMphFFb3VMu95)9|gZ z%pF%gMWt-p^{Y-H^BpOD==_h|KPXj}puw(IfhCiMYj2U9@loc0hkkhZRBt0Di0JH@ zsAGq~s&wdY`OoNeNnj4K-y9gRrc+M4CsECC7yON1rdYzU*+$cK7dS+qQnn3?bgV1S z%rzlEC*)cuC&710qDwS}MvKgCW{67^xu*S#QRZ+Wk=RiUqAbyeA&3Rvmx#b8y_e2Q*ytoiJUOqF@=*Mm#P8QM!3 z-Np<7QIZ%g>VvyUyeYT^wr4y2Oz+dcr=ZmdkKL=No9NbwpX}sYjuSVw?ex{lphph$ zJq_#wHWVlbje4_{yBYGL;N@v3zcv%LoQ?sPy=*=n#evm#@EC01m6_U*53?{2dLPJ4$CpcMzXTv2y>Aqv|YtX;7>dq#CHk=C{o5P$&kIC7uY zC}5KE_XfCC#()Nyy+L0zoh?13+V`0*{>~TRE|S#{^xuB)|G?A#CLELU>p`S~8Rb#@ z7<84lGCORsQ{*M^ta}Kgy9msY*(GIUtp+*6(ddpHk&n%ZZNl%?=I@|lXSM~3Vw=Wy z+mSi}>zs8}Miua;{=6bM)4KQMh|x!A1>?#nf(&>iAOQ5iSTq&sC%N}7<$qw*kAYAI z&8ih`(5MpgGCeC;< z;!Zn2z-v3*Q@DLqw$S}M>eV2`XTG8K9(Z$DBlYDqfUe};h!W?#Z2LW?AVTHdMmpcc ztVTQQP;>W0ogP^GX8U_suEwO`wZb#!#%W9U$^PXNCTA8UE@EbjZv>>^fi>+AH^;Yt zh>2HMA+|z&y03?@uR9$q9Hf6qPK31Z+51ZMMZI507U5qEqaBX9CN!1eF{yDXbz7tT z=7q4e!#H=pNCm;4I_*|hOpTj5qsjV`RWPp)&J5cz^5&VEDtnrh;-eZ z`}P3!4=9THdcMw}p%nWE*zuj{`ec!4?C`H!K-iyQB2M+-vsw^%=*2*CZl{l3*W8tR zJp#NBUPK^wd_R@^>{=4z>Ix6LvBTg@;h)fh>wDx6(FxJzK2ChN0TWjJ3LsyLCMCuS zzE9BOBMU;!TI@>5v#AWuiAsySWa%?_qmCsv#WAga1rW~w$^q0GFE*_5VPlf5?R zW!E4)TeP2rMZ%J#*;YozL1NR<1fhkPura0;r}#{-h(#;My;@&=I*AogB}Zt>dy~bl zR`IjRh^9&hYs$RywA7iLtwLwVkWFTVxwpGC%Lgg(>JPK-`S=SR-j5!vTBX*hbGV6O zaamWXWQ`-LdL?zmg0du@mU|n0Y4{OV^M2IPn-R4NlMtK(I}MzW;Fc_Z5mH!PV5;6+ zmcT3Z9I@lbGc|qV_a>@b$EzxSGY@vEmZ_gIl1xX~fkqTP+)lHrt7!Y27#b`3sn_Y0 z9YsK3p6T%$2Hudd$i#S?V4dl`3+e=34RL)v7$29~E0+1brk`nggRz6ww^PO>p={v~ zr|NdM3;~;R)ZKA)c%yw!@SJ^j3I^#$AsKJ$q^$08_t`}Nq}gZq_@da2qYEV-+|Pjq6PQGkJF~yO$iL_W2#x_z z5D6^@II<=1R#fhMw&f%l+J8E=Ml>A@jmPWP#lQri0zQR%WXB&*a0F-l`pW)$*i}P* z2#YlLw-jtxsZ8??lwS-~Ky?plws-%L+uZa!i?UStI?t~f(6*3286M{fvFtWw(Qc^M z)AmOFX;C*voA$rNBhvg^+PW6&{jWNEI&RBh9c`A6jt6#|(v4oNM$1#9n>-!>UPkpX zan?(3NWYlpznTg_AN?$=5%h(m_kh*a@I{NNlY-4idri`#KvpeLtSQ(45yJ~V!US1w zqD27J$BE76hpIB@%(GDhZ#;a8>-YA z1s>whMas=R^qm4fQ*X{0(sHv`I9D1^0GIkD|A1~t2ejVZ-#Wcjhy12iWjo2_RHpLr5)-4u41=Ox-+x{rEF^Y1J z%5kT_*5R&|9x6 z+)6)nNevFz*9w&|ZUGU4#+{P)A!(-{4ZqC@1Pi{iK?u9%s<|1wzq4=~SB#{5XK0#h zY*_L9v)aN|-vdlolUTtidV;JG9!6szUS=78i&tKr8Jz5qw74>qEK)u`I*NJF71`8d zU{*C)gk&qaX=tL(B>$qFqJfZ5zFVxXyO}*!j0yL=p0JH-^B6KWQ;WTL#f>lvbwOQf zs5un|+fBruGW1j0u~M5wZwoT&TKoRo67n3nfBUIzaZZG&KmkD&Nug{|MTe=chF()n%UQ8ckGq4lXK zGd*H!zrHx!wkXZ8Xj`QofF}lf;=33drv1b-`T`3q%kpcr23?mI%&z;254S!mhl?{Y6qI~dmCD+H! z4XA{Yb_Ua8l*4f;8SFlx!~+NG5|(hP#dTd0Xw-%Ro5F%Z*B z3&f~x5wV05YP4*V-etKbyy;785Y4tbb0z^<<)=9bWO_ zV;e5l%AhXQZRs*}nLfMH9fpn`rY3*(PCb(ZoNjO#Z4aO6Bag12IuBTlI-T3DY?BMK zfvz^p`5%zu@Zdf`DW39HSL0bAYnLY~t|~HYN1fsof3wiUw6q*=@glce^-cs?P8@Z&V0v4AxVgdjTx4MqdLF zA&sKWbogt0byWThiR7Uh&wDfslDl8`ynIJ05u{?MR%`4H#U_ zqp~d-t&$k5(K7A?fBK{sYk;YIIR;~5L&$qAIe=F>4Mc&^_%$26nXTZ!r@0FIa2w?@@4$xn>9TVV_12TL6 zYY-{wQ|w4Nl$SL)KnP`Hep^6r0o*9+6Zm5N!LbaysigSFf0fHZhUuevB|sn)^#Q}L z!=UOp&l69Y4zC|8i$FBS43M+C0}b)2q6k^q6#f~0FEjI`!t6z#E#2HRI{d4aYN17m zi#$DBT}PJ_!zta(+DtR4aRXs4=J*I`Nn!R)aiZ|JlTp{|AGn+#u=(Is(Oqq!Z|R;r z^=~W8hOGO{d!13*ElQkB^Fqa{;LQnc>1p!kLFwy9L2ZER05xbN1|GhI`mV?DxEe^% z1oYAR4_qP9h9gSe!bnpWIv6 z;x(_qBCnbti!-wl)dua0nEF!j!nmJuox6$A1=-?B#kA~u(D{PWTfL?M)(wMt37p@D zHIlmeFXDx@u}X?pl(ba+&5al@^7oiYCfc%D2UA^gge)ArEba>a6%+Zg7%!^-gby z?Kj;`KaSO09;1J^51R8Z2DU;w@s-sn>Phsjj27(8d}y!FmfD4AxcG{Zb{wtW=$`)`EyjRb5lhh!*E4P zQA3S3b>1xJ~@XpUmxUZWXq$X*e2|N7d*WR?hh7AY=;%F$5=iTN@lmZby)C&Fn&v9 z5Eza&r7EUa{~{WqLfNA-S)+74sywh2Qlw0iEI05(ym5penN+Ukrt?@@XAHaOEw`5% zct&>`QS68MlUA}`vwf{wYdbv!+U`b0xief73zCAm7SqA!2)X8*`;6UeQ7kzJDSnFd z+hwOG!E^5YnN_Z0=KyE4r0w@~&T*8E-Ptd5=^4w_vpc);_1_*TT;Rv2GcbG@fL9%#Mw%mpQtw4y zieSC$7`BL#SWKsad^dbddI-Sx8S=fT)L>irnyO(HU`X7Q0FhBoU3dr7+6lF;=bj{4 zE}$UzODewP`lzo4K(bNH1M$f4bb)1d8*skA{LPHUV&%fvd&jsx``N-%lLJjpu$GeH zqw6n@vvMN!GlKOho95-1v-fs00+SK!+CNrUk?j>#cJ|4L@|*K2H(D#hz^I3yn)#2q zZ&wzamU+i@?OiI|>p@lV)9ceQ zrwzXF52oBCG$@FLtI=%;(@38EQviatXLx7ny=m zld$;jKqxv~6bAVHfE%EaD*z1LU6(z82D=aCYp+UrH!duK`8TE ztw*t@XhCZj8s3?O+xXVh=Sa(SQ)FVd%9QaM~!7y0IL=QD9&HHAMqCe7g@56biO z3D3}!xh2^iL;dzIS45(j2PfDP+iho-0pZ{5LnpU_tF#FLhOk8J^jqazOI~zs%5jj+ z`tc0bXZ^IomxX(Oi1@qs&snl32jP)6-yRm};uko)br^^il?}?9JKy;2E6ayCA=c_r zdra^hD_A<1=Pd;0QIix72Y$bo&7TbYS_^0k&&*I#%^@g-Wa zQq-NcO|scOtWG@??F(%}mxejL3GEx1s|KiCZj)h;Np1sUZqEP(BRR;!bn{K&niaT@hyq)X=#1$-j#z8ndf4Ee;pM$3X`DYpjjIa zwJy>0b^nyv;U31pzFnUZ&?r(Uk{tT#D94j9J@QG5A%#!}o)q*AVnht2D*29(u?-yR z#XQX)X$fL$A!kFqQ1&C6V20+~4W{I}nSC?fxiDSRCJri- zC4M&O=egg3HzQL$2ffN4_!6>{P>nJd;C|Z_$osNvj>i#gi%*v#~hsywm zEODpjtD72V<_;ChRl1&CSVy@TGbZvu<{ewCA3TP|r)XGZ{B?m{AhY;f zZt)UC_V|vi4F%?-RCEZMWm4rwumPaby{TNJk^Gp|mwEzhJMg#Ekp4k=*iZ1IM8YVz z9{+pn5&*c=N=wwm4QK zmjGZEDVT?UGk=J;zn78SQJ#$py_StR;W=hJW&Qp;OY1hIF-9P!>iRRT!Z;)P{)N|gofH9?X_yUZFvTjzx=#R0wOtpmTV0B2C?EzJNXxh`DoAwr%Ln&Q zGP|9!_W%miNBjNTt5qleQdpZ$lxostinwkEftzx6o2=Fj&j#czr(E|3rurxQg!<0L z1|=u7v-ZyC%BN34Is?1b%-A1SZ!>vMdbM8fNJM*nPWlw$5e1rr?pN~Ec?$ZrOdk@o^#oMz;O`= z7+E6ZH`}OvM}+UjU_A|TA79p9Am)5pq7PpkRC2hS70t`wY0huQle6jE0_vS}E;*Isv1BbiaTvRVP_4F$6#0q}W(7&v z`k_qPwvJEDJ)${^migSHg$=4knLfXkrG0 zbNrc#{j3^a85Ao1wFpOfU|z0OBkif#`0+RSiyJ~)ztH@uJs z3l9T=^6!aK#kbGK2{ms@1;4T{FQ2FxtN3-EI9wYh6xZNMbX=UY-I!3|_DX#{tQPE) zija2QD2X{fQVlVhXER&x>jXT#W7xVPG2+LL<$c@wVUQ?0d+A)Y1j?(nQV5&SjcJ$| z@>?y+Lw?i_-FB$Px)a7NTXFMj>7apz`5Dl}MB$O%F9-=gu!o&!xF*G^)8;sKc*5RO z3GL_2YT)d{NbJ?w4XfJ0xqQ-8_5#QarR}}EhN&+PeG)`KcGg0;*i))3f_$m8+q##L zoDDbkCz*;`Ew-1%x|%})sh?p}a}VYRtF^|#7{vRL2g5=&DXQwtmV_hMT6(-DM8_E! zR2!r4`) znm{NyRDo~}em6luoP#mY9$q*YAQU|nJssF*AKfS~lCoX+?!OV4r-04f0E}t(?pF3a zWXPvjz6|u(7a%qYmEYwTNcoGvIw3ue2l@U14H>ae{m!teSP|4l?N;j36Q{Nr|GnhE z*bpr%dkm3iUmUsp%7k4ii0oIyWiB&cwS8aQ*1?1#y5%A+?=8JKUd&pQSxY~qUX0R1 z++PbXe+^_gMY~vM0JnbPwpWw1r-%jzznI&55D=cSvrjxw`g>L|#eYIBcg&(d^w&3F zBz%#I2b}kJ3%wNszEt^5Eya_1@m9HO>~If(n*T9jO<`W0pRPhw!40dIk# za(9^Qo9J&Mf=PYwe_~+;5Sz|qtjO=zokQN;<|I;?EA2?M_mAaV(NBPtx;?3=ZT@sI zc5s{N!Sc$lbVVaX7LKU8j0_GY9{D>M{hqXKSwFRGI8OC~4r?~SLo=C&yFvt#&qRjL z^|UqJD|wcdqcA*-QVyfW&2*+RfVEU2(H=Pj-A6#N8Iwd zf$;@R6xQsjD4`*sO;!5b;>e}d)lrk|+d-M+;5KbK{hU+c@VNeqTkMvuVM<8s+*KDq zUNEr5G3^$8G9$)s78c}?GOGPO+@&8>vOgSN*fQaWTpHG)s^KWpsGaY3XA$?aZdz=n z6jfZ;=dYNe0o1Mc1nxAo>;2^L5BPQmuEEaeI{wcC7&o5odv3FNo_iXHz|tLN9EW!a zMl4IG#No;5n|kWefW*Nrt~mZ5f*|8S4ol9D(=t`@#=_dSn*@8MhAedFS~^nxd_hZt0lo(&HkZ}kD5JZtgrkT6Oia?i|)QtQTe*F2-dyrxFe;+lLB{ac1*X%_mWq^j$JqkQh0Fw_|Z2^j}> z7fq>6Hw3UMnCkS2D)^gODp~wX!BEpE)<5{WdI4N|grB_+n#KjRk>$O<=y|HT$%5FN zh%1t4R03ODQyV$~-Y}S$#w{f8mK^n+=6HYKP{+~hmrXV{X-qzq&3J#vpvr>x$uesa zon+ovbp%RU)m9JllI4l9t)Rz9nuwsOrc}I3wA#pAf_CCtxS*YN$&3&k&q*p80v?7j zjHFnG3xBQ4P!iA4FI+~=N-1_QcGSGhV80}z6$Zby+y0xRk41Lg!Pbs#lJ%!KwC<8} zl2nnpN2&oDVoPLI^wfU8t-zNyu;RGyeBvAWlw)0F36!$uMXSxC@G6Y|iq(}cLdHr# z?9x4$S$4LLXYpvq<+$C`p4IZ1{MQN(zWz&*w&GBy^%Od_!aEDhD)U5N{~-Q8O94cU zha1VqC4uYv-97tTCQAH!Otj}YfB#FdQw99Wp0?ec{dqv4GOd0k(&Hk7^RlN{Z{?eZ zSKGN$>}$G+y(K%tsUA~SR({wvt3kMmRhVRQ;qA-R`PZqwI^^Ge2&58Sz#l0npH%>L z#_)FEWeT7X9t<&nHqjsUl9udixJ&=9=L0GbaH<95bh6ULdjtz>cIN@193s#eQR)}i zErzg1q|Qg5@$OHO<=~

Fvd(LYv4h#HNu22qloNW)*L$)(L=}Wob9&<$If~tp$W5(6=b_Q z_Qy9$-^2~cCuM)TKAe#+Ih}f6qbEv=7XT7Je^0^h$Fe^!=+awbk275=hs(ICB2E|A zg?x>Q@^t18h~dAE{XI^7eymC%eGCHun|#&|{!aS!X=uom!2)&P@p+)`G6H#dGGt8K zWs(f={wQu-XHL*5dh*XRz&R&&G28iX;oR}RRV0Zt;ASWw1A7X5+hL6obH|Ik*92bH z+^<09ual##a^5y{PW|Ql>Fs6dUL>P)ii)xc@#;Hk5siC-6~inNf*#naB^7V< z6C*jWef44D%X!$G1P`OQN6Fr46f(U}UZGxHqrqWb`yxqrztUACe%nmW3yig}@$HGy zmdcNmswF3%*7XHpK|an)DBQ}DuYx>p+iH;2oPzx7{8OL04f^8JkqtGxdgHtHoz>;# z*~(ouE629AUZd3zm$QEXy03tgz@;k1F{-Bl1}K%ZzKaxD&iE3Cl;G%VbAiw(-+&vO z$Rs%RSx%m|vtLi1>=#ZD<*vcaJJ?b-upQj|*P&<_%c62cp~hTVzDx$PT;Yq20-w^)7mNM(gfwPoPs&;1zKh z^@>t=)XSK(C&V-}NJ7^yEyn6_jogxot(XLafX3#W1F2XW^C+}%Ia;g_XilNG1{h%Z zcLRTvs(CsY7U`0Tp8O?wmR#$=j}klLhk8A1OGJHc+ltWQ=T}yKZeF8Z#b94!Zf;I8 z&7=t>`xhCIO~!(54pmAECV=iwKA~(AzlB+ahEUA2(aMA~MG)r?!=)$0hvca+| zn-ipd!}Efj_?Cey9zaIodeaw?1z>);u`Q!*K&u0N9|%)rw#;)Pz* ztsbqd&$?TMo;Hf=6o;TW!K0K7xZr zIG1eK%kwzWobJV6^gAc}uu5}jG0O>XS8DUNY^lqMV=Cke69PaC(KbRhaPkd?h=nEh zesAB60|ntE3D2fuSjd9P=<$bQ?RdF{P6`j#y5Y-$Z4bLHy#a)$5S15F6whv4D55}j zRoKMUcAqX{=r0hz@857UxrA3(EH@M9M{zSh^DcKIKnW0^`E5p=NgZS+={^$x~{D2NdrYs zl6_N=CoW#y6-L@JxNX-O41Ht0KfBTz7(Q`qs`Qv-zA+X!88|?TTL&qDe!b(12}hcI zUd$wIYrY5KNKF`sE^aO0wy$q5JQIC?9BRPt+Ad}=z~}R4UAUw#$Q6?=GTuPPAFcYw zhvC}o?jUtOI(pCqae7|8$>e<$5&&U`IBhfTBi?ezpmDws6^+8Hu8+dNj+aeBZ5Ee8 zqup7|;E#GpcquRIJ9hRb9mb*hkZTNJCF=}b!XiJb!poet(UM^?+pqxtpw3JWR|53= zd2HqcnSMK4XK~70kg#gSI(I4wtHubFX!)@Poh}TnZXXcMl21iGb3u(xMfMe6o{-5Wk1q;aNjfePeh*csOA=e1qLJXbU|# z?f_fZ1CzN>kobYJ`TeJpiVwz*nU5xAgFiY{BVYo%Wk#keh%kQ#fd!i$rsX#s*gH+F zR9*UW=&H)K#gxQ05r)=cEbmHBo_K%KG-GqYV{($JbIw0J_iyQ4Ge5MUhY|g_YU+cs z7^b5}=Na^9u41SvkKd-D?G^9Is)yWPUE{;KUJEaOtCHVmL{In5$M=0!jI#W+X2gpm!6W0}{1E=x; z)HaX9rPeqqyETKpUj=gu<-){<)CuCB0uSO(;GKsjre__cg$YM4A%c6-U`tW z;E`+U$%&bPg+oRGdHHu~d25V&#N6(Qw7=&T-uSfXM^IZ?8T4o!8tt2@G)z|8)fTXl zDy;sC60k1ezI#a&M?lu1P7hPR61T;ta$Jkv~lZQ||e)dhJxt z?w$LD!|K)i!7{AXF$i_erKc{RI~By-QwsdTtB24} zjuCKSn|E?Pql>>1ZJ$hY-@?!fd8K%%#b66Hl{ql1Nq5`sk2w4^{(f$c(2j;^*w-v= zng9xLWR7wC2fIs z=iX?Iuj?>KE?#{Q@nlgfUJZ^BkJOy~;g&pyZ8a<_5K(y<$HJ4tt)=<%#*D5BN8Ao` z-J(I)gUI#)MiAj#)_OTGzX<|7fIWT;KfYB)8$muB=&w&mEiq5sPg`^qiZ!qospM;% zI_)e|WiK?@y|6GGvV~(KQ5m6@w%48kg)xIq%-byN#U=2MP=-HJe)}5Xn^kd9n$ib= z3YC%vET#&LW4ychk^22Jm_1eBpJ|17m`ha3v(J~9KO~)b2G|~#dNi@W$ksC9c>iB@ z0-oDVVbckKa*!t%qVe$0lmeJjh(eTs;V1o9DpI_1!VLr9+6(OOMU(t2E=$0RCd%^v zgs<0`0VA)o#v_AEfb`1yA39o4Wd(98;%Qp_dG$dfuliDflJ)9vLDvbh$4PWUIk@=A z>$RhR9ZO?4^|jOYz~qC1;=cK%i&Rruow@1&&yDF@41~>%S#hhVvz8iokVDz7qEREM z>D8V@d*HPu#gZLqkZh1#XPIkuk$fT>b~u#$tCW`NMykUraSLgnuwMc`thPTojXyl& zwnvdq3L~XI>#zN}W0l|HE*CyI&Ls30Ga$7~{sXtCZYmz_3)Bi2D=;|LCXVIhrv8rh z+dZ7}-#*TF+D4PZ#}qy(yQXakKcJ4U3R4C`E@9te8pBM}M4{75#!WPWmL&63P)a7O z@y<0k-%Vp|%U!5R63aOM%zXbs{QFds@aQ1DPe+Um<(w@en5ix9X!%><$1N;diT*)B z71*bvT5=$3p|M6Ezwbu**|Bk5V0)k8VcM|mCfD(ziC_e|iQZ$zFG!weLNOeF(wJcc zoW*IoH*GN$Is14E6nWW1?ev|=gEkJ&n%K)x0(&Cp;Ipxx-cBnk!3&u^=@{AEAf>Vc zZnqPquH|KMdN;MJWp8t;XNPTikom|XikH0^lmE#m z3Xol_r$0~k=y=7_-0L_Nq5gTnKw+c=6ZVKP1;kS45Xb(d!i{TYC(Xe8wUBmRzgAQIbvM)#Xv_iUF^PS$PpZa0(a6qwo6l=t=LuPMcU6wbbbZr(jQnI4(w< zxJt*NqpWqe6?b>~)HSsJZc?Ylg2Eqp<#}Yu0sN#FLxki z^3AtK#MX7=Evb1IloPpB;S?9mFHMpYLkfb2BYQ_fGa%wwHR>)UXHn zG{5||j`g~jetyAqluQd+-po>s%IQonU`Ys#qqc^#q&wVy+LAp^YHkO|XI9VLA~=FuCr zc@?hwJNiZTZp0xx=I3}j*LM$+n@WCl|Jp$+xLz5R7S!cbRMHnfZj9_?X~!@ym8rz7 zS5-}$4(0L+m*331&sv?dNOWmKJjOlv95Xm)8jtzwXesWqy&kL=~l$wQgQl*JEZ~vVD-g>;LNf+>)?@M~W&7-kWEVrRJ@)OumO7Qb@&^4+u zB|kqI$Ly4&@@zF-B-O%sVK_8mCJ)$Q?N*pcxFt$GLt;r-LC4 z&#VOYKZ;CPXyiF(sf`^Ls&y$BS*x(hO+RNl^9#LRazUz5dlaKS%>9<)I`ajtx2-v^ zJxYov4Sb;^yZm?B^()z9FIeAGTz!50c8Na4m4}%(Y%6oE`L92t2r;W9o##P}0i1)0 zh5v;p_s`;V0~BiZVay0SAkHJc>VK~S(HhaAm>Y(`mzVCveX69o&HJ38zVP~6`^@$a z^G}|beH|%ediI|^;kwzyJLxvKGz0{G{6isOlNu-TVroq=wRBY}u9UNjY?bZXz(+2) zwj8lGrYO=#YAn$D;+M{=P3!s)P!n?k@%b!U+%}1^hrNjbn z{;1hycO-FduP?U!bfL2LBym=;;Kv@eY$yoq&Mt+~g9h1-eH!xETR&iO7FzK)&#`_c zHsk>5odD3nG~TMuzfn+=wgn?Oue}2V7C?AYVYl&rH+kd9NTrM|7>x3%-JSvIIoab< zaxd173AWC35>D*d3b%_?VcQg2WW1k zPL5>jxGL@%7Ko;iU}y)lcDio_la(x%`MCwcf@)8Ti#LHK*KPf%Y4@1I+|0agx9}?3 zKWFhD9!g8@{eFYfs2PN0)cX{Y$nF+UD~Q899p3%NuG`C?9%iJ#C+Y7 z_1~WW@AE#M=Vd)z7={-NjIBc1uQYDfMJH_-y#w-RmUn;q9&8fTlTVb4js&E~7kpi@ z2WGcG2KcGGplCsx`nl!Veauch!0tK>Dz&ORt2>wsTgN^1@i8L}sU78Mm(A{bO)5%_ zpDTsPC7-dYo2grN6y*R8=AmNeL};cpt7T6)G`7O%v=VADui|^Gx$f&jI~)#2YbcGe*qq{g?dkXC;*Vd^i<_TOIZ}5s+Bc@N zSCv}x?j=X5D1#R*8561ljsjQjhiIelk4*ag3>6IQo=EPJ z<+q4~DT%w()nUX?00xW?gd2I4&LUA^Xsj-%WC=pi0yiBorF zFcg*5G{c)Kz+xtu+Nd@K@@wbGo>fJ(%bz`FmHMxgWaf-J5n1lj#;d>g8MB@vI`5B` z{8;7up|9FhywYkccuQs0t+0k4ZII#=qD?QOGcPWricb4cVciP=f;-hvK{*!I9Pe<@4wdFwh=Wy|w}sC15w z9!=B2iuDiFvV<|wyOXyxeqPa9n9t1?(r@MDn6q!!kj&x_di>im(G4qol!XJ&IdVCk z=;>s>X3)<`){_r# zV0~e7K{yC|M`wqlV7Snsi8&Qqq|^bLSw2Pz3OY(YI_vmy$aA3P*oO%{|8_;pl0Psj z)#%cl_{v`Z+kFqa5uyXFV}EYAw|q-I>0)vWEEQIbO1}%eu?eHVvp=s~#3#8#T(BpB z)#mr7jw7?3QtHKl>}cS;@4tw<%ZS8l*}z}x@SmFj@$QQBe>`BXK|S}36_?{O<^m}* zjYk3e-aE1B8)(j5ZB`p}`%%F7N^JD1<^EJ2E8DxFIuUC@C;`JG)FQ}p6>I*4lnSPz zaI#?d?T`n$mrnlrg(-<))ZJFdg!nu7H$GBWFJWM0`-Jpr3)xeZbPhjxmet6Rk-KU^+U)HH^5OV5|l_Vdyi+Z)88)Lt0XI#;?bT!;}78I#| zk>TdoAn!F*fN3MU&iV#sH~sJp(g&hHhBX6M-tMRaQ|gVNkcRmU(aPO2bmK9eC?|9_ zNtP8Tsa-DMTsjOI7*!k?93FEtT4&>2XN4zK;O+NK3P-^Zmg7uqZD8|IvZB=%z)jWD zJ4Ru1(^+&qR%*B@?CYJ+WG)ZY+tMVhD62W9?Zxo;F)oLhn|+8-uquzQ4)dK|X-!x? zY62{65nWvKRq!gU_;P8ZU)ZGJ>j^m_ht|cjDKtGmO6<&`<1;9XSuIn*3%=3Ae$@*l85VDO@0C%KogSr(VcAE&J0`B-RQAaZl~4q)(d*rr?x9Y7 zBk9iu5pPv?AdXbFbo>RCThDJCZ}QN~p4=VC(C`fWPJ|SjtV?j_-}dA%mxf5m1?8n56VS`1@tUNe+AkKAF5$D_>CH*A zjda*R<3z4iQ1Sh|&5^Cwv&$PO)Uj`H*^hesWL^3MUT$yQsh1aOSiJe_Bc2R^;E~!Q zLyCX-EJ#$Zhlqosx|)wp&eGA#OBw$ClZZ3W1{CVD1FmkUKALfxTNi~1_e17HLFq(c zBWE`$37fTE zmBUl=FtrP*S~LmzFa^|<9m-kAed8dVr^bQIw)ny(OEQNVrZ4fOW48>HQ>n%=8Se}_ z#uDL`!vt;*u!iygeZ-J+m#dsMq(V~R2ip4sge2~?& z^Fur7=oBxihBEopnmVa4@Hv-$A(!|W7Grzpk&>)-evb|K)q3h5R#;;U__4L_*#hQ< zd0LQ>)If`$*I)##U`OL4U5g5)_@@;n9incPL9aIB zx$i}F(oqa$JEIm^gjBo5R2)jNzZ?E3sWeV3o_u)3_H?E$b%{1yCX9qz46QQgv|TvO zn5|tXJkd)ljxxgq*jlhNHjs2MOZlHWY63ICO+uMM*s(m)Qf+s*pxd5CZF%J_1E`y4 zQkU-;r~0`eVqkymUy7cX0f#2SpdQ^{6v{lx9A*i0Vm`OUaPDE;k(}2N)@T!!eZo9b zjAC9Cnd=!ag1v0#V25>-dBFz^HC)62dOr|_fxZ3dg1+#Of`WZ)vEl4xKR~=R!{@&) zc7F5pqCnjVo9lBRRRDGnz$S6=0%j(r#)0Ox| zc7e6Evnx(^Ca$w_lZx7<0cLYhkj!F>v>*Hxx#n_WrTuCy6?d{{VebQNKKhqJ zq+wB%&5-bmJlDuup!&I^zJ50QI+ziVsDRN7PiFw>+~wyQ*mUVO>#u(%JvT#D7%^Pb znbAON4lIB=Z(p+ljJqMXBwXSy(xxEJ7q4G7m3AJ?cb~LxunO3ptRgz6#qYmq^a<}i zscjr{purb(m!QA4e8fT-o~SX1>fos&TFam0O!5Z{ru0lxk3b;+9p5_atc2NICa(QT zbidW3gsnC~8YwA>{ReO%?0DaZfKW<(9?D1R14Ga2dC#AHk>)59o8DgqFpvyze9qDcU>qU$5_8^W`F-mBccZ5Sfyfr!X>y=do!_vzcHw?}+g zg_N784Hn6Ob1UINKDDH-X4g};#<7Fa%EUZOK_8p8_RTWUy~eU_Ij0WqEi3nRZ>BL~ zk=L=*uNm|F$oYLKpgr$8W3NUYuw#PHhQ=`3>H%J*IzlF|@LMOQ8!~}qm8Zdk5YR69 zR%gtjrt{K@NfEePDM_GwmWI}Ren%2+hAV}_j>~>{;)I=UW~-iQ?ca`UNh3Dp^6%=Ev@l1 zANmj|(bhiUcMIL$72MbeLxgW*j9BgnAxcugzQI8Y!2pegh^*RoQqwuXw0ZWig#b}| z4RXuV!B%lcvGr2SsVE=N6cjwRnwkh?qghq$Ezerrtlh3X37dlM$+KnJf@{4HulI~r zETF)piY_}76&Od!-UXo3-i_ogu}Di_$S<+@KDXgQ8kjxtEjjI6HEwo5nFzZ zvwWSWyWexQ#6(L&5U!_EmCs3&NnNV1n<;LNSU@#CccSZzN)phOkMta)tu-s7tKpFC zb6_)oo%Zc_y0Z_7Er*-wb4@_JRC(eHJ>$km5GcZlyNB&MA{r&LbIrLZcc^7%g}9`v zg6z}buZQaib*5WuJ|ez~R+!EYK&TG#g;u)FA*1-UzJNT(p8VC?%aza?|J8&sx2)s& zDX&Mya*J|3rLv|Qbk9OY@^|1Bj|}6&j{5hw-w6>&eZ8Y3KgSjCL8Pt+NuR;`On!Y{ z`EwH=0ctoY@A&g-ZX&ucd9Bk~u;4GK*8#mH&xXmnW%Pt;wvL3j>n)Jjq2~E4c0x)= z@`$0IMX{@ZHhyCD0K@v=h793oV$w3w^n3yKy01pkcWne^cypl<=R4)RUn2zw{ zF!Xr;zc3GqzT&V~l?48>E>8ch%%RPbGJ3~hhTw3dRwnP7qe$&f9p|N(!R-ctZYc=M zn=a=|0193(#Yyq1mdy_nl{xerhEJK|Qb3xDa=VG!9-F#H)$Tg#l>$0mflb!*G-O~y z&j427r(oNf-le}TY0382<$cCn(If&J@GWcHP? zM#?>&35hb-oD--Q(Z9ki_$zd$ri`65EHW%uS37dVyEKvkZz0&k{xWzT&F47~aWB`i zC4R`G1%?z#!99QjPf2#p%2d&>)luez4>Bg6+YQ#oJ10)D*y8)$NYRxcGV;UANUU-NV^V}&LY}$OH z0W%*|T$B-_&FUR%6#HwcXUmG!=d7)D<#agsqdO$8g6wX(DGxu*kW)MuJvsL8bvdIY zmo-Z4!%a&@gPKNjf~Ev4OAdf`JzP7aU~xm7z1BAbi&iw#B8GTOC^&1vrC~t|3SK~f zlxykoY)H;h`Lt<|M>-Aa@#B|z8H{c3z14evq~LEiQTGNMU9;siw-kT+5~rYInw&UN zzoqK18m^_tWI$5Voa# z9GLTd$)>VJ-AQ8gt8t~d3@VrGwwF33Q1Q!na?wf)4-OCtk=s?SdtJMVo=}q6v0A@X z8$<};sv1fnO?e$?Ic5&8{n&NdTf}WE2^|1goI(9(Ae5_==d9kM{~4ytiaB<0DOjRlJN#~zZ}#%OtkRSjp58$akVhP z5te-Sx6gQg0!90QAKU7SF7CTc<}!%5{$tYvSvd)+2h{1e`i%QQgk>;2)<{ZlnN!ca z{^Y6H=Y#rNeWq=_mCv7;i*}$vpAh&IhY8+9ew0WVhsPM_4~&|>#E0qT8mGw#x_GrJ z)KeWsdOuw4aQN--T50s+w}K_ch;lZ3TWRLCClM2#33muY8*BC2h((Q{tP=ZCUEdmW zrLRE!?lPd$ifGS;Ilx(-*4S@AUKpTmN{QqZ<`{bvn5OibrqQ6pove*5vryTak>*@u zqDIe=R%(mR`W?7$e?69h7I(OrUv=i%H2Gel?&I&(%;S*+v2mp4jJRwmTvX#$qeCZF z8{N2E$~`crQftd%-!b{iJknRx&c4Y-din*2d%uAEO+q&ALr(B%i`s-d?*qhNccRs^ zH2b*HWxJXM$=iy00VIMpRWMfvvT@kLioSs~ldyW{FF7l@p>uH1OL z;<`9dP9;(xDJ7QEw&0|0qB>6C0PLDqR z?$x%z^)zQg`Jdov+hIlu)oR7Z572%i!SB)S)E~cH7Sk{32Id+RSKs&FNfLhZ5Gdat zDg6P)#AT#_)HS5a?9Q{c1Z=%V#d(9m#)>c)M?a+T=qm+9#c$p7XG)J?IFMuo=`L3a z^yyDP^SV%#f2og|4bp5E`~49 zE~d-0_ElIP{&P_&76o2f^p=0OH-2+KD``8pzxu!oYzC<|;w&kHHbsj;J{bn0_$vfRrJ@j>-?N|(&H{`8GJYW1l;1IRAmTt zNea|eT+3+uRQGb^9bw{>rMrtVc}W*%O6yH`dK!4Skg$gcX489BT4l{yQoPMi0st_Ve2Xn z4Q^c0;ED#*e9Ny)L5F=ubTZdB)Dp1(Jf+ zq9X{${!c2(LV_^8liI`xUYYlTP1tJ6nQA_r63-yuh^RWN@D@LI%%1nbL}@t$zjr>; z@qP7veJz`ac9|D;bWahp&Ai;%Zz;8YtG~;XC^2#D^J^3Y-fv^GvJH{LkwL($-E(pN z#FdyCj4Z8G_wyJXcH%BXBw{noy2zS~BI*0VpYZ8c#bBR+poRD`qO%#$$jeGRmPlEJ zS!RlZAsG6(L0c{Jw;Ym*#hwTE?Hn9zu=0tqNz(`wbwuvYH!VirJXHutUi#|SV1j|8 z2(>6>zd12C!1nr?n1J5r*azYH4AdhfwZXg(Rb+?Zvyuj%kL&IF^tHE|xmC`Z$>Ap9 ztL&d24e3c@ZRkb2*u%f|(<_B9Jxj~tpEeJZe$wT|tQWbE&&3$4-Lw-d)nz(4Yf0Qt zZ6cQUkxMdOcM?}wC5D5JgPj%tjGOw*nL-Zcc~4RK>Bh*8e^3!Gtzo8R;Pz>3&)IMd z$pY$+v5=q7l){r6^l)df@g>eN((Hq$I`WC-{GRRKaa*DkD((jeX5C2|pnMQ=c| z7m63ONP{#~=8pE0In%luyf6j8_Tf}uCw2JBBCr5=QQ)U83Vc3eYg=f#CCIj+7F-KG zK*Zzapv0bGLS6Q|{IA73QWCbJWb_GD8JrmNmq|&Ck00BH>ukKUe!G1dQ(XTBh`0p4 zPiZuy*=HPJA%rmAItAMKQccS?Z7}6?99LmCDTTT zb_oEn;1G}4_Usn^cr)D01w)9iH zGp526|4KQrkz`u-tilSepKU)zSDhFOSCw|+CyEN2>*O7O@>HjK(c&RsAt9R1BYSdF zS~ST3a<8>AGAoHWd-;Rk_mOCkq>zZ3Q;)~v>P{-9F{s66L7chy(`lrc7dS3ox1$Ei zvbkayzp<@SFyb}}JiGdw!M>L}-h!p#1GraLNHv(@uD&|dtKLHBo1p_==57M4 zq6bAAdMw7PYIr0`*yYa&tHI}fSH{kFjwao`pFo?rZFT}qb@9|sBdSpomPMwOkkdYO zJ(CM%EHQ@lmUTe2XFBd*AO>nkPp?Xdth>jHde6DrN3BhuJ{HeguC_P@FKm-vC*|Z% zoeM0*zKS~QT@|lfjeX(9sLbQRciT<;(`#S^a2oAd#BDyJ^+K#in`M(SMW=dT=u;Hg z_L|N1Jw7@WHBQc_j{wodh1EuY4zPaTczY?)-r?J`Y?+oD&qG)*g$Wnuq_{cC=iK_+ zLkX3d5k44qrmG?52pPHHQCyZZ1l!lVRK=xr+q*LSZ>oL?a`nkY&dEhM>kZO1psXV< zhXTP*02~dlIH)yWTeoYqd78GzbGIWg>>m9+t6pn&{m)Vt!a*r%AZ6S0(*?2(sEAY) zR~lmqK<1GQ1p8exA-t_t$Unmt8SGZ_jcvAb^a9cj{t`ryl-1cU$KYF|m^^c+tfL6q zxvLabIU6bvBW#i)i=*QMz{{-n5~3Y*!GeEtmpw4^aX@&rWfo#+YL85hfY74!;UP_d z#69`*OdAl}20IeHF%XC$Rn?vL%Txk=6w)`StZbJ(&5u^Js0NE#9MZl%33om|4`y0s z%h7JqU6*Lbr_~vv+X0ZsOG1)pto5$^o}Yp+gl&RP)lJF|%A|eUL_kR8dLEQ$E`BM^ z9Y*EZ4 z5sKxh6?}Z#p=EZ$rl;zYc`qCu>6HXs6GtaN%uC8=oZl6?vT3@@nAn^fi5QikjeHzU zT1(GE%g0=H>q-$=spwxiJn2xGUz62alX@*n>v|g%5<FBwHFBV-XT(!T zR_)z%G=g(x=)6kZ|1@tq{UqIe`iEfJ6Oy16)zc+qD8#KTJomx$ZF^m(fsq`st;3)8 zZhax)WdN(;*2$#%8?62Cp-kEbagh%zV^pt88a<|Jzd0UKA!B?Oeu#T=M~i|_i@dHZ zo@SCP#k&OR_Qvvy!^c5d9N&+ViNhA0`59*Gr#(EM?unOQ(-F^Tjqg?L93iikP!TAr4} zrjVly5<(Wv(5W7jq9ZA&TeVircb_ZM|XG^O57ym8eD!#gKyW-KpbO z2Ki}v+p@2JlOgcOyS=0obzi^Q0Chk*tjdhA?^)X?hOmAF-LNb$0dl)N4ouk;_>MeQ zMm06T&^puoV>v-ZE1PE0XbfoF3H)Hc&n=23!2mJ8R<-}L2=X+$mo)ZDl?{?Xl%kJP zsxFd%<=6PZ-tnucnPxBT0ZJDD7h7` zMU9m3Mt2b6tw#I5SMuVF+YEmdspg9|m)gRTO7k~W`+|{~%a<%zi@5Sgi-O!uKLw)& zoQV7o>|b?I;w2*i z16>53Y2p6MBtqI_C_UVi9<|JnzYmZKx$+2ChIfB?74a-!+hhKA*h(zi3V&Ap<>iRGbV)p;6Z4yyF`^nq z{-4m$2E|AB7@+rw#wIaIaBncN<3-|^S9#lt&-=K?!BbBa7f++WX0t}Et_OSA0|Okg zRm-p*nC|T!Sp>B;VAhHv&7bTc2sK5p#h;7bINx^P?(S5E%1c;ZXesZt^61(i_=lfo zr8#5H!X%4{feHdAeqOZLNtA7RWc3r~VFL%_^79)@cd;0rxt4nz)g#Y-Tx~1(F79iO z@(mFyx8FHQxR~NSu+@ZOuBf)eCRTEKK<-*oef!@@EO1dPAnAU#QGi+l{bO9K zb`W5(`eyh5fp<(8#)%Y-`>`n6HrCDWGz7W?X%Pd!%RFZ^74y?meQRW_d7g}fKy>mu zQpu+!m0nAO&a(i|VdzGv!#MB*zJzJC)qbgzuG$s?_VN#GY$W1aj`(qs6$LgO$2ESFfbldy5-n@1RT(Br0y3KrFRzG+gbS?em|DOBZU)&(Tfy(_bw} zDj}oUPCymp2;BkKOc*DwDc?61T3}NSRbZ8tz5RbFvSwf)Q40d_{(u9K%YX@n&)J*< z!RX+k{zi-mW_{)1#i!F{n+j|sbFJ4jwhAs+Mka9p|8lwRM3*e!BLxmm-cwKmI#A2| z8(QFX6aD#Rl*OsHHhoha2$kTLyR(d$)msD1?Fp||C&fb`vuaa_cd?K<`=bq4fzp5v z^~+ou<{In|&@77{xlL0W4)!|p5Qv6BKvgO{s$o_iFL5?LZ zwN$D4B$mAZ-_aXz-ZVAUbH3hW6ghjkuxeXe<-@vfVcQR`oeZL0CO0L`AILX$g^%Om zYg3S*Jr8uBLTACoyFnj~DVv2LEB5MA@+=_F?B5M8ubLwJ5WH8wd*BB1ygZ-YMV`P1noE-Qr(2GKep=5`h9sy3zWtcVwAgA(u!PZAiYo-& zXu7d1|H>)Rvx{ox4qVulW;FCA-RTWHbxo_Z?bkb9i;qkoL_MFUrD~;BIRrJ2qga6h ztLUwsRdC}(kiknZCJ>2~A+MrPwZ0pb+aWUNzt_D^N{7e%{k|DBk{mw>F5mX z*tWg#=zykiX0_3qxG;Cr*aVr(=nHfwE=u^AB1-E}UT4}olc^9=?ecJk56gBx@yR-` zL_ay4H{^<*p^%3UCI!oxKK`Yi|6uxTt}G9AXJ*@0aFqGjowG0E!o4d)?Gd}=;Tm)w7y zX?o5q&-hrsOUd2W$SaS5A7_DgQ{(&4=ZdRFb7f)marfbZA9L|xS%ymnM|V}vOa^C| zK z4Jn_$31ey#p^Gmz$OGx7SIu;Y)6CO|e&glsB_snB^;>QOIi2Pqp^Ti@M-F5n9`zU$ zD8uM_>xE?=<$bd5q_n=Os63=9=scyYhi2|)f}3HAvJ^&8tImCXH8x}FNZmz?$dv5h1r>C!&HPZ)s4#pu40b}IJWMd;nH%g~8j8eLh+88O_Ag$YI zMmnSg6z=cA`~LiX=Pw_7oOA6c^15Ev>shERu$I~Kyzjh)zpE4xWj-sbzFQ$8#9^?s zg||m@WE^a{j%0B`@8Zm{UKrj}R;^#z_`zRom#%G`2r0h-=EJHCAo3 zTMX6G%G%BpU_Uj$mv4$S9zQzho;R(64LKZ(^NpjL%#W)YH64ACEy_sj@q=-`qWrv( zvKR-Ji#NXhe+0*)4uV|y^kY_;$8XhO6OZLPCK}H+l75Hp%nyPuO2&?UwE*eYQ*)-n ztG^xqp-Ptyma^k=sJ40wkF6D4QDDXBm~&Z`dy8QsQR4T_<;LxOImk#DZ@9Ebl0#0LXECZ_M#c>>CJ%zXZ+`@jPi zte#`0S~M=#@|pL(?49qN;@g@{8v-7_KYXdWBhb9fBHQ-xIq?E~_^{0B*STMujLjMj z{1S{wh}hZisCnLU>cYt^+>J1DRQRZT{U5Aj1Ba2Ba$^>Un@9g-BR}HIfwCrEScRBt zZR#B^V;zCXQ;ltdFvg*ODe0L*dbf-n1qQCzq65_vQ5Kk`(jM{`TH~ zo>>d$Q+gS>4tLK?q#DLaD^?ox3FBMa?AvD)&s>6d2RpMKq_xp+yw3B~u!3<06!XJP z&R%jXyL(BTY;VnS;)uEd3CU7F36dTMN4R099V@0P^x`SZ@;3_>`A}~f1?IUdZ0Fu5 z7GD~kT-F?jImR^w1O@-@Hg+zvtvB7W{3K(3CRDb)|J%s8CFq}rwKf0X{e|X#zkCcs zn#WX4%sLtcn&;_n`}~Hstp2{x{!?=l5RCyRH&!Hfmhk?gG^jh-_@{#+a?~||$E-ZH zCOjxtI#KPkl!;FehFa#L$=l;Ja`9bh@=XLE3)O4Pc^1uXVUuBtZW?q5CgXuKtJYTM z1k{du4cfIdx!lnNxsll)1QYk1+xdz1f6j5(5d=qDoS0Yss2wtLY#+9rqUqf^**iH4 z2yo~=l>3!4JLl#9>$%xO$tj}w)Lczk^U2ZumN;!y9On1co&v-9B$ohMCc-!@!%LNo zzV=L7PKWjI@2(;N*ODf-h`XKYPj6MHt{ngNh0Y1^Np&byHxKOj`kwn*LaR`2E2GQ9 zA`7Drs`Cx~0Wy##^qZqobqnVPnVNb5gHHwit@kYUr!Etl+ly6n0e;hox(hqS9ybb& z$6-&f57?7Z@>62tleM_SiBC@^sGRgeCLzc#UB8&!EggPTEuW!)8NT zRqp{46?0vau}XeNoTLhEdBbNFQ~pr)EyxP)!|eSX+2FkSyECOeVP?wG5dvi^xDtZvxd?TFFyrNTaxD-N7XhM*?8D_uB zusL)$(NtCiKf}1|C-DsAy5KoaXVw@(0K;6aclUHQC|#B+$g;(|8N16h6r#B#a4(Zc zBsDAOqL$NMXLy_E?8d)yn{vHZ$N2`XHst)LBgoBIrM`d37M2WKOGsGo;mLTr;pua- z@Z)SgV5$wZsO6nqJt_Um5^Ze7?uxTtuU$dm((J(vGewoNnUlscqVx5^spBxGfS18o zy$iz5cGgpea4**JyWXRSw)T{xIwq13A&m{hK$18cXHi$3k-)$`5GizTj{+!Cn5b>%tNh_bf8C?E+p^vl2h!(Qfses-y?bE5ap*iCDzs2lqwRPOf%9}0r(8K zSm%ZtFF92%FagnDkN`fbnVzLl{^3vIpc?|+9JXkg?1|Sv#~lr90`;|kIUq<$Vhym7 zS(g6%f%l4rLJJ{+U6`Bza#AU9^EE(*WdJ1F7Tg`2C=)JQ(`5ctaV=A{ ziK@LoU=Z1hxgw<&N zk|2MX))t2J#HH#?TK5Zv!-gKy0<5YlS}h7E9)6%&sLm)Zcwhf5ux)@ydq@EOk$K2F zk?2YLqG7!Pj!OJv5E%l^c6aT+YKQBRvT-i}*&_vAFpxhP2~7V$H#K@mWVOeVW*YnW z#8{E`GCo8P|Amr3oIXZZt9}C}m?gJ}4zSW+kv+x=&UlP**o<9T)?}Ro7UBTE7i&U; zmjpIv$al&2c){tky`91AmwH7?3HQ{fJ#8s~ws@44;uSu{xQR~rOo=dI&DJ)`N2ap7 z1tj&%hsKz0cMIt_q18p^A)c#l-7)qpvCiy-@T6=xvJn*KqyjfEyi;tRtI1>a>E?YXgV>k!hEtpE zrfl8`dY84?dj-igJrUhGv)J;f5>Knr<*^Z2ze*S|fqyfD(Wnq1XB!ki+IEX6Af% zc#tTYmfD;JGqI4>YBFds0;4GAb*E)zY?6Z$pQZ3~-)naxbAmz25lQFRB^Rwtque930mItz2Gh>7eKX?~ce|V$C)@-I^~S_WT8}`+&64NvQM-r=6OdGw+K) ze70(8HZ)`wD()?Lyf}q6cgoJs_&qwXfg70m+WaHCUG;cIP~I{yZD{9Hi}{g*dO^;D zS`+RRSGub!Uza$k#?t2Y%l85ElbNyj@O2c%qRJ1(l15!1sTGgh924*pkgHT1+Sk>{ zVTV9j1Jh<&jSC9d^r<>}H@>3{ENaE8#6m`)R0LdM)v`brJhU^mHBOHC!H`)hT{j*s ze!5YT2uE5}(Bt4$TnNzx4q&DwdfKA5nw_RP?*|s|OUN%XzJt40knNjj8&GXS9ckc^ zR4qow?NQMur?~6~Z=s{FsMdD4{j~%V@lLyk$7lb}WMQ`Ss}&mc06~D14|qb4Jp^wJ zh;x#br-|pA_G(n|+eS=x{kc1Wrix4t?W1ofx0tCG4mT!28uCd#Jf&*1_HQ|PJ``z;1}9LEu%;8 z6qlA2qxZ7k9SDlhrtBHjfWM54SM=`juBN@km+-|?YpI-?Z4g<~2&<4?_XfK~w^v!Q z-|4mb$9~FUwX3*vTob;Gey`lASd(lw#P51p2!f3at;AAs5dv)jHJSJ`281i3TA(uq zy-k2lL3VRS=N5n;w;~k!rNgxKB6itpxNwRRvh~C?JVr**dT60aylO`N65nSaNn^!2q@mA0t{cS5cC&PUGw*#SK;cI9NMEgOklVB(`ETxBK1{4XovMp~!# z39#pc+;K_l;e2l3BnAh*^}o>&8ef4uMj;qP9;LUQLE02)q;N$WGEXG~-F*=&DMy)P zjS&uhRLtf$Bw|`mhRs;b3y46g(N$5WG1 zqtdppZNY1`mAJMjBiC+ewtY5l99ZDtcF~^&lW5#YQ=a^8;a471HuaKTV$tN6OhEK2 z?4N&kriRqAg3K*vM;|zuuuX_}hkc)(dK{yW^yZFT@W1zy^$hCy8`Aal&9uc4j!#zl zfJW|%+iifHn_R06yp)p6HIcVK?)(@v5G#B|T5S!Dd(mljhx3)tiWnlAoN3WX*!a=^ zZ6en~>-kf|{|e(e&AesWs+wm}sV^nbDcEOc=N3>xBWwl>k+t#3lk`F7_^wMNxURO& z7RSx@65Wt2{ujB<&NbEh=P#pvM~?!t5`2lY1Nx<@?aD<$nR`HP{D!94G!bJRnp1c7 z+tI@vuC1u`sPWanJw*F@vzR_PT1U?uyccTV!NSHMC5C;`Gm79{PQSNhDg8K`Bh%G$ zXrrcvxB^mc9HEWo`oUyAf z12q-xzOKr@+_m$-Ftb?NNUm5AO+MA%qGQ*?4a3htG?PR;OfBh)lia)Jy6ji1OOKJb zz_n@al)Rg56w5V3a)LW=s=cHx*B9vb#B70_*RzNJe8Ql9d$`X48-siAi9AnvK|)Ci z4*gQ@ymb5{JvFeZ#iTOkTWb13`ANqBkb+#a# z@Of&1=#lQ3yQ;CabIktnXU6__2e|L0njK1qXfc*r#uNV=A~;E-jq(@D`2E|l0d*ml zWQ;Eo(99N6_PLPnL$)CUpnic$>+MJL@LkMe6{0VCoBfn+RL;yHE)jx?Ril@)!a&Nl412puJSckH|K2_rgA zj6e7DLgc6CT`z7n=Cl3w_D6LykHE@V4rjc%bA0ZG^J+dP_P6{k^%_ALU%A=E*D3n) z&Y75EKi3vJ;?aqt3j2;Y*zDw)--~ELrU%FY8_3ChbJH3)m2r*_a;prmh5lDd_s~>L zcNC(Q4o`#o<_pF9O7L!$tPEni}`pwxSm)THI3Tws+(mihvV6C z?uFLkN4zz|0;~8%CYM^qm+u?93%z(XM>`_H8Ola$*_<=OE#!{>yst|%7Oy}U9Xx3i z#ud?Rq!oWWj^PH8v>*(@vKE`qMo17J12I8!K4@-CnzQTJ^MBl-Vz;y|%xXnD0jFe--Bd zYTY5d>A}`aw?!ZP8}$AT4%lVPc8c0`o@#$3pmzP7p@d(SIy*&tWj~~G=fFCI2{b)c^GQOJ7) zq9|Y4gvxRX=g@Qh6AGdc=84h`t-UU^qqOk%r)ckFpT>Zuvhd&gohq^2 zuG4kwvG?EJ2G$y7W!-SJUzt;RPLp=7T~M8yZaf4(dDh~WGs{Ij!urokmWEb2-=EcA zv1fO+`6gl5S@AB4tsPtWT>ZDdJ7|8^ekY z>%NT(#zRL3IE|B`wdrEyN}Sn>whJSe%|<0Lrn=DH$g}$c0yL6==3U=D_26IOBrV|G z8!;#)ti8#IH~Y@l~Cj}*hd4ROz~F5Y)8A$dI#`)rxKTo=t6DWo;?v~(Y)OeGVGTJ+=@f5xsv zQ9R}NG}lqfZ1AA%WPLJf*@+uG*qxJ1A>$UApN3ca*iA1r@6@y!L1sA6n|8H7v<0atqt}%fv!XIQx4l{7);ZG@oAf8jR&VbJ7gvd$RG+QtNUK+p zvb6J+>l+mJczzlXr99HAW#KmKcACd=a$LPp0ptv_>2EhrcMLU46}@*3Sv%U>i01>2 zE^@NYJFMwygU+oUKb@;Bf+5Mqc|E`bU&bScNdEN}gp7RU4rQS@L zylcu@bJ3oK5Z;#r!n{26jTZeSdrN-Wd;SKJo=~`phtHc1%;SQ}*V|0jaX*~v5#1J+ z%{#aX#Pl-MXkgXjThbg0dbw{W?ag`%}Lmw^pga;cY{5`H{A zscJ}yopuFuWMH+=Q#g*;*VuyIjZMc^0OO!NSV@u8v3`?CFf9;=td}qILn!PB0#Y#f z=}Gl+DP#jC6;tJ5=7I|?6DZzsUuq_so_&TZCg?q=fa$6%-kW8sYwYq~y}N{009zN? zhV_%;!sca%=BWH!5j>^MyUrXL1Q+FBHc1+^Z&F2Wf5sKgaBk}fvDa2f-z>Z^v`MOZ z=E)T{ymF}tk1)%j&IbD7-rBX!L)iBGTRJ~vrLYx*CKeF~&lZFUI1K_Tw+!Kf_-@gE4Hxj zxS)xHmJZJC)S0!-#339Qh4H=HcZ|s@xvvex(4!96W+1x{vYYF}7vgq`E$OiFKgJ}X z7D439NF?Tn(>$9yr@*oFy@}g*W$Veg#7Plv_eL2cYI?VM9cWo#bz@Uf3C(-$954a% zI1ibu8G)cb4=gQAk6QgZ$g^%UeOmNaz zB8mxKlUXS}U;iqPKXg;k>=UU|T^G;j_mi-YnB+C8(`=wCAJ`fLXZ zzQ-x3Pw8x*ng2h~t|U?V21KEoc5sq4%O9Kd_PV2*o{_+Vf!<2&Uuy8xLSJOu;4ikmf}W6Q zaT{s$_Pu%p95l=xhv}_MlReUHA|*s+>mVDavJhW)*wS!z$ugo$_xgqP5g&kuNz_9g zyes+)Bk{aMiz@PQ&DTj=Ld(ZHP0OijCWx0m|~j# zPlT~cuXJu8C(DaEU;hhBA?K><@kxJU{C(d+bB~$zar<11e^5{rD!aW! z({j{M0-xpJG<0AZzT5mPHOrOx{Rh&OwqlsUdp5xb)npa%OkP}4mxT_@pKme5=mFsX zd&3)+_Kwt2m-oP!9z*h!%JXCbV>7j55YtW34XWs%9x|+cU)(-pF<(|+bxm}o!l^39 z1uxcJy^}&jB|2S9%}}wJ+R@kpp0B|hJHhHtI|hFtjVW-Y;c+i=p_sM0#WGe6!5^K{ zq$CazOkhpJzuRsQgeV2ST`p{T7pZkxbBfSV8e^Ad$}02^J(rTU5hcU@?LF;gzZBs( zXf7<4pRly}aq(#NJ&d6y`tg3I+8ql@rFnoM-UFg4EIGTdp1a0mj}4N z=5VH&!#^%wuI;J1aGd_Npb;U%Z;(=McRU_c1UJ{c-P3zh-7&3a&qrlvkUK-r6E%N&zM_i z-qC92ePj#Hwo&g}A$STlEF|91_lyr*gv~qL z0@qlV+2zbykK=`DYNKqjzA-Pgx+^oIYVG)X zp8-YXmJJ80*k(FM07YsR?Q1lrTui5_WolQM8|vr3yBg#%IQ6rWzLm zcIi-M7=X$qV@U&j&amK}cLzQp5HMuC>)L1wj}u)v%X``1<#XrVg|@0bUI$|WC1o?7EuXH)Q=&j9ZU zh~Iqj!hzesE{#f9UB~CfgFo(qyRfAku{dlo?|#(WuJ2kqi^b1Jos8WYKiXd$+dJB6Z&8EgC3a}6 zwdA0=!tEQ5yYos?YJcT&?aEXE4D&7ZvL9132N##QzJc%S51z?n>F?^z(M(BZ$-gX# z$IgAutmedvgu)%EHC?9Py|Sih32|vcU{JzF%8~AmHvD4DBDR9Ho84TKhD9+;h(FvJcewa8`hM_SlV-Q^d;Fgz>&Y8bL6B6g3lsY8}X~#W8`K#vYC^#y%U?Ou?sc zWD2K_wz@cuAI%Dnq-J$fPIs(eP`fR(sdC&7+ ziAblBIB09N&=&WC)RaapXWuXINn|>vo8U z0{o9DFZQBx)I2o3EUVhOd!@AohrIvGqN1?F)^OO%BpJ2s;0&HvJvqnzykM>Qr;T{L z&h>l(5JfU{;K0O=m%jx1oBN|T_hcUgSZO;mx1;k87G%Z{tmQl6F1}uXyCHQX`~Hzd zJCOW76?##U6Y!nIutPS$=D5W%-HvX6UMlpS^BEC`=QRnBWzk-;}4|%?z4M3jGf#16pdXhREBS z;lv-`Fpfp@&R~|Cg(>hzAGDY?L7}(!MhSsA3mF`Gc5J-klTsB>7^QzLcbdd zV-I`ml8$h`*=^!DV}^@uZrx|$UrsxGm0DIwi^9JW6y}I+ik7^+dHJN|hVWT=QS0L8 zOend!1`i+a>wiL4im5g7D5C2NQ}EnjPb2k09LUM-X1Dc|?qE3(`s8K{Onr}ihK=Q& z!$fX(y9!Kjyx3N1%!PZCcHiwO#$ifAj9TRacHg zzcYJxG|+7G?CwSiW_)xfua)3AoU<@D2A2&Rv+kD#*uvIZja~vHvQ~}Eo=2tybK6jf z{XgUKI4n{2l&~`IF*@A6|79GuXJjw(@K%=^|K4?zM5gZNTAJUDY322osF#r^GXJnN zA23ureR`?Ff<c9IriCo&QND|DO+JBm;vcpb+Yfuz;}GpQgpnbCej!G<7MmADf~- zFvoJV0{ll!m&YNDz(5{!`-Z*sa#wLW8U8Y#CPHEmu7?j*21r6f>D){tq{hdej;v;> zR^*x53d&MiKT$n+H&6!z!#y%2+q4b_k&FS@u2b1nR54JUfhjs3`S$jeL;|RpH%(2@ zk9A+n3Ww=@iPUttNz2%9Cz{O#t_Z|ud z`Pu^t?4T*|5%AoV`s;tzoT3|~?z8^&jcv-r6$p_{OyhIn7|uKi((Pv2ojWIf{Sk00 zh~!x&np5;%kJ_~?HYo~gW?Zt_(Sk6o5{P}Exb{o9vbzD51nSCR6M#iYuO0xMru2bv zNoe*E!?dM7oVCE~^?|>iuT~Y5lp`@*(#Q1LC0rY)b0a_hDCq}gAH3Z^zi`et_5p&O zPoPkkGqK&!`dO|z3JW&YEN&U;pE_NXEXyax;9ow}pV`>n_X`N{B%VKyJ;eIX;$Xjc zTw~;rzJ&dY%c_Z^69}%%*&|L`V&B54YWb}1hR(!1?MW0V+&*Om{5syIj>;r+t!)j; z=+;7y?f+Uk?ik&jbZE-Oo$GTC0dIOKo1sY!TTAf@Wxo;_&D7zMS!on2T zHn`iORY04=QyolPS~izGO}-_vBaSNH!f;TRU&?;#j3}S`R(zQOcZhMlsmU6FSgpdS zIW0q6Q`B=BQnMb4x9p)T4DIZ>OK9Q_O;Hnv=L=NWWwU*6-e(!jYU(=?2>@(6jWip) zl(KS2Em|?_`{uJ$ghZ+eRbV$yd!6L_7GF-!t%9q68#hgS!{{XuZfU#Q9GoD{#hs7# z*1yj>>R(maF}C#Uda8v!SU>Mx!IaFADq!RwT*L`yl=1Q0Yz~kGFVziQ*Edgxx)UqK zRVze`^k;7g3`Q8*q|`!K+;WSu1zA!XO_tp;Jr&_qsFX0OcxU0+`$nsf(ClB5p85k7 z5ifLVVX!cDqssk}?CSgIclieSNWtuX-?2Sw_WP{I&=}c!!7B_y{|WYgd+J$o7PhJT zG(+<~#{2g*AJuv4m!zjJ<-=kgZLEh;>Q`${^JkiPmOxHgci1g=q{g7+z0Xpfl(A(v+sSt%t{rhBs4u8Y373wOGb8)fvecSewx8llV^tAmO%3ntw>I!-n zrt^kpZsRpxGRSwPf^m^cm?vCauKDWhQ`wf%Vcu9=jvODyLUG-pl9aOrtR{QmEcZKF zyF#yU)S9Wqx)oaJAAUIWOY(5MLTdgS&cEHkV-1e!$YS~fuxiKV3TNk0i=#rZ*`7z8 z;={AsaNu{-X&GHqjXeWOZNNAuf;bDUuH1WLk1w2kR2EOkG+=<>A)na$T+tair0c?5 z4@HHCqc(IMVMo<7ZOgD|+nVcUTc}@Df`_KVKV*ZjC)M*-Y`&O@s`jk2pnchke?Ae8 z3O5|Gf&eRW&)nSHxR{qfaL$iLMO06cW%oRLGS$YIIT;}H($pgiVm2Y_7`)P{Mp?3+uu)3q7ZqO9XZAaC_J7)6V=nMEKn~ULJ%~|k` zD~>#Z6AV)T*0?eRlFnz-6TJ@9NkrLZnz;wKh~PXc{! zHNf@xpSK)v8(<)GotF+E30aQ<{|HywEfCWmg}T>344=Vu!S4+G7IxO9Y&mHLWFWxv z;u>I~5716|3ta5+9F@$O3cw10nFU}=#HPM#U^BC|{VP{e(-rEdvY0tMHEi{QSW=aq zJ_IF-pBOi3W9yD(ADsOpSPr6E#w;zz2Np}*Vvx}L(~Eia5hXD{WsUJ(<~aMJ$vRl> zyquNL;tNEEK>3={f{bZB9&HPP%q@%zlE~NO}tMz>jv$DL9nB1e& zp`(hZbyKX3G#W6(5gXQVzFml`7$O0yTF~irD%+}s@OpMHC1vkeE!~pnX!Kl-`=%JJ zdYzDM&=SUMB&tF9k*4a|ga}_&L9Op>mrR9-m}pT)P;ajAFlmdh2z0a1=rkHNl&lO! zrt{AVhn7Wq%?H(pdXRcf-ZuvCYtZsTGP?XRjq?J-Q7}wc7_~i6@%ueTDxktyU5NLR zRKCQRN*97IM_j$oS7upg1EEZt2NlIJ!su;=^FeBl0ixP&Sd&K?L-esPPD@W4wX7Is z7#Gk}#sPHHITmeAlE#cBR!cf7Cdb$;I`>ISgI9H@)LS(B-sAmc=N5W}Ixf%2M$?|6 zB#Ia9d^qcAl<3yJH>BT7=dWFX?k5T#x}Q`;l=ExJj>^@U@_O_X3m+UEappAWR5J&G z>dX#)d^MW8m1L+nlO}#jSeO@gT7HrCsf^FW!-&IZs#2FffJgD^_7AIN^*)H67FG3h z3ZE-ntg=UK{eIFcc9q7U{tTvK%BK5+cwGLWj$fkIsDxGn^4@~qn0~n-l~zcBE}q;t zuZhu+8R(Bog{!1=49n2;U9j+^85)|dj%n=aqx2;GFf04VHN8^%-uwNDMjF$8+xtnp zidmnuH}?**PI z_m;r9o6vCC0=}9o4^O=r2-bHfSj^K^GU+m%H}ySs0n!tX6I_Y2sDABTjZLrUQqwI)11FGh5OH1*V_o}K}OVQ$yKWb+Xyjh)R##}vSggttO>)VHQtN=t1 z<)kZ+4wK$@_6a(kd&KG_X%uFhvM|&6lL&a%G5Lwm>OHQt8?VRiz&i8@ z_Bm*)fKfge;1d|wt!F-!(;-g&y)U_ z^*E;!oWOG|&e6OG4iiFdjINA-Dn@RJaI(TssMcilU@8(2h=54fB7J}3nnExz#>Ixc zA(0;7NMEK6O}1U{>{zkKGh$D=UjZ~GlEYH(Vl2KSF3)0F_pV{^CI-XCSbKu4&3m0fY& zXhmZbLhYtiY!Lb1>8=d$K0phbh!GC?*ZW@oYXzYGX$~n21&aI|1!QOfY!jVO5o|E& zj|cBRcDr4Lz+EvN!z{1mpd7hX!N3;+tt#9{NKc&Y+DFh8=Q8Z|9Zm(yt0@GD=?5{p zU@lup*|rjO!25V1m0T)V)2$MGKn+Z6y|2tWf$Lh9vgk)uZ4tN$+%fSDL{;M>=)X~> zAaZvVbyFN8VL+-3^N4!;@rUbo$CdQNpU@S;$>CJ*Qwb@Lt`-1^8p{j;NTr<#to5$7 zD_eYZ9CEhBS$zzizax=RwbM9r_~0j%N8I+?eI)Bc=PJJhBKMs!pS(kH-1o2!l_ORLP1Y3jAp_B7H*Eo~! zFo*GN2~496wb7gfl(&qNc68D2*hFcP3vM!b^i)KyoxWk-^|gQHKrSTy;|XSd7z=)l zc@vr8dLluZD?eh&Kuu3Niyy+pP{Rp)R0M{rCTlZ=4VY(jXeH&rwLRVtO>SC z{)8b{x2$UpR`&cfpKC#;?2TRFzWRtHG~Y0mp5LWTbcT1cRG=7+`GVgtj=H@%@Q9opK90!@Yu_&Lf*|7rv)$GL_+ zLT-=;(;XQ0g8-aPQhFAgguld%?RwUOhUIZF=Z=YgkEGU6S4+XgVH+ zqcq_1l$3nP-+Rl|g09w_P@(V0Ue$Ho*M022pAQwcuOzGvJdWMN593h*Lyedri>0}!j@9>?{$#cSqgl)LDxmSnNt0) z%cQPgdB!*$=}?sa;AkM3Kd(`AxiwEk*x^ea9^vR@tIVm7=0k5vmW{s(4WR|=Q>oK+ zCkNk??pM)$-qRo}qa%9H8bQKNd0!K|W}t=T?Hs31%!=_efEu3Jz;bqjlNYQws4Frt z!NqWjJ7vm&1#1%$a_st7ltZVF&pLhN>e*J z$gi)L%AKmX{J=0mNRa$Smn00;QjOt&xC%zArxLfk0>^+XA?Y_}?#w1?c5K#?c6sY= zn}GYAT7<{$YAUK(n;nr|Tny{>wu$=lEV25#M|T8oUA^POjA7}wksdwdbf#z(rVho- z1Wy4Qa|Mpgd- zNmPwjbbmdU4>a@9VGTgFc%Ix+eO0NR6ub%&zApPnRj`F)+w_*`-s2D4_tgIaRDZK9 zLbBQjvCg(P5Fp?n?efWPh;*1!VCWjv$Fw(hn7oZedp7vFrYgkWby-opr+UEAWMtJd zWWWbBVYK9`25q8D>k)i->$bk=G ziXqGRc<=8b_Avfo($_ut;>aFK`>gvq@umOhw(pzCWLeCXwl~?h9Pdp{1{qt(!D~`x zzT$ttV^Zf#K6|A2Uo$H}V3gk)El`H^S08lUEnE7V#yhBZ2BgpUU{P)t&&U00)-^*XhKmx7Of$aA$UJF z|MU9#UKs_|OTh01?xrt&!z5Nvy=U%D03*@QvG4AXqvRdhikOwh@xcGgc|Jc4uu-zC z=9I3UuGr?R{G>iva$yNw!HD3K%6(YB%C#5ihElBopxUQFTACGl$!qlNs9g+qXwrF( z*_tKYlk({_arcNnk=9S*%hxw3dDdvPHKPJPBX#s#!BRImWqI+^BZ zocI?&V1wLYaZ>4b!t^PlhBF|AZRJvW4Uk=cgz%T2S?rK!iPKC3JKxcPb3c+VxztRuqlKk zX59rhQC9G!!w~P*Vz%=%ab)z|Sx zON%y%@4Gt3p^xaYQpmHp&0|HGK%-;AJpe4EKY;n?RftFk*$qwI&{BZiOAdIbR04+G z;ey{{=>|Zgyc8T;$r6MQ!K5GTScd-zH0g8^oeC}c^QbOg4ZR|o`3ALISQbiu@yE^zyaMv!wCse*uZEk}tues4 z81Pp7zmefpuNvG(QWq{T6biao2t*09uy^ZSjV{As1NW+M??n7;8LO_Pbzcz)05=hU zcabi7Rri21y)|%5eho}ENz4^K0`@OgR*@!80s1ne4(~w?KuNDV1Qq_?3Cw82fQ~S; zR6SiHP5^+TKqSBcUJ)pjG}K2UeIw5pWTj1`!^RXw*Y2ElrmchnY=x)abi#GaVP}RE zkv$IfSJ`&J6af1;2`~v@)OjF|Gfwq#p=OVz`v_w8K%M)Zv^Y0Pk5Ng?!bAX{8voqi z-P>=$$4@yqtzVDl5s%^MXKiMFnj)4RYF>e<^XO5u;ODVtzQn3ti$BFvBFBM}qma#c z=P~S<>CV*5;YB+DS#9RZjBddNP;+kSx0!b4ri7A-$0t+Oc}lR^h2q&fM#(-_|JR-+ zS)4ATGea9@(yD9L@33syZN(&?1i`zm(}l6ePijrOKkB$`AciAaV}RpPbSceZr}FR( zEld5aJGdw&`v;MgK?q{wOT{PRqNQ7uu#$&9Hv^50Qi_bN(naYxbs7fo+2~#JgLJ;~ zVlcOQ(H&-$6l-j@fBEhr(vfeG)Le`yEXHC^RsdoaFZnvATdK(rf--Z&&kC+3`8Uzj zDHB5pmDDA}>8!8&OdSgeL&#s+s2+|x(y^Tpf^(vT!Xj+>Mji!;ku`UQx{@Py#m3-( zO;Bh0cizada?7V-L^f|G5f09&HsHkRRfQ(0uPm@9G9xSWdz+%0x|7P_lRPM?H zC%TFL2%m#=n$s8K>ll|jx!zlpNg3;}XOs@{p_tV?1zmay2?A*P6!dMhZc(3-iKDqm zHlJU9Xn8I36f-~Xq|Yyn0EZ{MMMv2767r?gGJWB@jS}U}<;qh2;S5xj9BXAxQYQN& z)NfAqVC9XnK4G1VQW+XN8hRXSy7UZE z56K?Ci-~v1(y%G&T9$W6a>?g;xuR<^*jpw)y-wqX1=n#v=~c~K#Vw|FZ^unvhXk6S zrjZ5dUnw*^3)3Nn9%t3gpA5laK!53CRR`(k$;N{W z-$GiuGh$7!_Zy4@GyQzP-4Sikv+y$VHbpw6xC_Tu=(s>=g~(I1MpEpIA4WV`c96rlPK zRJ&bSLKhJ!KEARR=(;Y;%|vkm0ysb18T{Xf&r#AVj(vClJqFn&%|fU^Q6rqv_V%rg zlSRZN=x5n8Vxeb z)4ec_sXd~r@_ii#tarUUUn~u%+#mqR0h|SyfbfWEpg@q>f4wrW0xlX7Amd~Ft(*+MVyX}aXha=<3u0U2cNsFs7Bl4@+bgWhOg-${+J zjDCN}A-p|TeCr}NktkuQvBQEk^*foBqr40p7pi&x)87jJT)P>qpCF|Fy`+HfJHRUA zw*|{?+R9+v4)j)lQ%zQT3lvv7iI;vHTYfDoo7W$-E~R|CceF7~#NV7W>h3H-D}9PT z##E#3(jcq6%23g!NYpu%J#z@0KzKzEPltH;f8CNdEusa_N|n+x+P88j|GrrF$=B`5 z498V?4(Sr9n4;}B7!Aq8-?Zn$@$H6`JQOab-GW$M#Z04?Vsq~!W=^K&WXiSn zit2prc@H@$sw`$W5eks19+!w{As916+}5V`1R5JYYx~z``B3qRP;cF~?*C_GOgN|R zhvSTqbhFm%v(Qt7Bd=7=gNh%@mM_$~c-WH-!u0-R$4Mkz)ZF^by?7n z9C$QV7^t8caG0{n{5@-y8dMoBlz+0XGLLJZDhQierK!Q`dJ<;FK`y(jsIfll)K+~z zJShcd#hX={RP-oDI7SMlmnTVC6cZaKbee1Es2`i?(%4Lkrnz%RuZLN&v9l@cP)1J) z;BNBS*N|qV_r&xWB_(011$a4Pd6)$mA>co=zqBjj#_miDS7T3_`3#x{YvBxxEPS*H ziLSR?Ga|ywBFk%DwH1si#u)0Qij90${pkTSOVRbCR$f|m8GFKAoBr>&qk;qvmu?e99_*$t)n)SdW#weIlhjhBkw z+jsnGVX|z3g(&grbO!)k#Ga+)&{T^>h)Fv5RL&ec80X!EJL_Sx;ags)cBltXxtf`6 z!L{p%mcVK+A(g5YSo0_tnIXRl3>~MCGivhKjNOAwT=VW z$8k1sIPM5t{m`_eq@>7ZYO-!#Mxbk0zzEwG(X7tN#t3LWr!!(<=2b zPdsg@FcZ-`Xx3%mmYt-PRHv$N<7MbNB`rnjhe$v~Ti~LMdXa7yV*B7|M6@Ib95 zn~=w(9)+FCuV(#4SvVigmP`d1+WZK(0kzCv1B!=1QFMBQ5(N-`gQiH0{}PKPQTgkg z4S2Q&1C;@|D3CVzPgx2{uf!vx0YWGLmB#9C`U^-LGLp*o#_o|=*j*serjZ0-bRyuU zSK?;ivFmy+A@G|JyDUK?vbwwP@S^;~kCGI)LGY{Tp%ZsF>vOee3J$yZlzLHEqf=4jdHlY^opnVuFV{7V^^OouF)4bk(} zdkzGe`|6&nc2{&8B9^QEg6r+B(w*?TPlJIM$(hp@1+bZS!L0KCkEyqgYjXYn#|I(; zqK6iYBi)U(AR^7^l9ra(h!Ii>9=ep+NU`V`65ALl9b=%RGC*n|AP5L5pq}qF&inKD z{qBDp_sy=|Q?J+kif43?z{CV+K6%ug{k$C2I%-#F>nzm1rvk8z=(tv&rF&6h&UM&a znazn=SpV1+|MnI_t3RBClDkt}jJ22;w(Z%93M-g=7y9b}sXzGLdrNFRGCI8R;QBT4 zL74UIvmwW>;@U96>Pd8TQ(c%y$&|&Ct-?2#T!X&wX<9}PBEByUs*z6S3Ovu%Mf7Z5 z8?3yr@+CijvESapP9VP2v!u#QS6_(A>haqC_djtPT+!^#H2dUOMy&z$^Sk*h2N@!g ztifqpz~8Lj_;Xj&t0_XIQuVkSd+_42cg$PSd(HRuqNrT&gu7U08yUJoW%nG%3yg5| zB!B&p>Rl}ihe|Kbty7Y(o<~RrO%P%j?p!sHc_vX{*Wn%C6~G&sF8W^lda%7jubHE~ zB%|_N9XvaPM*%rqcC00{o6FoU*oa7Rv&wxblh?O&ty+DmO9Zamq_3>%DRfDP{LQQ= zaM3WXN7Awr6$BIMDRw7Hk9f&g*BiTt^WVGcjomYF=$ps8t8iJ_in(3M(Ja^%PYuYP zJ1Gp5Q_>{!DNJ1DO^U7}`y}C)m%a&J?&o+uTRJWiI1(U%@m+Ju3#OGG?rzu_px4*8 z>#Nqvf;^sdWef^eWz=3fcst>iFO z^N}TyxVq-gDrDBc=*xeY>js3gwJoys-hX65XTQ4 zoXobSIhYLDH;++ENv1nKUjkMwQ1bHDS@4}nWR(*WeJ$p5SceZ$om_Hc81(70=a=oe zqGuh7k>sx(p1(Z0y{_T>zYUn=&WEe+B1v ztTf!*^XhaAnRbOLt<8R(EA$B<1XzcX7!emAEIPVPvNrM302eC*V#OS-11TFe%0$H| zJ7kNYi=i&R&#IuQ>E0{l*QoH~cHtXww}<%yEckWN!fqW7n1>F_+$5bWPy>*rft=M) zz6A|XWSM)RT@v74F6;reJ-1hhs69YKo{`|H`4G$Eo7+U4=&T>Z_h=L|#@hwd7ZeY5 zRqGD~e4X+yfQqlxig8*@O9R5fW!o_6BFWq=&QHiMi}@cEk`f^Z9zb+~Dve6xe>PV3 zl!+=BFq>ySkmz}d0$yH}L`_2($NxWjT$(QyuXsl1Dro#DlUK09nF~V|b9tJlU>!gw zQc30_`RU3TbAwC3p^;hRLYJ<>>VzNGT0$e0s+x|AU&nQ>6qKXjprZ)mWZ1({27`0l z#twy9itpI3C~sqx9$%e2BVOYKQb$k*&ryxlbGiC;w}fA!cXhZ+=_G;}>=^vsCBO2V zoF3?BzDpN;S!p8Z;*<(hEY*S!Z*&+z?}Jng-8wQl-}XE7{Wlx6{^37F_Y;fbhMSkZ z?YFgaPD}^2sDuB!g;4|K?mwJRb*VBN#1l^fR!F-QIU$>lL;% zt-)7Ul^?&Ln>pwWwC*v$_gW^~w(PWBn!2f0!|9nk2J@(X)N=10!nw+3R!nC*NZbW4un&P`O|{AuD0rijaga*D~=bY&5Vr zblkh7#BSFx%;96FV|Cf=f?Z(&iDhNcxF183`&oHw4ML)CriQdS8d){nSM#wVQotNKzUb9bMR)P)L{~|Nd%LLU zI{i0jbycZiDr`d5i%z%n3JedII}~AlZy4f@)3Zj?g;}vF87YdwQ#=NPIjcJ?k)t2~ zd_`(}-XQi0z>QfF#)~}@P8^oYJn#q-ZBUd9qKv*&iqYO9mAN?)VLm738u%NM>jb{{JP)_BIgiU{(V$!$m zE%oc+^?QZ4u6e;p+V;WPv$#7`ty7afHrC6FdNWjEq2cQ~V3uj_(j4RYrTA8!oBt%5 zE5fvLWa+UrH3TBWTiW)TSu8uqM?8-K;?XEC;hq))fr#=kP8Oxjdc|?a$_;i!cq&CI zU6Op15ux*$@-AyO?y&x#w&%F;*@t5mc@_8CGxbd+Q~mXY zHkhmX`BhpV5GYt;P>VG{jq(3H_ zA?NY#tf@!FBm__?YmiSF9oAo7$!3hFyp1Y^3a;^(2KdJ^fuCIP@)WeoOHfs+ngT(6 zW`*XoQh5&ot9^K_<|1^u^O`LlCD)#Y908>@w>E?g0J+J4C!Ovo3l^pw;i|D3*GN2m}Q*)l6iNz=5HLoQgWebuPNepye^7q14snl zXhbY~9`?EXj54agbjR>%8xPZz^KenAh~QrD@GquicAM8xnq6htM~;?Z5i3sGPJ=L2 zbeGFNxsQ8dZ&eL-*%^&a(c|WQ@g-$Su@-;IgFSpKQ!UWvIphNLx$sulrIyNk+W^6! z=5B{=OeiV1&EAl6(;;YDkabnRW9Q2ySf^;W4QB9rFaY_xLB5HBCFh}a3tEijmG%0|`ER2qm9mOt1L9Ompcv}b5!J+4a12d|j# zOV3vt2H$m?l>fUkWc8qlo#^cAdsf%no-g8v1nAqK+pq69kL}c#!R|cA89(Q1-G9(G zzF^V25?VvLu8RLOk3fX6pJzqR3MrPCgGeNLZwXgsS8($@=GuT52HmKCbx-yKq>{i> z6t6+|F;%y9Z{f_NRo+9dG#o@z~A$tF?`B zjPZkUOf^A$qeglQT*5RSjW=+NnUpOCNkc6a3^75N&iTE6C?n;!>}v}*yt+-i4QFPA z80(x*Fc`cTBRg3YDPlgH5skj4lFKXjJ`)~2Cvp_8%T~d}O=~Zv0GNExMF<^*24YaV z#>Dy5qbaZ7W+~B1VB_JbiJm^_jEVaM583%l3AUuoejJ@^0AU40ED&EP$dUil5@Wb2 zHw1Dj;FKrPBkZENDbl2~2)Nz=n0FR({!~u!oYo8AzE`0^N2$Kw(n_}S1MMuze8Kgd zq%iB%*!xUW6MR?e;XvXM@;_H=OKvbwhyhS)L-(Ydsbh}DnlbrT3Isrmq09x)z^Ctp zhsOUxTvi1{AYV_?V(-czv9#tt3>{Trv35ozEQ3=V?PC0&@FTZ3<2G)EM(O*D)5wXW z#BE0G8sqoLq8lDeLNsWxStl#vRDms;E5NcD#4-WOz{P#wqJE*R9Ul|`2sP~!?#N-z ze$j;JOH(&Y;mTn{H-4rH=r^vnJ&Bu`dgj>rWwM{c>j`Po2tR|1R@-TFasz;}FlX<| zlgL!ZH%pG$H)X$)108o-j-dk`AH&6Je72;P@;APH4_CVxbkfPSzTIwLUh^+xPk(D- zB5~yVap&u;8;8M%FdN$-AK4I9VrkTG49Q0CNpDvTk7WI(u?78BEc4-E)U}$yLD4<8S(wBsPPc%lFwOVlaKFhzFN&nF7-N>rJ1y!@8fYVx0B_bNAoZy8rxRJ z9BB!7l-oP4CsoJHw6jMqu~Vw%p|gd*y4}PLF^(5%0RCVeQ6~SEKO-8GGd~k8(z&rA zXxH^kM>3~q24hp{?m44`5pCDCo_|x7Rb=tjIv~B2!KyKCuI?xhwI4;-ATZWqSq(#V zgw7tUzjI1f)+vYwO`W-Af7nu5ntYn<&l@|>f9D*H`X~D{cC)LtS{UL5{&<;`%PI7| zoz$}L`!%`aQ`^In@&seOg$~nfC1cF3nC+j!lv3;TMOqxfp2G ztw}-F<%qz!$loAWCF;Qnb|`20CcF&gLa#(Vgx%Z#(Cv&ibr z`57~(mqPpHv-QM0Qk055`bp+OxHSoWJQZ}H3~QI1`ey%}Cwk(W=9Z%TISFiLA^->D zPl^tS{*->=>(P*I6pV|EciPteWA)^h!XLlmznyKy#*Sw$fFb2U zAOkx~m-t`0JycIAJs7pJRlP2420&v#w6Z8~&jLa$kbq!x*q7&B%0ls&fjNRL${%9< zmRkd)Bm$L1{I9qu^E^Q+r8GsslAa8b zfZh#$FHy&;=N6TzFX@P>n+B350HAFUsu*gSILsOGv6sm1uuJC?t{L2|e_kKRb$xmO z|C`Y?Fs7((Id!lq{E3AJF`RT^VZ@R#o8f-0I5M79NzM)QU^@W=w+78xK<=M9^$)U#(F-P$L*pGVh2?*Kgw=x`1om_PMN2j zZ-N3TO_#%XL}+B^>vr6;Yg^aJPuI}QxWuSte+)^h9C>~eDx0038!}p-BS4@Y9Funx z9kC5smkGKQBV6&QQsyuJvG-oaM{EE%M_ zj41tVkW%)ntcq5^ZvE54o_hX)tEISk@{nq=(i4;v~rJKG^;p6|QW{`7Ct z-4YynMUHX=NW8ob;|}odzC-Qmmo`g$#~vkFAw{1cotrB23~W<|HJ-iwtTHRU@Pj4^ z_(|4ceV#-XrEyR6|FvA(0%t+}#7zPP@95we+cBw(g>cUu#KQ+BtO*OLq3!B!A*+rP z-yZUlLp|F$I`;6@@N$XvOC0Teg1CMRE zy%B0Fx}pi&qPRIXr;t13Z~ZylyX;Ty<&n}^U(!yS|7^tNYb_m`GZ57Sk$-X zA4kzfA?t8o6lwOD;0GkAQJ^(rZwSK(_&6mtvR+g~z2R8$qBDL^Clm5f%6w3{K>K_@ z6GW?6dC?fU0Lwu~eCng)CGt0(lxSpis0;@S$+C zdJq%KwtxvBj?AGbu$gkRdGxHQ7-}{U9QkCs`KNuml^7+t2Ba%<5WFsbD*@2O8RdkB zI_7UdXHD8Ng=T0CYypL6v#34a#dRco-g+1&6Molq zJ-113GOgggK=VIBlu)LDTH>;8WK?aAG>p&8HUP`Z`DD{-7t0H>o=J-nyz7~d6U*eV zY5LR6RDeazK~^Lg1y^C1q{m;BG$Gi_^q zb2J?*P1=IfIwZ-nl|CWPlCb%ae14rjUMPBny^-d-8E%{LQfFlO8vHB!S~ zuApjj3SidU?mg#)bVX*Ly<46djwX8*nzJHqhLd~_Wkb`KYzEDa?k_P4Z(^S7DV-#6FFId{r!iL1i@R{HW^AlJ;;ROhqrq3EvoZdB?ROL+wiD+KC z+U+1_*@?vM4pQTVQ(e7fB>MH5t5pK0rp6~wJBD1aT~@TUp|e`YH$x-U;GM(^28fir zOWuHjoL%s9{wu0wZS6?keQ^c5gBm=Fp2>o{>>VgO?)PCn%m1hyBT5EV4!~CR3jowL zF;vp{N`&18`U%(E$I<;Q{v@3i_nHL_FrJd|)z!5LtY~Vw@pWpl^}IM{KCF2%*EgB) ztU-OI|M#m;@Ve|yj9D!<+jt#_Vi5ki^O1b;4S4hHAb^z2_m(Ts7tmSnN#3@v%R0+? za}FOgenPiw$tWSPEl5a|tl#^jLqGmAbKby8{QKU`{}qtS;ZKl8mXra9zRO!A-& z7`*+T7R!wZ0nfQuiYXL?Nx%T9tT8A>&ADxsAa(!ZJxE15CMIp$Z)0R4BdDFO^Yakc zMZAr-Ua*4!oi#)tJnDAO1=r!p%BR-uI*9J`Vm!cmk=liUxC9o{%Mh4(C*YoxYn>-G z;(=hi#4H=8{dJZ0ie*X^aA&Fink}{IH=pv^w_Nu-DN3T? z55S#)AVoQ-xbaY034-27mPs+79T0K3NS^mft|%KN)NlinFN(rt*IaWpTc4F(M*a~1 z!CvSBgTKr-pb#w4z5&s+kCA=>))@j}_x~8T|7BX>~PL`yBUWI0~TV~ z4;k)3fc!-XUBFio+?##uWx1SsZvKDHW`T?oWMI(J<_y?iAWoi|FAz%L9qcN5D+`QJ zD%^Dz^)rWU+qC+15pMKJ@un0PMvWmj%Y(S#_=@ur0H_9`J@p-%P%3c!rs3I32hzki za2t>{R++4Nuz0qb3g>GD63fp9QubeGqF1ma!sSVfSn(wRTczU%TU*M(Ah~K&S41?- zKOmjF+ID0_8(`61#Do2Vz0R75!%rr*$2QrRPvsXJEgn8Zs~4Np?G^i5=&YjKF>wlW zd^2@r&bLTgMz6mrJiK!!1Xkh4iTvAwrb&&RZ~Wi{@JtOyZXY{iitbozd^ zI=WKVT!>$|&oH@FY00#vWqC=sst|1f)o_VV7bW|3G-$p~WVI79LpWHo0b*Od?|Qqz z^ZXl)DUn1;CH+xHyLgz3=+xTn{NtBqhWLuYVi|+%f0l9$a8ings?Kl*UkzS(R%!oL zz9i{^9}YPJx70ouZXL14Yb|@it1uSi9uys??2+BtM0BPSu)Yu1{(z{FdrwALMo{UPpp-|1Bpz8hnZ8$HU}ak~#u`u}~l;T*c?IL+6#lsnKjKtPe z&OHzAb9=GP-0?X$sRtvft^EAu7qtPl3vnI!q4n~ z60U4x*F&afD_$yT%jA|Wgr}>~Oy!F07~=5170{X#IfOC)j88|^b@?4B_lt!ja3P~D z2SD&7J7}qeELwi0y@uqh*8B-O?{T;s)H(E)S@}!V}&>Xo8H* zU$f`HX@JyT5TLHaaB7w*Q9~-26PkGh5VMG0t@2Dnf;;h!Fu-i}WscPHiCT*B52e}_ z<&lpwRW*_>zU8B|nPlKr)Ry$&)RuH?KlRqB3OOH*c;e@n8iE*2;slJJLNxvnaJ%^$ z9bkT;--6qtZDwDRLr(eZ+uicbL8m-cEE_Hp^6)&|g-!=bNJzm4P$e)SV}xxmhZc(gTAAPuDeQa7oD z?*L{M08&BL(kqA1pfzU!36}pH`PtVgjxp_I8{e7;#IrIiJjt9i&VJlI9Fy*}^ zFUj&?XmbWom2uOJ<&(D2Eh#Wx%=-M1_{FTXn_>2%Q*#wB@0C^kv)XO2h@YFp?h#_C z9fWO^`mJwvyGn1VHOfAlF|b;L7QKea&j%SEJGf2|WwYdR#HwYNS^8a7QYubr%_s3k zFwDeSX#~@9DLZ-#U2mPSw&v;69cBv?37G$uVp)se;_}Alkf*KTvV$r066Wiqcr=-1 z;pU=~aUT51+Vh=9qF7R3l9gZLu(3qB@q-$~Tdf`m+;0)V-CEaY_M$8F`%`nzh-F#E zJT7`E^+WqlXr^#e75dW;pKow1Hrt30M+2~W+S3Qz1Mlct0z??tK8XwK5b$BOE;x|f8{*(!zB3A2+bdqd~=>@#e~*IC0%GK;tO_4>YQ@MY+pqCdd|Cdrn%93sewKSo7=x@x5&OL zxIeJ@xiVImTj8ST*K6)GdPizAIk5Rl9VWNJdte0kSkc^9((`BQBjhlz-+vd{hlETx zJB(h5kiXGt6C3)vHM4))w`p8gRvrx3ldNIGG}Khiw^ts{eeypEk;46!{Mhq*-s;j^ zXAfMeT20;AW@4hS7eN}2QvVk+@DrApj#0ZH`TKqWy0lpQHb}b^Vse09+Y| zYYcf*`LU1)p@GDJJ_i}K=vqQ1;xEKEGsUn9TZ7I8t*@Gx1H*u_R{2%NSzlR#x5shD z$0G#X#|J7Uj+D@`#NXi{Q`5u`G67(eFV9od8l8uZs2Q~frvZganL-;ns-!JpMe9X& zRT1Y)IXt^8ySJz#b)ShleHDBacIgr)=0!_HVt&xHb!uY&Ie9J{FD@OotGwS=lvXo? zT!>k*OlLLn>jC}~*h~08Kk)0g$i$6ZrWv%AO~Z6Wq}5<@VM22bbr*D)HQfov?~d&{ zD+T4hv%;sKFHQ}uZ2>H_!261r0-4^2Cx)_%DTkq!>}gjVh^w9!QfF)z8DqeCiuPU} zbs&>$I`-aMHgJM%7FgfeBf%@mYSq_(%n4pP33SvTpbq=*B)uPyLv;tq4IM-W0MFc5 zjb4BYU?Rs1Ko}tP0~17+Sz3Tym;_VP92nnS&EHki>Gv$W7 zQgEG1TRy(0;#=Bfnmq4xEgjP`cqoxuimfk^KfP^n^B)kZkb#eGjRec+&#qEuTz&>nnv>qC#DD! zL*LcqMmImV!oq&oYLg=JEXG)8%1i2=Z-L&^=-A-)59?AlgC90Z3LyIIuc<%$V`K2m z9*?^=#=ikQW+%iu&M3_KTosUG&X+E7$+by;^4vGoVcICTq+~YCAQ_S3aKz;5VT3V3 zvK(^f3}81`48&l>K~;}7a+|8vkapYen4SwzOw=ses-=IAD0c5zQCHI%$-X7$Ytfa( z{qss5O%(-!0H3vD5T~C~QmK2PMfBHg<|)H8AMy{yE)zTST}qh78so6>G=A1_LB znc(=unKnX7s+h<@n=UDguM8HEj`?ed4o2!$h*oSW+Fa%_zg4fW0o)Z+%o3RFtuj@) z^n@jf?&abMyyJ@ZACWUx1-?Ab*Z#g@W6+$!?{kngMZ`{DgTvWpZhEKj$$LTPk=K1f ze96XN``wG=&nc9xO)=mEcU}(x0)F9Lj5xWZj2Br|d|TQigxKc9@b}eNS7D>R+8M^I zg2683y7P$6_wR6P-kACQa)xN>$IH5oAtd;7AmN5{79}kcymfZpj*|4Y7~4E(A@#4XDQ$nAoSs2M0U$pCim&fqu$4B+e<4Fn2REJ-$bEy$dlCi40}oWgA4EhfsJOvaqyL4ZpCH^; zK=g6m#ED&Vw72o7`=!t#S^f?XZ5}%OaHwrn+xzUr;NW7K_JQItX3sdAkyO!xNVd*hgzOe)puUq@KtTM=>gLgs^G>kiQ?TM)5w_Og zW@Txd=N4o_G7ZO4i^Q6PU8Sx8p@RfHNK@MOcnJzPAeX%6-J@W6r2ib?&J!%2TIv&? zFA{E7mIQBduaYgkQM0a!+B0zv-EE`nrWaZvoSyrSUtcmQbI-e*^?Od|(gmn!cGEU8 z2;P1^_P6&FljK8{N0u8<*eorjXD&K~x^RQw;W_tG0{Z`pA^|)=gS!t8Aq0Rh^Ts-c zvLnGk(ajL!rZk`*D?<9UCTJ<;lz2113B*t?Lm}jliFb2(TEeG_7?e{Gh)NI~w6X9N zS`fvv|3?u&wTVoj*~qH@0CJzg`%DZ<^9XoG!fKDIL%mdTKtHz}n{eE(7X+^>09m4Q zNA#R3x;QDlffBet`b7y1yfM_^CF9&afF;OUK?uOp0Pt}@21~h1%0D-R(|eR3Q|WoW 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 mVQ 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 Mvbo(-I{yy*AHhh21^@s6 literal 0 HcmV?d00001 diff --git a/dashboard-front/coreui/src/assets/img/avatars/1.jpg b/dashboard-front/coreui/src/assets/img/avatars/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b5f8091c54e5577fb38c18affb9e1c83590c8b6 GIT binary patch literal 13887 zcmbWecRZWl|34h114V6Wwy4^*YRg-#qNq`O6jdU%_e$F8P_rm%rizAIwYS)clG?-; zGge{-N&NEu{J!`1`?&AF?%(fqJs#Kf$|L8zlII!MIp_I2=W_aT32;kaM^6VpK>+|f zCSQQdWk8&E2J4$UumuY z03SgBs{cx3Lw^2i`0dJnr+)p7@_+n)vt8~26rZ|#2YCCtd;9Rq zNP5pHT{|Iu~4q&_icnx?>Nx=xX!bm~M zNO9Q>;3NNws}%pS|70WID6UXaUA=bw1~m;WIYI3$z!eHg$}3cqSFis2GZc~J?*UYd zSDEfeYg}VCak_rjmqq4HQr-=LN0l9{rXyHES!chu)HH1D9Gtg>?g`%)5tWmFsGz8% ztf{4~qx)D--^~1(g{76Xjmrzymu~JL5C4F`px}_uu&8(MKYWb-6qB6tB{ePmYewex z{DQ(C@S@_MRn;}Mb@dI6O`TocJ-vOu`v*qH#wRAHre{#gE9lj=^^MIf4DR6Y==kIm ze|G*aE^>MPZ&>8}|3>!z!9^|viYru9lvLOM#YJ%?_+Q|RR9EjvUt`iRx$fl4d{^ep z4VFhqd6ga10Wg*h5w^NMl^yO>TdjYvD!PzTQv}u)t3p3s!?$-06#9Do7-+e_ZG(8_I&3A zZ_c8O&eKtED8)R3YlrVgHY2nVzZcSY3*FrF&+>^Sz@?^30DFsPa9N1i$@9NsOQ%tJ ziyn)Nss`TP6%pFwOP-iylnpCbLbY=G_X`EXdX>qCOHQJPDRxbc>z9Cjh&qS|+cB1i zlP4i6@WLw<-AGh8I=IJRHpifEkqshl^f)TytH z&?NwP8&ZcjKBWXfY1ob~0UuR)9hnxdC4k|R1)~2L^t&bRS@~F1T1h9a4C@#Rmw^Jk z{q#xEvHenE3^;+P70HrULqZ>;y(MzotR0|rYAqe(gwp=^o`W4`6aOgwG|60qY8lu5 zm_S%SzLNTZSPLMkdWo$p4^$6P&su?Z-S=MdG-y|se_U&Jq9tA>nOgk0-ePZt`}gUM zhl%t2LLEZ9nZT|+A?@)gowf}k)WPk<|3Z#5!bg7z@R0g&Teyes!)f%%?e`7#mbz)~ zv*y_Ozn1`8P%ww*Z<8p1oro&{T~zem$Wtia_7dQj6z?I)(7#KBL?VEB=A!g|p(I}V z$fiUrGHhz_oLquNkzow9r+yTQ%l>1yU7e-oJAX=$O2ZGj_Kr4y8*va8Tf?h<*EIfC zwqF9=1UKpr3aG45r5YT)emV?rZ8)wEkIYu;c|GxB_7G3*>-f~un{x7CGQ5^hd<^wBXtqzO&wtlGP`~e1 z@bEY?eS3EDH%StrP9hfv6GWMyHK8s*aL19VaqPY4s8{hqpKUgk)qb{__I3`aYJy$a zSj2C|@kuyXG<>NULh6|p@7p?5L6h4SU{L?RS%up7b&dMLhhC^lfW??*=dm%{jXO*O zb%Te=f(bJl2?E3kCEDikw?oK95@U;q3g-9%QPDn7=qcg7eSVf*JT6)5YFh$+mir(y zRU(aYSp9Thqv4|6ZQC}SWA~o(PyM-(*}Y4E48dkNi6e&g)7{+2?$#zP@gFxC=I08o z82DxzH?8j-)ogjS+@ZD9w? zF!J#WfFq48+TIPzVfs9w<%o5^pxfd2Fe1~!`D)68S*H+vR?4+I)Jk&{OTir+JWVyZ zW!a)K-*-~fEAfUGCWLT2R)t7?cHq~fHZPaOrvE9E2zF)*vltPO}2GXejwO1ekbkejPY1j#UatN_-^>a|Ux zN1itU?S1?^lW%YURv#SCBP+IT&bTM*qCe*XjxGvcb5QX z*gNk)aA*Mr#-$nv3Ut9Hc37s1WvqQ1uq^{WweLtV`gNhjAf98t_CfGZa#8s!ZA(Mz zdyB`XP>b>1&gC4Czro|O#p9{-%^AYokc*Yz=r*B{sUC;~j<+mug^wAZZ78Dg8nmA5(E>}Qf_sG8K<@9+A} zTD>})`tvmzV<~n4-}#y}Rk`ds*;Jlq{)e+*SL{E})3#boePVUQFfvO{cuv;M; zCMJcO^@-k8F!3Re%6|kT+Lyfg(QW=wNPWynz^2ZzP;oz>cTDcsBd z`jI0wQ}c#rH*qt+?WsGLo^vy2KMy-PI;d0{ro6dt^W9N))2Br(!`a0{F6&Hou0`mA zJ_KPGlx1EStIrHM&>c4@sG`r9>F=QJ^`QrERL%vaFHaP!2e189&yvETc|M(%lxuJJ zFE|rl%f~+wEAf0_GvDvk71-6khQ4U@O*S6>2mKnpW65&7a zM^(LVG&WsgclMlU{7GFPgwFvhG*?%@qT(LW=a;PoD;M(%!7m8PIZcW|>!q%-r!j0+LrgUqJlDcj9}oK@ zxohr-R&BtFx5s_*49yCw2#!G!^HY1Z8D4^}9k;fqx`nBD3zQmdfw z-ol_JM^7)K$^14kA`VuGM0-NDvD(Rx`%e9k+$Q^(#&YpV{DO2ld7t{10u@)XF9E$==YWqr!%RP(rhH}{(E zC7>K3*z+yrxVM>Ntg4$&vJW9{nz>jgQ-ks1!pcbA1^2 zyyVr(;li=01K#m766swVjWe&HUz|FF(RJGiz4;^3*kBWh+~7k4U+=fE;D7FQdP+Qx z8`!!dWHIbRef6#1tdXu+hoZpezSB~eTz;k#tCbp*l?V|&w1B2q^y3n;Y*fyH+gSAq za?5oljfbW0RA1N-fH*sa!;U4#+a4#m0Q|?o>{xr_Cllosm-DG1v-TgOQVLyTXPVDy+w$c< z{47TDj3Mfcyhp-*VOC&;-+ii5zJCu%k?zwBmt&;(oRgj@!NY`%ldXle=clK@FH(33 z=q|_~4dtFD4Xg8w(|vpo;dO*Zt9tr-hUjlA=S359saYbL#k*ty(6vT}*SFkyyUhbD zMYDqvH!cB`hev8VbT>x3nnp(ky^Zm}B*M5IM$;PiN1pqrtKZbasjR%;k3XJfL5Uw4fQH9;4PbKWfbr09%Ah&iT+2qgxk>ShnG)j5Kb9tLezvuDh%bUI6 zW>T$Og@t*Y+HJm@{DBStblhu%#x98!g{|`Yi?%A0*Ga-6(n@Dv^E_N-6`riM($CV% zP_+pc_&gPG-;|T(O7N-(?U1WO;$2YY-?HH116a2`op6HI!P5^f`6Okgc@SO4<@(I} z-oLlYzifev@y{+G5e%b&j`SE_(Fdrlu+$9cemT7=y(j@HDvGxneZom8<1Z{RbF|s! z`Jb#n;OqEMSTz1)vT50ew7bfBfqM`Z{L4*HQ|&i!Y+;(3j$*|#VdFZ%N7@#-6VoyU z4QDIdMK2Qh0ostg0ytM$;)Vjfep)zei}r#g!qPE;uj*qv^i!LQTHhxK_ZG4^zp1sS zY^}x7wW&V4SoCH5vTF(m#qoeD0h|C+5cRYjtPGs^fl|*G=0E(*@Z>p!^}Dpk9~WZh z!;QAwVsznqb{hxADlH%nY4LRoxQ95)X=mTS%W?6W+t@ zca}7^RdBmQ2OT!vQ@MI5%n^Tmbj2nvGMnv_Emqwbn{DRNCi01vTEe-3TD(+RezjXg z+&w${>fo)gy*{csHJV+s?~5)`^f~(dxA|E1evF$A|LqqvsZvU{Th7&+ji3Mcn`M`W z>Yw1kk9NQOc<&u#CZ@rUs4oFj8(5)_QL3EZ4FxGLY#rWv#VW6xP|vRAq2tiL9IN#| z#BjVyJxJDsR7FIPGT+Do_fqlFLBm954ZPwvaSQ7jmnG5nWh8BSl?BaBIX<;6|KOOr z!sR%`nLn@b`1%KNJF3oG1@tBFxh)~g3>N1CA6cWLY^q00`@|ZO3!$-mA+W>IR`w5> zc7F~@m8@cH7Qep^?_5RRWZ;MC`{X}MQO4OD@pUuWc5pI1mftTRZz{a5!eiG3gy6$3|QFoi^Bqljce~dguDqEqBA0!yRuC zRB*1@f3GpQj}6{(IusCh{j!IlH|JhyEBR0|NS6RN3D)h!LD&>a=^mf)^|N-vp5rF6 zrKw4i@@_E`tIqc8(P>JW2TAqeRZEFqe5g0hz2d%OTL!^=zwt4C@OYoe)A|*t9|HS` zA*K!@NK7GUVB1zm2Jykm(8Ocf#Jhg#_6pV+0@+;sJ{;aoS9tqlU4tjvlz^`F|7 zL5RB1h4=lCYp20Luczm}M@qw21H61ee=UW*;XK2N`$Q1)8SHZ62#A-szMH;;yb0+) zZKJ?`j4lnVxJA&O5D#eBt+Cheo;>J?v$QlKJq@&)6uN0)`sM&I*YlJV>Bz(V?AiOg z@OdQ%32X1E)>4@NzE5bR9p8n;9Z6diaPutO%^QCmXR@LeZq_JkbYLXuwe~WeRl)9# zj88k1x!TE`$>;Ir)u2&0$Bwp5O7LC~g6w$g;3ckjSa>=GMBt2*s>-*SdaADhNVFGl;^H2PWF&)U`eeS7s+J$&CUAM;$|K2}z zH4lx9CT;F->zHn)pV9oNU1q8E#sUjqGq#U#r_m9z%RI8nB>0aI=XD^R&0tx`CBV8` z`3o;6Q+Mg0(@US~1x0aair(Kn{yaBuo>R&+Z7Aj@ zI=~?sg`|2OW+`-Yk;1_u&63`*=|`Bn-%V8JslU=;8=>x^3{Snh&q12yqYaD}8dtvq zasXm6`ekzLgPwsx1dlEsy);3QRPN_Y3`Oe|xA5VNY?~vgB4=t+TfyfXPS`oK_r({O zkunDPibXgEQbbV2rw6WhJ`@`)3E36$DSfUNF>z=70pR#IQh2iMVY$#q$${^Pc$Q~px=kZfER^T*aAWgE4R_y17Ki*`TV^rB0@$DCR#M!?;J>IKnDKzMzHEul`n z2Y!6tF&sfIygZ`&H5wfwmG>MR*DEUwT)Ow(1r108&YeR0UNN7Iy*T5$oFoN6?%RWP zUe@7UbIZK1r4-Hecz)}57ZX&Li~`t4bv+$f&I-py+J)(icSlzSswo~uhhUu)5G3$Qo)4V) z6fSUHh28iV;rj1t#kd*E@UdK8LcgzTgv&t8+LYQ$@bRN72Fk^PZ;h`q9(*!emoU1tpuCfv$4nqp(E zwon0g!NpDS^)Z|I8LB97oJO)v935SZoIkseu#NyhKc1_X;DVpv63Qe?N-&eK=_%eT zhFmM&@5Md63Guf#EEAu|xSt+6*m~x=@5FgB3)DEJPRd~w)9I29F6`RAuTSahl|{XJPA23C>XH)Z2CLe;q9k}datqGml$%Z$hExwLWii%~m!szvQbgTsPU9atbf%^H|R4j*H z`%d!%x40_+4oNjJ=sp;lbr6 zK-Iu31MjMPX+^wxf($+vRRZr=wfp%3md%R$RT>1R8ae&u$t2zcA@QzHYx?nO7y8~cb)2`=BWnKY5>Q5OyWHYk zM*6#WV_!)6jLEK-M|Z(YpyWHu_)GtrS?^lcuWfcenryevb27N?4(HS^@-N=vg&u!_Cv?cTFs&ztONrUW2qYXOckO!v?I98^-R~*YTQ+CAs2|_#mdz-#$Rt4*gpA5Nv$_3WWMV@`yme~2vze7#YBP! zazM}4Vr_VHL`~ufmcOgOSTwxv6=-G5HiW*Y8||xj8kR7T6_LCiEBRD^ZcqorKs^l( z`XoMisOQi09)!Lp@}lpQNW7RTsAg4$90l4VD*B2$#Hm;^-<7fBq3ud%Z9H2-guyI> zPj$>|pRihP7(lsxLvgLU{cTODx2J{0D?p~B-*UvateqbK<%>5KM1=PaXz)z zNPjQnj~$4ZY5si?pOa2tKHHA=`89YjgWR1g5kz#B@1F^5!|(#^ape(Q7uEzW#8|dq zoA9`NA|;0HK#$Zmdfv0Q5q)!MxpY}9<;_}xY)^2wwaM_7zU@Qwfv@N6L?;kyoLQmI z>gN&rb7~!SrU#o_krs{f(TWyqS3RKM-dIeuIX_%J7IZmyxD$7ny%d*81tqHxwr%1b ziKY17<+w8Wq4lzGsIMYWqWhGcsW}zBS6!3E>T^XD@BqMzP)Js(r~-|QlPaXf^Omglj-c^~YbWAgTX6O{ zpXoJ%ME%bA_Kb|-fRnrfBZ(Kh-Ax|`~$#aq2S)X8cqs#M%*N9!^EvG5=3{)Ir$%No_J6<|Vz z+@MO)j?=&+=3Qp~0ULo|y8eqdsGXrRNY?B%80}*)Ki~9QGgSk;fn2V6^t+A9aYhYh}@hm|ZH}mkyC;^3O@>rD5%_-BO zv776?vMatA*e;YVa8bL~TMFtIO;UE?l}QOGbeqlF3Oinl3wmi__bXYg`!!8P9TaIZ z*-|XDCmVJvEA?lv`b~V_iq)>^fwkS$Xf`Sz$WvQ2wbt#3x@-^UJk<6%DXG7kUhaXR zZX~o~dk>hDNaifll@oUvy_e)_n`%c149irL0x>=(y_k(|cK?OBAwjiJwqNgsvmeh; z3R>>Y@q93^;#}wMAFkC?KY2PLMaUoy{w9HN*I9QJ({e4T#vdFd?*=P`K1A$JxV4p@ zGEB4EWpy}mljuAqodhBUR(g{ZLDMQdEcF%-PbusCs+)fC_;sn3ym~Pw_Nd7Q&ev

SZdMO^*g{Y(GgM>mtvN`A7g)|A6a_jDOXa5 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

sNq#sE;JYkmiUO$ZL|Pt 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 literal 0 HcmV?d00001 diff --git a/dashboard-front/coreui/src/assets/img/avatars/6.jpg b/dashboard-front/coreui/src/assets/img/avatars/6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57bbf9685c083c2b3c912342b52ce12dd5acab97 GIT binary patch literal 11918 zcmbVycT^PJ)8>#QgGkOI2r5Z(W&|ZmmYh^jlH{Cb6vfLGfxcNjt9pUar(r*VSWf1lkfQAI{5%7@!j|PBGgGWGvhwTM$;@*M? z?_c@18?M2_Cm1h`sd;B_(5EWMXD{$jkTW@e^?gNhxU=+2=1*RMpfqG!0)F z8Jn1zncLdEdvEXH=;YgYie5hx9=H0^9u@#ic3n%>gpRH zjZMuht=&DneX#z4!J)~i>6zKNKl2Og8}QAo?VZ27d&ra1v-68f)YbJrxNzU|f5O7G z{}b8&feZH$@bC!<2?&Y*!G(wK_YZIyLLx4aJNK0IiQjn8J`nvxLZ_URSKCF(EoOkA zf9p9x#=s-K{t)>Ow11KP-vJB#|3da(!2TQ8BH%eLF#k8f|M%*j7XN<<0RbVwKZ1`N zNSywU;Qu>%IG}`tSe%ppc)<0-jVsRT|5>ohxUjs7T>wxJ;NgOafCc~rUr`IZr|6ZFq|l1i8QZ7u%8CrPU0auknviwxozJ4YWIl$#spvtn!z z%i|lm7&0v^fS48Sj_Th4(xO-|)R2l0gzeh2Uu>}hhJUI7B@T_@5NcF@nV#{c9{h%;L?iio)g%7LWqW;$*>0*wBHv_gW*WH&!`N zZG9{e`B6u1!Acvf%dQuPhJ1GQ<6?vNIiHlgmnHzbCYzYl0`H&l?TdmbD>sudo$yh6 z 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 Knm1urGye+{BBaLv literal 0 HcmV?d00001 diff --git a/dashboard-front/coreui/src/assets/img/avatars/9.jpg b/dashboard-front/coreui/src/assets/img/avatars/9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f690e78cc762abc07415b0a1797d28e88130f1ee GIT binary patch literal 12451 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 literal 0 HcmV?d00001 diff --git a/dashboard-front/coreui/src/assets/img/brand/Adyen_Corporate_Logo.svg.png b/dashboard-front/coreui/src/assets/img/brand/Adyen_Corporate_Logo.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..51a016b7017188679debabbc83c4b66c417b8779 GIT binary patch literal 6417 zcmbVReLPg@+duPS#>l%+M5QPh!i*7;UZ{}ThS7;trx%1!GPRP7vF-Mz`X!_HTBSBl zI$nk*VP<7}QE8P?B5OTLY$_$CRnK*gwV&trc|N~Cp6BzK&zbwauJ84|zSni%_c>?S z^UcyldO8+57>4QjFZLB;7?Z*<+V|QFuo!XeJK&2MJuhe;h7}(i^Vb?Jm`_@_SQvz1 z+wCw+@;!zPfl1PhVPame}A^C*UyZ#sEx`D_fM4}Y^H#18--r6RY|V3%T?cU9;n z7r7U&bSW3{N>>VsmU~QDgoAddpk+!|tPxj*l2)ZCi6q5=^n zkzijjx3ZA`^b!0gSLy!>kq2wQ!J||ogJ8FRLyEx5muq5?9Zf+wTv05PgVKpclWM?# z8D-D}YA~fCe1!iyRudH>K;fF$5}|v!5CJr70OLb*%7wGaR`3yo`FMt79{w6{4_$UxKM*$^BiIXBiP!DEG3}qp+DsWT+h4ac+2;?h3R=(hwK95NRu04vCOF0F(xg~c3Bv#1=OyAg?#<`^#JR(4;+BuWZ}|a%reqq{5W&du_nfb z2KsusIvj1b7L!4zeHs2d^y%Z^!25UoZ(jGk>g{>i{i5r?I{)~+{aIUU%ag~=O^+Tn z{?>5+-rYO5Z{7U$M(r=En(C_S*A!PP%F9Yiiqm!{MTy*I;ahfwUzuRPbj616;@8e# zDfjvxDk$Oy9X|NiHo;b#%k`7rj#(XDn72Uk=c+xIehmBhxuflcsab)+E7eZ_I-h8E z?&zemR#WUwKR9)A*NNrRj=9w3#>jGxOw8uWy$^VOvm|5x2fvwfH+?_-%(6`B59vEn zx2K4cH}7*#*y!337wfR-;=G9U^VbmM({DpV0)&efTKoFU@$}$1|Fq61zjAhokC+FI zpsfvD}3BSKlXDrhe6jd@qJHV*jR0U-+3Y5wY+NkoE|c8O!;=^^xUNS z_{FZAsfJqgpQk(cG4pLh6=NUG(4ucp?3-Rb=@C|JdA7smmfu{R4fA|sMK=m2>EPE5 zH#fJ0g*(JI<>jfjJ}G~i_iE?rD|&r1hktU3et!34N6P7j7Y4K1dGAi9Oyh02KmNt^ zmg67!O-EkHb_-j_OZU!nUTM}CBk|jvO5}=HDUCxBWuw-)&TdNn!f`ByI>F=(nYMX9gpYJ3_kT^a)&88S66CK@i#3`bz7rp8T(J_{*q%+W;X zAlM32ZyY z#?~ZZ=ZRA%J*W%k;{?H$t5ajIsZTd{H$I$E$KU+RRm-BpoIJ*N*N*;}*17-0g|^we zHw=ftq@I*|_nMrXt%YIBPPomw6dk#>^J%r)7UG_NbI5Z+^@rBv%ib4%%ddI0OEl+W zxx)VA!`Z&-b45Mx22$R=lV^wv{%|l`;(so*$%HMkt&F27uUS!;gR*|mYu%SNGyIH* zx4m(`m}pv&+?Cf_wjoFU-Qw9dc4}e0l@cvHW3R#Z+(0q+FEIS#$-?q? zvRzN@m2@(sd}EBm7NTj}%l;i{L`r-7+NA-C*e#1zK911A)H;Cp{gk}qvNv_Tru+VU zgosPgsXCsz^P?5`XMo=~tm^s$Yy6o(_&G!F>qYrJorCh);9@V3IR<1FFC=-|vYD&S zfVXDjf`IGSD)+IuO3#RP^8~)OY_R?5c|-2R_SroC3dM=wG9FFYLdPXJo8(Ves{Z`J z>CF1i9cz}ARBk(TP@jCwFe7YN`HjgWQfk~*PsVr7&HiRpd~fd*W}zA6+T-+Xv=P^5 zM)+jhU-#Xama>*b9CaEr;dXML#XjPbLzq3Yez4_q*^0rz_h6>?RM*a|wvV{g}C+ORG zhm=QWJeAQI^ z%OVR^nA&ynmGaz3I(d@@=HyV5Y@&(3Tw9iIGns1K^tu5Aad3(0g~}z;frgom-h}vZ zwq%97c_fpp0!eH3`a~LYeNYFt(24xcUqfihApt=P{W&&XDql7Q&yQw(D7ZF@N5r$Z zN*z&?XEyQaqN%him&I~$OuR>zh%Es<_4Smp3^(BvyejkbK2wJVL%abqBX$+0-kpm3 zrH++$4YHZN5-|57m0KTx_?20NRuyaL!;*}Fb${{-- zzNO!FoLTR4(UALf$0SPjaY=@l4d%zID2_TRi>Ml>P1cTQ6dFUXL}#9lWAx6?BC_c0IMa%9}NAYR(lJ60;^KFEsnT(3(`q=T-@>+ag&Jdl;yTJqC<*h-v)%R$ttM(xl; zyy64v^~qc$bK3(uJU5o}x$1-mwTgyf<|u^^yLIooV)#0=cJ5=TNBr4JE;~w}JcHVlFbN_S zOIChpn1EkF`igv@Mm{kN>~L}db#NaBS4rn857X7N(KnrIPdI{{5mOwjBYcF)ArFFP zM$lwqsb7HwhW@l(@hH9u_9d*h(js{L8iNCWMp}}oSRe<_*R$%J8S!ud4>#w(q0*Oo zUFRB8Hbrl8Q@t!$y?RO^J+$J7+`H)=)i!b>;>nxC9_%7DJ2cI!sAP=#3Kr;t4^*vO zV@M9^TZ^=1_34dVyoSX!Ar#j|cB-U%EI4P1X{2<(QdvTiIUL<+%xx~JSxBwT%#sdF zQM%G)am@`=@q|TL^QqRveH*3naTF=(dRD>-ZERgLh4yD zCp1`D!cf27DD6_mF$>eovk5B(*Nc!BlyKCQ7OJEvOQd2G;t8#OK+Xv*51^_Ojmbf* z-Vk3c=g7Rmr{JY<8s-q=>AhE%Q$rh=z2mb9M>=-_aZjM5W=rz5$gY2SYB;(E*=Q}s zQ0FD$X`^ix{L^OEXq(fRsLc{vE%NO@6yBrwJ~%@oYgRkz^u!SUCDWn2^Y_;m8d5!q zSATbarmpGJMnU-;QtCc!N#E1S#~h;>>Y4-#jg>*3Ol)m&d+EpsWmqwRlYEpp@ZMnl z@U?M-+XIc302h4MmYD{MNM-EVgRq-12RSj^ari+vi)0OHHb=fO`FSv(sFyU&O&{UN zFikCg#0VWy4$VX|1IFXiwqA@vfCjX$LJO3hjrSO#VXC1-jo%2ra>JX*Hz#dTH95vq z|HNf&GFoBAGtIW2t4vCGz6}6Yq`79_>r&sUbPVv9?A~P%@RKD6Pmr-mZRHRT$h)7h zNEd4=59^JAdLDR3S(67lC8iwwGdhdzYEL})jyK^)SFc7~6{=bID|V`KFN^%DNfy>g zRQ1ptY^Wl5rs#zGr#>Z4b?f5GGu$Sk+rYe~wT-&!=>}jBTcI0>tcB%Z<*s6qyPGgr z_~9o4+*D#}g{Nyl_{xj39}@XpvLq<|AUcqLIz?NM;h4jG>I)0*rX>f1GILJXj-xEP zQ$Xydf!)VgaWe@&j@k}Q+n#eXo2sXwxdqI>5kHQyAo*7Qz*d9kn;7@`xLjgtkGsPS zW7nk~qo>3Gom{Lsu7hsXVUSC1P1$G_>VtG&x9G>LI2Xcij9MSa468aeW{QoeJgqoK zsH6YY#>5Gvj&iRVDTbcxuIY-(9)>;u%QC3M(|Lp?Ub=77va`<3hrWewDEf&%s8&y z8bK#hVQ>euZA_`xILG3S;FLBGESE%Tlm0mzap(TQFK?n`fk7is zE4T$XWRGBWfeAiB<(<((8md2fZj(Ti=IG~uijmVjZq(NTO9%}9GzZvdBX?`9QL3bo z!Qa=MSn3Zn6kp4b!xQi(gN(>GAY<%QJv#VarRN%BvV*2}QnS^mcB&bBX)F)k3n}D*PCctXG|8z>{J%$%PI(YCZ7B=^tHzd!cn5p`6B>8OeBQ2XqdvKvx?&ZL& z|N6^R+_sq}v!HfV#KL<|_!x_opSf8?U3#Jsx4qJqxJ0YJvh$%0zBB2-JZi`0V8G0Y zqXp{W)lr+P!BY2PK^ok0ckBp_%OpOXb{|WZnNio<72Uz9#HYN^&pu7KRM`XXa((X# zUS){VucsZ+!o!sP)wQOD330ziCpeTz#XWVY18I80*Ag#umG*kDY)fY%;t>b<1t zksZEZiBtq#jz(R!jF*Zp`%`^#jyeuCEmNR64$Yo$f(T;6s=TV;sGYJ2g)p0F!|?6O z*eDZHOQ7n32agB9xy{h|MH{8!LVv2I4)K}VsR~Lt>HvsoLVVeFs=Z=9M{NU-I}8XN z1svH^NFWxdwvPur@>)Cm#~^9ff#b~H2xTKf)*ER|+6q*juti#hUSSPMg@9(CWMN8K_m)JD~;3P65_kkYLDdjv9x~LYEI@ zs(4`o%Kfc$rCt3|3^+R{Q*9BX-xbV0vhmFNu0&LVBBl*N1W-~_M64nAg=`xgQJYli zNxNEWBjB3k4$dGe43AYN6-NhxrQqutK+Xw^H{|BZD|DzbNmuLeXW(gVJ;zcdjmh0w z#+GeKf2s!|1?ic|d*)H!syi%F36F}H^{v);(eG7b(D^Ld)YtVvnN-x~{o*mBUIBlF zdaf*(7WY>jdfyrP@?MzbLG`pxwz4#H2R^UR(~0`z_7VX(U5o2Tc;uFDPBM=pnkrsR z%N4C;6n?4ue1E~B%NgRHyMxQB)#Irn5^)c=(&I|j(Amdk_{F}CO`C=vSeGk@{(LH1 z7rxcHL`!|?O5NZ=#f5D~#3ih^G)f(m`gO&-8TtIS{0r)LHxF8RExcQM`poe~5m#R* z49pw6PWHEX?QD?_e2qRI@44xrrH_eg&oxPN#l@IU>uBnojzMu=d5e#yZqM}dW#aIG z-|X=DA49m?qA9ZeKZlq8ystYP_I9(i!eA^r9YWc0o@8z>ixypB#YA~-K!@6Xnz z&i|D;Ft&3l^4{hnulL8jhrnF6dkwH2D(Z^rL$vS0Tmx;C#{GI7mHQ6^<@+sm{vdL@ zbRI%Ib0Q7_>fCR?Rg}D9m!_Rkta{Z%3y(y5$sBT*%Zyu2S zcE85i2fmko(%mUL4S?3+*qHDi7BO+-0{rC7?%i16+$w`+7k3+_=Wwqg)}^M)Z+&@A zrtkZl^a(yGH>Z7lD$Ou5`q!;525Gf-#6>g?+3 z==EM3^K^Fgba8fYcJ_33R!)%Z{kMSl#Pu;zDgQa3c%G900x*BSrM^Y;3F&_W DN#K@X literal 0 HcmV?d00001 diff --git a/dashboard-front/coreui/src/assets/img/brand/coreui-angular.svg b/dashboard-front/coreui/src/assets/img/brand/coreui-angular.svg new file mode 100644 index 00000000..87dce30c --- /dev/null +++ b/dashboard-front/coreui/src/assets/img/brand/coreui-angular.svg @@ -0,0 +1,39 @@ + + + + + coreui angular + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-front/coreui/src/assets/img/brand/coreui-base-white.svg b/dashboard-front/coreui/src/assets/img/brand/coreui-base-white.svg new file mode 100644 index 00000000..047dbdf5 --- /dev/null +++ b/dashboard-front/coreui/src/assets/img/brand/coreui-base-white.svg @@ -0,0 +1,24 @@ + + + + + Base_negative + + + + + + + + + + + + + + + diff --git a/dashboard-front/coreui/src/assets/img/brand/coreui-base.svg b/dashboard-front/coreui/src/assets/img/brand/coreui-base.svg new file mode 100644 index 00000000..b452672b --- /dev/null +++ b/dashboard-front/coreui/src/assets/img/brand/coreui-base.svg @@ -0,0 +1,24 @@ + + + + + Base + + + + + + + + + + + + + + + diff --git a/dashboard-front/coreui/src/assets/img/brand/coreui-signet-white.svg b/dashboard-front/coreui/src/assets/img/brand/coreui-signet-white.svg new file mode 100644 index 00000000..ee9700dc --- /dev/null +++ b/dashboard-front/coreui/src/assets/img/brand/coreui-signet-white.svg @@ -0,0 +1,16 @@ + + + + + signet_white + + + + + + + diff --git a/dashboard-front/coreui/src/assets/img/brand/coreui-signet.svg b/dashboard-front/coreui/src/assets/img/brand/coreui-signet.svg new file mode 100644 index 00000000..278b33c3 --- /dev/null +++ b/dashboard-front/coreui/src/assets/img/brand/coreui-signet.svg @@ -0,0 +1,16 @@ + + + + + signet + + + + + + + diff --git a/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.html b/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.html new file mode 100644 index 00000000..718c8df8 --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.html @@ -0,0 +1,17 @@ + + + + + +

+ An Angular {{name}} component{{plural ? 's' : ''}} {{plural ? 'have' : 'has'}} been created as a native Angular + version + of Bootstrap {{name}}. {{name}} {{plural ? 'are' : 'is'}} delivered with some new features, + variants, and unique design that matches CoreUI Design System requirements. +

+ + + +
+ For more information please visit our official
documentation of CoreUI Components Library for Angular. + diff --git a/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.scss b/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.spec.ts b/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.spec.ts new file mode 100644 index 00000000..5343c733 --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.spec.ts @@ -0,0 +1,27 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocsCalloutComponent } from './docs-callout.component'; +import { CalloutModule } from '@coreui/angular'; + +describe('DocsCalloutComponent', () => { + let component: DocsCalloutComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocsCalloutComponent ], + imports: [CalloutModule] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocsCalloutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.ts b/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.ts new file mode 100644 index 00000000..df19427a --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-callout/docs-callout.component.ts @@ -0,0 +1,34 @@ +import { Component, Input } from '@angular/core'; +import packageJson from '../../../package.json'; + +@Component({ + selector: 'app-docs-callout', + templateUrl: './docs-callout.component.html', + styleUrls: ['./docs-callout.component.scss'] +}) +export class DocsCalloutComponent { + + @Input() name: string = ''; + + constructor() { } + + private _href: string = 'https://coreui.io/angular/docs/'; + + get href(): string { + return this._href; + } + + @Input() + set href(value: string) { + const version = packageJson?.config?.coreui_library_short_version; + const docsUrl = packageJson?.config?.coreui_library_docs_url ?? 'https://coreui.io/angular/'; + // const path: string = version ? `${version}/${value}` : `${value}`; + const path: string = value; + this._href = `${docsUrl}${path}`; + } + + get plural() { + return this.name?.slice(-1) === 's'; + } + +} diff --git a/dashboard-front/coreui/src/components/docs-components.module.ts b/dashboard-front/coreui/src/components/docs-components.module.ts new file mode 100644 index 00000000..292ee3d5 --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-components.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; + +import { CalloutModule, NavModule, TabsModule, UtilitiesModule } from '@coreui/angular'; +import { IconModule } from '@coreui/icons-angular'; +import { DocsExampleComponent } from './docs-example/docs-example.component'; +import { DocsLinkComponent } from './docs-link/docs-link.component'; +import { DocsCalloutComponent } from './docs-callout/docs-callout.component'; + +@NgModule({ + declarations: [ + DocsExampleComponent, + DocsLinkComponent, + DocsCalloutComponent + ], + exports: [ + DocsExampleComponent, + DocsLinkComponent, + DocsCalloutComponent + ], + imports: [ + CommonModule, + NavModule, + IconModule, + RouterModule, + TabsModule, + UtilitiesModule, + CalloutModule + ] +}) +export class DocsComponentsModule { +} diff --git a/dashboard-front/coreui/src/components/docs-example/docs-example.component.html b/dashboard-front/coreui/src/components/docs-example/docs-example.component.html new file mode 100644 index 00000000..ca2180d5 --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-example/docs-example.component.html @@ -0,0 +1,21 @@ +
+ + + + + Preview + + + + + + Code + + + +
+
+ +
+
+
diff --git a/dashboard-front/coreui/src/components/docs-example/docs-example.component.scss b/dashboard-front/coreui/src/components/docs-example/docs-example.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/components/docs-example/docs-example.component.spec.ts b/dashboard-front/coreui/src/components/docs-example/docs-example.component.spec.ts new file mode 100644 index 00000000..45996fc8 --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-example/docs-example.component.spec.ts @@ -0,0 +1,25 @@ +// import { ComponentFixture, TestBed } from '@angular/core/testing'; +// +// import { DocsExampleComponent } from './docs-example.component'; +// +// describe('DocsExampleComponent', () => { +// let component: DocsExampleComponent; +// let fixture: ComponentFixture; +// +// beforeEach(async () => { +// await TestBed.configureTestingModule({ +// declarations: [ DocsExampleComponent ] +// }) +// .compileComponents(); +// }); +// +// beforeEach(() => { +// fixture = TestBed.createComponent(DocsExampleComponent); +// component = fixture.componentInstance; +// fixture.detectChanges(); +// }); +// +// it('should create', () => { +// expect(component).toBeTruthy(); +// }); +// }); diff --git a/dashboard-front/coreui/src/components/docs-example/docs-example.component.ts b/dashboard-front/coreui/src/components/docs-example/docs-example.component.ts new file mode 100644 index 00000000..baf7bc98 --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-example/docs-example.component.ts @@ -0,0 +1,48 @@ +import { + AfterContentInit, + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Input +} from '@angular/core'; + +import packageJson from '../../../package.json'; + +@Component({ + selector: 'app-docs-example', + templateUrl: './docs-example.component.html', + styleUrls: ['./docs-example.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DocsExampleComponent implements AfterContentInit, AfterViewInit { + + constructor( + private changeDetectorRef: ChangeDetectorRef + ) {} + + @Input() fragment?: string; + + private _href = 'https://coreui.io/angular/docs/'; + + get href(): string { + return this._href; + } + + @Input() + set href(value: string) { + const version = packageJson?.config?.coreui_library_short_version; + const docsUrl = packageJson?.config?.coreui_library_docs_url ?? 'https://coreui.io/angular/'; + // const path: string = version ? `${version}/#/${value}` : '#'; + // const path: string = version ? `${version}/${value}` : ''; + this._href = `${docsUrl}${value}`; + } + + ngAfterContentInit(): void { + this.changeDetectorRef.detectChanges(); + } + + ngAfterViewInit(): void { + this.changeDetectorRef.markForCheck(); + } +} diff --git a/dashboard-front/coreui/src/components/docs-link/docs-link.component.html b/dashboard-front/coreui/src/components/docs-link/docs-link.component.html new file mode 100644 index 00000000..46b295d2 --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-link/docs-link.component.html @@ -0,0 +1,9 @@ + diff --git a/dashboard-front/coreui/src/components/docs-link/docs-link.component.scss b/dashboard-front/coreui/src/components/docs-link/docs-link.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/dashboard-front/coreui/src/components/docs-link/docs-link.component.spec.ts b/dashboard-front/coreui/src/components/docs-link/docs-link.component.spec.ts new file mode 100644 index 00000000..f8f3c3dc --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-link/docs-link.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocsLinkComponent } from './docs-link.component'; + +describe('DocsLinkComponent', () => { + let component: DocsLinkComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocsLinkComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocsLinkComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard-front/coreui/src/components/docs-link/docs-link.component.ts b/dashboard-front/coreui/src/components/docs-link/docs-link.component.ts new file mode 100644 index 00000000..540706ea --- /dev/null +++ b/dashboard-front/coreui/src/components/docs-link/docs-link.component.ts @@ -0,0 +1,27 @@ +import { Component, HostBinding, Input, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-docs-link', + templateUrl: './docs-link.component.html', + styleUrls: ['./docs-link.component.scss'] +}) +export class DocsLinkComponent implements OnInit { + + @Input() href?: string = 'https://coreui.io/angular/docs/'; + @Input() name?: string; + @Input() text?: string; + + constructor() { } + + @HostBinding('class') + get hostClasses(): any { + return { + 'float-end': true + }; + } + + ngOnInit(): void { + this.href = this.name ? `https://coreui.io/angular/docs/components/${this.name}` : this.href; + } + +} diff --git a/dashboard-front/coreui/src/components/index.ts b/dashboard-front/coreui/src/components/index.ts new file mode 100644 index 00000000..7e1a213e --- /dev/null +++ b/dashboard-front/coreui/src/components/index.ts @@ -0,0 +1 @@ +export * from './public-api'; diff --git a/dashboard-front/coreui/src/components/public-api.ts b/dashboard-front/coreui/src/components/public-api.ts new file mode 100644 index 00000000..09f35d26 --- /dev/null +++ b/dashboard-front/coreui/src/components/public-api.ts @@ -0,0 +1,4 @@ +export { DocsCalloutComponent } from './docs-callout/docs-callout.component' +export { DocsExampleComponent } from './docs-example/docs-example.component' +export { DocsLinkComponent } from './docs-link/docs-link.component' +export * from './docs-components.module'; diff --git a/dashboard-front/coreui/src/declarations.d.ts b/dashboard-front/coreui/src/declarations.d.ts new file mode 100644 index 00000000..336effa4 --- /dev/null +++ b/dashboard-front/coreui/src/declarations.d.ts @@ -0,0 +1,9 @@ +declare module '@coreui/utils/src'; + +declare module '@coreui/chartjs/dist/js/coreui-chartjs.js'; + +declare module '*.json' { + const value: any; + export default value; +} + diff --git a/dashboard-front/coreui/src/environments/environment.prod.ts b/dashboard-front/coreui/src/environments/environment.prod.ts new file mode 100644 index 00000000..3612073b --- /dev/null +++ b/dashboard-front/coreui/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/dashboard-front/coreui/src/environments/environment.ts b/dashboard-front/coreui/src/environments/environment.ts new file mode 100644 index 00000000..f56ff470 --- /dev/null +++ b/dashboard-front/coreui/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/dashboard-front/coreui/src/index.html b/dashboard-front/coreui/src/index.html new file mode 100644 index 00000000..d846288d --- /dev/null +++ b/dashboard-front/coreui/src/index.html @@ -0,0 +1,31 @@ + + + + + + + + + + + + Shopper Admin Dashboard + + + + +
+ + Loading... +
+ + diff --git a/dashboard-front/coreui/src/main.ts b/dashboard-front/coreui/src/main.ts new file mode 100644 index 00000000..c7b673cf --- /dev/null +++ b/dashboard-front/coreui/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/dashboard-front/coreui/src/polyfills.ts b/dashboard-front/coreui/src/polyfills.ts new file mode 100644 index 00000000..5813db6b --- /dev/null +++ b/dashboard-front/coreui/src/polyfills.ts @@ -0,0 +1,58 @@ +/*************************************************************************************************** + * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates. + */ +import '@angular/localize/init'; + +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes recent versions of Safari, Chrome (including + * Opera), Edge on the desktop, and iOS and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/dashboard-front/coreui/src/scss/_charts.scss b/dashboard-front/coreui/src/scss/_charts.scss new file mode 100644 index 00000000..c55c2617 --- /dev/null +++ b/dashboard-front/coreui/src/scss/_charts.scss @@ -0,0 +1,7 @@ +// temp fix .chartjs-tooltip-body-item + +.chartjs-tooltip-body-item > td { + padding-bottom: 0 !important; + padding-top: 0 !important; + font-size: smaller; +} diff --git a/dashboard-front/coreui/src/scss/_custom.scss b/dashboard-front/coreui/src/scss/_custom.scss new file mode 100644 index 00000000..5a4593c0 --- /dev/null +++ b/dashboard-front/coreui/src/scss/_custom.scss @@ -0,0 +1,2 @@ +// Here you can add other styles + diff --git a/dashboard-front/coreui/src/scss/_examples.scss b/dashboard-front/coreui/src/scss/_examples.scss new file mode 100644 index 00000000..a7c86b11 --- /dev/null +++ b/dashboard-front/coreui/src/scss/_examples.scss @@ -0,0 +1,122 @@ +.callout-info { + background-color: $light-50 !important; + + @at-root .dark-theme & { + background-color: rgba(255, 255, 255, .1) !important; + } +} + +.example { + &:not(:first-child) { + margin-top: 1.5rem; + } + + .tab-content { + background-color: $light-50 !important; + + @at-root .dark-theme & { + background-color: rgba(255, 255, 255, .1) !important; + } + } + + code[class*="language-"], + pre[class*="language-"] { + font-size: .875rem !important; + } + + :not(pre) > code[class*="language-"], + pre[class*="language-"] { + background: transparent; + } + + & + p, + & + h2, + & + h3, + & + h4, + & + h5, + & + h6 { + margin-top: 1.5rem; + } + + // Components examples + .preview, + .preview .col { + + p { + margin-top: 2rem; + } + + > .form-control { + + .form-control { + margin-top: .5rem; + } + } + + > .nav + .nav, + > .alert + .alert, + > .navbar + .navbar, + > .progress + .progress { + margin-top: 1rem; + } + + > .dropdown-menu { + position: static; + display: block; + } + + > :last-child { + margin-bottom: 0; + } + + // Images + > svg + svg, + > img + img { + margin-left: .5rem; + } + + // Buttons + > .btn, + > .btn-group { + margin: .25rem .125rem; + } + > .btn-toolbar + .btn-toolbar { + margin-top: .5rem; + } + + // List groups + > .list-group { + max-width: 400px; + } + + > [class*="list-group-horizontal"] { + max-width: 100%; + } + + // Navbars + .fixed-top, + .sticky-top { + position: static; + margin: -1rem -1rem 1rem; + } + + .fixed-bottom { + position: static; + margin: 1rem -1rem -1rem; + } + + @include media-breakpoint-up(sm) { + .fixed-top, + .sticky-top { + margin: -1.5rem -1.5rem 1rem; + } + .fixed-bottom { + margin: 1rem -1.5rem -1.5rem; + } + } + + // Pagination + .pagination { + margin-top: .5rem; + margin-bottom: .5rem; + } + } +} diff --git a/dashboard-front/coreui/src/scss/_fixes.scss b/dashboard-front/coreui/src/scss/_fixes.scss new file mode 100644 index 00000000..3e29567d --- /dev/null +++ b/dashboard-front/coreui/src/scss/_fixes.scss @@ -0,0 +1,7 @@ +// Place for temp fixes + +// temp fix for scrollbar styling (wip) +@import "scrollbar"; + +// temp fix .chartjs-tooltip-body-item padding +@import "charts"; diff --git a/dashboard-front/coreui/src/scss/_layout.scss b/dashboard-front/coreui/src/scss/_layout.scss new file mode 100644 index 00000000..dffcb950 --- /dev/null +++ b/dashboard-front/coreui/src/scss/_layout.scss @@ -0,0 +1,7 @@ +.wrapper { + width: 100%; + @include ltr-rtl("padding-left", var(--cui-sidebar-occupy-start, 0)); + @include ltr-rtl("padding-right", var(--cui-sidebar-occupy-end, 0)); + will-change: auto; + @include transition(padding .15s); +} diff --git a/dashboard-front/coreui/src/scss/_scrollbar.scss b/dashboard-front/coreui/src/scss/_scrollbar.scss new file mode 100644 index 00000000..b094f1ac --- /dev/null +++ b/dashboard-front/coreui/src/scss/_scrollbar.scss @@ -0,0 +1,36 @@ +// scrollbar tinkering + +@supports (scrollbar-width: thin) { + * { + scrollbar-width: thin; + scrollbar-color: #444 transparent; + } +} + +::-webkit-scrollbar { + width: .9em; +} + +::-webkit-scrollbar-track { + background: var(--cui-body-bg, #fff); + border-radius: 100vw; + margin-block: .2em; +} + +::-webkit-scrollbar-thumb { + background: #999; + border: .2em solid var(--cui-body-bg, #fff); + border-radius: 100vw; +} + +::-webkit-scrollbar-thumb:hover { + background: #444; +} + +.dark-theme::-webkit-scrollbar-thumb { + background: #444; +} + +.dark-theme::-webkit-scrollbar-thumb:hover { + background: #999; +} diff --git a/dashboard-front/coreui/src/scss/_variables.scss b/dashboard-front/coreui/src/scss/_variables.scss new file mode 100644 index 00000000..65c15b99 --- /dev/null +++ b/dashboard-front/coreui/src/scss/_variables.scss @@ -0,0 +1,1666 @@ +// Variable overrides +// Variables +// +// Variables should follow the `$component-state-property-size` formula for +// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs. + +// Color system + +// $white: #fff; +// $gray-base: #3c4b64; +// $gray-100: #ebedef; +// $gray-200: #d8dbe0; +// $gray-300: #c4c9d0; +// $gray-400: #b1b7c1; +// $gray-500: #9da5b1; +// $gray-600: #8a93a2; +// $gray-700: #768192; +// $gray-800: #636f83; +// $gray-900: #4f5d73; +// $black: #000015; + +// fusv-disable +// $grays: ( +// "100": $gray-100, +// "200": $gray-200, +// "300": $gray-300, +// "400": $gray-400, +// "500": $gray-500, +// "600": $gray-600, +// "700": $gray-700, +// "800": $gray-800, +// "900": $gray-900 +// ); +// fusv-enable + +// $blue: #0d6efd; +// $indigo: #6610f2; +// $purple: #6f42c1; +// $pink: #d63384; +// $red: #dc3545; +// $orange: #fd7e14; +// $yellow: #ffc107; +// $green: #198754; +// $teal: #20c997; +// $cyan: #0dcaf0; + +// scss-docs-start colors-map +// $colors: ( +// "blue": $blue, +// "indigo": $indigo, +// "purple": $purple, +// "pink": $pink, +// "red": $red, +// "orange": $orange, +// "yellow": $yellow, +// "green": $green, +// "teal": $teal, +// "cyan": $cyan, +// "white": $white, +// "gray": $gray-600, +// "gray-dark": $gray-800 +// ); +// scss-docs-end colors-map + +// $primary-dark: #1f1498; +// $primary: #321fdb; +// $primary-50: #988fed; +// $primary-25: #ccc7f6; + +// $secondary-dark: #212233; +// $secondary: #9da5b1; +// $secondary-50: #9da5b1; +// $secondary-25: #ced2d8; + +// $success-dark: #1b9e3e; +// $success: #2eb85c; +// $success-50: #96dbad; +// $success-25: #cbedd6; + +// $info-dark: #2982cc; +// $info: #39f; +// $info-50: #80c6ff; +// $info-25: #c0e6ff; + +// $warning-dark: #f6960b; +// $warning: #f9b115; +// $warning-50: #fcd88a; +// $warning-25: #feecc5; + +// $danger-dark: #d93737; +// $danger: #e55353; +// $danger-50: #f2a9a9; +// $danger-25: #f9d4d4; + +// $light-dark: $gray-100; +// $light: $gray-100; +// $light-50: shift-color($light, -70); +// $light-25: shift-color($light, -80); + +// $dark-dark: $gray-900; +// $dark: $gray-900; +// $dark-50: shift-color($dark, -70); +// $dark-25: shift-color($dark, -80); + +// scss-docs-start theme-colors-map +// $theme-colors: ( +// "primary": $primary, +// "secondary": $secondary, +// "success": $success, +// "info": $info, +// "warning": $warning, +// "danger": $danger, +// "light": $light, +// "dark": $dark +// ); +// scss-docs-end theme-colors-map + +// Text colors +// $high-emphasis-dark: rgba(shift-color($gray-base, +26), .87); +// $medium-emphasis-dark: rgba(shift-color($gray-base, +26), .6); +// $disabled-dark: rgba(shift-color($gray-base, +26), .38); + +// $high-emphasis-light: rgba($white, .87); +// $medium-emphasis-light: rgba($white, .6); +// $disabled-light: rgba($white, .38); + +// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7. +// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast +// $min-contrast-ratio: 4.5; + +// Customize the light and dark text colors for use in our color contrast function. +// $color-contrast-dark: $high-emphasis-dark; +// $color-contrast-light: $high-emphasis-light; + +// fusv-disable +// $blue-100: tint-color($blue, 80%); +// $blue-200: tint-color($blue, 60%); +// $blue-300: tint-color($blue, 40%); +// $blue-400: tint-color($blue, 20%); +// $blue-500: $blue; +// $blue-600: shade-color($blue, 20%); +// $blue-700: shade-color($blue, 40%); +// $blue-800: shade-color($blue, 60%); +// $blue-900: shade-color($blue, 80%); + +// $indigo-100: tint-color($indigo, 80%); +// $indigo-200: tint-color($indigo, 60%); +// $indigo-300: tint-color($indigo, 40%); +// $indigo-400: tint-color($indigo, 20%); +// $indigo-500: $indigo; +// $indigo-600: shade-color($indigo, 20%); +// $indigo-700: shade-color($indigo, 40%); +// $indigo-800: shade-color($indigo, 60%); +// $indigo-900: shade-color($indigo, 80%); + +// $purple-100: tint-color($purple, 80%); +// $purple-200: tint-color($purple, 60%); +// $purple-300: tint-color($purple, 40%); +// $purple-400: tint-color($purple, 20%); +// $purple-500: $purple; +// $purple-600: shade-color($purple, 20%); +// $purple-700: shade-color($purple, 40%); +// $purple-800: shade-color($purple, 60%); +// $purple-900: shade-color($purple, 80%); + +// $pink-100: tint-color($pink, 80%); +// $pink-200: tint-color($pink, 60%); +// $pink-300: tint-color($pink, 40%); +// $pink-400: tint-color($pink, 20%); +// $pink-500: $pink; +// $pink-600: shade-color($pink, 20%); +// $pink-700: shade-color($pink, 40%); +// $pink-800: shade-color($pink, 60%); +// $pink-900: shade-color($pink, 80%); + +// $red-100: tint-color($red, 80%); +// $red-200: tint-color($red, 60%); +// $red-300: tint-color($red, 40%); +// $red-400: tint-color($red, 20%); +// $red-500: $red; +// $red-600: shade-color($red, 20%); +// $red-700: shade-color($red, 40%); +// $red-800: shade-color($red, 60%); +// $red-900: shade-color($red, 80%); + +// $orange-100: tint-color($orange, 80%); +// $orange-200: tint-color($orange, 60%); +// $orange-300: tint-color($orange, 40%); +// $orange-400: tint-color($orange, 20%); +// $orange-500: $orange; +// $orange-600: shade-color($orange, 20%); +// $orange-700: shade-color($orange, 40%); +// $orange-800: shade-color($orange, 60%); +// $orange-900: shade-color($orange, 80%); + +// $yellow-100: tint-color($yellow, 80%); +// $yellow-200: tint-color($yellow, 60%); +// $yellow-300: tint-color($yellow, 40%); +// $yellow-400: tint-color($yellow, 20%); +// $yellow-500: $yellow; +// $yellow-600: shade-color($yellow, 20%); +// $yellow-700: shade-color($yellow, 40%); +// $yellow-800: shade-color($yellow, 60%); +// $yellow-900: shade-color($yellow, 80%); + +// $green-100: tint-color($green, 80%); +// $green-200: tint-color($green, 60%); +// $green-300: tint-color($green, 40%); +// $green-400: tint-color($green, 20%); +// $green-500: $green; +// $green-600: shade-color($green, 20%); +// $green-700: shade-color($green, 40%); +// $green-800: shade-color($green, 60%); +// $green-900: shade-color($green, 80%); + +// $teal-100: tint-color($teal, 80%); +// $teal-200: tint-color($teal, 60%); +// $teal-300: tint-color($teal, 40%); +// $teal-400: tint-color($teal, 20%); +// $teal-500: $teal; +// $teal-600: shade-color($teal, 20%); +// $teal-700: shade-color($teal, 40%); +// $teal-800: shade-color($teal, 60%); +// $teal-900: shade-color($teal, 80%); + +// $cyan-100: tint-color($cyan, 80%); +// $cyan-200: tint-color($cyan, 60%); +// $cyan-300: tint-color($cyan, 40%); +// $cyan-400: tint-color($cyan, 20%); +// $cyan-500: $cyan; +// $cyan-600: shade-color($cyan, 20%); +// $cyan-700: shade-color($cyan, 40%); +// $cyan-800: shade-color($cyan, 60%); +// $cyan-900: shade-color($cyan, 80%); +// fusv-enable + +// Characters which are escaped by the escape-svg function +// $escaped-characters: ( +// ("<", "%3c"), +// (">", "%3e"), +// ("#", "%23"), +// ("(", "%28"), +// (")", "%29"), +// ); + +// Options +// +// Quickly modify global styling by enabling or disabling optional features. + +// $enable-caret: true; +// $enable-rounded: true; +// $enable-shadows: false; +// $enable-gradients: false; +// $enable-transitions: true; +// $enable-reduced-motion: true; +// $enable-smooth-scroll: true; +// $enable-grid-classes: true; +// $enable-button-pointers: true; +// $enable-rfs: true; +// $enable-validation-icons: true; +// $enable-negative-margins: false; +// $enable-deprecation-messages: true; +// $enable-important-utilities: true; + +// Set mobile breakpoint + +// $mobile-breakpoint: lg; + +// Prefix for :root CSS variables + +// $variable-prefix: cui-; + +// Gradient +// +// The gradient which is added to components if `$enable-gradients` is `true` +// This gradient is also added to elements with `.bg-gradient` +// $gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)); + +// Spacing +// +// Control the default styling of most Bootstrap elements by modifying these +// variables. Mostly focused on spacing. +// You can add more entries to the $spacers map, should you need more variation. + +// $spacer: 1rem; +// $spacers: ( +// 0: 0, +// 1: $spacer / 4, +// 2: $spacer / 2, +// 3: $spacer, +// 4: $spacer * 1.5, +// 5: $spacer * 3, +// ); + +// $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null); + +// Position +// +// Define the edge positioning anchors of the position utilities. + +// $position-values: ( +// 0: 0, +// 50: 50%, +// 100: 100% +// ); + + +// Body +// +// Settings for the `` element. + +// $body-bg: $white; +// $body-color: $high-emphasis-dark; +// $body-text-align: null; + + +// Links +// +// Style anchor elements. + +// $link-color: $primary; +// $link-decoration: underline; +// $link-shade-percentage: 20%; +// $link-hover-color: shift-color($link-color, $link-shade-percentage); +// $link-hover-decoration: null; + +// $stretched-link-pseudo-element: after; +// $stretched-link-z-index: 1; + +// Paragraphs +// +// Style p element. + +// $paragraph-margin-bottom: 1rem; + + +// Grid breakpoints +// +// Define the minimum dimensions at which your layout will change, +// adapting to different screen sizes, for use in media queries. + +// scss-docs-start grid-breakpoints +// $grid-breakpoints: ( +// xs: 0, +// sm: 576px, +// md: 768px, +// lg: 992px, +// xl: 1200px, +// xxl: 1400px +// ); +// scss-docs-end grid-breakpoints + +// @include _assert-ascending($grid-breakpoints, "$grid-breakpoints"); +// @include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints"); + + +// Grid containers +// +// Define the maximum width of `.container` for different screen sizes. + +// scss-docs-start container-max-widths +// $container-max-widths: ( +// sm: 540px, +// md: 720px, +// lg: 960px, +// xl: 1140px, +// xxl: 1320px +// ); +// scss-docs-end container-max-widths + +// @include _assert-ascending($container-max-widths, "$container-max-widths"); + + +// Grid columns +// +// Set the number of columns and specify the width of the gutters. + +// $grid-columns: 12; +// $grid-gutter-width: 1.5rem; +// $grid-row-columns: 6; + +// $gutters: $spacers; + +// Container padding + +// $container-padding-x: $grid-gutter-width / 2; + + +// Components +// +// Define common padding and border radius sizes and more. + +// $border-width: 1px; +// $border-widths: ( +// 0: 0, +// 1: 1px, +// 2: 2px, +// 3: 3px, +// 4: 4px, +// 5: 5px +// ); + +// $border-color: $gray-200; + +// $border-radius: .25rem; +// $border-radius-sm: .2rem; +// $border-radius-lg: .3rem; +// $border-radius-pill: 50rem; + +// $box-shadow: 0 .5rem 1rem rgba($black, .15); +// $box-shadow-sm: 0 .125rem .25rem rgba($black, .075); +// $box-shadow-lg: 0 1rem 3rem rgba($black, .175); +// $box-shadow-inset: inset 0 1px 2px rgba($black, .075); + +// $component-active-color: $high-emphasis-light; +// $component-active-bg: $primary; + +// $caret-width: .3em; +// $caret-vertical-align: $caret-width * .85; +// $caret-spacing: $caret-width * .85; + +// $transition-base: all .2s ease-in-out; +// $transition-fade: opacity .15s linear; +// $transition-collapse: height .35s ease; + +// stylelint-disable function-disallowed-list +// scss-docs-start aspect-ratios +// $aspect-ratios: ( +// "1x1": 100%, +// "4x3": calc(3 / 4 * 100%), +// "16x9": calc(9 / 16 * 100%), +// "21x9": calc(9 / 21 * 100%) +// ); +// scss-docs-end aspect-ratios +// stylelint-enable function-disallowed-list + +// Typography +// +// Font, line-height, and color for body text, headings, and more. + +// stylelint-disable value-keyword-case +// $font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +// $font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +// stylelint-enable value-keyword-case +// $font-family-base: var(--#{$variable-prefix}font-sans-serif); +// $font-family-code: var(--#{$variable-prefix}font-monospace); + +// $font-size-root effects the value of `rem`, which is used for as well font sizes, paddings and margins +// $font-size-base effects the font size of the body text +// $font-size-root: null; +// $font-size-base: 1rem; // Assumes the browser default, typically `16px` +// $font-size-sm: $font-size-base * .875; +// $font-size-lg: $font-size-base * 1.25; + +// $font-weight-lighter: lighter; +// $font-weight-light: 300; +// $font-weight-normal: 400; +// $font-weight-medium: 500; +// $font-weight-semibold: 600; +// $font-weight-bold: 700; +// $font-weight-bolder: bolder; + +// $font-weight-base: $font-weight-normal; + +// $line-height-base: 1.5; +// $line-height-sm: 1.25; +// $line-height-lg: 2; + +// $h1-font-size: $font-size-base * 2.5; +// $h2-font-size: $font-size-base * 2; +// $h3-font-size: $font-size-base * 1.75; +// $h4-font-size: $font-size-base * 1.5; +// $h5-font-size: $font-size-base * 1.25; +// $h6-font-size: $font-size-base; + +// scss-docs-start font-sizes +// $font-sizes: ( +// 1: $h1-font-size, +// 2: $h2-font-size, +// 3: $h3-font-size, +// 4: $h4-font-size, +// 5: $h5-font-size, +// 6: $h6-font-size +// ); +// scss-docs-end font-sizes + +// $headings-margin-bottom: $spacer / 2; +// $headings-font-family: null; +// $headings-font-style: null; +// $headings-font-weight: 500; +// $headings-line-height: 1.2; +// $headings-color: unset; + +// scss-docs-start display-headings +// $display-font-sizes: ( +// 1: 5rem, +// 2: 4.5rem, +// 3: 4rem, +// 4: 3.5rem, +// 5: 3rem, +// 6: 2.5rem +// ); + +// $display-font-weight: 300; +// $display-line-height: $headings-line-height; +// scss-docs-end display-headings + +// $lead-font-size: $font-size-base * 1.25; +// $lead-font-weight: 300; + +// $small-font-size: .875em; + +// $sub-sup-font-size: .75em; + +// $text-muted: $disabled-dark; + +// $initialism-font-size: $small-font-size; + +// $blockquote-margin-y: $spacer; +// $blockquote-font-size: $font-size-base * 1.25; +// $blockquote-footer-color: $gray-600; +// $blockquote-footer-font-size: $small-font-size; + +// $hr-margin-y: $spacer; +// $hr-color: inherit; +// $hr-height: $border-width; +// $hr-opacity: .25; + +// $vr-color: inherit; +// $vr-width: $border-width; +// $vr-opacity: .25; + +// $legend-margin-bottom: .5rem; +// $legend-font-size: 1.5rem; +// $legend-font-weight: null; + +// $mark-padding: .2em; + +// $dt-font-weight: $font-weight-bold; + +// $nested-kbd-font-weight: $font-weight-bold; + +// $list-inline-padding: .5rem; + +// $mark-bg: #fcf8e3; + +// Icons +// $icon-size-base: 1rem; +// $icon-size-sm: $icon-size-base * .875; +// $icon-size-lg: $icon-size-base * 1.25; +// $icon-size-xl: $icon-size-base * 1.5; + + +// Tables +// +// Customizes the `.table` component with basic values, each used across all table variations. + +// scss-docs-start table-variables +// $table-cell-padding-y: .5rem; +// $table-cell-padding-x: .5rem; +// $table-cell-padding-y-sm: .25rem; +// $table-cell-padding-x-sm: .25rem; + +// $table-cell-vertical-align: top; + +// $table-color: $body-color; +// $table-bg: transparent; + +// $table-th-font-weight: 600; + +// $table-striped-color: $table-color; +// $table-striped-bg-factor: .05; +// $table-striped-bg: rgba($black, $table-striped-bg-factor); + +// $table-active-color: $table-color; +// $table-active-bg-factor: .1; +// $table-active-bg: rgba($black, $table-active-bg-factor); + +// $table-hover-color: $table-color; +// $table-hover-bg-factor: .075; +// $table-hover-bg: rgba($black, $table-hover-bg-factor); + +// $table-border-factor: .1; +// $table-border-width: $border-width; +// $table-border-color: $border-color; + +// $table-striped-order: odd; + +// $table-group-separator-color: currentColor; + +// $table-caption-color: $text-muted; + +// $table-bg-scale: -80%; + +// $table-variants: ( +// "primary": shift-color($primary, $table-bg-scale), +// "secondary": shift-color($secondary, $table-bg-scale), +// "success": shift-color($success, $table-bg-scale), +// "info": shift-color($info, $table-bg-scale), +// "warning": shift-color($warning, $table-bg-scale), +// "danger": shift-color($danger, $table-bg-scale), +// "light": $light, +// "dark": $dark, +// ); +// scss-docs-end table-variables + + +// Buttons + Forms +// +// Shared variables that are reassigned to `$input-` and `$btn-` specific variables. + +// scss-docs-start button-form-variables +// $input-btn-padding-y: .375rem; +// $input-btn-padding-x: .75rem; +// $input-btn-font-family: null; +// $input-btn-font-size: $font-size-base; +// $input-btn-line-height: $line-height-base; + +// $input-btn-focus-width: .25rem; +// $input-btn-focus-color-opacity: .25; +// $input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity); +// $input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color; + +// $input-btn-padding-y-sm: .25rem; +// $input-btn-padding-x-sm: .5rem; +// $input-btn-font-size-sm: $font-size-sm; + +// $input-btn-padding-y-lg: .5rem; +// $input-btn-padding-x-lg: 1rem; +// $input-btn-font-size-lg: $font-size-lg; + +// $input-btn-border-width: $border-width; +// scss-docs-end button-form-variables + +// Buttons +// +// For each of Bootstrap's buttons, define text, background, and border color. + +// scss-docs-start button-variables +// $btn-padding-y: $input-btn-padding-y; +// $btn-padding-x: $input-btn-padding-x; +// $btn-font-family: $input-btn-font-family; +// $btn-font-size: $input-btn-font-size; +// $btn-line-height: $input-btn-line-height; +// $btn-white-space: null; // Set to `nowrap` to prevent text wrapping + +// $btn-padding-y-sm: $input-btn-padding-y-sm; +// $btn-padding-x-sm: $input-btn-padding-x-sm; +// $btn-font-size-sm: $input-btn-font-size-sm; + +// $btn-padding-y-lg: $input-btn-padding-y-lg; +// $btn-padding-x-lg: $input-btn-padding-x-lg; +// $btn-font-size-lg: $input-btn-font-size-lg; + +// $btn-border-width: $input-btn-border-width; + +// $btn-font-weight: $font-weight-normal; +// $btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075); +// $btn-focus-width: $input-btn-focus-width; +// $btn-focus-box-shadow: $input-btn-focus-box-shadow; +// $btn-disabled-opacity: .65; +// $btn-active-box-shadow: inset 0 3px 5px rgba($black, .125); + +// $btn-link-color: $link-color; +// $btn-link-hover-color: $link-hover-color; +// $btn-link-disabled-color: $gray-600; + +// Allows for customizing button radius independently from global border radius +// $btn-border-radius: $border-radius; +// $btn-border-radius-sm: $border-radius-sm; +// $btn-border-radius-lg: $border-radius-lg; + +// $btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + +// $button-variants: ( +// "primary": btn-color-map($primary, $primary), +// "secondary": btn-color-map($secondary, $secondary), +// "success": btn-color-map($success, $success), +// "danger": btn-color-map($danger, $danger), +// "warning": btn-color-map($warning, $warning), +// "info": btn-color-map($info, $info), +// "light": btn-color-map($light, $light), +// "dark": btn-color-map($dark, $dark) +// ); +// scss-docs-end button-variables + + +// Forms +// scss-docs-start form-variables +// scss-docs-start form-control-variables +// $form-text-margin-top: .25rem; +// $form-text-font-size: $small-font-size; +// $form-text-font-style: null; +// $form-text-font-weight: null; +// $form-text-color: $text-muted; + +// $form-label-margin-bottom: .5rem; +// $form-label-font-size: null; +// $form-label-font-style: null; +// $form-label-font-weight: null; +// $form-label-color: inherit; + +// $input-padding-y: $input-btn-padding-y; +// $input-padding-x: $input-btn-padding-x; +// $input-font-family: $input-btn-font-family; +// $input-font-size: $input-btn-font-size; +// $input-font-weight: $font-weight-base; +// $input-line-height: $input-btn-line-height; + +// $input-padding-y-sm: $input-btn-padding-y-sm; +// $input-padding-x-sm: $input-btn-padding-x-sm; +// $input-font-size-sm: $input-btn-font-size-sm; + +// $input-padding-y-lg: $input-btn-padding-y-lg; +// $input-padding-x-lg: $input-btn-padding-x-lg; +// $input-font-size-lg: $input-btn-font-size-lg; + +// $input-bg: $white; +// $input-disabled-bg: $gray-200; +// $input-disabled-border-color: $gray-400; + +// $input-color: $body-color; +// $input-border-color: $gray-400; +// $input-border-width: $input-btn-border-width; +// $input-box-shadow: $box-shadow-inset; + +// $input-border-radius: $border-radius; +// $input-border-radius-sm: $border-radius-sm; +// $input-border-radius-lg: $border-radius-lg; + +// $input-focus-bg: $input-bg; +// $input-focus-border-color: tint-color($component-active-bg, 50%); +// $input-focus-color: $input-color; +// $input-focus-width: $input-btn-focus-width; +// $input-focus-box-shadow: $input-btn-focus-box-shadow; + +// $input-placeholder-color: $gray-600; +// $input-plaintext-color: $body-color; + +// $input-height-border: $input-border-width * 2; + +// $input-height-inner: add($input-line-height * 1em, $input-padding-y * 2); +// $input-height-inner-half: add($input-line-height * .5em, $input-padding-y); +// $input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2); + +// $input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)); +// $input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)); +// $input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)); + +// $input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; +// scss-docs-end form-control-variables + +// scss-docs-start form-check-variables +// $form-check-input-width: 1em; +// $form-check-min-height: $font-size-base * $line-height-base; +// $form-check-padding-start: .375em; +// $form-check-margin-bottom: .125rem; +// $form-check-label-color: unset; +// $form-check-label-cursor: null; +// $form-check-transition: background-color .15s ease-in-out, background-position .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + +// $form-check-input-active-filter: brightness(90%); + +// $form-check-input-bg: $body-bg; +// $form-check-input-border: 1px solid rgba(0, 0, 0, .25); +// $form-check-input-border-radius: .25em; +// $form-check-radio-border-radius: 50%; +// $form-check-input-focus-border: $input-focus-border-color; +// $form-check-input-focus-box-shadow: $input-btn-focus-box-shadow; + +// $form-check-input-checked-color: $component-active-color; +// $form-check-input-checked-bg-color: $component-active-bg; +// $form-check-input-checked-border-color: $form-check-input-checked-bg-color; +// $form-check-input-checked-bg-image: url("data:image/svg+xml,"); +// $form-check-radio-checked-bg-image: url("data:image/svg+xml,"); + +// $form-check-input-indeterminate-color: $component-active-color; +// $form-check-input-indeterminate-bg-color: $component-active-bg; +// $form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color; +// $form-check-input-indeterminate-bg-image: url("data:image/svg+xml,"); + +// $form-check-input-disabled-opacity: .5; +// $form-check-label-disabled-opacity: $form-check-input-disabled-opacity; +// $form-check-btn-check-disabled-opacity: $btn-disabled-opacity; +// scss-docs-end form-check-variables + +// scss-docs-start form-switch-variables +// $form-switch-color: rgba(0, 0, 0, .25); +// $form-switch-width: 1.5em; +// $form-switch-padding-start: .375em; +// $form-switch-bg-image: url("data:image/svg+xml,"); +// $form-switch-border-radius: $form-switch-width; + +// $form-switch-focus-color: $input-focus-border-color; +// $form-switch-focus-bg-image: url("data:image/svg+xml,"); + +// $form-switch-checked-color: $component-active-color; +// $form-switch-checked-bg-image: url("data:image/svg+xml,"); +// $form-switch-checked-bg-position: right center; + +// $form-switch-widths: ( +// lg: 2em, +// xl: 2.5em +// ); +// scss-docs-end form-switch-variables + +// $form-check-inline-margin-end: 1rem; + +// scss-docs-start input-group-variables +// $input-group-addon-padding-y: $input-padding-y; +// $input-group-addon-padding-x: $input-padding-x; +// $input-group-addon-font-weight: $input-font-weight; +// $input-group-addon-color: $input-color; +// $input-group-addon-bg: $gray-200; +// $input-group-addon-border-color: $input-border-color; +// scss-docs-end input-group-variables + +// scss-docs-start form-select-variables +// $form-select-padding-y: $input-padding-y; +// $form-select-padding-x: $input-padding-x; +// $form-select-font-family: $input-font-family; +// $form-select-font-size: $input-font-size; +// $form-select-indicator-padding: 1rem; // Extra padding to account for the presence of the background-image based indicator +// $form-select-font-weight: $input-font-weight; +// $form-select-line-height: $input-line-height; +// $form-select-color: $input-color; +// $form-select-disabled-color: $gray-600; +// $form-select-bg: $input-bg; +// $form-select-disabled-bg: $gray-200; +// $form-select-disabled-border-color: $input-disabled-border-color; +// $form-select-bg-position: right $form-select-padding-x center; +// $form-select-bg-size: 16px 12px; // In pixels because image dimensions +// $form-select-indicator-color: $gray-800; +// $form-select-indicator: url("data:image/svg+xml,"); + +// $form-select-feedback-icon-padding-end: add(1em * .75, (2 * $form-select-padding-y * .75) + $form-select-padding-x + $form-select-indicator-padding); +// $form-select-feedback-icon-position: center right ($form-select-padding-x + $form-select-indicator-padding); +// $form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half; + +// $form-select-border-width: $input-border-width; +// $form-select-border-color: $input-border-color; +// $form-select-border-radius: $border-radius; +// $form-select-box-shadow: $box-shadow-inset; + +// $form-select-focus-border-color: $input-focus-border-color; +// $form-select-focus-width: $input-focus-width; +// $form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color; + +// $form-select-padding-y-sm: $input-padding-y-sm; +// $form-select-padding-x-sm: $input-padding-x-sm; +// $form-select-font-size-sm: $input-font-size-sm; + +// $form-select-padding-y-lg: $input-padding-y-lg; +// $form-select-padding-x-lg: $input-padding-x-lg; +// $form-select-font-size-lg: $input-font-size-lg; +// scss-docs-end form-select-variables + +// scss-docs-start form-range-variables +// $form-range-track-width: 100%; +// $form-range-track-height: .5rem; +// $form-range-track-cursor: pointer; +// $form-range-track-bg: $gray-300; +// $form-range-track-border-radius: 1rem; +// $form-range-track-box-shadow: $box-shadow-inset; + +// $form-range-thumb-width: 1rem; +// $form-range-thumb-height: $form-range-thumb-width; +// $form-range-thumb-bg: $component-active-bg; +// $form-range-thumb-border: 0; +// $form-range-thumb-border-radius: 1rem; +// $form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1); +// $form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow; +// $form-range-thumb-focus-box-shadow-width: $input-focus-width; // For focus box shadow issue in Edge +// $form-range-thumb-active-bg: tint-color($component-active-bg, 70%); +// $form-range-thumb-disabled-bg: $gray-500; +// $form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; +// scss-docs-end form-range-variables + +// scss-docs-start form-file-variables +// $form-file-button-color: $input-color; +// $form-file-button-bg: $input-group-addon-bg; +// $form-file-button-hover-bg: shade-color($form-file-button-bg, 5%); +// scss-docs-end form-file-variables + +// scss-docs-start form-floating-variables +// $form-floating-height: add(3.5rem, $input-height-border); +// $form-floating-padding-x: $input-padding-x; +// $form-floating-padding-y: 1rem; +// $form-floating-input-padding-t: 1.625rem; +// $form-floating-input-padding-b: .625rem; +// $form-floating-label-opacity: .65; +// $form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem); +// $form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out; +// scss-docs-end form-floating-variables + +// Form validation + +// $form-feedback-margin-top: $form-text-margin-top; +// $form-feedback-font-size: $form-text-font-size; +// $form-feedback-font-style: $form-text-font-style; +// $form-feedback-valid-color: $success; +// $form-feedback-invalid-color: $danger; + +// $form-feedback-icon-valid-color: $form-feedback-valid-color; +// $form-feedback-icon-valid: url("data:image/svg+xml,"); +// $form-feedback-icon-invalid-color: $form-feedback-invalid-color; +// $form-feedback-icon-invalid: url("data:image/svg+xml,"); + +// scss-docs-start form-validation-states +// $form-validation-states: ( +// "valid": ( +// "color": $form-feedback-valid-color, +// "icon": $form-feedback-icon-valid +// ), +// "invalid": ( +// "color": $form-feedback-invalid-color, +// "icon": $form-feedback-icon-invalid +// ) +// ); +// scss-docs-end form-validation-states +// scss-docs-end form-variables +// Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. + +// scss-docs-start zindex-stack +// $zindex-dropdown: 1000; +// $zindex-sticky: 1020; +// $zindex-fixed: 1030; +// $zindex-modal-backdrop: 1040; +// $zindex-modal: 1050; +// $zindex-popover: 1060; +// $zindex-tooltip: 1070; +// scss-docs-end zindex-stack + + +// Navs +// scss-docs-start nav-variables +// $nav-link-padding-y: .5rem; +// $nav-link-padding-x: 1rem; +// $nav-link-font-size: null; +// $nav-link-font-weight: null; +// $nav-link-color: $link-color; +// $nav-link-hover-color: $link-hover-color; +// $nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out; +// $nav-link-disabled-color: $gray-600; + +// $nav-tabs-border-color: $gray-300; +// $nav-tabs-border-width: $border-width; +// $nav-tabs-border-radius: $border-radius; +// $nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color; +// $nav-tabs-link-active-color: $gray-700; +// $nav-tabs-link-active-bg: $body-bg; +// $nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg; + +// $nav-pills-border-radius: $border-radius; +// $nav-pills-link-active-color: $component-active-color; +// $nav-pills-link-active-bg: $component-active-bg; +// scss-docs-end nav-variables + +// Navbar +// scss-docs-start navbar-variables +// $navbar-padding-y: $spacer / 2; +// $navbar-padding-x: null; + +// $navbar-nav-link-padding-x: .5rem; + +// $navbar-brand-font-size: $font-size-lg; +// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link +// $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2; +// $navbar-brand-height: $navbar-brand-font-size * $line-height-base; +// $navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2; +// $navbar-brand-margin-end: 1rem; + +// $navbar-toggler-padding-y: .25rem; +// $navbar-toggler-padding-x: .75rem; +// $navbar-toggler-font-size: $font-size-lg; +// $navbar-toggler-border-radius: $btn-border-radius; +// $navbar-toggler-focus-width: $btn-focus-width; +// $navbar-toggler-transition: box-shadow .15s ease-in-out; + +// $navbar-dark-color: $medium-emphasis-light; +// $navbar-dark-hover-color: $high-emphasis-light; +// $navbar-dark-active-color: $high-emphasis-light; +// $navbar-dark-disabled-color: $disabled-light; +// $navbar-dark-toggler-icon-bg: url("data:image/svg+xml,"); +// $navbar-dark-toggler-border-color: rgba($white, .1); + +// $navbar-light-color: $medium-emphasis-dark; +// $navbar-light-hover-color: $high-emphasis-dark; +// $navbar-light-active-color: $high-emphasis-dark; +// $navbar-light-disabled-color: $disabled-dark; +// $navbar-light-toggler-icon-bg: url("data:image/svg+xml,"); +// $navbar-light-toggler-border-color: rgba($black, .1); + +// $navbar-light-brand-color: $navbar-light-active-color; +// $navbar-light-brand-hover-color: $navbar-light-active-color; +// $navbar-dark-brand-color: $navbar-dark-active-color; +// $navbar-dark-brand-hover-color: $navbar-dark-active-color; +// scss-docs-end navbar-variables + +// Dropdowns +// +// Dropdown menu container and contents. +// scss-docs-start dropdown-variables +// $dropdown-min-width: 10rem; +// $dropdown-padding-x: 0; +// $dropdown-padding-y: .5rem; +// $dropdown-spacer: .125rem; +// $dropdown-font-size: $font-size-base; +// $dropdown-color: $body-color; +// $dropdown-bg: $white; +// $dropdown-border-color: rgba($black, .15); +// $dropdown-border-radius: $border-radius; +// $dropdown-border-width: $border-width; +// $dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width); +// $dropdown-divider-bg: $dropdown-border-color; +// $dropdown-divider-margin-y: $spacer / 2; +// $dropdown-box-shadow: $box-shadow; + +// $dropdown-link-color: $gray-900; +// $dropdown-link-hover-color: shade-color($gray-900, 10%); +// $dropdown-link-hover-bg: $gray-100; + +// $dropdown-link-active-color: $component-active-color; +// $dropdown-link-active-bg: $component-active-bg; + +// $dropdown-link-disabled-color: $gray-600; + +// $dropdown-item-padding-y: $spacer / 4; +// $dropdown-item-padding-x: $spacer; + +// $dropdown-header-color: $gray-600; +// $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x; + +// $dropdown-dark-color: $gray-300; +// $dropdown-dark-bg: $gray-800; +// $dropdown-dark-border-color: $dropdown-border-color; +// $dropdown-dark-divider-bg: $dropdown-divider-bg; +// $dropdown-dark-box-shadow: null; +// $dropdown-dark-link-color: $dropdown-dark-color; +// $dropdown-dark-link-hover-color: $high-emphasis-light; +// $dropdown-dark-link-hover-bg: rgba($white, .15); +// $dropdown-dark-link-active-color: $dropdown-link-active-color; +// $dropdown-dark-link-active-bg: $dropdown-link-active-bg; +// $dropdown-dark-link-disabled-color: $gray-500; +// $dropdown-dark-header-color: $gray-500; +// scss-docs-end dropdown-variables + + +// Pagination +// scss-docs-start pagination-variables +// $pagination-padding-y: .375rem; +// $pagination-padding-x: .75rem; +// $pagination-padding-y-sm: .25rem; +// $pagination-padding-x-sm: .5rem; +// $pagination-padding-y-lg: .75rem; +// $pagination-padding-x-lg: 1.5rem; + +// $pagination-color: $link-color; +// $pagination-bg: $white; +// $pagination-border-width: $border-width; +// $pagination-border-radius: $border-radius; +// $pagination-margin-start: -$pagination-border-width; +// $pagination-border-color: $gray-300; + +// $pagination-focus-color: $link-hover-color; +// $pagination-focus-bg: $gray-200; +// $pagination-focus-box-shadow: $input-btn-focus-box-shadow; +// $pagination-focus-outline: 0; + +// $pagination-hover-color: $link-hover-color; +// $pagination-hover-bg: $gray-200; +// $pagination-hover-border-color: $gray-300; + +// $pagination-active-color: $component-active-color; +// $pagination-active-bg: $component-active-bg; +// $pagination-active-border-color: $pagination-active-bg; + +// $pagination-disabled-color: $gray-600; +// $pagination-disabled-bg: $white; +// $pagination-disabled-border-color: $gray-300; + +// $pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; +// scss-docs-end pagination-variables + +// Cards +// scss-docs-start card-variables +// $card-spacer-y: $spacer; +// $card-spacer-x: $spacer; +// $card-title-spacer-y: $spacer / 2; +// $card-border-width: $border-width; +// $card-border-radius: $border-radius; +// $card-border-color: rgba($black, .125); +// $card-inner-border-radius: subtract($card-border-radius, $card-border-width); +// $card-cap-padding-y: $card-spacer-y / 2; +// $card-cap-padding-x: $card-spacer-x; +// $card-cap-bg: rgba($black, .03); +// $card-cap-color: unset; +// $card-height: null; +// $card-color: unset; +// $card-bg: $white; + +// $card-img-overlay-padding: $spacer; + +// $card-group-margin: $grid-gutter-width / 2; +// scss-docs-end card-variables + +// Accordion +// scss-docs-start accordion-variables +// $accordion-padding-y: 1rem; +// $accordion-padding-x: 1.25rem; +// $accordion-color: $body-color; +// $accordion-bg: transparent; +// $accordion-border-width: $border-width; +// $accordion-border-color: rgba($black, .125); +// $accordion-border-radius: $border-radius; + +// $accordion-body-padding-y: $accordion-padding-y; +// $accordion-body-padding-x: $accordion-padding-x; + +// $accordion-button-padding-y: $accordion-padding-y; +// $accordion-button-padding-x: $accordion-padding-x; +// $accordion-button-color: $accordion-color; +// $accordion-button-bg: $accordion-bg; +// $accordion-transition: $btn-transition, border-radius .15s ease; +// $accordion-button-active-bg: tint-color($component-active-bg, 90%); +// $accordion-button-active-color: shade-color($primary, 10%); + +// $accordion-button-focus-border-color: $input-focus-border-color; +// $accordion-button-focus-box-shadow: $btn-focus-box-shadow; + +// $accordion-icon-width: 1.25rem; +// $accordion-icon-color: $accordion-color; +// $accordion-icon-active-color: $accordion-button-active-color; +// $accordion-icon-transition: transform .2s ease-in-out; +// $accordion-icon-transform: rotate(180deg); + +// $accordion-button-icon: url("data:image/svg+xml,"); +// $accordion-button-active-icon: url("data:image/svg+xml,"); +// scss-docs-end accordion-variables + +// Tooltips + +// scss-docs-start tooltip-variables +// $tooltip-font-size: $font-size-sm; +// $tooltip-max-width: 200px; +// $tooltip-color: $high-emphasis-light; +// $tooltip-bg: $black; +// $tooltip-border-radius: $border-radius; +// $tooltip-opacity: .9; +// $tooltip-padding-y: $spacer / 4; +// $tooltip-padding-x: $spacer / 2; +// $tooltip-margin: 0; + +// $tooltip-arrow-width: .8rem; +// $tooltip-arrow-height: .4rem; +// $tooltip-arrow-color: $tooltip-bg; +// scss-docs-end tooltip-variables + +// Form tooltips must come after regular tooltips +// $form-feedback-tooltip-padding-y: $tooltip-padding-y; +// $form-feedback-tooltip-padding-x: $tooltip-padding-x; +// $form-feedback-tooltip-font-size: $tooltip-font-size; +// $form-feedback-tooltip-line-height: null; +// $form-feedback-tooltip-opacity: $tooltip-opacity; +// $form-feedback-tooltip-border-radius: $tooltip-border-radius; + + +// Popovers +// scss-docs-start popover-variables +// $popover-font-size: $font-size-sm; +// $popover-bg: $white; +// $popover-max-width: 276px; +// $popover-border-width: $border-width; +// $popover-border-color: rgba($black, .2); +// $popover-border-radius: $border-radius-lg; +// $popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width); +// $popover-box-shadow: $box-shadow; + +// $popover-header-bg: shade-color($popover-bg, 6%); +// $popover-header-color: $headings-color; +// $popover-header-padding-y: .5rem; +// $popover-header-padding-x: $spacer; + +// $popover-body-color: $body-color; +// $popover-body-padding-y: $spacer; +// $popover-body-padding-x: $spacer; + +// $popover-arrow-width: 1rem; +// $popover-arrow-height: .5rem; +// $popover-arrow-color: $popover-bg; + +// $popover-arrow-outer-color: fade-in($popover-border-color, .05); +// scss-docs-end popover-variables + + +// Toasts +// scss-docs-start toast-variables +// $toast-max-width: 350px; +// $toast-padding-x: .75rem; +// $toast-padding-y: .5rem; +// $toast-font-size: .875rem; +// $toast-color: unset; +// $toast-background-color: rgba($white, .85); +// $toast-border-width: 1px; +// $toast-border-color: rgba(0, 0, 0, .1); +// $toast-border-radius: $border-radius; +// $toast-box-shadow: $box-shadow; +// $toast-spacing: $container-padding-x; + +// $toast-header-color: $gray-600; +// $toast-header-background-color: rgba($white, .85); +// $toast-header-border-color: rgba(0, 0, 0, .05); +// scss-docs-end toast-variables + + +// Badges +// scss-docs-start badge-variables +// $badge-font-size: .75em; +// $badge-font-weight: $font-weight-bold; +// $badge-color: $high-emphasis-light; +// $badge-padding-y: .35em; +// $badge-padding-x: .65em; +// $badge-border-radius: $border-radius; + +// $badge-font-size-sm: .65em; +// $badge-padding-y-sm: .3em; +// $badge-padding-x-sm: .5em; +// scss-docs-end badge-variables + + +// Modals +// scss-docs-start modal-variables +// Padding applied to the modal body +// $modal-inner-padding: $spacer; + +// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding +// $modal-footer-margin-between: .5rem; + +// $modal-dialog-margin: .5rem; +// $modal-dialog-margin-y-sm-up: 1.75rem; + +// $modal-title-line-height: $line-height-base; + +// $modal-content-color: unset; +// $modal-content-bg: $white; +// $modal-content-border-color: rgba($black, .2); +// $modal-content-border-width: $border-width; +// $modal-content-border-radius: $border-radius-lg; +// $modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width); +// $modal-content-box-shadow-xs: $box-shadow-sm; +// $modal-content-box-shadow-sm-up: $box-shadow; + +// $modal-backdrop-bg: $black; +// $modal-backdrop-opacity: .5; +// $modal-header-border-color: $border-color; +// $modal-footer-border-color: $modal-header-border-color; +// $modal-header-border-width: $modal-content-border-width; +// $modal-footer-border-width: $modal-header-border-width; +// $modal-header-padding-y: $modal-inner-padding; +// $modal-header-padding-x: $modal-inner-padding; +// $modal-header-padding: $modal-header-padding-y $modal-header-padding-x; // Keep this for backwards compatibility + +// $modal-sm: 300px; +// $modal-md: 500px; +// $modal-lg: 800px; +// $modal-xl: 1140px; + +// $modal-fade-transform: translate(0, -50px); +// $modal-show-transform: none; +// $modal-transition: transform .3s ease-out; +// $modal-scale-transform: scale(1.02); +// scss-docs-end modal-variables + + +// Avatars +// scss-docs-start avatar-variables +// $avatar-width: 2rem; + +// $avatar-widths: ( +// sm: 1.5rem, +// lg: 3rem, +// xl: 4rem +// ); + +// $avatar-transition: margin .15s; +// scss-docs-end avatar-variables + +// Alerts +// +// Define alert colors, border radius, and padding. +// scss-docs-start alert-variables +// $alert-padding-y: $spacer; +// $alert-padding-x: $spacer; +// $alert-margin-bottom: 1rem; +// $alert-border-radius: $border-radius; +// $alert-link-font-weight: $font-weight-bold; +// $alert-border-width: $border-width; + +// $alert-bg-scale: -80%; +// $alert-border-scale: -70%; +// $alert-color-scale: 40%; + +// $alert-dismissible-padding-r: $alert-padding-x * 3; // 3x covers width of x plus default padding on either side + +// $alert-variants: ( +// "primary": alert-color-map($primary), +// "secondary": alert-color-map($secondary), +// "success": alert-color-map($success), +// "danger": alert-color-map($danger), +// "warning": alert-color-map($warning), +// "info": alert-color-map($info), +// "light": alert-color-map($light), +// "dark": alert-color-map($dark) +// ); +// scss-docs-end alert-variables + +// Callouts +// scss-docs-start callout-variables +// $callout-padding-y: $spacer; +// $callout-padding-x: $spacer; +// $callout-margin-y: $spacer; +// $callout-margin-x: 0; +// $callout-border-radius: $border-radius; +// $callout-border-width: $border-width; +// $callout-border-color: $border-color; +// $callout-border-left-width: (4 * $callout-border-width); + +// $callout-variants: ( +// "primary": $primary, +// "secondary": $secondary, +// "success": $success, +// "danger": $danger, +// "warning": $warning, +// "info": $info, +// "light": $light, +// "dark": $dark +// ); +// scss-docs-end callout-variables + + +// Progress bars + +// scss-docs-start progress-variables +// $progress-height: 1rem; +// $progress-font-size: $font-size-base * .75; +// $progress-bg: $gray-200; +// $progress-border-radius: $border-radius; +// $progress-box-shadow: $box-shadow-inset; +// $progress-bar-color: $high-emphasis-light; +// $progress-bar-bg: $primary; +// $progress-bar-animation-timing: 1s linear infinite; +// $progress-bar-transition: width .6s ease; +// scss-docs-end progress-variables + +// List group +// scss-docs-start list-group-variables +// $list-group-color: unset; +// $list-group-bg: $white; +// $list-group-border-color: rgba($black, .125); +// $list-group-border-width: $border-width; +// $list-group-border-radius: $border-radius; + +// $list-group-item-padding-y: $spacer / 2; +// $list-group-item-padding-x: $spacer; +// $list-group-item-bg-scale: -80%; +// $list-group-item-color-scale: 40%; + +// $list-group-hover-bg: $gray-100; +// $list-group-active-color: $component-active-color; +// $list-group-active-bg: $component-active-bg; +// $list-group-active-border-color: $list-group-active-bg; + +// $list-group-disabled-color: $gray-600; +// $list-group-disabled-bg: $list-group-bg; + +// $list-group-action-color: $gray-700; +// $list-group-action-hover-color: $list-group-action-color; + +// $list-group-action-active-color: $body-color; +// $list-group-action-active-bg: $gray-200; + +// $list-group-variants: ( +// "primary": list-group-color-map($primary), +// "secondary": list-group-color-map($secondary), +// "success": list-group-color-map($success), +// "danger": list-group-color-map($danger), +// "warning": list-group-color-map($warning), +// "info": list-group-color-map($info), +// "light": list-group-color-map($light), +// "dark": list-group-color-map($dark) +// ); +// scss-docs-end list-group-variables + + +// Header +// scss-docs-start header-variables +// $header-min-height: 4rem; +// $header-padding-y: $spacer / 2; +// $header-padding-x: $spacer / 2; +// $header-brand-font-size: $font-size-lg; +// $header-color: $medium-emphasis-dark; +// $header-bg: $white; +// $header-border-color: $border-color; +// $header-border-width: 1px; +// $header-hover-color: $high-emphasis-dark; +// $header-active-color: $high-emphasis-dark; +// $header-disabled-color: $disabled-dark; + +// Compute the header-brand padding-y so the header-brand will have the same height as header-text and nav-link +// $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2; +// $header-brand-height: $header-brand-font-size * $line-height-base; +// $header-brand-padding-y: ($nav-link-height - $header-brand-height) / 2; +// $header-brand-margin-end: 1rem; +// $header-brand-font-size: $font-size-lg; +// $header-brand-color: $gray-900; +// $header-brand-hover-color: shade-color($gray-900, 10%); + +// $header-toggler-padding-y: .25rem; +// $header-toggler-padding-x: .75rem; +// $header-toggler-font-size: $font-size-lg; +// $header-toggler-bg: transparent; +// $header-toggler-border: 0; +// $header-toggler-border-radius: $btn-border-radius; + +// $header-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$header-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23"); +// $header-toggler-hover-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$header-hover-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23"); +// $header-toggler-border-color: rgba($black, .1); + +// $header-nav-link-padding-x: .5rem; + +// $header-divider-border-width: 1px; +// $header-divider-border-color: $header-border-color; +// scss-docs-end header-variables + +// Subheader +// scss-docs-start subheader-variables +// $subheader-min-height: 3rem; +// $subheader-padding-y: $spacer / 2; +// $subheader-padding-x: $spacer; +// $subheader-border-color: $border-color; +// $subheader-border-width: 1px; + +// $subheader-nav-link-padding-x: .5rem; +// scss-docs-end subheader-variables + +// Default theme +// scss-docs-start subheader-default-themes +// $subheader-bg: $white; +// $subheader-color: $medium-emphasis-dark; +// $subheader-hover-color: $high-emphasis-dark; +// $subheader-active-color: $high-emphasis-dark; +// $subheader-disabled-color: $disabled-dark; +// scss-docs-end subheader-default-themes + + +// Image thumbnails + +// $thumbnail-padding: .25rem; +// $thumbnail-bg: $body-bg; +// $thumbnail-border-width: $border-width; +// $thumbnail-border-color: $gray-300; +// $thumbnail-border-radius: $border-radius; +// $thumbnail-box-shadow: $box-shadow-sm; + + +// Figures + +// $figure-caption-font-size: $small-font-size; +// $figure-caption-color: $gray-600; + + +// Breadcrumbs +// scss-docs-start breadcrumb-variables +// $breadcrumb-font-size: null; +// $breadcrumb-padding-y: 0; +// $breadcrumb-padding-x: 0; +// $breadcrumb-item-padding-x: .5rem; +// $breadcrumb-margin-bottom: 1rem; +// $breadcrumb-bg: unset; +// $breadcrumb-divider-color: $gray-600; +// $breadcrumb-active-color: $gray-600; +// $breadcrumb-divider: quote("/"); +// $breadcrumb-divider-flipped: $breadcrumb-divider; +// $breadcrumb-border-radius: null; +// scss-docs-end breadcrumb-variables + +// Carousel +// scss-docs-start carousel-variables +// $carousel-control-color: $high-emphasis-light; +// $carousel-control-width: 15%; +// $carousel-control-opacity: .5; +// $carousel-control-hover-opacity: .9; +// $carousel-control-transition: opacity .15s ease; + +// $carousel-indicator-width: 30px; +// $carousel-indicator-height: 3px; +// $carousel-indicator-hit-area-height: 10px; +// $carousel-indicator-spacer: 3px; +// $carousel-indicator-opacity: .5; +// $carousel-indicator-active-bg: $white; +// $carousel-indicator-active-opacity: 1; +// $carousel-indicator-transition: opacity .6s ease; + +// $carousel-caption-width: 70%; +// $carousel-caption-color: $high-emphasis-light; +// $carousel-caption-padding-y: 1.25rem; +// $carousel-caption-spacer: 1.25rem; + +// $carousel-control-icon-width: 2rem; + +// $carousel-control-prev-icon-bg: url("data:image/svg+xml,"); +// $carousel-control-next-icon-bg: url("data:image/svg+xml,"); + +// $carousel-transition-duration: .6s; +// $carousel-transition: transform $carousel-transition-duration ease-in-out; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`) + +// $carousel-dark-indicator-active-bg: $black; +// $carousel-dark-caption-color: $high-emphasis-dark; +// $carousel-dark-control-icon-filter: invert(1) grayscale(100); +// scss-docs-end carousel-variables + +// scss-docs-start sidebar-variables +// $sidebar-width: 16rem; +// $sidebar-widths: ( +// sm: 12rem, +// lg: 20rem, +// xl: 24rem +// ); +// $sidebar-padding-y: 0; +// $sidebar-padding-x: 0; +// $sidebar-color: $high-emphasis-light; +// $sidebar-bg: $gray-base; +// $sidebar-border-width: 0; +// $sidebar-border-color: transparent; +// $sidebar-transition: margin-left .15s, margin-right .15s, box-shadow .075s, transform .15s, width .15s, z-index 0s ease .15s; +// $sidebar-reliant-transition: width .15s; + +// $sidebar-brand-height: 4rem; +// $sidebar-brand-color: $high-emphasis-light; +// $sidebar-brand-bg: rgba($black, .2); + +// $sidebar-header-height: 4rem; +// $sidebar-header-padding-y: .75rem; +// $sidebar-header-padding-x: 1rem; +// $sidebar-header-bg: rgba($black, .2); +// $sidebar-header-height-transition: height .15s, padding .15s; + +// $sidebar-narrow-width: 4rem; + +// $sidebar-backdrop-bg: $black; +// $sidebar-backdrop-opacity: .5; +// $sidebar-backdrop-transition: opacity .15s linear; + +// $sidebar-nav-title-padding-y: .75rem; +// $sidebar-nav-title-padding-x: 1rem; +// $sidebar-nav-title-margin-top: 1rem; +// $sidebar-nav-title-color: $medium-emphasis-light; +// $sidebar-nav-title-transition: height .15s, margin .15s; + +// $sidebar-nav-link-padding-y: .8445rem; +// $sidebar-nav-link-padding-x: 1rem; +// $sidebar-nav-link-color: $medium-emphasis-light; +// $sidebar-nav-link-bg: transparent; +// $sidebar-nav-link-transition: background .15s ease, color .15s ease; +// $sidebar-nav-link-icon-color: $medium-emphasis-light; + +// $sidebar-nav-link-hover-color: $high-emphasis-light; +// $sidebar-nav-link-hover-bg: rgba($white, .05); +// $sidebar-nav-link-hover-icon-color: $high-emphasis-light; + +// $sidebar-nav-link-active-color: $high-emphasis-light; +// $sidebar-nav-link-active-bg: rgba($white, .05); +// $sidebar-nav-link-active-icon-color: $high-emphasis-light; + +// $sidebar-nav-link-disabled-color: $disabled-light; +// $sidebar-nav-link-disabled-icon-color: $sidebar-nav-link-icon-color; + +// $sidebar-nav-icon-width: 4rem; +// $sidebar-nav-icon-height: 1.25rem; +// $sidebar-nav-icon-font-size: $sidebar-nav-icon-height; + +// $sidebar-nav-group-bg: rgba(0, 0, 0, .2); +// $sidebar-nav-group-transition: background .15s ease-in-out; +// $sidebar-nav-group-items-transition: height .15s ease; +// $sidebar-nav-group-toggle-show-color: $sidebar-nav-link-color; + +// $sidebar-nav-group-indicator-color: $medium-emphasis-light; +// $sidebar-nav-group-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-group-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// $sidebar-nav-group-indicator-hover-color: $sidebar-nav-link-hover-color; +// $sidebar-nav-group-indicator-hover: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-group-indicator-hover-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// $sidebar-nav-group-indicator-transition: transform .15s; + +// $sidebar-footer-height: auto; +// $sidebar-footer-padding-y: .75rem; +// $sidebar-footer-padding-x: 1rem; +// $sidebar-footer-bg: rgba($black, .2); +// $sidebar-footer-height-transition: height .15s, padding .15s; + +// $sidebar-toggler-height: 3rem; +// $sidebar-toggler-bg: rgba($black, .2); +// $sidebar-toggler-transition: transform .15s; + +// $sidebar-toggler-indicator-width: 4rem; +// $sidebar-toggler-indicator-height: 3rem; +// $sidebar-toggler-indicator-color: $gray-600; +// $sidebar-toggler-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// $sidebar-toggler-hover-bg: rgba(0, 0, 0, .3); +// $sidebar-toggler-hover-indicator-color: $sidebar-nav-link-hover-color; +// $sidebar-toggler-hover-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-hover-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23"); +// scss-docs-end sidebar-variables + +// Footer +// scss-docs-start footer-variables +// $footer-min-height: 3rem; +// $footer-padding-y: $spacer / 2; +// $footer-padding-x: $spacer; +// $footer-bg: $gray-100; +// $footer-color: $body-color; +// $footer-border-width: 1px; +// $footer-border-color: $border-color; +// scss-docs-end footer-variables + +// Spinners +// scss-docs-start spinner-variables +// $spinner-width: 2rem; +// $spinner-height: $spinner-width; +// $spinner-border-width: .25em; +// $spinner-animation-speed: .75s; + +// $spinner-width-sm: 1rem; +// $spinner-height-sm: $spinner-width-sm; +// $spinner-border-width-sm: .2em; +// scss-docs-end spinner-variables + + +// Close +// scss-docs-start close-variables +// $btn-close-width: 1em; +// $btn-close-height: $btn-close-width; +// $btn-close-padding-x: .25em; +// $btn-close-padding-y: $btn-close-padding-x; +// $btn-close-color: $high-emphasis-dark; +// $btn-close-bg: url("data:image/svg+xml,"); +// $btn-close-focus-shadow: $input-btn-focus-box-shadow; +// $btn-close-opacity: .5; +// $btn-close-hover-opacity: .75; +// $btn-close-focus-opacity: 1; +// $btn-close-disabled-opacity: .25; +// $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); +// scss-docs-end close-variables + +// Code + +// $code-font-size: $small-font-size; +// $code-color: $pink; + +// $kbd-padding-y: .2rem; +// $kbd-padding-x: .4rem; +// $kbd-font-size: $code-font-size; +// $kbd-color: $high-emphasis-light; +// $kbd-bg: $gray-900; + +// $pre-color: unset; diff --git a/dashboard-front/coreui/src/scss/styles.scss b/dashboard-front/coreui/src/scss/styles.scss new file mode 100644 index 00000000..466073dd --- /dev/null +++ b/dashboard-front/coreui/src/scss/styles.scss @@ -0,0 +1,26 @@ +/* You can add global styles to this file, and also import other style files */ +// If you want to override variables do it here +@import "variables"; + +$enable-ltr: true; +$enable-rtl: true; + +// Import styles with default layout. +@import "@coreui/coreui/scss/coreui"; + +// Import Chart.js custom tooltips styles +@import "@coreui/chartjs/scss/coreui-chartjs"; + +// perfect scrollbar theming for use with [perfectScrollbar] directive +//@import '~perfect-scrollbar/css/perfect-scrollbar.css'; + +@import "layout"; + +// Some temp fixes +@import "fixes"; + +// Prism.js +@import "examples"; + +// If you want to add something do it here +@import "custom"; diff --git a/dashboard-front/coreui/src/test.ts b/dashboard-front/coreui/src/test.ts new file mode 100644 index 00000000..2000d11d --- /dev/null +++ b/dashboard-front/coreui/src/test.ts @@ -0,0 +1,27 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + (id: string): T; + keys(): string[]; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), + { teardown: { destroyAfterEach: true }}, +); + +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/dashboard-front/coreui/tsconfig.app.json b/dashboard-front/coreui/tsconfig.app.json new file mode 100644 index 00000000..dd63637a --- /dev/null +++ b/dashboard-front/coreui/tsconfig.app.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [], + "paths": { + "@docs-components/*": ["./src/components/*"] + } + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/dashboard-front/coreui/tsconfig.json b/dashboard-front/coreui/tsconfig.json new file mode 100644 index 00000000..91922226 --- /dev/null +++ b/dashboard-front/coreui/tsconfig.json @@ -0,0 +1,37 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "es2020", + "module": "es2020", + "lib": [ + "es2020", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + }, + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.spec.json" }, + ] +} diff --git a/dashboard-front/coreui/tsconfig.spec.json b/dashboard-front/coreui/tsconfig.spec.json new file mode 100644 index 00000000..092345b0 --- /dev/null +++ b/dashboard-front/coreui/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +}