From edbf304790b162fe3db6e0c6a16878636df64618 Mon Sep 17 00:00:00 2001 From: Victor Batischev Date: Wed, 14 Feb 2024 18:02:53 +0300 Subject: [PATCH] init --- .eslintrc.js | 20 + .fantasticonrc.js | 41 + .gitignore | 52 + .prettierrc.json | 10 + .vscode/extensions.json | 8 + README.md | 46 + env.d.ts | 1 + index.html | 12 + package-lock.json | 8278 +++++++++++++++++ package.json | 57 + public/fonts/NeueHaasUnica-Black.woff | Bin 0 -> 61080 bytes public/fonts/NeueHaasUnica-Black.woff2 | Bin 0 -> 42680 bytes public/fonts/NeueHaasUnica-Bold.woff | Bin 0 -> 60540 bytes public/fonts/NeueHaasUnica-Bold.woff2 | Bin 0 -> 41800 bytes public/fonts/NeueHaasUnica-Medium.woff | Bin 0 -> 61420 bytes public/fonts/NeueHaasUnica-Medium.woff2 | Bin 0 -> 42768 bytes public/fonts/NeueHaasUnica-Regular.woff | Bin 0 -> 61744 bytes public/fonts/NeueHaasUnica-Regular.woff2 | Bin 0 -> 42956 bytes public/fonts/TinkoffSans-Bold.woff | Bin 0 -> 35164 bytes public/fonts/TinkoffSans-Bold.woff2 | Bin 0 -> 24704 bytes public/fonts/icons/icons.css | 56 + public/fonts/icons/icons.woff | Bin 0 -> 6460 bytes public/fonts/icons/icons.woff2 | Bin 0 -> 5488 bytes public/images/default/avatar.png | Bin 0 -> 35316 bytes public/images/default/circle-matrix-1.svg | 36 + public/images/icons/google.svg | 6 + public/images/icons/vk.svg | 16 + public/images/icons/yandex.svg | 4 + src/app/App.vue | 34 + src/app/configs.ts | 7 + src/app/createApp.ts | 143 + src/app/directives/clickOutside.ts | 16 + src/app/directives/index.ts | 1 + src/app/main.ts | 16 + src/app/providers/router/index.ts | 44 + src/app/providers/router/middlewares.ts | 43 + src/app/providers/router/routes.ts | 124 + src/app/styles/index.scss | 16 + src/app/styles/utils/animations.scss | 46 + src/app/styles/utils/common.scss | 121 + src/app/styles/utils/datetimepocker.scss | 76 + src/app/styles/utils/fonts.scss | 6 + src/app/styles/utils/functions.scss | 40 + src/app/styles/utils/icons.scss | 128 + src/app/styles/utils/mixins.scss | 111 + src/app/styles/utils/reset.scss | 571 ++ src/app/styles/utils/toast.scss | 43 + src/app/styles/utils/utils.scss | 8 + src/app/styles/utils/vars/colors.scss | 71 + src/app/styles/utils/vars/other.scss | 11 + src/app/styles/utils/vars/spaces.scss | 0 src/app/styles/utils/vars/typography.scss | 38 + src/entities/entities.scss | 18 + src/entities/index.ts | 3 + src/entities/medical/api/index.ts | 245 + src/entities/medical/index.ts | 3 + src/entities/medical/lib/helpers.ts | 44 + src/entities/medical/lib/index.ts | 2 + src/entities/medical/lib/types.ts | 215 + src/entities/medical/model/index.ts | 1 + src/entities/medical/model/medical.ts | 489 + src/entities/medical/ui/index.ts | 0 src/entities/patient/api/index.ts | 180 + src/entities/patient/index.ts | 4 + src/entities/patient/lib/hooks.ts | 65 + src/entities/patient/lib/index.ts | 2 + src/entities/patient/lib/types.ts | 205 + .../patient/model/converters/index.ts | 2 + .../model/converters/patientsToMyPatients.ts | 20 + .../converters/patientsToRequestsPatients.ts | 19 + src/entities/patient/model/index.ts | 1 + src/entities/patient/model/module/index.ts | 3 + .../patient/model/module/my-patients.ts | 54 + src/entities/patient/model/module/patient.ts | 562 ++ .../patient/model/module/request-patients.ts | 44 + .../patient/ui/EditableCard/EditableCard.scss | 58 + .../patient/ui/EditableCard/EditableCard.vue | 92 + src/entities/patient/ui/EditableCard/index.ts | 3 + .../ui/EditableInput/EditableInput.scss | 20 + .../ui/EditableInput/EditableInput.vue | 43 + .../patient/ui/EditableInput/index.ts | 3 + .../patient/ui/EmptySurvey/EmptySurvey.scss | 20 + .../patient/ui/EmptySurvey/EmptySurvey.vue | 11 + src/entities/patient/ui/EmptySurvey/index.ts | 3 + .../InitialAppointment.scss | 28 + .../InitialAppointment/InitialAppointment.vue | 27 + .../patient/ui/InitialAppointment/index.ts | 5 + .../InitialHealthMatrix.scss | 27 + .../InitialHealthMatrix.vue | 23 + .../patient/ui/InitialHealthMatrix/index.ts | 5 + .../ui/InitialPurpose/InitialPurpose.scss | 24 + .../ui/InitialPurpose/InitialPurpose.vue | 27 + .../patient/ui/InitialPurpose/index.ts | 3 + .../ui/PatientBasicInfo/PatientBasicInfo.scss | 21 + .../ui/PatientBasicInfo/PatientBasicInfo.vue | 133 + .../patient/ui/PatientBasicInfo/index.ts | 5 + .../ui/PatientFilesCard/PatientFilesCard.scss | 64 + .../ui/PatientFilesCard/PatientFilesCard.vue | 54 + .../patient/ui/PatientFilesCard/index.ts | 5 + .../PatientHealthMatrix.scss | 51 + .../PatientHealthMatrix.vue | 54 + .../patient/ui/PatientHealthMatrix/index.ts | 5 + .../PatientNavigation/PatientNavigation.scss | 0 .../PatientNavigation/PatientNavigation.vue | 52 + .../patient/ui/PatientNavigation/index.ts | 5 + .../ui/PatientReminders/PatientReminders.scss | 69 + .../ui/PatientReminders/PatientReminders.vue | 83 + .../patient/ui/PatientReminders/index.ts | 5 + .../ui/PatientRequest/PatientRequest.scss | 10 + .../ui/PatientRequest/PatientRequest.vue | 37 + .../patient/ui/PatientRequest/index.ts | 3 + .../PatientSurveyCard/PatientSurveyCard.scss | 39 + .../PatientSurveyCard/PatientSurveyCard.vue | 93 + .../patient/ui/PatientSurveyCard/index.ts | 5 + .../patient/ui/ProgressBar/ProgressBar.scss | 27 + .../patient/ui/ProgressBar/ProgressBar.vue | 50 + src/entities/patient/ui/ProgressBar/index.ts | 3 + .../QuestionnaireCard/QuestionnaireCard.scss | 27 + .../QuestionnaireCard/QuestionnaireCard.vue | 42 + .../patient/ui/QuestionnaireCard/index.ts | 5 + src/entities/patient/ui/index.ts | 15 + src/entities/user/api/index.ts | 16 + src/entities/user/index.ts | 4 + src/entities/user/lib/index.ts | 1 + src/entities/user/lib/types.ts | 24 + src/entities/user/model/index.ts | 1 + src/entities/user/model/module/index.ts | 19 + .../user/ui/UserAvatar/UserAvatar.scss | 17 + .../user/ui/UserAvatar/UserAvatar.vue | 59 + src/entities/user/ui/UserAvatar/index.ts | 3 + src/entities/user/ui/index.ts | 1 + src/features/auth/api/index.ts | 48 + src/features/auth/index.ts | 3 + src/features/auth/model/index.ts | 1 + src/features/auth/model/module/index.ts | 85 + src/features/auth/ui/LogIn/LogIn.scss | 3 + src/features/auth/ui/LogIn/LogIn.vue | 26 + src/features/auth/ui/LogIn/index.ts | 3 + src/features/auth/ui/LogOut/LogOut.scss | 0 src/features/auth/ui/LogOut/LogOut.vue | 23 + src/features/auth/ui/LogOut/index.ts | 3 + .../auth/ui/Registration/Registration.scss | 6 + .../auth/ui/Registration/Registration.vue | 78 + src/features/auth/ui/Registration/index.ts | 3 + .../Registration/steps/DataStep/DataStep.scss | 25 + .../Registration/steps/DataStep/DataStep.vue | 28 + .../ui/Registration/steps/DataStep/index.ts | 3 + .../steps/EmailStep/EmailStep.scss | 0 .../steps/EmailStep/EmailStep.vue | 34 + .../ui/Registration/steps/EmailStep/index.ts | 3 + .../auth/ui/Registration/steps/index.ts | 2 + src/features/auth/ui/index.ts | 3 + src/features/features.scss | 24 + src/features/index.ts | 3 + src/features/medical/api/index.ts | 33 + src/features/medical/index.ts | 4 + src/features/medical/lib/index.ts | 1 + src/features/medical/lib/types.ts | 12 + src/features/medical/model/calculator.ts | 59 + src/features/medical/model/index.ts | 1 + .../MedicalCalculator/MedicalCalculator.scss | 130 + .../MedicalCalculator/MedicalCalculator.vue | 187 + .../medical/ui/MedicalCalculator/index.ts | 5 + src/features/medical/ui/index.ts | 1 + src/features/patient/api/index.ts | 0 src/features/patient/index.ts | 1 + src/features/patient/model/index.ts | 0 .../ui/AddMediaFiles/AddMediaFiles.scss | 42 + .../ui/AddMediaFiles/AddMediaFiles.vue | 98 + .../patient/ui/AddMediaFiles/index.ts | 3 + .../ui/AddNewAnalysis/AddNewAnalysis.scss | 4 + .../ui/AddNewAnalysis/AddNewAnalysis.vue | 54 + .../patient/ui/AddNewAnalysis/index.ts | 3 + .../ui/AddPreparations/AddPreparations.scss | 97 + .../ui/AddPreparations/AddPreparations.vue | 221 + .../patient/ui/AddPreparations/index.ts | 5 + .../patient/ui/AddPurpose/AddPurpose.scss | 28 + .../patient/ui/AddPurpose/AddPurpose.vue | 34 + src/features/patient/ui/AddPurpose/index.ts | 3 + .../AddTreatmentCourseFiles.scss | 44 + .../AddTreatmentCourseFiles.vue | 51 + .../ui/AddTreatmentCourseFiles/index.ts | 5 + .../ui/DeleteMediaFile/DeleteMediaFile.scss | 5 + .../ui/DeleteMediaFile/DeleteMediaFile.vue | 50 + .../patient/ui/DeleteMediaFile/index.ts | 5 + .../DeleteTreatmentCourse.scss | 0 .../DeleteTreatmentCourse.vue | 29 + .../patient/ui/DeleteTreatmentCourse/index.ts | 5 + .../ui/EditAnalysisDate/EditAnalysisDate.scss | 24 + .../ui/EditAnalysisDate/EditAnalysisDate.vue | 94 + .../patient/ui/EditAnalysisDate/index.ts | 5 + .../EditAppointmentItems.scss | 2 + .../EditAppointmentItems.vue | 20 + .../patient/ui/EditAppointmentItems/index.ts | 5 + .../EditHealthMatrixItems.scss | 134 + .../EditHealthMatrixItems.vue | 142 + .../patient/ui/EditHealthMatrixItems/index.ts | 5 + .../EditPatientAnamnesis.scss | 0 .../EditPatientAnamnesis.vue | 20 + .../patient/ui/EditPatientAnamnesis/index.ts | 5 + .../EditPatientAsking/EditPatientAsking.scss | 0 .../EditPatientAsking/EditPatientAsking.vue | 22 + .../patient/ui/EditPatientAsking/index.ts | 5 + .../EditTreatmentItems.scss | 0 .../EditTreatmentItems/EditTreatmentItems.vue | 32 + .../patient/ui/EditTreatmentItems/index.ts | 5 + .../EditTreatmentTitle.scss | 28 + .../EditTreatmentTitle/EditTreatmentTitle.vue | 56 + .../patient/ui/EditTreatmentTitle/index.ts | 5 + .../EditableAnalysisOptimum.scss | 21 + .../EditableAnalysisOptimum.vue | 66 + .../ui/EditableAnalysisOptimum/index.ts | 5 + .../EditableAnalysisResult.scss | 71 + .../EditableAnalysisResult.vue | 121 + .../ui/EditableAnalysisResult/index.ts | 5 + .../HealthMatrixCircle.scss | 52 + .../HealthMatrixCircle/HealthMatrixCircle.vue | 132 + .../patient/ui/HealthMatrixCircle/index.ts | 5 + .../SearchPurposeLibrary.scss | 0 .../SearchPurposeLibrary.vue | 41 + .../patient/ui/SearchPurposeLibrary/index.ts | 5 + .../patient/ui/SearchSurvey/SearchSurvey.scss | 0 .../patient/ui/SearchSurvey/SearchSurvey.vue | 36 + src/features/patient/ui/SearchSurvey/index.ts | 3 + .../SelectPurposeItem/SelectPurposeItem.scss | 28 + .../SelectPurposeItem/SelectPurposeItem.vue | 36 + .../patient/ui/SelectPurposeItem/index.ts | 5 + .../ToggleTreatmentCourse.scss | 73 + .../ToggleTreatmentCourse.vue | 48 + .../patient/ui/ToggleTreatmentCourse/index.ts | 5 + src/features/patient/ui/index.ts | 21 + src/global.d.ts | 28 + src/pages/calendar/index.ts | 1 + src/pages/calendar/ui/Calendar/Calendar.scss | 0 src/pages/calendar/ui/Calendar/Calendar.vue | 12 + src/pages/calendar/ui/Calendar/index.ts | 3 + src/pages/calendar/ui/index.ts | 1 + src/pages/chat/index.ts | 1 + src/pages/chat/ui/Chat/Chat.scss | 0 src/pages/chat/ui/Chat/Chat.vue | 12 + src/pages/chat/ui/Chat/index.ts | 3 + src/pages/chat/ui/index.ts | 1 + src/pages/index.ts | 7 + src/pages/library/index.ts | 1 + src/pages/library/ui/Library/Library.scss | 0 src/pages/library/ui/Library/Library.vue | 16 + src/pages/library/ui/Library/index.ts | 3 + src/pages/library/ui/index.ts | 1 + src/pages/login/index.ts | 1 + src/pages/login/ui/LoginPage/LoginPage.scss | 26 + src/pages/login/ui/LoginPage/LoginPage.vue | 65 + src/pages/login/ui/LoginPage/index.ts | 3 + src/pages/login/ui/index.ts | 1 + src/pages/pages.scss | 8 + src/pages/patient/index.ts | 1 + src/pages/patient/ui/Patient/Patient.scss | 5 + src/pages/patient/ui/Patient/Patient.vue | 65 + src/pages/patient/ui/Patient/index.ts | 3 + src/pages/patient/ui/index.ts | 1 + src/pages/patients/index.ts | 1 + .../patients/ui/MyPatients/MyPatients.scss | 0 .../patients/ui/MyPatients/MyPatients.vue | 79 + src/pages/patients/ui/MyPatients/index.ts | 3 + .../ui/RequestsPatients/RequestsPatients.scss | 0 .../ui/RequestsPatients/RequestsPatients.vue | 61 + .../patients/ui/RequestsPatients/index.ts | 5 + src/pages/patients/ui/index.ts | 2 + src/pages/profile/ui/Profile/Profile.scss | 0 src/pages/profile/ui/Profile/Profile.vue | 14 + src/pages/profile/ui/Profile/index.ts | 3 + src/pages/profile/ui/index.ts | 1 + src/pages/support/index.ts | 1 + src/pages/support/ui/Support/Support.scss | 0 src/pages/support/ui/Support/Support.vue | 13 + src/pages/support/ui/Support/index.ts | 3 + src/pages/support/ui/index.ts | 1 + src/pages/videochat/index.ts | 1 + .../videochat/ui/Videochat/Videochat.scss | 0 .../videochat/ui/Videochat/Videochat.vue | 12 + src/pages/videochat/ui/Videochat/index.ts | 3 + src/pages/videochat/ui/index.ts | 1 + src/shared/api/index.ts | 20 + src/shared/assets/icons/arrow-down.svg | 1 + src/shared/assets/icons/bell.svg | 5 + src/shared/assets/icons/book-open.svg | 3 + src/shared/assets/icons/calendar.svg | 3 + src/shared/assets/icons/check-circle.svg | 3 + src/shared/assets/icons/close.svg | 3 + src/shared/assets/icons/dots-vertical.svg | 5 + src/shared/assets/icons/file.svg | 5 + .../assets/icons/formatting/arrow-down.svg | 1 + .../assets/icons/formatting/arrow-left.svg | 1 + .../icons/formatting/arrow-narrow-down.svg | 1 + .../formatting/arrow-narrow-up-right.svg | 1 + .../icons/formatting/arrow-narrow-up.svg | 1 + .../assets/icons/formatting/arrow-right.svg | 1 + src/shared/assets/icons/formatting/bell.svg | 1 + .../assets/icons/formatting/book-open.svg | 1 + .../assets/icons/formatting/calculator.svg | 1 + .../assets/icons/formatting/calendar.svg | 1 + src/shared/assets/icons/formatting/camera.svg | 1 + .../assets/icons/formatting/check-circle.svg | 1 + .../assets/icons/formatting/check-heart.svg | 1 + src/shared/assets/icons/formatting/check.svg | 1 + src/shared/assets/icons/formatting/clock.svg | 1 + src/shared/assets/icons/formatting/close.svg | 1 + src/shared/assets/icons/formatting/date.svg | 1 + .../assets/icons/formatting/dots-vertical.svg | 1 + src/shared/assets/icons/formatting/file.svg | 1 + .../assets/icons/formatting/help-circle.svg | 1 + .../assets/icons/formatting/info-circle.svg | 1 + src/shared/assets/icons/formatting/info.svg | 1 + src/shared/assets/icons/formatting/link.svg | 1 + .../assets/icons/formatting/message-text.svg | 1 + .../assets/icons/formatting/pencil-line.svg | 1 + .../assets/icons/formatting/placeholder.svg | 1 + src/shared/assets/icons/formatting/plus.svg | 1 + src/shared/assets/icons/formatting/search.svg | 1 + .../icons/formatting/switch-vertical.svg | 1 + src/shared/assets/icons/formatting/trash.svg | 1 + .../assets/icons/formatting/tui-marker.svg | 1 + .../assets/icons/formatting/user-edit.svg | 1 + .../assets/icons/formatting/user-plus.svg | 1 + src/shared/assets/icons/formatting/user.svg | 1 + .../assets/icons/formatting/users-right.svg | 1 + .../icons/formatting/video-recorder.svg | 1 + .../assets/icons/formatting/x-circle.svg | 1 + src/shared/assets/icons/help-circle.svg | 3 + src/shared/assets/icons/message-text.svg | 3 + src/shared/assets/icons/pencil-line.svg | 5 + src/shared/assets/icons/placeholder.svg | 1 + src/shared/assets/icons/plus.svg | 3 + src/shared/assets/icons/search.svg | 3 + src/shared/assets/icons/trash.svg | 3 + src/shared/assets/icons/user-edit.svg | 3 + src/shared/assets/icons/user-plus.svg | 3 + src/shared/assets/icons/user.svg | 4 + src/shared/assets/icons/users-right.svg | 3 + src/shared/assets/icons/video-recorder.svg | 4 + src/shared/assets/icons/x-circle.svg | 3 + src/shared/index.ts | 5 + src/shared/lib/hooks/index.ts | 2 + src/shared/lib/hooks/useJWT.ts | 18 + src/shared/lib/hooks/usePageTitle.ts | 6 + src/shared/lib/hooks/useWindowSize.ts | 23 + src/shared/lib/index.ts | 2 + src/shared/lib/types/icons.ts | 38 + src/shared/lib/types/index.ts | 3 + src/shared/lib/types/other.ts | 20 + src/shared/lib/types/store.ts | 9 + src/shared/shared.scss | 29 + src/shared/ui/Accordion/Accordion.scss | 43 + src/shared/ui/Accordion/Accordion.vue | 33 + src/shared/ui/Accordion/index.ts | 3 + src/shared/ui/AuthCard/AuthCard.scss | 23 + src/shared/ui/AuthCard/AuthCard.vue | 16 + src/shared/ui/AuthCard/index.ts | 3 + src/shared/ui/AuthForm/AuthForm.scss | 19 + src/shared/ui/AuthForm/AuthForm.vue | 80 + src/shared/ui/AuthForm/index.ts | 3 + src/shared/ui/Button/Button.scss | 110 + src/shared/ui/Button/Button.vue | 81 + src/shared/ui/Button/index.ts | 3 + src/shared/ui/ButtonMenu/ButtonMenu.scss | 43 + src/shared/ui/ButtonMenu/ButtonMenu.vue | 58 + src/shared/ui/ButtonMenu/index.ts | 3 + src/shared/ui/ButtonSocial/ButtonSocial.scss | 24 + src/shared/ui/ButtonSocial/ButtonSocial.vue | 30 + src/shared/ui/ButtonSocial/index.ts | 3 + src/shared/ui/Card/Card.scss | 32 + src/shared/ui/Card/Card.vue | 41 + src/shared/ui/Card/index.ts | 3 + src/shared/ui/CheckBox/CheckBox.scss | 49 + src/shared/ui/CheckBox/CheckBox.vue | 76 + src/shared/ui/CheckBox/index.ts | 3 + src/shared/ui/DataList/DataList.scss | 24 + src/shared/ui/DataList/DataList.vue | 77 + src/shared/ui/DataList/index.ts | 3 + src/shared/ui/DatePicker/DatePicker.scss | 28 + src/shared/ui/DatePicker/DatePicker.vue | 44 + src/shared/ui/DatePicker/index.ts | 3 + src/shared/ui/Dropdown/Dropdown.scss | 40 + src/shared/ui/Dropdown/Dropdown.vue | 21 + src/shared/ui/Dropdown/index.ts | 3 + src/shared/ui/FileCard/FileCard.scss | 15 + src/shared/ui/FileCard/FileCard.vue | 33 + src/shared/ui/FileCard/index.ts | 3 + src/shared/ui/IconBase/IconBase.scss | 40 + src/shared/ui/IconBase/IconBase.vue | 25 + src/shared/ui/IconBase/index.ts | 3 + .../ui/InfinityLoading/InfinityLoading.scss | 1 + .../ui/InfinityLoading/InfinityLoading.vue | 22 + src/shared/ui/InfinityLoading/index.ts | 5 + src/shared/ui/Input/Input.scss | 45 + src/shared/ui/Input/Input.vue | 41 + src/shared/ui/Input/index.ts | 3 + src/shared/ui/InputLink/InputLink.scss | 60 + src/shared/ui/InputLink/InputLink.vue | 75 + src/shared/ui/InputLink/index.ts | 3 + src/shared/ui/Link/Link.scss | 43 + src/shared/ui/Link/Link.vue | 55 + src/shared/ui/Link/index.ts | 3 + src/shared/ui/Logo/Logo.scss | 20 + src/shared/ui/Logo/Logo.vue | 13 + src/shared/ui/Logo/index.ts | 3 + src/shared/ui/MenuItem/MenuItem.scss | 42 + src/shared/ui/MenuItem/MenuItem.vue | 40 + src/shared/ui/MenuItem/index.ts | 3 + src/shared/ui/MenuItemList/MenuItemList.scss | 11 + src/shared/ui/MenuItemList/MenuItemList.vue | 49 + src/shared/ui/MenuItemList/index.ts | 3 + src/shared/ui/RadioBox/RadioBox.scss | 36 + src/shared/ui/RadioBox/RadioBox.vue | 31 + src/shared/ui/RadioBox/index.ts | 3 + src/shared/ui/RadioInput/RadioInput.scss | 58 + src/shared/ui/RadioInput/RadioInput.vue | 36 + src/shared/ui/RadioInput/index.ts | 3 + src/shared/ui/Spinner/Spinner.scss | 30 + src/shared/ui/Spinner/Spinner.vue | 75 + src/shared/ui/Spinner/index.ts | 3 + src/shared/ui/Tabs/Tabs.scss | 46 + src/shared/ui/Tabs/Tabs.vue | 100 + src/shared/ui/Tabs/index.ts | 3 + src/shared/ui/Tag/Tag.scss | 33 + src/shared/ui/Tag/Tag.vue | 25 + src/shared/ui/Tag/index.ts | 3 + src/shared/ui/Textarea/Textarea.scss | 32 + src/shared/ui/Textarea/Textarea.vue | 26 + src/shared/ui/Textarea/index.ts | 3 + src/shared/ui/ToastIcon/ToastIcon.scss | 11 + src/shared/ui/ToastIcon/ToastIcon.vue | 24 + src/shared/ui/ToastIcon/index.ts | 3 + src/shared/ui/Tooltip/Tooltip.scss | 44 + src/shared/ui/Tooltip/Tooltip.vue | 77 + src/shared/ui/Tooltip/index.ts | 3 + .../ui/TransitionFade/TransitionFade.scss | 0 .../ui/TransitionFade/TransitionFade.vue | 9 + src/shared/ui/TransitionFade/index.ts | 3 + src/shared/ui/UserBase/UserBase.scss | 18 + src/shared/ui/UserBase/UserBase.vue | 19 + src/shared/ui/UserBase/index.ts | 3 + src/shared/ui/index.ts | 30 + src/shared/utils/functions/date.ts | 46 + src/shared/utils/functions/declension.ts | 16 + src/shared/utils/functions/getIconSvg.ts | 7 + src/shared/utils/functions/index.ts | 4 + src/shared/utils/functions/other.ts | 7 + src/shared/utils/index.ts | 1 + src/shared/utils/npm/formattingIcons.js | 11 + src/shims-vue.ts | 10 + src/widgets/index.ts | 4 + src/widgets/layouts/index.ts | 1 + .../layouts/ui/PageLayout/PageLayout.scss | 52 + .../layouts/ui/PageLayout/PageLayout.vue | 69 + src/widgets/layouts/ui/PageLayout/index.ts | 3 + src/widgets/layouts/ui/index.ts | 1 + src/widgets/modals/index.ts | 2 + src/widgets/modals/model/index.ts | 48 + .../ui/AnalysisHints/AnalysisHints.scss | 85 + .../modals/ui/AnalysisHints/AnalysisHints.vue | 117 + src/widgets/modals/ui/AnalysisHints/index.ts | 0 .../modals/ui/EditPatient/EditPatient.scss | 22 + .../modals/ui/EditPatient/EditPatient.vue | 145 + src/widgets/modals/ui/EditPatient/index.ts | 3 + .../ModalAddDestination.scss | 43 + .../ModalAddDestination.vue | 100 + .../modals/ui/ModalAddDestination/index.ts | 5 + .../ui/ModalAddReminder/ModalAddReminder.scss | 48 + .../ui/ModalAddReminder/ModalAddReminder.vue | 111 + .../modals/ui/ModalAddReminder/index.ts | 5 + .../modals/ui/ModalDialog/ModalDialog.scss | 3 + .../modals/ui/ModalDialog/ModalDialog.vue | 45 + src/widgets/modals/ui/ModalDialog/index.ts | 3 + .../ui/ModalPopupBase/ModalPopupBase.scss | 12 + .../ui/ModalPopupBase/ModalPopupBase.vue | 12 + src/widgets/modals/ui/ModalPopupBase/index.ts | 3 + .../ModalViewQuestionnaire.scss | 72 + .../ModalViewQuestionnaire.vue | 83 + .../modals/ui/ModalViewQuestionnaire/index.ts | 5 + src/widgets/modals/ui/Modals/Modals.scss | 0 src/widgets/modals/ui/Modals/Modals.vue | 22 + src/widgets/modals/ui/Modals/index.ts | 3 + .../SelectQuestionnaires.scss | 14 + .../SelectQuestionnaires.vue | 54 + .../modals/ui/SelectQuestionnaires/index.ts | 5 + .../modals/ui/ViewOptimums/ViewOptimums.scss | 140 + .../modals/ui/ViewOptimums/ViewOptimums.vue | 183 + src/widgets/modals/ui/ViewOptimums/index.ts | 0 src/widgets/modals/ui/index.ts | 3 + src/widgets/navigation/index.ts | 1 + .../navigation/ui/Sidebar/Sidebar.scss | 54 + src/widgets/navigation/ui/Sidebar/Sidebar.vue | 84 + src/widgets/navigation/ui/Sidebar/index.ts | 3 + src/widgets/navigation/ui/index.ts | 1 + src/widgets/patient/index.ts | 1 + .../PatientAnalyzeCard.scss | 106 + .../PatientAnalyzeCard/PatientAnalyzeCard.vue | 205 + .../patient/ui/PatientAnalyzeCard/index.ts | 5 + .../PatientAnalyzesStep.scss | 27 + .../PatientAnalyzesStep.vue | 65 + .../patient/ui/PatientAnalyzesStep/index.ts | 5 + .../PatientAppointment.scss | 89 + .../PatientAppointment/PatientAppointment.vue | 182 + .../patient/ui/PatientAppointment/index.ts | 5 + .../ui/PatientFilesStep/PatientFilesStep.scss | 63 + .../ui/PatientFilesStep/PatientFilesStep.vue | 50 + .../patient/ui/PatientFilesStep/index.ts | 5 + .../PatientHealthMatrixStep.scss | 179 + .../PatientHealthMatrixStep.vue | 233 + .../ui/PatientHealthMatrixStep/index.ts | 5 + .../ui/PatientMainStep/PatientMainStep.scss | 43 + .../ui/PatientMainStep/PatientMainStep.vue | 45 + .../patient/ui/PatientMainStep/index.ts | 5 + .../PatientPurposeContent.scss | 11 + .../PatientPurposeContent.vue | 97 + .../patient/ui/PatientPurposeContent/index.ts | 5 + .../PatientPurposeStep.scss | 65 + .../PatientPurposeStep/PatientPurposeStep.vue | 113 + .../patient/ui/PatientPurposeStep/index.ts | 5 + .../PatientQuestionnaireStep.scss | 30 + .../PatientQuestionnaireStep.vue | 134 + .../ui/PatientQuestionnaireStep/index.ts | 5 + .../patient/ui/PatientTable/PatientTable.scss | 109 + .../patient/ui/PatientTable/PatientTable.vue | 168 + src/widgets/patient/ui/PatientTable/data.ts | 104 + src/widgets/patient/ui/PatientTable/index.ts | 3 + src/widgets/patient/ui/index.ts | 10 + src/widgets/widgets.scss | 28 + tsconfig.app.json | 23 + tsconfig.json | 11 + tsconfig.node.json | 16 + vite.config.ts | 17 + 532 files changed, 24353 insertions(+) create mode 100644 .eslintrc.js create mode 100644 .fantasticonrc.js create mode 100644 .gitignore create mode 100644 .prettierrc.json create mode 100644 .vscode/extensions.json create mode 100644 README.md create mode 100644 env.d.ts create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/fonts/NeueHaasUnica-Black.woff create mode 100644 public/fonts/NeueHaasUnica-Black.woff2 create mode 100644 public/fonts/NeueHaasUnica-Bold.woff create mode 100644 public/fonts/NeueHaasUnica-Bold.woff2 create mode 100644 public/fonts/NeueHaasUnica-Medium.woff create mode 100644 public/fonts/NeueHaasUnica-Medium.woff2 create mode 100644 public/fonts/NeueHaasUnica-Regular.woff create mode 100644 public/fonts/NeueHaasUnica-Regular.woff2 create mode 100644 public/fonts/TinkoffSans-Bold.woff create mode 100644 public/fonts/TinkoffSans-Bold.woff2 create mode 100644 public/fonts/icons/icons.css create mode 100644 public/fonts/icons/icons.woff create mode 100644 public/fonts/icons/icons.woff2 create mode 100644 public/images/default/avatar.png create mode 100644 public/images/default/circle-matrix-1.svg create mode 100644 public/images/icons/google.svg create mode 100644 public/images/icons/vk.svg create mode 100644 public/images/icons/yandex.svg create mode 100644 src/app/App.vue create mode 100644 src/app/configs.ts create mode 100644 src/app/createApp.ts create mode 100644 src/app/directives/clickOutside.ts create mode 100644 src/app/directives/index.ts create mode 100644 src/app/main.ts create mode 100644 src/app/providers/router/index.ts create mode 100644 src/app/providers/router/middlewares.ts create mode 100644 src/app/providers/router/routes.ts create mode 100644 src/app/styles/index.scss create mode 100644 src/app/styles/utils/animations.scss create mode 100644 src/app/styles/utils/common.scss create mode 100644 src/app/styles/utils/datetimepocker.scss create mode 100644 src/app/styles/utils/fonts.scss create mode 100644 src/app/styles/utils/functions.scss create mode 100644 src/app/styles/utils/icons.scss create mode 100644 src/app/styles/utils/mixins.scss create mode 100644 src/app/styles/utils/reset.scss create mode 100644 src/app/styles/utils/toast.scss create mode 100644 src/app/styles/utils/utils.scss create mode 100644 src/app/styles/utils/vars/colors.scss create mode 100644 src/app/styles/utils/vars/other.scss create mode 100644 src/app/styles/utils/vars/spaces.scss create mode 100644 src/app/styles/utils/vars/typography.scss create mode 100644 src/entities/entities.scss create mode 100644 src/entities/index.ts create mode 100644 src/entities/medical/api/index.ts create mode 100644 src/entities/medical/index.ts create mode 100644 src/entities/medical/lib/helpers.ts create mode 100644 src/entities/medical/lib/index.ts create mode 100644 src/entities/medical/lib/types.ts create mode 100644 src/entities/medical/model/index.ts create mode 100644 src/entities/medical/model/medical.ts create mode 100644 src/entities/medical/ui/index.ts create mode 100644 src/entities/patient/api/index.ts create mode 100644 src/entities/patient/index.ts create mode 100644 src/entities/patient/lib/hooks.ts create mode 100644 src/entities/patient/lib/index.ts create mode 100644 src/entities/patient/lib/types.ts create mode 100644 src/entities/patient/model/converters/index.ts create mode 100644 src/entities/patient/model/converters/patientsToMyPatients.ts create mode 100644 src/entities/patient/model/converters/patientsToRequestsPatients.ts create mode 100644 src/entities/patient/model/index.ts create mode 100644 src/entities/patient/model/module/index.ts create mode 100644 src/entities/patient/model/module/my-patients.ts create mode 100644 src/entities/patient/model/module/patient.ts create mode 100644 src/entities/patient/model/module/request-patients.ts create mode 100644 src/entities/patient/ui/EditableCard/EditableCard.scss create mode 100644 src/entities/patient/ui/EditableCard/EditableCard.vue create mode 100644 src/entities/patient/ui/EditableCard/index.ts create mode 100644 src/entities/patient/ui/EditableInput/EditableInput.scss create mode 100644 src/entities/patient/ui/EditableInput/EditableInput.vue create mode 100644 src/entities/patient/ui/EditableInput/index.ts create mode 100644 src/entities/patient/ui/EmptySurvey/EmptySurvey.scss create mode 100644 src/entities/patient/ui/EmptySurvey/EmptySurvey.vue create mode 100644 src/entities/patient/ui/EmptySurvey/index.ts create mode 100644 src/entities/patient/ui/InitialAppointment/InitialAppointment.scss create mode 100644 src/entities/patient/ui/InitialAppointment/InitialAppointment.vue create mode 100644 src/entities/patient/ui/InitialAppointment/index.ts create mode 100644 src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.scss create mode 100644 src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.vue create mode 100644 src/entities/patient/ui/InitialHealthMatrix/index.ts create mode 100644 src/entities/patient/ui/InitialPurpose/InitialPurpose.scss create mode 100644 src/entities/patient/ui/InitialPurpose/InitialPurpose.vue create mode 100644 src/entities/patient/ui/InitialPurpose/index.ts create mode 100644 src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.scss create mode 100644 src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.vue create mode 100644 src/entities/patient/ui/PatientBasicInfo/index.ts create mode 100644 src/entities/patient/ui/PatientFilesCard/PatientFilesCard.scss create mode 100644 src/entities/patient/ui/PatientFilesCard/PatientFilesCard.vue create mode 100644 src/entities/patient/ui/PatientFilesCard/index.ts create mode 100644 src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.scss create mode 100644 src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.vue create mode 100644 src/entities/patient/ui/PatientHealthMatrix/index.ts create mode 100644 src/entities/patient/ui/PatientNavigation/PatientNavigation.scss create mode 100644 src/entities/patient/ui/PatientNavigation/PatientNavigation.vue create mode 100644 src/entities/patient/ui/PatientNavigation/index.ts create mode 100644 src/entities/patient/ui/PatientReminders/PatientReminders.scss create mode 100644 src/entities/patient/ui/PatientReminders/PatientReminders.vue create mode 100644 src/entities/patient/ui/PatientReminders/index.ts create mode 100644 src/entities/patient/ui/PatientRequest/PatientRequest.scss create mode 100644 src/entities/patient/ui/PatientRequest/PatientRequest.vue create mode 100644 src/entities/patient/ui/PatientRequest/index.ts create mode 100644 src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.scss create mode 100644 src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.vue create mode 100644 src/entities/patient/ui/PatientSurveyCard/index.ts create mode 100644 src/entities/patient/ui/ProgressBar/ProgressBar.scss create mode 100644 src/entities/patient/ui/ProgressBar/ProgressBar.vue create mode 100644 src/entities/patient/ui/ProgressBar/index.ts create mode 100644 src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.scss create mode 100644 src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.vue create mode 100644 src/entities/patient/ui/QuestionnaireCard/index.ts create mode 100644 src/entities/patient/ui/index.ts create mode 100644 src/entities/user/api/index.ts create mode 100644 src/entities/user/index.ts create mode 100644 src/entities/user/lib/index.ts create mode 100644 src/entities/user/lib/types.ts create mode 100644 src/entities/user/model/index.ts create mode 100644 src/entities/user/model/module/index.ts create mode 100644 src/entities/user/ui/UserAvatar/UserAvatar.scss create mode 100644 src/entities/user/ui/UserAvatar/UserAvatar.vue create mode 100644 src/entities/user/ui/UserAvatar/index.ts create mode 100644 src/entities/user/ui/index.ts create mode 100644 src/features/auth/api/index.ts create mode 100644 src/features/auth/index.ts create mode 100644 src/features/auth/model/index.ts create mode 100644 src/features/auth/model/module/index.ts create mode 100644 src/features/auth/ui/LogIn/LogIn.scss create mode 100644 src/features/auth/ui/LogIn/LogIn.vue create mode 100644 src/features/auth/ui/LogIn/index.ts create mode 100644 src/features/auth/ui/LogOut/LogOut.scss create mode 100644 src/features/auth/ui/LogOut/LogOut.vue create mode 100644 src/features/auth/ui/LogOut/index.ts create mode 100644 src/features/auth/ui/Registration/Registration.scss create mode 100644 src/features/auth/ui/Registration/Registration.vue create mode 100644 src/features/auth/ui/Registration/index.ts create mode 100644 src/features/auth/ui/Registration/steps/DataStep/DataStep.scss create mode 100644 src/features/auth/ui/Registration/steps/DataStep/DataStep.vue create mode 100644 src/features/auth/ui/Registration/steps/DataStep/index.ts create mode 100644 src/features/auth/ui/Registration/steps/EmailStep/EmailStep.scss create mode 100644 src/features/auth/ui/Registration/steps/EmailStep/EmailStep.vue create mode 100644 src/features/auth/ui/Registration/steps/EmailStep/index.ts create mode 100644 src/features/auth/ui/Registration/steps/index.ts create mode 100644 src/features/auth/ui/index.ts create mode 100644 src/features/features.scss create mode 100644 src/features/index.ts create mode 100644 src/features/medical/api/index.ts create mode 100644 src/features/medical/index.ts create mode 100644 src/features/medical/lib/index.ts create mode 100644 src/features/medical/lib/types.ts create mode 100644 src/features/medical/model/calculator.ts create mode 100644 src/features/medical/model/index.ts create mode 100644 src/features/medical/ui/MedicalCalculator/MedicalCalculator.scss create mode 100644 src/features/medical/ui/MedicalCalculator/MedicalCalculator.vue create mode 100644 src/features/medical/ui/MedicalCalculator/index.ts create mode 100644 src/features/medical/ui/index.ts create mode 100644 src/features/patient/api/index.ts create mode 100644 src/features/patient/index.ts create mode 100644 src/features/patient/model/index.ts create mode 100644 src/features/patient/ui/AddMediaFiles/AddMediaFiles.scss create mode 100644 src/features/patient/ui/AddMediaFiles/AddMediaFiles.vue create mode 100644 src/features/patient/ui/AddMediaFiles/index.ts create mode 100644 src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.scss create mode 100644 src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.vue create mode 100644 src/features/patient/ui/AddNewAnalysis/index.ts create mode 100644 src/features/patient/ui/AddPreparations/AddPreparations.scss create mode 100644 src/features/patient/ui/AddPreparations/AddPreparations.vue create mode 100644 src/features/patient/ui/AddPreparations/index.ts create mode 100644 src/features/patient/ui/AddPurpose/AddPurpose.scss create mode 100644 src/features/patient/ui/AddPurpose/AddPurpose.vue create mode 100644 src/features/patient/ui/AddPurpose/index.ts create mode 100644 src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.scss create mode 100644 src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.vue create mode 100644 src/features/patient/ui/AddTreatmentCourseFiles/index.ts create mode 100644 src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.scss create mode 100644 src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.vue create mode 100644 src/features/patient/ui/DeleteMediaFile/index.ts create mode 100644 src/features/patient/ui/DeleteTreatmentCourse/DeleteTreatmentCourse.scss create mode 100644 src/features/patient/ui/DeleteTreatmentCourse/DeleteTreatmentCourse.vue create mode 100644 src/features/patient/ui/DeleteTreatmentCourse/index.ts create mode 100644 src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.scss create mode 100644 src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.vue create mode 100644 src/features/patient/ui/EditAnalysisDate/index.ts create mode 100644 src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.scss create mode 100644 src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.vue create mode 100644 src/features/patient/ui/EditAppointmentItems/index.ts create mode 100644 src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.scss create mode 100644 src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.vue create mode 100644 src/features/patient/ui/EditHealthMatrixItems/index.ts create mode 100644 src/features/patient/ui/EditPatientAnamnesis/EditPatientAnamnesis.scss create mode 100644 src/features/patient/ui/EditPatientAnamnesis/EditPatientAnamnesis.vue create mode 100644 src/features/patient/ui/EditPatientAnamnesis/index.ts create mode 100644 src/features/patient/ui/EditPatientAsking/EditPatientAsking.scss create mode 100644 src/features/patient/ui/EditPatientAsking/EditPatientAsking.vue create mode 100644 src/features/patient/ui/EditPatientAsking/index.ts create mode 100644 src/features/patient/ui/EditTreatmentItems/EditTreatmentItems.scss create mode 100644 src/features/patient/ui/EditTreatmentItems/EditTreatmentItems.vue create mode 100644 src/features/patient/ui/EditTreatmentItems/index.ts create mode 100644 src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.scss create mode 100644 src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.vue create mode 100644 src/features/patient/ui/EditTreatmentTitle/index.ts create mode 100644 src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.scss create mode 100644 src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.vue create mode 100644 src/features/patient/ui/EditableAnalysisOptimum/index.ts create mode 100644 src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.scss create mode 100644 src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.vue create mode 100644 src/features/patient/ui/EditableAnalysisResult/index.ts create mode 100644 src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.scss create mode 100644 src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.vue create mode 100644 src/features/patient/ui/HealthMatrixCircle/index.ts create mode 100644 src/features/patient/ui/SearchPurposeLibrary/SearchPurposeLibrary.scss create mode 100644 src/features/patient/ui/SearchPurposeLibrary/SearchPurposeLibrary.vue create mode 100644 src/features/patient/ui/SearchPurposeLibrary/index.ts create mode 100644 src/features/patient/ui/SearchSurvey/SearchSurvey.scss create mode 100644 src/features/patient/ui/SearchSurvey/SearchSurvey.vue create mode 100644 src/features/patient/ui/SearchSurvey/index.ts create mode 100644 src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.scss create mode 100644 src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.vue create mode 100644 src/features/patient/ui/SelectPurposeItem/index.ts create mode 100644 src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.scss create mode 100644 src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.vue create mode 100644 src/features/patient/ui/ToggleTreatmentCourse/index.ts create mode 100644 src/features/patient/ui/index.ts create mode 100644 src/global.d.ts create mode 100644 src/pages/calendar/index.ts create mode 100644 src/pages/calendar/ui/Calendar/Calendar.scss create mode 100644 src/pages/calendar/ui/Calendar/Calendar.vue create mode 100644 src/pages/calendar/ui/Calendar/index.ts create mode 100644 src/pages/calendar/ui/index.ts create mode 100644 src/pages/chat/index.ts create mode 100644 src/pages/chat/ui/Chat/Chat.scss create mode 100644 src/pages/chat/ui/Chat/Chat.vue create mode 100644 src/pages/chat/ui/Chat/index.ts create mode 100644 src/pages/chat/ui/index.ts create mode 100644 src/pages/index.ts create mode 100644 src/pages/library/index.ts create mode 100644 src/pages/library/ui/Library/Library.scss create mode 100644 src/pages/library/ui/Library/Library.vue create mode 100644 src/pages/library/ui/Library/index.ts create mode 100644 src/pages/library/ui/index.ts create mode 100644 src/pages/login/index.ts create mode 100644 src/pages/login/ui/LoginPage/LoginPage.scss create mode 100644 src/pages/login/ui/LoginPage/LoginPage.vue create mode 100644 src/pages/login/ui/LoginPage/index.ts create mode 100644 src/pages/login/ui/index.ts create mode 100644 src/pages/pages.scss create mode 100644 src/pages/patient/index.ts create mode 100644 src/pages/patient/ui/Patient/Patient.scss create mode 100644 src/pages/patient/ui/Patient/Patient.vue create mode 100644 src/pages/patient/ui/Patient/index.ts create mode 100644 src/pages/patient/ui/index.ts create mode 100644 src/pages/patients/index.ts create mode 100644 src/pages/patients/ui/MyPatients/MyPatients.scss create mode 100644 src/pages/patients/ui/MyPatients/MyPatients.vue create mode 100644 src/pages/patients/ui/MyPatients/index.ts create mode 100644 src/pages/patients/ui/RequestsPatients/RequestsPatients.scss create mode 100644 src/pages/patients/ui/RequestsPatients/RequestsPatients.vue create mode 100644 src/pages/patients/ui/RequestsPatients/index.ts create mode 100644 src/pages/patients/ui/index.ts create mode 100644 src/pages/profile/ui/Profile/Profile.scss create mode 100644 src/pages/profile/ui/Profile/Profile.vue create mode 100644 src/pages/profile/ui/Profile/index.ts create mode 100644 src/pages/profile/ui/index.ts create mode 100644 src/pages/support/index.ts create mode 100644 src/pages/support/ui/Support/Support.scss create mode 100644 src/pages/support/ui/Support/Support.vue create mode 100644 src/pages/support/ui/Support/index.ts create mode 100644 src/pages/support/ui/index.ts create mode 100644 src/pages/videochat/index.ts create mode 100644 src/pages/videochat/ui/Videochat/Videochat.scss create mode 100644 src/pages/videochat/ui/Videochat/Videochat.vue create mode 100644 src/pages/videochat/ui/Videochat/index.ts create mode 100644 src/pages/videochat/ui/index.ts create mode 100644 src/shared/api/index.ts create mode 100644 src/shared/assets/icons/arrow-down.svg create mode 100644 src/shared/assets/icons/bell.svg create mode 100644 src/shared/assets/icons/book-open.svg create mode 100644 src/shared/assets/icons/calendar.svg create mode 100644 src/shared/assets/icons/check-circle.svg create mode 100644 src/shared/assets/icons/close.svg create mode 100644 src/shared/assets/icons/dots-vertical.svg create mode 100644 src/shared/assets/icons/file.svg create mode 100644 src/shared/assets/icons/formatting/arrow-down.svg create mode 100644 src/shared/assets/icons/formatting/arrow-left.svg create mode 100644 src/shared/assets/icons/formatting/arrow-narrow-down.svg create mode 100644 src/shared/assets/icons/formatting/arrow-narrow-up-right.svg create mode 100644 src/shared/assets/icons/formatting/arrow-narrow-up.svg create mode 100644 src/shared/assets/icons/formatting/arrow-right.svg create mode 100644 src/shared/assets/icons/formatting/bell.svg create mode 100644 src/shared/assets/icons/formatting/book-open.svg create mode 100644 src/shared/assets/icons/formatting/calculator.svg create mode 100644 src/shared/assets/icons/formatting/calendar.svg create mode 100644 src/shared/assets/icons/formatting/camera.svg create mode 100644 src/shared/assets/icons/formatting/check-circle.svg create mode 100644 src/shared/assets/icons/formatting/check-heart.svg create mode 100644 src/shared/assets/icons/formatting/check.svg create mode 100644 src/shared/assets/icons/formatting/clock.svg create mode 100644 src/shared/assets/icons/formatting/close.svg create mode 100644 src/shared/assets/icons/formatting/date.svg create mode 100644 src/shared/assets/icons/formatting/dots-vertical.svg create mode 100644 src/shared/assets/icons/formatting/file.svg create mode 100644 src/shared/assets/icons/formatting/help-circle.svg create mode 100644 src/shared/assets/icons/formatting/info-circle.svg create mode 100644 src/shared/assets/icons/formatting/info.svg create mode 100644 src/shared/assets/icons/formatting/link.svg create mode 100644 src/shared/assets/icons/formatting/message-text.svg create mode 100644 src/shared/assets/icons/formatting/pencil-line.svg create mode 100644 src/shared/assets/icons/formatting/placeholder.svg create mode 100644 src/shared/assets/icons/formatting/plus.svg create mode 100644 src/shared/assets/icons/formatting/search.svg create mode 100644 src/shared/assets/icons/formatting/switch-vertical.svg create mode 100644 src/shared/assets/icons/formatting/trash.svg create mode 100644 src/shared/assets/icons/formatting/tui-marker.svg create mode 100644 src/shared/assets/icons/formatting/user-edit.svg create mode 100644 src/shared/assets/icons/formatting/user-plus.svg create mode 100644 src/shared/assets/icons/formatting/user.svg create mode 100644 src/shared/assets/icons/formatting/users-right.svg create mode 100644 src/shared/assets/icons/formatting/video-recorder.svg create mode 100644 src/shared/assets/icons/formatting/x-circle.svg create mode 100644 src/shared/assets/icons/help-circle.svg create mode 100644 src/shared/assets/icons/message-text.svg create mode 100644 src/shared/assets/icons/pencil-line.svg create mode 100644 src/shared/assets/icons/placeholder.svg create mode 100644 src/shared/assets/icons/plus.svg create mode 100644 src/shared/assets/icons/search.svg create mode 100644 src/shared/assets/icons/trash.svg create mode 100644 src/shared/assets/icons/user-edit.svg create mode 100644 src/shared/assets/icons/user-plus.svg create mode 100644 src/shared/assets/icons/user.svg create mode 100644 src/shared/assets/icons/users-right.svg create mode 100644 src/shared/assets/icons/video-recorder.svg create mode 100644 src/shared/assets/icons/x-circle.svg create mode 100644 src/shared/index.ts create mode 100644 src/shared/lib/hooks/index.ts create mode 100644 src/shared/lib/hooks/useJWT.ts create mode 100644 src/shared/lib/hooks/usePageTitle.ts create mode 100644 src/shared/lib/hooks/useWindowSize.ts create mode 100644 src/shared/lib/index.ts create mode 100644 src/shared/lib/types/icons.ts create mode 100644 src/shared/lib/types/index.ts create mode 100644 src/shared/lib/types/other.ts create mode 100644 src/shared/lib/types/store.ts create mode 100644 src/shared/shared.scss create mode 100644 src/shared/ui/Accordion/Accordion.scss create mode 100644 src/shared/ui/Accordion/Accordion.vue create mode 100644 src/shared/ui/Accordion/index.ts create mode 100644 src/shared/ui/AuthCard/AuthCard.scss create mode 100644 src/shared/ui/AuthCard/AuthCard.vue create mode 100644 src/shared/ui/AuthCard/index.ts create mode 100644 src/shared/ui/AuthForm/AuthForm.scss create mode 100644 src/shared/ui/AuthForm/AuthForm.vue create mode 100644 src/shared/ui/AuthForm/index.ts create mode 100644 src/shared/ui/Button/Button.scss create mode 100644 src/shared/ui/Button/Button.vue create mode 100644 src/shared/ui/Button/index.ts create mode 100644 src/shared/ui/ButtonMenu/ButtonMenu.scss create mode 100644 src/shared/ui/ButtonMenu/ButtonMenu.vue create mode 100644 src/shared/ui/ButtonMenu/index.ts create mode 100644 src/shared/ui/ButtonSocial/ButtonSocial.scss create mode 100644 src/shared/ui/ButtonSocial/ButtonSocial.vue create mode 100644 src/shared/ui/ButtonSocial/index.ts create mode 100644 src/shared/ui/Card/Card.scss create mode 100644 src/shared/ui/Card/Card.vue create mode 100644 src/shared/ui/Card/index.ts create mode 100644 src/shared/ui/CheckBox/CheckBox.scss create mode 100644 src/shared/ui/CheckBox/CheckBox.vue create mode 100644 src/shared/ui/CheckBox/index.ts create mode 100644 src/shared/ui/DataList/DataList.scss create mode 100644 src/shared/ui/DataList/DataList.vue create mode 100644 src/shared/ui/DataList/index.ts create mode 100644 src/shared/ui/DatePicker/DatePicker.scss create mode 100644 src/shared/ui/DatePicker/DatePicker.vue create mode 100644 src/shared/ui/DatePicker/index.ts create mode 100644 src/shared/ui/Dropdown/Dropdown.scss create mode 100644 src/shared/ui/Dropdown/Dropdown.vue create mode 100644 src/shared/ui/Dropdown/index.ts create mode 100644 src/shared/ui/FileCard/FileCard.scss create mode 100644 src/shared/ui/FileCard/FileCard.vue create mode 100644 src/shared/ui/FileCard/index.ts create mode 100644 src/shared/ui/IconBase/IconBase.scss create mode 100644 src/shared/ui/IconBase/IconBase.vue create mode 100644 src/shared/ui/IconBase/index.ts create mode 100644 src/shared/ui/InfinityLoading/InfinityLoading.scss create mode 100644 src/shared/ui/InfinityLoading/InfinityLoading.vue create mode 100644 src/shared/ui/InfinityLoading/index.ts create mode 100644 src/shared/ui/Input/Input.scss create mode 100644 src/shared/ui/Input/Input.vue create mode 100644 src/shared/ui/Input/index.ts create mode 100644 src/shared/ui/InputLink/InputLink.scss create mode 100644 src/shared/ui/InputLink/InputLink.vue create mode 100644 src/shared/ui/InputLink/index.ts create mode 100644 src/shared/ui/Link/Link.scss create mode 100644 src/shared/ui/Link/Link.vue create mode 100644 src/shared/ui/Link/index.ts create mode 100644 src/shared/ui/Logo/Logo.scss create mode 100644 src/shared/ui/Logo/Logo.vue create mode 100644 src/shared/ui/Logo/index.ts create mode 100644 src/shared/ui/MenuItem/MenuItem.scss create mode 100644 src/shared/ui/MenuItem/MenuItem.vue create mode 100644 src/shared/ui/MenuItem/index.ts create mode 100644 src/shared/ui/MenuItemList/MenuItemList.scss create mode 100644 src/shared/ui/MenuItemList/MenuItemList.vue create mode 100644 src/shared/ui/MenuItemList/index.ts create mode 100644 src/shared/ui/RadioBox/RadioBox.scss create mode 100644 src/shared/ui/RadioBox/RadioBox.vue create mode 100644 src/shared/ui/RadioBox/index.ts create mode 100644 src/shared/ui/RadioInput/RadioInput.scss create mode 100644 src/shared/ui/RadioInput/RadioInput.vue create mode 100644 src/shared/ui/RadioInput/index.ts create mode 100644 src/shared/ui/Spinner/Spinner.scss create mode 100644 src/shared/ui/Spinner/Spinner.vue create mode 100644 src/shared/ui/Spinner/index.ts create mode 100644 src/shared/ui/Tabs/Tabs.scss create mode 100644 src/shared/ui/Tabs/Tabs.vue create mode 100644 src/shared/ui/Tabs/index.ts create mode 100644 src/shared/ui/Tag/Tag.scss create mode 100644 src/shared/ui/Tag/Tag.vue create mode 100644 src/shared/ui/Tag/index.ts create mode 100644 src/shared/ui/Textarea/Textarea.scss create mode 100644 src/shared/ui/Textarea/Textarea.vue create mode 100644 src/shared/ui/Textarea/index.ts create mode 100644 src/shared/ui/ToastIcon/ToastIcon.scss create mode 100644 src/shared/ui/ToastIcon/ToastIcon.vue create mode 100644 src/shared/ui/ToastIcon/index.ts create mode 100644 src/shared/ui/Tooltip/Tooltip.scss create mode 100644 src/shared/ui/Tooltip/Tooltip.vue create mode 100644 src/shared/ui/Tooltip/index.ts create mode 100644 src/shared/ui/TransitionFade/TransitionFade.scss create mode 100644 src/shared/ui/TransitionFade/TransitionFade.vue create mode 100644 src/shared/ui/TransitionFade/index.ts create mode 100644 src/shared/ui/UserBase/UserBase.scss create mode 100644 src/shared/ui/UserBase/UserBase.vue create mode 100644 src/shared/ui/UserBase/index.ts create mode 100644 src/shared/ui/index.ts create mode 100644 src/shared/utils/functions/date.ts create mode 100644 src/shared/utils/functions/declension.ts create mode 100644 src/shared/utils/functions/getIconSvg.ts create mode 100644 src/shared/utils/functions/index.ts create mode 100644 src/shared/utils/functions/other.ts create mode 100644 src/shared/utils/index.ts create mode 100644 src/shared/utils/npm/formattingIcons.js create mode 100644 src/shims-vue.ts create mode 100644 src/widgets/index.ts create mode 100644 src/widgets/layouts/index.ts create mode 100644 src/widgets/layouts/ui/PageLayout/PageLayout.scss create mode 100644 src/widgets/layouts/ui/PageLayout/PageLayout.vue create mode 100644 src/widgets/layouts/ui/PageLayout/index.ts create mode 100644 src/widgets/layouts/ui/index.ts create mode 100644 src/widgets/modals/index.ts create mode 100644 src/widgets/modals/model/index.ts create mode 100644 src/widgets/modals/ui/AnalysisHints/AnalysisHints.scss create mode 100644 src/widgets/modals/ui/AnalysisHints/AnalysisHints.vue create mode 100644 src/widgets/modals/ui/AnalysisHints/index.ts create mode 100644 src/widgets/modals/ui/EditPatient/EditPatient.scss create mode 100644 src/widgets/modals/ui/EditPatient/EditPatient.vue create mode 100644 src/widgets/modals/ui/EditPatient/index.ts create mode 100644 src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.scss create mode 100644 src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.vue create mode 100644 src/widgets/modals/ui/ModalAddDestination/index.ts create mode 100644 src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.scss create mode 100644 src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.vue create mode 100644 src/widgets/modals/ui/ModalAddReminder/index.ts create mode 100644 src/widgets/modals/ui/ModalDialog/ModalDialog.scss create mode 100644 src/widgets/modals/ui/ModalDialog/ModalDialog.vue create mode 100644 src/widgets/modals/ui/ModalDialog/index.ts create mode 100644 src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.scss create mode 100644 src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.vue create mode 100644 src/widgets/modals/ui/ModalPopupBase/index.ts create mode 100644 src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.scss create mode 100644 src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.vue create mode 100644 src/widgets/modals/ui/ModalViewQuestionnaire/index.ts create mode 100644 src/widgets/modals/ui/Modals/Modals.scss create mode 100644 src/widgets/modals/ui/Modals/Modals.vue create mode 100644 src/widgets/modals/ui/Modals/index.ts create mode 100644 src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.scss create mode 100644 src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.vue create mode 100644 src/widgets/modals/ui/SelectQuestionnaires/index.ts create mode 100644 src/widgets/modals/ui/ViewOptimums/ViewOptimums.scss create mode 100644 src/widgets/modals/ui/ViewOptimums/ViewOptimums.vue create mode 100644 src/widgets/modals/ui/ViewOptimums/index.ts create mode 100644 src/widgets/modals/ui/index.ts create mode 100644 src/widgets/navigation/index.ts create mode 100644 src/widgets/navigation/ui/Sidebar/Sidebar.scss create mode 100644 src/widgets/navigation/ui/Sidebar/Sidebar.vue create mode 100644 src/widgets/navigation/ui/Sidebar/index.ts create mode 100644 src/widgets/navigation/ui/index.ts create mode 100644 src/widgets/patient/index.ts create mode 100644 src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.scss create mode 100644 src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.vue create mode 100644 src/widgets/patient/ui/PatientAnalyzeCard/index.ts create mode 100644 src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.scss create mode 100644 src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.vue create mode 100644 src/widgets/patient/ui/PatientAnalyzesStep/index.ts create mode 100644 src/widgets/patient/ui/PatientAppointment/PatientAppointment.scss create mode 100644 src/widgets/patient/ui/PatientAppointment/PatientAppointment.vue create mode 100644 src/widgets/patient/ui/PatientAppointment/index.ts create mode 100644 src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.scss create mode 100644 src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.vue create mode 100644 src/widgets/patient/ui/PatientFilesStep/index.ts create mode 100644 src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.scss create mode 100644 src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.vue create mode 100644 src/widgets/patient/ui/PatientHealthMatrixStep/index.ts create mode 100644 src/widgets/patient/ui/PatientMainStep/PatientMainStep.scss create mode 100644 src/widgets/patient/ui/PatientMainStep/PatientMainStep.vue create mode 100644 src/widgets/patient/ui/PatientMainStep/index.ts create mode 100644 src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.scss create mode 100644 src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.vue create mode 100644 src/widgets/patient/ui/PatientPurposeContent/index.ts create mode 100644 src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.scss create mode 100644 src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.vue create mode 100644 src/widgets/patient/ui/PatientPurposeStep/index.ts create mode 100644 src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.scss create mode 100644 src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.vue create mode 100644 src/widgets/patient/ui/PatientQuestionnaireStep/index.ts create mode 100644 src/widgets/patient/ui/PatientTable/PatientTable.scss create mode 100644 src/widgets/patient/ui/PatientTable/PatientTable.vue create mode 100644 src/widgets/patient/ui/PatientTable/data.ts create mode 100644 src/widgets/patient/ui/PatientTable/index.ts create mode 100644 src/widgets/patient/ui/index.ts create mode 100644 src/widgets/widgets.scss create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..e5e2fd0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,20 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + extends: [ + 'plugin:vue/vue3-essential', + 'eslint:recommended', + '@vue/eslint-config-typescript', + '@vue/eslint-config-prettier/skip-formatting', + '@feature-sliced', + ], + rules: { + 'vue/multi-word-component-names': 0, + 'import/order': 'warn', + }, + parserOptions: { + ecmaVersion: 'latest', + }, +} diff --git a/.fantasticonrc.js b/.fantasticonrc.js new file mode 100644 index 0000000..146e211 --- /dev/null +++ b/.fantasticonrc.js @@ -0,0 +1,41 @@ +module.exports = { + inputDir: './src/shared/assets/icons/formatting', // (required) + outputDir: './public/fonts/icons', // (required) + fontTypes: ['woff', 'woff2'], + assetTypes: ['ts', 'css'], + fontsUrl: '/fonts/icons', + normalize: true, + formatOptions: { + json: { + // render the JSON human readable with two spaces indentation (default is none, so minified) + indent: 2, + }, + ts: { + // select what kind of types you want to generate (default `['enum', 'constant', 'literalId', 'literalKey']`) + types: ['literalId'], + // render the types with `'` instead of `"` (default is `"`) + singleQuotes: true, + // customise names used for the generated types and constants + // enumName: 'MyIconType', + // constantName: 'IconsCodes', + literalIdName: 'IconNames', + // literalKeyName: 'IconKey', + }, + }, + // Use a custom Handlebars template + templates: { + // css: './my-custom-tp.css.hbs', + }, + pathOptions: { + ts: './src/shared/lib/types/icons.ts', + // json: './misc/icon-codepoints.json', + css: './src/app/styles/utils/icons.scss', + }, + // getIconId: ({ + // basename, // `string` - Example: 'foo'; + // relativeDirPath, // `string` - Example: 'sub/dir/foo.svg' + // absoluteFilePath, // `string` - Example: '/var/icons/sub/dir/foo.svg' + // relativeFilePath, // `string` - Example: 'foo.svg' + // index, // `number` - Example: `0` + // }) => [index, basename].join('_'), // '0_foo' +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b989c2c --- /dev/null +++ b/.gitignore @@ -0,0 +1,52 @@ +# These are some examples of commonly ignored file patterns. +# You should customize this list as applicable to your project. +# Learn more about .gitignore: +# https://www.atlassian.com/git/tutorials/saving-changes/gitignore + +# Node artifact files +node_modules/ +dist/ + +# Compiled Java class files +*.class + +# Compiled Python bytecode +*.py[cod] + +# Log files +*.log + +# Package files +*.jar + +# Maven +target/ +dist/ + +# JetBrains IDE +.idea/ + +# Unit test reports +TEST*.xml + +# Generated by MacOS +.DS_Store + +# Generated by Windows +Thumbs.db + +# Applications +*.app +*.exe +*.war + +# Large media files +*.mp4 +*.tiff +*.avi +*.flv +*.mov +*.wmv + +# CSSComb config +csscomb.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..6366314 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,10 @@ +{ + "tabWidth": 4, + "bracketSpacing": true, + "singleQuote": true, + "trailingComma": "all", + "semi": false, + "jsxSingleQuote": true, + "arrowParens": "avoid", + "printWidth": 80 +} \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..009a534 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "Vue.volar", + "Vue.vscode-typescript-vue-plugin", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode" + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..05443af --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# vue-health + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +npm run lint +``` diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/index.html b/index.html new file mode 100644 index 0000000..884d757 --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + Vite App + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b895f0e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8278 @@ +{ + "name": "vue-health", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vue-health", + "version": "0.0.0", + "dependencies": { + "@vuepic/vue-datepicker": "^7.4.0", + "axios": "^1.6.1", + "fantasticon": "^2.0.0", + "oslllo-svg-fixer": "^3.0.0", + "pinia": "^2.1.7", + "v3-infinite-loading": "^1.3.1", + "vite-plugin-vue3-bem": "^1.0.12", + "vue": "^3.3.4", + "vue-router": "^4.2.5", + "vue3-bem": "^1.0.8", + "vue3-lazyload": "^0.3.8", + "vue3-toastify": "^0.1.14" + }, + "devDependencies": { + "@feature-sliced/eslint-config": "^0.1.0-beta.6", + "@rushstack/eslint-patch": "^1.3.3", + "@tsconfig/node18": "^18.2.2", + "@types/node": "^18.18.5", + "@vitejs/plugin-vue": "^4.4.0", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/eslint-config-prettier": "^8.0.0", + "@vue/eslint-config-typescript": "^12.0.0", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.49.0", + "eslint-plugin-vue": "^9.17.0", + "node-sass": "^9.0.0", + "npm-run-all2": "^6.1.1", + "prettier": "^3.0.3", + "sass": "^1.69.5", + "sass-loader": "^13.3.2", + "typescript": "~5.2.0", + "vite": "^4.4.11", + "vue-tsc": "^1.8.19" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.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==" + }, + "node_modules/@babel/code-frame": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/compat-data": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", + "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", + "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", + "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", + "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.4", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", + "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", + "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.4", + "@babel/generator": "^7.23.4", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.4", + "@babel/types": "^7.23.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/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/@babel/types": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", + "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@feature-sliced/eslint-config": { + "version": "0.1.0-beta.6", + "resolved": "https://registry.npmjs.org/@feature-sliced/eslint-config/-/eslint-config-0.1.0-beta.6.tgz", + "integrity": "sha512-exhyS6DUvAamLlDGS2ToIdm7YTvo3GJD67QNfziHgJrJqCcViMvCW13gmo6QQwFRpXQj6gUnV3QTgPNzLznIsg==", + "dev": true, + "peerDependencies": { + "eslint": ">=6", + "eslint-plugin-boundaries": ">=2", + "eslint-plugin-import": ">=2" + } + }, + "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==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@jimp/bmp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/core/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==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "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/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "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/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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==", + "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==", + "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==", + "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==", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@resvg/resvg-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.0.tgz", + "integrity": "sha512-Tf3YpbBKcQn991KKcw/vg7vZf98v01seSv6CVxZBbRkL/xyjnoYB6KgrFL6zskT1A4dWC/vg77KyNOW+ePaNlA==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@resvg/resvg-js-android-arm-eabi": "2.6.0", + "@resvg/resvg-js-android-arm64": "2.6.0", + "@resvg/resvg-js-darwin-arm64": "2.6.0", + "@resvg/resvg-js-darwin-x64": "2.6.0", + "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.0", + "@resvg/resvg-js-linux-arm64-gnu": "2.6.0", + "@resvg/resvg-js-linux-arm64-musl": "2.6.0", + "@resvg/resvg-js-linux-x64-gnu": "2.6.0", + "@resvg/resvg-js-linux-x64-musl": "2.6.0", + "@resvg/resvg-js-win32-arm64-msvc": "2.6.0", + "@resvg/resvg-js-win32-ia32-msvc": "2.6.0", + "@resvg/resvg-js-win32-x64-msvc": "2.6.0" + } + }, + "node_modules/@resvg/resvg-js-android-arm-eabi": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.0.tgz", + "integrity": "sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-android-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.6.0.tgz", + "integrity": "sha512-N527f529bjMwYWShZYfBD60dXA4Fux+D695QsHQ93BDYZSHUoOh1CUGUyICevnTxs7VgEl98XpArmUWBZQVMfQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-darwin-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-MabUKLVayEwlPo0mIqAmMt+qESN8LltCvv5+GLgVga1avpUrkxj/fkU1TKm8kQegutUjbP/B0QuMuUr0uhF8ew==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-darwin-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.6.0.tgz", + "integrity": "sha512-zrFetdnSw/suXjmyxSjfDV7i61hahv6DDG6kM7BYN2yJ3Es5+BZtqYZTcIWogPJedYKmzN1YTMWGd/3f0ubFiA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.6.0.tgz", + "integrity": "sha512-sH4gxXt7v7dGwjGyzLwn7SFGvwZG6DQqLaZ11MmzbCwd9Zosy1TnmrMJfn6TJ7RHezmQMgBPi18bl55FZ1AT4A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm64-gnu": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.6.0.tgz", + "integrity": "sha512-fCyMncqCJtrlANADIduYF4IfnWQ295UKib7DAxFXQhBsM9PLDTpizr0qemZcCNadcwSVHnAIzL4tliZhCM8P6A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-ouLjTgBQHQyxLht4FdMPTvuY8xzJigM9EM2Tlu0llWkN1mKyTQrvYWi6TA6XnKdzDJHy7ZLpWpjZi7F5+Pg+Vg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-x64-gnu": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.0.tgz", + "integrity": "sha512-n3zC8DWsvxC1AwxpKFclIPapDFibs5XdIRoV/mcIlxlh0vseW1F49b97F33BtJQRmlntsqqN6GMMqx8byB7B+Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-x64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-n4tasK1HOlAxdTEROgYA1aCfsEKk0UOFDNd/AQTTZlTmCbHKXPq+O8npaaKlwXquxlVK8vrkcWbksbiGqbCAcw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-arm64-msvc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.6.0.tgz", + "integrity": "sha512-X2+EoBJFwDI5LDVb51Sk7ldnVLitMGr9WwU/i21i3fAeAXZb3hM16k67DeTy16OYkT2dk/RfU1tP1wG+rWbz2Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-ia32-msvc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.6.0.tgz", + "integrity": "sha512-L7oevWjQoUgK5W1fCKn0euSVemhDXVhrjtwqpc7MwBKKimYeiOshO1Li1pa8bBt5PESahenhWgdB6lav9O0fEg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-x64-msvc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.6.0.tgz", + "integrity": "sha512-8lJlghb+Unki5AyKgsnFbRJwkEj9r1NpwyuBG8yEJiG1W9eEGl03R3I7bsVa3haof/3J1NlWf0rzSa1G++A2iw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", + "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", + "dev": true + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "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==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", + "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz", + "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz", + "integrity": "sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.10.0", + "@typescript-eslint/type-utils": "6.10.0", + "@typescript-eslint/utils": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.10.0.tgz", + "integrity": "sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.10.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/typescript-estree": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz", + "integrity": "sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz", + "integrity": "sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.10.0", + "@typescript-eslint/utils": "6.10.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", + "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.10.0.tgz", + "integrity": "sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.10.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/typescript-estree": "6.10.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", + "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz", + "integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", + "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@volar/language-core": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.10.tgz", + "integrity": "sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.10.10" + } + }, + "node_modules/@volar/source-map": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.10.tgz", + "integrity": "sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==", + "dev": true, + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.10.tgz", + "integrity": "sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.10.10", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", + "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", + "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "@vue/babel-helper-vue-transform-on": "^1.1.5", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-jsx/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.8.tgz", + "integrity": "sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==", + "dependencies": { + "@babel/parser": "^7.23.0", + "@vue/shared": "3.3.8", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz", + "integrity": "sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==", + "dependencies": { + "@vue/compiler-core": "3.3.8", + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz", + "integrity": "sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==", + "dependencies": { + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.8", + "@vue/compiler-dom": "3.3.8", + "@vue/compiler-ssr": "3.3.8", + "@vue/reactivity-transform": "3.3.8", + "@vue/shared": "3.3.8", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz", + "integrity": "sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==", + "dependencies": { + "@vue/compiler-dom": "3.3.8", + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz", + "integrity": "sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz", + "integrity": "sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "vue-eslint-parser": "^9.3.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core": { + "version": "1.8.22", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.22.tgz", + "integrity": "sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==", + "dev": true, + "dependencies": { + "@volar/language-core": "~1.10.5", + "@volar/source-map": "~1.10.5", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/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/@vue/language-core/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.8.tgz", + "integrity": "sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==", + "dependencies": { + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz", + "integrity": "sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==", + "dependencies": { + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.8", + "@vue/shared": "3.3.8", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.8.tgz", + "integrity": "sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==", + "dependencies": { + "@vue/reactivity": "3.3.8", + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz", + "integrity": "sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==", + "dependencies": { + "@vue/runtime-core": "3.3.8", + "@vue/shared": "3.3.8", + "csstype": "^3.1.2" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.8.tgz", + "integrity": "sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==", + "dependencies": { + "@vue/compiler-ssr": "3.3.8", + "@vue/shared": "3.3.8" + }, + "peerDependencies": { + "vue": "3.3.8" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.8.tgz", + "integrity": "sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, + "node_modules/@vuepic/vue-datepicker": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-7.4.0.tgz", + "integrity": "sha512-dXYzbcnRet9b+Dkh+f8rhMnjj5QXgejJTQp+ZRALgwP2oeli2c8e4VvJ0NVxoc7QTU8D5x5Et8NP51C450Pkvg==", + "dependencies": { + "date-fns": "^2.30.0", + "date-fns-tz": "^1.3.7" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "vue": ">=3.2.0" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", + "engines": { + "node": ">=10.0.0" + } + }, + "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==" + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.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==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "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==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/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==", + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "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==" + }, + "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==", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", + "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.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==" + }, + "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==", + "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/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "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/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + }, + "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/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "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==", + "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-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/bufferstreams": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-3.0.0.tgz", + "integrity": "sha512-Qg0ggJUWJq90vtg4lDsGN9CDWvzBMQxhiEkSOD/sJfYt6BLect3eV1/S6K7SCSKJ34n60rf6U5eUPmQENVE4UA==", + "dependencies": { + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "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": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "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/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "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/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001561", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", + "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "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/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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/chokidar/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/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==" + }, + "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==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "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==" + }, + "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==" + }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "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/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/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/cubic2quad": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz", + "integrity": "sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-fns-tz": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", + "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", + "peerDependencies": { + "date-fns": ">=2.0.0" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "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/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/domino": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", + "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==" + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.578", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.578.tgz", + "integrity": "sha512-V0ZhSu1BQZKfG0yNEL6Dadzik8E1vAzfpVOapdSiT9F6yapEJ3Bk+4tZ4SMPdWiUchCgnM/ByYtBzp5ntzDMIA==", + "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==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "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==", + "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==" + }, + "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/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz", + "integrity": "sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "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/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/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "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/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/fantasticon": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fantasticon/-/fantasticon-2.0.0.tgz", + "integrity": "sha512-6/VpHU4CD4qTJblTRXN0/EvNmGPv8P0enQsBLA8PyFupEKvnxlO9ktZyroj1yynskgbzvce5//BYh5OVKw1MSw==", + "dependencies": { + "change-case": "^4.1.2", + "cli-color": "^2.0.2", + "commander": "^9.4.1", + "glob": "^8.0.3", + "handlebars": "^4.7.7", + "slugify": "^1.6.5", + "svg2ttf": "^6.0.3", + "svgicons2svgfont": "^12.0.0", + "ttf2eot": "^3.1.0", + "ttf2woff": "^3.0.0", + "ttf2woff2": "^4.0.5" + }, + "bin": { + "fantasticon": "bin/fantasticon" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/fantasticon/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/fantasticon/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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-glob/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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "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.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "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/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.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==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true, + "engines": { + "node": ">=0.10.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/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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/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/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globule": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globule/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globule/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "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==" + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "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==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.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==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "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==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.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==", + "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.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "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/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "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==", + "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==" + }, + "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==", + "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==" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "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.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==" + }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/is-wsl/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/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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jimp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.13", + "@jimp/plugins": "^0.16.13", + "@jimp/types": "^0.16.13", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "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-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "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/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/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/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/microbuffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", + "integrity": "sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==" + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "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==", + "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==", + "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==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "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==", + "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==", + "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==", + "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==" + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "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==", + "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==" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "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==", + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "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==", + "optional": true + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "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": ">= 10.12.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.0.tgz", + "integrity": "sha512-PbZERfeFdrHQOOXiAKOY0VPbykZy90ndPKk0d+CFDegTKmWp1VgOTz2xACVbr1BjCWxrQp68CXtvNsveFhqDJg==", + "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/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/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/node-gyp/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/node-gyp/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-gyp/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/node-gyp/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/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/node-sass": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz", + "integrity": "sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "make-fetch-happen": "^10.0.4", + "meow": "^9.0.0", + "nan": "^2.17.0", + "node-gyp": "^8.4.1", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^2.2.1" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=16" + } + }, + "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": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.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/npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0", + "npm": ">= 8" + } + }, + "node_modules/npm-run-all2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-run-all2/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/npm-run-all2/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "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==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/oslllo-potrace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/oslllo-potrace/-/oslllo-potrace-2.0.1.tgz", + "integrity": "sha512-XDsVIUfwXnylngcbecF/6gBHdtFgEnqDt0a9WKqXIo/jPe2AkZkmi6bNaNb9OwlAgoIjy0b1Hi6odPEqztPszg==", + "dependencies": { + "jimp": "^0.16.1" + } + }, + "node_modules/oslllo-svg-fixer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/oslllo-svg-fixer/-/oslllo-svg-fixer-3.0.0.tgz", + "integrity": "sha512-fk0oWpDfWlcZI42EJfwZV2a7K2hbB63big8KBCDdIU/72QUeUw2z41hTRO/YJeNyFwixb6ecmwOVdJuWQ6SMLg==", + "dependencies": { + "ansi-colors": "^4.1.3", + "cli-progress": "^3.12.0", + "fast-glob": "^3.3.1", + "oslllo-potrace": "^2.0.1", + "oslllo-svg2": "^2.0.2", + "oslllo-validator": "^3.1.0", + "piscina": "^4.1.0", + "yargs": "^16.2.0" + }, + "bin": { + "oslllo-svg-fixer": "src/cli.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/oslllo-svg-fixer/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==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/oslllo-svg-fixer/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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/oslllo-svg2": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/oslllo-svg2/-/oslllo-svg2-2.0.2.tgz", + "integrity": "sha512-Pg1e7op02QaGoUWAuAfORj7TrtJuTXFAOm+5Ycq8iBOvcg/0ZZc3Laxj3Ceh3f9Ad8zmt7qvz90amKPLqXjk7g==", + "dependencies": { + "@resvg/resvg-js": "^2.1.0", + "domino": "^2.1.6", + "jimp": "^0.16.1", + "oslllo-validator": "3.1.0" + } + }, + "node_modules/oslllo-validator": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/oslllo-validator/-/oslllo-validator-3.1.0.tgz", + "integrity": "sha512-eqaVuDxnxDO55+pncqTTphbeq6O5XHMyrSfWQoL48mG2rUjr2ZBzvkFkcxIiG3l7IaIY6/L1oX1AJIDdZyzuPQ==", + "dependencies": { + "domino": "^2.1.6", + "validator": "^13.7.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "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-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/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "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==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/piscina": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.2.0.tgz", + "integrity": "sha512-/Yq6CLchvi5UQ6YGeiYHIJQV09VcZ5eYuNVS/YPkpxlxKrB4tEbIyc6j8F5b0jCP6tHdiji1Gos4fapc7q1csg==", + "dependencies": { + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.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==" + }, + "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==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "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/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/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/read-pkg-up/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg-up/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/read-pkg-up/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/read-pkg-up/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/read-pkg-up/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg-up/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/read-pkg-up/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/read-pkg-up/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/read-pkg-up/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.6.0.tgz", + "integrity": "sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "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/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.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": "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/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "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==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/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/run-applescript/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/run-applescript/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/run-applescript/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/run-applescript/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/run-applescript/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/run-applescript/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/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==", + "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/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==", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "node_modules/sass": { + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "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": ">=14.0.0" + } + }, + "node_modules/sass-graph": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", + "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.4.3", + "yargs": "^17.2.1" + }, + "bin": { + "sassgraph": "bin/sassgraph" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "dependencies": { + "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 || ^8.0.0 || ^9.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.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/scss-tokenizer": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", + "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", + "dev": true, + "dependencies": { + "js-base64": "^2.4.9", + "source-map": "^0.7.3" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "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==" + }, + "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/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "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==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "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==", + "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/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "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.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "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==", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stdout-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "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/stdout-stream/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/stdout-stream/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/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==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "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==", + "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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "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/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/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svg2ttf": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-6.0.3.tgz", + "integrity": "sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==", + "dependencies": { + "@xmldom/xmldom": "^0.7.2", + "argparse": "^2.0.1", + "cubic2quad": "^1.2.1", + "lodash": "^4.17.10", + "microbuffer": "^1.0.0", + "svgpath": "^2.1.5" + }, + "bin": { + "svg2ttf": "svg2ttf.js" + } + }, + "node_modules/svgicons2svgfont": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-12.0.0.tgz", + "integrity": "sha512-fjyDkhiG0M1TPBtZzD12QV3yDcG2fUgiqHPOCYzf7hHE40Hl3GhnE6P1njsJCCByhwM7MiufyDW3L7IOR5dg9w==", + "dependencies": { + "commander": "^9.3.0", + "glob": "^8.0.3", + "sax": "^1.2.4", + "svg-pathdata": "^6.0.3" + }, + "bin": { + "svgicons2svgfont": "bin/svgicons2svgfont.js" + }, + "engines": { + "node": ">=16.15.0" + } + }, + "node_modules/svgicons2svgfont/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/svgicons2svgfont/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/svgpath": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.6.0.tgz", + "integrity": "sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==", + "funding": { + "url": "https://github.com/fontello/svg2ttf?sponsor=1" + } + }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "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/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/ttf2eot": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-3.1.0.tgz", + "integrity": "sha512-aHTbcYosNHVqb2Qtt9Xfta77ae/5y0VfdwNLUS6sGBeGr22cX2JDMo/i5h3uuOf+FAD3akYOr17+fYd5NK8aXw==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "ttf2eot": "ttf2eot.js" + } + }, + "node_modules/ttf2woff": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-3.0.0.tgz", + "integrity": "sha512-OvmFcj70PhmAsVQKfC15XoKH55cRWuaRzvr2fpTNhTNer6JBpG8n6vOhRrIgxMjcikyYt88xqYXMMVapJ4Rjvg==", + "dependencies": { + "argparse": "^2.0.1", + "pako": "^1.0.0" + }, + "bin": { + "ttf2woff": "ttf2woff.js" + } + }, + "node_modules/ttf2woff2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-4.0.5.tgz", + "integrity": "sha512-zpoU0NopfjoyVqkFeQ722SyKk/n607mm5OHxuDS/wCCSy82B8H3hHXrezftA2KMbKqfJIjie2lsJHdvPnBGbsw==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "bufferstreams": "^3.0.0", + "nan": "^2.14.2", + "node-gyp": "^9.0.0" + }, + "bin": { + "ttf2woff2": "bin/ttf2woff2.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ttf2woff2/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ttf2woff2/node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.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.13 || ^14.13 || >=16" + } + }, + "node_modules/ttf2woff2/node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "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/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dependencies": { + "pako": "^1.0.5" + } + }, + "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/v3-infinite-loading": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/v3-infinite-loading/-/v3-infinite-loading-1.3.1.tgz", + "integrity": "sha512-Yi/STWDo+jasQSd8sBCta2u5/C75eLWdTyqkUPOcCEWYFzzw0DddYrDfvjB2IEbcvFxNiA4ljBpNLcRLVe2adA==" + }, + "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/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vite": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-vue3-bem": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vite-plugin-vue3-bem/-/vite-plugin-vue3-bem-1.0.12.tgz", + "integrity": "sha512-5wkT0+1NnoHGjr2tB1rs4iHZ5OIYftPdhv7hD79xzxRzSFbWd5bPJK/8p1n4f9QjG2LHWz4jZ9yH+A4zqTHr1Q==", + "dependencies": { + "@vue/compiler-sfc": "^3.2.33", + "magic-string": "^0.26.2" + } + }, + "node_modules/vite-plugin-vue3-bem/node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vue": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.8.tgz", + "integrity": "sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==", + "dependencies": { + "@vue/compiler-dom": "3.3.8", + "@vue/compiler-sfc": "3.3.8", + "@vue/runtime-dom": "3.3.8", + "@vue/server-renderer": "3.3.8", + "@vue/shared": "3.3.8" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", + "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.15", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", + "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.22", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.22.tgz", + "integrity": "sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==", + "dev": true, + "dependencies": { + "@volar/typescript": "~1.10.5", + "@vue/language-core": "1.8.22", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue3-bem": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/vue3-bem/-/vue3-bem-1.0.8.tgz", + "integrity": "sha512-mWJvixhRH0viGrFqji+sjiOsOQB2agbtf3iORZgmKhgp88XOHXxMcuBEKVztHUiNuwiVjyzc6y0hafxgUefCpQ==", + "peerDependencies": { + "@vue/runtime-core": "*" + } + }, + "node_modules/vue3-lazyload": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/vue3-lazyload/-/vue3-lazyload-0.3.8.tgz", + "integrity": "sha512-UiJHRT7mzry102WbhtrRgJh+f8Z8u4Z+H1RU4dvPmQeq7wFSDFxZB9iJOWGihH2FscXN/8rMGLDOQJAmjwqpCg==", + "dependencies": { + "vue-demi": "^0.12.5" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^2.0.0 || >=3.0.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue3-lazyload/node_modules/vue-demi": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz", + "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue3-toastify": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/vue3-toastify/-/vue3-toastify-0.1.14.tgz", + "integrity": "sha512-2wyzMhWq8IjTclL25tqKWknDFdFI1vPueMGZpHNlPWf6TBfxBycBANS+2n4W1xD7tHhX4G6HhCe31sle6OpwYQ==", + "engines": { + "node": ">=16", + "npm": ">=7" + }, + "peerDependencies": { + "vue": ">=3.2.0" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, + "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==", + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "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==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/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/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6ab97cd --- /dev/null +++ b/package.json @@ -0,0 +1,57 @@ +{ + "name": "vue-health", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "format": "prettier --write src/", + "format-icons": "node src/shared/utils/npm/formattingIcons.js", + "icons": "fantasticon" + }, + "dependencies": { + "@vuepic/vue-datepicker": "^7.4.0", + "axios": "^1.6.1", + "fantasticon": "^2.0.0", + "oslllo-svg-fixer": "^3.0.0", + "pinia": "^2.1.7", + "v3-infinite-loading": "^1.3.1", + "vite-plugin-vue3-bem": "^1.0.12", + "vue": "^3.3.4", + "vue-router": "^4.2.5", + "vue3-bem": "^1.0.8", + "vue3-lazyload": "^0.3.8", + "vue3-toastify": "^0.1.14" + }, + "devDependencies": { + "@feature-sliced/eslint-config": "^0.1.0-beta.6", + "@rushstack/eslint-patch": "^1.3.3", + "@tsconfig/node18": "^18.2.2", + "@types/node": "^18.18.5", + "@vitejs/plugin-vue": "^4.4.0", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/eslint-config-prettier": "^8.0.0", + "@vue/eslint-config-typescript": "^12.0.0", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.49.0", + "eslint-plugin-vue": "^9.17.0", + "node-sass": "^9.0.0", + "npm-run-all2": "^6.1.1", + "prettier": "^3.0.3", + "sass": "^1.69.5", + "sass-loader": "^13.3.2", + "typescript": "~5.2.0", + "vite": "^4.4.11", + "vue-tsc": "^1.8.19" + }, + "overrides": { + "fantasticon": { + "glob": "7.2.0" + } + } +} diff --git a/public/fonts/NeueHaasUnica-Black.woff b/public/fonts/NeueHaasUnica-Black.woff new file mode 100644 index 0000000000000000000000000000000000000000..8e8e0e9ed33048dfc4e163b1864831013a3328e7 GIT binary patch literal 61080 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 Wq$daf0002c_DmrF0002kU5YLPyOU7> literal 0 HcmV?d00001 diff --git a/public/fonts/NeueHaasUnica-Black.woff2 b/public/fonts/NeueHaasUnica-Black.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..164720bd9b5427bca1e5b647cb6ad895405ccc0a GIT binary patch literal 42680 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 I$H5H%0QRbzCjbBd literal 0 HcmV?d00001 diff --git a/public/fonts/NeueHaasUnica-Bold.woff b/public/fonts/NeueHaasUnica-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..030d6adad1fa7bbd27a545c4da3c5b1411bc09dd GIT binary patch literal 60540 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

>;PffBgDox~j&c#!ru!}ST@QD$$ukmimk4>No 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 literal 0 HcmV?d00001 diff --git a/public/fonts/NeueHaasUnica-Medium.woff b/public/fonts/NeueHaasUnica-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..222e5a89db1d3bae57e004c68be7548cecd1f022 GIT binary patch literal 61420 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 literal 0 HcmV?d00001 diff --git a/public/fonts/NeueHaasUnica-Medium.woff2 b/public/fonts/NeueHaasUnica-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fa153370fc3b7846abfad2b9e53fc748f8b158d0 GIT binary patch literal 42768 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

;5Osx?f!5a?{sqL72H1yc<}T1LqAY^zrO+|`!Q zccD}Fm4^!+6|LEt+g=%_K8cf0bbcqlSm$gc3q|swHSO)9dlJ7+u!G4xYu4=^K|r8%SS~?qtY{v< z@~f|vj`*z((H+?dqqI(7`i77+rFwQxJ!FLO=`y^}i=+mU6NqrI#xBddoN3T(=!JU! ztv@$CukqGbXqbz>xNCpQ;2&9oaBq#7Ojv)`x1Huh$wSx`dwYp6Ei`IA^Q1DFoFekM z%vkkc2ZBTXOeQ(xJgn_8IPKd=ox@3u*?!vkSZjPQn6rsn=8S!cyIO-B8RA^MINQps zn~finpB;ee#Ix|$vq$@qdwu!Cs(*@?WNY6#mLrvERZ}^wxfqRLXRfgLlaSP=vw$g6 z=B=X8ra_06G;>;9lMf;y|#5KkDXsv+nY4gHo}E?aIFJQM$;TO+|BX36zmJ$ z1Ns~Z+{JI|*yrH)Nn@)&b@3sh@R#19DaRcTM2|h>KP5Ks;%UG1pVBJoz?Sg(ruOB# z$q%>Te&4XHq(MoW21($!(Yu5iTs|45ze!3@u|GOPyv+%Brn^SM0>n<_ezOH+#Tmzq zz8c>wR~>bCM!RyhrnPI0x7+7~ASF1tjh~&>FgUQ(DI{agK^$$YdSxeF=M3KDN}Aci zF-?BmzMJ^|Ugo17yjJ^dk&GHZyeh_Ql6k)id}1|aKWuMNzS~5eN6&&VseMq#!L+^{ zMFL)FHeuJS5eVC||57%K5AzGj#L8R?F>Sb?jwLta z_eAf9%vEZZ)Fq^D>Yjp*tnPBYgxi2|4qZP3)D5s3V6C%XKLPxOtSi7pxjyB)c@2yG z9G{Jx?-frsKO5y43@D>)mUis)g=`QDtp(x1pUaUa>>ga;q|Dh79{)UFHQ z7j_nB>hpQV^?Z6(56VtT`;n45^%V(o>)=@sI@WIiFm@ce=x`Y@H=EYyyKfVQ@9xys zX}vR>?n%q(Aw{=zjkGGDaFbdMHYGfPg20G^AtKA#iD4sF542%CZs$N zVL^xUXec29g`g;(X1@=%6T<`5ov(3cW9Il3K7hXn=6d?FV3>z|5$>vqoC1s2j1k`* za&1%fzdeKOk$&`wc17n~@pruo1?7v{+x0`=LhdBbEZsaL$w4olKIZ8~NhSxiDYbB_ zBQJ=r1yGiywMn9(ZAgD&vU~wv#8saEtCQ177S5<@n1Z)2u8^dUL8Nhg%$Q&@3Sm)f1 zxk3xY2FewaYY5*OzU50}=i2pkQbDv>yV&>+rM;Sc5yt?|3EVxnCtU5|U#-(>rxmTs zG&MuKhG#9Fs%!O*<;9C%E-l=e)zyrZSr%CqO%`PogDh(-V~e|s(}_ope+n3GS8-Np z+~v=?Vz&Cm?e~1$#?L>{;TN!`5ScM27GX^|NifG*qKsKhFef=jSo~$lnZw6rji?vL zjJa9H%u8ChLf5B^=pWouPSX_VVKm2x(Hnz`X%9V88Urxg+TV!woRe+9N6$`x>FtC^c?f_oKmm8 z`V+i`=e`9SyhZP}&%k}}k^BC|XnoDx+}bCw^?C(EQaV5sk(P=}N?}H(B~n)Zch{8@ zq7^5orYJ%sQX|tNAycUpXNXEQsitBdBxM*!$ZRRgSj*sr$9E_zT*!cgCxSuT zQ7fe@4wMOVB8e&|TZAf(zHu2}W5TMxEaj<#6$x>^oK zd~FoN(LB=_bT(^jHXD4nXm%D)E01ryACQNXn{T|qbp#?=7ttHGO{~P!DrrS&uq@N+ zO_8z*$tk0lHD}aRjwj$=-wEl7aThMJT2-2t$!;$=Cs(|%N@z4Rtbw6bVpo7Bmt~Z3 z!k6L3NLN@_E~v>YOHZpks6wl#c1bH+byNj+)QWXfbh6RW(@RaSh@o*brCctk{b5n> zkU=;fS3M``F52u3bdS+=-=G`trX_|40ql`VA*VXiJ35n|FBDf6O=={N7RfBQIO`?Q zOLdS+Nxn0(ury|-uTM`+{o=4O=U`!Bu`xF{|KF*Nxocx)^UKR<=jp%qoxeXU09`)- zA+lI_gLr!(dI7LfsZy(wf*>U#*btD1AeRGh8$?%(xY$FXPGM@nY=ONX01-I|qF#`D zj{S@o99<+DY1q;Pm+6uTg2{r(&5)B5gccO1pJfm3&V`m*9knvTWn^X)e{@GAfe;iD zW*~HoNIVRL8Hg)D^uWRKpe??wxD62%ASO(u2&4-BB&d-GG1q&)=I+`>=0op8^Nk7~ zVq}Dy2FwnX8H(4Bk4y-41!^}SJRmdxmIZw}uzjcZ3dRfTD{V>vjSLswGc-NqaG-)r z6rM^d-$447u#yO$Ks?JiYo2>8&?%CKq#FcM9|B21l4v%bamg} zEcYnSX^kr*D?BSY>mdsg-hXhvjgxG~UuOW!!LzMW*PWhABgtkudv<#a?nM7Y{Em_r z${;57z{MTI2fsHK;ne7Fn@364Th~{Y1aOR^0wan#6vo?~mwFGkFWpZ9BymHS^Z~Bp z2iqOnY4fQ|ToB2+R43RRu&#eupCY5qUEy9qx;5=dF{5nMgPNg<=ciq?2h`baPxurgxN1dI`@sbx@`Z^%C23PHj-DBJ+G{_s5ox}p?=%9`d?pUN*SPgNXr;vmv|*)#MS zND-GbZlmmuUlliX^r|nKu@$FFHkYLrzDv0reb@~+m~fxqYJt^8#rtjh`k)v}qQvp~ zN9f)d*I_l-{?TpXK7}Ro+nkGSOYX$r;Znx+?!sL(Fthh999|dnKPLKa!6FV(kT^1;^itGl-uzknf236<|Yry zPI(@+Z(UrpAQN@W8M0)V$zY}$bmeqI=yH>~liHK&lS-3nlZCisr4wv_#omS?jzSj@ zE)Y}*d}#Kd;|B`YRCs+zeVx6%te0DUwd%JTZAxzr*}b#tWY*fX*mYkEg)2)ZnI9MZ z7HfZj`jGl-b+mX!@Ok_=*^OUpahd$5(nr3xviByyHNFE>Z-d@#_0OvQ zYB7)@A(nFp+2HLjca9pJx$4^%7X{Z^*IU=0n;w>cC{2=SN_Oq2#1Vp#y!(8JrNHz2 zN60@(d@(ugIe|GkC=06A3+d)^qa~sGvbA-q8z0>qYagaF?5!CV)0-zSPDeE7l~!>YO zIt~DCMeaPzI(RRfHLSM!!7EOl)tY9{tIX$7p&>#$MbEv+r>DX(N*erL;{Ca~;vVUNHzhPn(!4*KtpLAr=CE^sq*HSqjqi@-dNl9sR# ze~}O=M5wV%T{3g@cFS)6H416+m+50|Y3+H{;$#s9;K*C~s8hnt_Jhsozy z>M4$wdp5vgx$&Cok=Mg$N0njM=0V;aqYGz8taDfkd)$V9waGt3FcA?M5>M&V12_AW6qDnC;ScIt+ zv{G86u&8AvBqVC(R^CU#%vMfto`;(7A0PK#rWfIdfV3fAsXLqW_4C}45(M6YTPJ&4 zX9Kpn(U;Qn19v-PyVSaljhAD(o?Q1gNz^wpU$;qlIjL`ErukDkhLL0`#xJ?NAO(^M zcc$+s%;`)cWe||9qQ9)oOBBoRjSz7_nr?M1&xY3$5D4;HBfh{m>v-CA=(IQdtJ~i6 z6GMG+pA?ELM8UWFT$OUW{jK|CpaKa}#+c!<`{W{1$t6;vi7GTyEaA)4#hG(#YK4Nf zXozRAZSd3F7)9gznfPdYgh$4*`NHHQ!B38s|nAxzdtMTkpL>d@y{2e){ulyPEf=pvvBtC)m<;#FX z2YwtHsBpWf5^wEO7^%_saJ=3MDOiL$j(9kxDvdVAv1%Z{P9vt>du1FhofqYZAb;a^8-j` zV|(18eT=z9Qyk}JYWq#rJ?adM8<2bWGx`aDulKD1W4e2|e+Uq!6;LXnaUkc7d>zj< z`cww-Mtpg-91Bz>K8`2vJ*|Yp>Dh2-uBxc0>Z*Xw@lN9VIx95%HG9@_-RWk(%N{YJ z=?88t#(Wmz^D*INR-xJq-qf}R`P-xU>GL{++3O21eSsH;+o2KXKNsm#ZF@G`p3??+QIyG1li2WTzaM@ zhb##ms)WW6I68lC1TkU&Q3P>E?XOA%2=%)VxfpXLc)?qxI{L}43molD^^)oGh1IDX zy(*f?ovje@%k)lKc<>8oZ19vPwB!?-#=jL0OA}jod@|+oBC3HzmNz+31Pic7Z_=uQ z=aq=m@pWTchGPfn&%ls4?b=`IfRyjf3x9}<{_QFw%ds|}LF0(Vj6JU?sNq>PV%6UV zVh->iycNR10`9TiYyfhc4h=i~wZ;lOR2%4uiHG+9ox;8P41wa>bG^3mUajP68oHWu z2M|vtAF8vr4&pyySXB9t39#u))8MI=4DH zS~;02K(nqm=)cys+FCk&7rWhlo`FA1y@l%KYw1Lt!bIjMC=p&|M1KLN=ZYgk=nGU| zSM!YDgp4}>7%K$q)M8cXAai8}Aj;owIsHDwN9~s=B-Rco2(Aw}Q6O~RdFPeOalO3M zX==~ddXnH+TCuGtC!nX%(~EEysjWd0`U%k;+{+_s?I(z^R(t1n)rpr@Q7uyPCtIho zYHzoqdR!kz+Wwhd98sgzpk#uZ6Dd^9M-9MzLjsPn`n}=4nE-C-v5@B&W*gvG=@Kh> zMwp^hhcZc3)SysvFN#XKstCu(8Ri1OG-yxI6F~)9p}LkVo$8*I3q+~4U4)nS}cKH<8fa}SD%k3;51##>jFs1` zk*BVNshqDoTs)FG&pc%)nk89xhOD-WEns8MJcUkI6~YfC#u)e4EMK9VcT&{Ghx%iP z&D7H;LD!xuQ~^&yf<&*Q7_sZBnx zh(`25(}WKh4>lr+ikuHi$>%3ZB+&+KOeJwiGY9$e35-vc#Dz96L9 z?`^ZP6>63T(oacdBMs0WOzx4ku_KEMPb#-M(o0^se^Ijud5~d;4Yut)kMXo$^8t-< znZ^qbY|Mbx2KRf;{QHaM%V+l<Tk&IzXUFI4 zyp#a=a>cIqUYzrp=XvRN?{4TAr#}iOTz>GSVy@eCJMqrf%ZSz!&{Q|tug#7gb1tx? zH(wapb}2G1f$;ETN#>t_rI#1sJrqX&r9ayf!9e!#iGL&f0Na{F;r%RWJQq!kl}>*k zRcCo!o%3Mstj?g>_`Amu$sK)aesFF%nFE&(gdv)ivWB&*X%U;R&_*M z)Z>llF)BEUp+SZi@l8?UFUio@EwojZWYDH#}0l{!#VZs z{0hJ43b9OunM*yO(SwTs(KZZZ;5#sE^*5%{hTTrvY11DB;=-Amv&GAn>w`*nTAylL zRr)rTr5i9y%-c17f$L`{Q1J_qG%g}qP#)tAbf8hL`MjgzMg)Q1{cO+bIXxihIf{LH zqsQOnQgHVChFr~wdBEN_N=@vsc)C`v^=S<6NxA|W?9 z$*0M@0C8Ni2$>k}iLpH@6|!D^mndUNizhTqC3j+@%n?zihHYDYp_qZ10UHB19fdTv z4NBMJFy6Yfn)Mv4fR(I}?rDRZ4Gs=;Bind?4!@8Q6SmeOF*CjPup!$#-kLg@I#Jbk z&$TD%I7*>|W^ApMcpIJI>T8}ar8gCS*y6Y_f<@EyMw3Tr{qc_Z5T+Q%)h-8gj&bDa z)AJ0;9g;3*-#FzC(Qhvpi0}6I&>67?uQGYuBI2>{{Fh^hmH^z4Q5nXGdx2xmfuGMW z^KSyao@!=sU^1rU%@~}>A?Y+ix^-1zIlp~Ju^=0^7d&off)C(;pZ=~|gDs$ebp*FA z_e+y7Kl9I%LPzrh$Iti`)UnTbN@-uq*U!;mg~8HLpHHtlrB}#~pVg~r!iX;#O;GK1 z2LG^~+kl%~iQAXH0O%y+C@p-y2hGHIHac5n^FG*OpzYoM9yrv!n@pV3S^F-m-AGy` z%<)V80y#B+R`Fb_9%zh$7sxO3`ClW9_ee`vaWl*D_Z6~%f>F<+TMxoKXas7DV0}Is>KODsn9HG zzK$L0R4K*ucB05Vu@jX`k07rskD>{vGU}mgV00&1nFm8?`^zv~GeuX0{Ot<^+rMZQ|Bcd=@K zxY9F*CS0GF9XJ$bEj^r-o#PS?6iqsyham+7XlK8Bq-{GLMp}UF5WVL4(gB zX*yGC&y;82{N!$r)znYWmX-*$y+{-|>&&nHht8lMV|^LiO%3-4K}>I$#>~Iqr)SNh z5$d!L<6$A1;X85kA{Qg9E1Io_Ys6pnSB5h=L}vTNn_c_c!H&gr08KRHW>XE?WM|S7aT^Gcc3h}ykR&E`0SZEuo)e)E{O6i40&kbY zUOX5o`_8I6GchdBL=+JOk0L1)NEoWH6fr>PLOB-wHrY-jlbzmL6Kik$7s}G<$qJ-U zQJr{o48wJs+2G&IjZ2dzI`O*RmZ~oBMc_$wQZKM`IdI8sVgCdbR?E}iD6x24$m96# zZn^2{&Os2~y_qvnH7FgRndGDGqY5;{&%bfom;QB;BTJ|>YFX&Yb9Nf=d#%9iEo6&{ z;5aF8u5dyiw2}<;K^Ze1G#d2d)m2k;qK|i$6^3RaGB`AcDitTz*w0nCJ@s8~zr5|; zL`*o24Wd3{gHF5|(#J8ua%>!a;}K zTEt|2nVg|_m2&=K#O&j|1RgQCAwLvc#3&&?@iCToUDLvM4^*;mvx@nlwHHI}u|H@m ztRV~FMDt4Bl6B15vqf)$Hfj;0NfaMvEZn*PGf6nZ&`K z(n#RUfG$>^_Lvm^P%YvpG4L{047pO>0E^-hz0DRIc-?Xjb%I)- zn-95gl7bpYkrcPBqclu1b>+Bo2#H26)mM*2#z(l)gD2rTq#Nv$p*7 z3hEBGAThu&5El9u0r`k8=RQ*=>KOuZj{W8bPUBK|Mbcl71=_l?H6G9mmNVwAEIQ%0}a2CgdxHD$2P-mqAwef<5XYi8%E6u(E8wVcl>( z>oI+RAgc^56@wu0+$N6FmG((VHPAd62?^O%=>6{jf@4d)wt(kVAk$KXY1pXZ+Jp<< zK1^=db*yu>FtGqF@H6vL4(q&C~+PuC%o8=pA|z%&zJF>ao4QCX@I!3^G|D zg=EL7pt~LU9wsk3U3hma9ibaIrjeX5nm25<7Xr6iaoI;edCJY^$Mf zuVBU0fw|{xP{eTeE*9Z7!8!%#bytMRFNlxNpb`i)JRrP7Jz%P~5Md^}5Ql14Mw;qi zCxgtt6`HJw5Q%tzK9G}$?fq6Pj4ujy{f&|SG;jf!VyH3lcCANH({Sk&WRoN)AXd;r z#l(Wq1{D^J0^ae}-f8{a#5cMxK;!hc9VEP}G-5P#x8g&rdBsbm#(6;*9{!vW;dSxu zkhaA}5d@966(4?7CJpfm9xC%5066HM1&nwDUX^S-c=xbax8mD4S#@nc@!*!v35C4v zwL@AB)jKZmU4V;a7$1OSK|}AcuXC}%nKG&BElGuGX&P9c(#sNps@5ZhbiMQ6P&jEL zldX_#c;;&#hc@VO8JLQhFx-3NG1p^&hwizR$}Q`D%rJTHv1|!2`#L1d-g)jlLKuDiIM>x%tUgV$E!P^psW#f=o~^iSswYPvG?^XJK)u5FvKXG}Rf&?zp! z`E+!;pJ{b`3N@S>C4A+C^>^oYunZ?*r3F~`U|H2UpH25Eaw62Fx(*V|qRK!T5J{X) zHS%(wt}iaI&wlC5WyQDHe!cHuYpQjN7;Lk&xjS0O_ggA7%O{Im$1#$Fg7>+LvVf-N zf6!97Hj>aqacGqrM{7dX7l>dZc;TrftCeq+R83VxGy;|x{^D^unSwioXh>)< zwDn=<9nqhXp8fOb_z2GYaRFW#`p)=`o^!ZjI^kid;*rh=zCnRMe0$d6wFn5Z6iD&w z4lwtnT~7eI`q{r0E%wj}$;lTFekv0vwJ5g+Ys}=)%K+1>rwWIQbb+Jt4w>G-ctG1H@j%J1iM;G!Pbe0yB7F1zeh&%z) zC3Tu+$ez{=EJ?b83_sSlM-&Z;q*#;4J)AI zc^ZRkB8pM`5MBSUa3^`9rtET$=lj8Z&G~wKv_kxyftR^?seB%=5`1t_b;R3B{qpvN z7l}T|VPHz&aWAImGOG35-Du(OtnX>2EH2UA!@|;BV>h|mLdY8^NMsortHd+2TRzQD z$lkkV{7{)oU->-OF_0DlYbPXUrRh=xtO{jqFCP=0C?=htvTssMrn5ZXIGnC^oq>h# zAfC)hTYWbBO)qTZpy-eW{y~Gq#tBW&Ttk{biaLpkP3F7@bc2#W9&en!x*nU0F;mf7hpN^!;dYz{Y>PgWsE2Wz?uxGer?E?`l1{V}9^;vF%yLRT zI&!J=!myIChnT03mYJEYYi_!7D-AWC79o`*<-!t{k)TSbu8?z$-I0u$qqA&*W*OXD z*;ZnCYo#N`@|f6QmsC#KSw%0Bu!psh8~DBA(23dwjgASa*@HepN?b-S=JqiK=YEEqyu?89Ag{uD3!8YJm6fr3*HmF9-|Wsu~!J}p+HdDSjNliet3gy9ZT3hDH>dD zUCA-XUU;5mBjVAIqUG=B8(nL2{HM0Jg++HyrA%&GN=jOha{uU`Ojy2dgvS%h(B?A+ zjL^Dxn_^AM!4T{}*yEBFPa^A*6_=@L#~Bmk`YJi62Y#d&L=lIY(aJ-kzIFq*%muHlp-?>^^R8S$jM37TaVWtrM{o$@v z_V=9j37ng-xK1pKBEY771CP=<=V0a~zD3vwK=Oq^eI?%k6<3eWVD7oza7F4<@K8?) zAy!6gWg?TCgjkLRc;25}0(4{ow5miiPEXWj(K*K`s0S#h+F3fnr%_h|LQGw`Q(SnX zwpmkL*3?)`qr8klpu;PmZ`t}f`IQyP;;l1T<&p_96Ev3*k=9MnSPo8kO10Fzti80n zqzn|s@{(ojt(+3+0uX;FfWoXo9uuVGZI2LXxoVX4@hIQ+(Bes(7>ypF86VV#(M=_- z{fJ|Ss<(9XLhR3cOC?I_7fDlBJl=GItM>?*`#@RoN!NrQ8+uJdA+?UBPnGgj)JSCP zh(-2F=572!Ip?{$YU5h!{2@-GVwg!!tl?PZxMYhpPjGDwJRTZq%%)q?eAaob`(5z- zX&ix5@9_W3Bn^b2Wg!qnI!>dO9g>0nSaQ7gyEe&4%e5f)GVabZL2$l@Wk*e{Q_qY_ z51>cUrR$b)nS^}t0DH2pJjbv!427VX4>LpU8#go<8#gu>4=a~*Y7*CHFH(NdlV8$X zHHaqAlJVm-jiOcw{z>C~qik}I-=DW<`qNGg#;gfbu*RqSycrB5i1TQIAU!Ytg#2;f zN!9rHj=)bS#OA9ge`p#{ik}ulNOUj@EU#9_RXECR2w9x1-bQT}3bm;v2G$wIks1lh&(D3_t)z)ubpr-7 z_S>q*W68%>VDqD1JC!PEg)oA#R3jCZr0LM~KKhJ0YZz5;j{7zk($h8sla4~jTL1Y3`P0j%Rv$PUECS#g8IEynA?H=z3WSTP>ujwTqN+};^N)IxI2vEPp3Apb7)^$jhTW#=n7&} z^kO3nhN}G}(JGi)x-1Dq0wx<6UJGOy(vI0w%@X)|(Wc`>E>YCpk=P-k3dpp1o4|0k z3XmzT*L$u&E^7pqF{~-dcU!!^1_6iJ4WLKHpDn5@7tod|EZb<1YrK&A-$gxxem^Y> zi_TL(G2;C*;>RAdMpd0qG~9kaJjtYelxe)2FcaaouH6@7`#(IMz_P@AHn z1QZX)4*>JHZvQa)AV>E~k`ra1oVMs9V9ef=-#{(2w>MfoJh-0OUp>w$P}{y=I34*< ztPA|DaUJqf#zcB*QlCO_Cr$L)`pTWZj4bmE46W?!!e3&pn$$vs+{?Soi*aYNG&UQT zsu!A#HC(0@t>1-K@anu}knpTvouY;qQEF)-!qL_r<7LsER@p>Z_OrZ?+P{B$)gfo$ z6EJ)()xhO?Kfe~~67Vxmu}+*TMOe|-3X0!08-hJIHES)N1NYN>aOY-r|INl1n~{HR z)tp%s9Te0T>RjVnUAi1hOFTZm_eu+UW#iK)e&*Gu?U$KG)g{nZx2pc^A%L(e6?39% z9&R)qQkFt&SgwUK;j9*dwGGh0p+{J{un*ymG1{-i7A>%m$mnm%_bcl^8^$ zc2YK>C%_H`H_MlpoGPZnX*hYbdD@O#VbCw1LBiCBr|Tk-RE)ZZI_;>b0A*#pH7?K__rg z@m>C5R?HBrmQH+T&wel)COp%GnmxCFMu|6UE9#}=h@H66{f2@qIC5+=?opjp_>be- z(M;`coR?NN?#k$0ouabLRU1te*siE)ml9=@b-MDQQgwLEvP=D5xJTi@n?4=Vp+Cm3 zb7OYo*xz6+4@Th-h^+svUJu^!i$z_?)f_%^WB>a!I|?_F6VkOcf`4<-ZD;4nR2_fa z=QY{?)L<%2Db*6x`7M*pWdKYvbqdfGPNCk(b!b166jb|dOhio8CsZcrulCNARsR-9 zXY=lKZ~)^LhAt)rja*FP&v#mzw6vUzy1EQx{^ieSvw9WZUo~}=lr-13cE^>G6qI;% z@V%1q{hhMnL!S%s8MXo^u+vaCsqer#UHyQS^II1Jml-#wZXIFXBPRWY9)2BuEvjzX z-90`Hc0~)J&u*8ke?Zs-h9;Kw#kKBvy&w8FxQs}uy^e$3r?MTKBU&%HN*c!02foB7 zZkP=WfB!hMO(2hnm<|TdA5flRdJ4mqL)*N`B04R19?iZa=D76o(Dp$_{-Pox_19oBrckfH43>Ax|D~0r zx0xeNM;{Vz9&h0cN}FUl1n#N7&DcY#wgs`rGG;8jdtN`}^kh!U%C-b?6)_iVTVM*ZD4Ofg0oI+2jU5*KmMCM($+;x zFEO9cWSUq|rjenNVylAMod?mtf-(SPCJeT-y2V&-fIA-O zByfdrHQG|MY7YZF_540=&`{f-KWil?jr4KPW=A+8^|`bnAuw8gibX-b(7gF3`XS?7 z6HGs@CRGDg!@Ws$TRk^nVsg9zJz}I#+H=zl9XtNW3Mmm5bwQ=P+5$DFu5OK1U*9$} zk^~cr)JcXag#zb#uofMK3{LoDR?~q6^$3^ZDlrVIJ*GVT>*$=BTGeAktW20nY5|3$ zKTwwpei~~A?3Qqo16_xB<&d)&Tn-z#upg`iYp8c$5s`DQ5KpOG+LQ=7HinN3(u2`; z8=h;ps0HFaByEzxS$jM1Yd=x-6@cW(w~_jmb>e-*TI)WA-($BB5`x($-xygNC$`N# z`1;x7?b;S97sGSfngi-Bu+wiP07T^|pmj*V&h@R7rR~NKwl}DQ+_ETH&;lwDn^T?( z)WS%SKBNLJ@%f_sE8I#iD|3*YvhrkQ2rh)PDXFn%ilgazg%zaY%`2PZoeC{0zgXGYD^wCKrQdI5aNeHvx>Z)cQ+|#zPHF zYg~dAMInP}x3at@#~qs}X0A0Nn~gKPdw+R_`?&?T+SRMi20_cjG{k|#Y9&CMIDzxY_8E)Xs(u(>7Lsn)<_ZBzom29qx7Cx^SkT^kX~>nT)6q|9;=6&h_bDRFC4NR+Y~OomenKe-~H?~ zWkah`b&zyvbE!JS>uP&s_)pY6Y)5kvmjwIwy2?Dr!8AiqC(hMsfBV>|Tg$Db%uguB zjK?f15Obv}q@|e)mz@gk&n`^Q4m6FJ&92fG&DdiNQ}ym%9rXqDOLs#Bb2h4v<;1OX zh8lyP$ckJVAYUBB`Mry2d%xxN882rUKxQt?i*>WIR+gfW!lgQ5DzM>t4>KCtN>X+5 zODpQNL{e=s-$oS#e50Fl(gL6j)-2&ln>eQ{5qbU;=|S*)R##t@ha+3t87qik?ft5+ zrn37Z36Xzp6_`ADMCviHmj%DnQeQ0e=`!bcR#bj^W07V);)Tl;!{*3#xJn44dmCI{ zQWZa0JY&K4?cro#(CD!Pyzep@AQ+~XlwnoEFGFv)BFp!&&~tLaABn$dy<(!ScC9P# z-`K@_-02mzX9~TNUrKerI|lzfKoRA}^A0J69L)s>mcc)u8j4X8 z;Ivi809P^;lJYLvPJJFKd6C~!HZCu-Xj+MgixR-1GiRvxL7~KFAnkCQ^TQqnqJL6R&1}!ekQ5QtKWEb^J_k+`Vq-~(-^h0V0zKB*O=p=cfg87` zCVnPlfbmP#x_bICQFB#`-v|_jRt{g1t)qQD5Jts>8o2l1hU{C;%NM<_BiAhnkK;44 zcBN|*;EW5rB9_^eGuTbeo_ERx;yGq(%@3wJH!Vjo^=8B?%@{C2QiB8bO{y_~A0hzP zmL?-H?T7(GP5K&e7VvmYj345H0RyyL?K(~S9?suGd&B57SF8Js?obK6F2tGbEsK=&X zI__S$(jFpd1rX>L`p{fyJn7=Yo+N(E_vSXga{wxa1%mUU6oPcH;ZABKuNg^+^mnvb zb`13IB-y?Iw_HXTis}s-C1{(ArolhVcH`tG`D9zE=OpX@arzYrGurl5h0<0-jQ?g5 zh`V&FUUOtv(+~m$DHDj2gys6$Q>3q8$u`C}L?f07VSU+@2#L>|z64!RA+TYyuG zG>LPsQRQ^4n*?7_1Fr(DhL5_Zq5lbyl~!m_Xc*?$niz8sS8K9sD6zRSbtbzZrSa-L z+2byx-#`^A3A?O5w6`PDjL3EJ4^Na{u$l}n~IRSVY_Z6)KN;=LYNOZI21=G{v#9T(tfgus?F)rjp962buny*JA zG}sesd$nH2;I#Mnxo5v3b)dYK8*iO2R>j#>o(lQXt9dvXGAd91Ju*htQ5JbwYErwh zzYzo(D)Q@^;P&S7#EP=Hta38JA)hrFb`2D9Ex}F4fp1T@M@$^Rb>idlki{HqiuOs_ zR}6Q#dQhP!H_k@EIpK9%ozQm_T-tPPJxTMhsW-DdoXt-hj(E$ry~kJ&;<62F`z(p9 zKN|X#PECPM;V7MDh9GfUfeE-dn_d@vF37cs6!>tuyZ(cn=Fby!^44aBOS~{x#4coe z2t#xo7pG6bf|zB9;HUn)YIr?lVKJL4prhL4@^Vw1C3EDKckhN$$oL!KW0ucc9|=>k z7o987Fq=jUgn|8BNy*%oeD8Omc-vN4eAQHZ@Z}1fZen(Oh`A_~^%@5>H4V&P8k+v` zDQF@{#1s?@DFcFxozFMCKUWNn`{W)Zr+4}MC;X3Iz-6%e&OixW*zV-8Jl=I z@R0!HIi7&miSwlQHIH~6@b+@Flsq`MJ;Zohw1M~#r6+Byfk1@s8d2rD<*EEh3?71h z;o)p^Ri&_jJTDJ+C{;SNIja!MId#r%?jZr{u91l z3QkQG5+%g_Q6fpdwF1&7dWsxMJJKj^$On_x^gGF>9Nub6r$HM!KHDveSU~*!G=v-skt(koNy0c8(Q3e9VO4^Q<{oLNI#V z5=+MYekw?;1l#>Gt4en>VpOB{M#wEV#iA`LIET@&VD&QEty+2!;s_dP_Q81rWhx0m zWzU|rJ$t@~MR54tGWJ2BD|^?v=TNAHDzwpwl^YRvIWhMhYG@#YnKzH?Kh&GG3zKD6 zmN8y#uD4l-_PA1Kl`)QmZ;%2vpdEyDom1%K zbmxM@76f&+UQhc9D)XknI+rkF3R+ttIo5cWTWuPgCI4AA4t#CZ@6bHvkO+puOq|p` zq{*$OblOtiKx&a4W_6l=9h((rE=M-!G_quVag*gVPEvDWGg&{o`U=Mh3p^aEDFin4 zZb6e&yh&`U-WHm7G7b-pY?AnSLHB8LHTjK_?L^c(c;_jmT(6F1Q!eRkD&cT;8oah@ zcAAk9Cy5dH21~lLXNOw)p0=z>kR}Jm3RRvBsY>W>-2@f)G|L4)fN|2j+{z2i$FZ#E zgHz@H$oa(G(Iis&8JQjI2z}f6&^SElmx|~=o9L}6I;L`Qq$wMxPW;Qt?K5cuRdcL~ z^iCtaTBTEWPg77kZptQV8>tyLSueF55;eB2Hw>_^H{>H_wk3z`ZDv2ZP1#{GUl(be zyBp**cb5x&J0!y%<59LrhXsG)bK5Dd1Ee-mS7hBq)%N1PO;A&N$PI|{$YV9pu z-AJvyRR>wHfoyUuZDgr0l=Orn{#YmX+jNF2B+1E^_HZu~|0f;4$I1P8F4p7A4c4O{ z;bJKO{(cVl6Whfag(LiD4J~*$hhsyEP72448pyP>^f<-Q zC97R4X}R`Ycz{QMJhG{|8NTAG6+|aayh^&8^0|tSqkRam>wrZ;Ya}G@P11UC+n6u_ z=HGShk=qYG0AQla&VjoAnZ5o;w)SrDV3qE;tM;jT|2TFk$bH?`+QRP56H7J@EnSaw zPoSv~P4`vW&y(Uc3-^7qW^R9kB~Fa}WX_xbaeRum-{K8@A-d|>BEP_xB;VfNl>y>< z_^PnnH7TP^%P#2EyH&a+mw-K5ov{X~G@1|XQq1+@kl~(_Q+4Bzb6v1BllDjH=hh(K zWGPzXD($mCj`fe{n@(pcRVK=T5KT+J_Wkbfp#7S|yur zyO3W+OP+xC6+wK>bxd*AS%mbJnY_Em*Jym}4kN&w#=Km(ddD%Y-m&06t#~9w?7y_? zv7Il$yOzpFQkLgJ`vQ;{2FGRB(iwnIYr5_Lm+&*2wnKm*4^z^GtJxWw8V~!b9a8x* zRprhT7>8-Aci?^+m&6@tX}|bu++XuSqv`h7CuqjZw3}-_eTL$~^_sno{WXWr)cfn* z1es}e*AtI&d*uJO_SS&*b>?E&*3o%$Sl$wkXB_%)PrVj+E#16v@xXcr)(RR5mH8g6 z-b>o^>Rj1(U2CA{O>0-(a$v;EyRlgnSK7wLH&)fm#cM$kxWt@9^l`(T6$n*Ml7QJ5 z7avQ786^JehWFpp)>*|l)iS6pV|xv^LayRhSL)@Ms`nthe*qTTL)&w_#G9# zzLy#0`s^XgVAOzHT9TfZD&}Xj-|@nJVt?lwn?v@c;;fT0aMJ%Smw64rL|mg0yIGn4 z>a7)3(Zm{;Lx}8bY=TQv+&pT*ZnSszrSq`cr0X0LjV_pTj0g?x<>Tyt-@Le3wnJoh zg2yOj_6daKdC^p}eK?m)ASCHx=zG@0>@)oye=nxbb06mK0xsq|9%P!s&LF+{g|s_A zez7yy8Kg^pO3LPx6nf4Y;?YBvUWSMAGGuV<<(IiL*zRQxF-ypKW!!g5$XC~S7E%h# zW`4u<`b8K0CZ{+CUOsx1*vF|b8{CF$6u$l!&lFvQYbH0cUQrX<~bQokaJZp6Zi__R} zl(Q%$y9C2=h)|YL+~=FmwQ%U?B5~~JGVu?BlkIK=0fMIU2+nU1ZW2gLwmY#bgL z88+TrGgk*|4tL&h)EkZGV)}#WXApyUX(k_6^|$W8NfNbq-YPd>w`53Yd0{%oWoXlR zQW@`BCai3L{$_?Fy#D{{SyK2gpZDlFLP{A9F1HdS7oxd)q0yfOp(2J8Y(F}VE z-yN5+N6cqz{eN)wlK@v?!Zu6a23%37oYSB z+FSSEbL>Ftfn&!G^bQR@jb89?CBnPd5AJlYs&c>Uz`i?$6Q6-Gm*oowhrzRKy35K- zEB`xZB;oT!-zPPP7)Sn8-W>cnP>jS0Ed_9^ao-(nhxfO&548<-z_EAlyxHy1N8Jt{ zdH3>gzY93e7P|Bglitzh_2e2>lSx*Rsa6q7@5O`D_FjCMt9SqJ`}b(gV+OL9Ld}^2 z^i)NB4uWkzX`9B$*tTNR8blDfHF=3bW_rz*#3cx!s6l0Q*oX|Tq#h};(Q@sQ#}Xwj zg&xrfamki*M?eTR%pf_VbqwJU$@ObDZ!)tGJ4=Z-fF772=Ud<7rS)q2V9TN;RlX`U zb#s<#xOGua+oJi+J&)o+J)3JfqUBNX#f_1%^Yn(=;`RtAtuL&89SsN>KT|1$XuR2z zoIWE|(XvUJr%~P1ZdjRKWe5!N_6irrB)UV@4m^hY!amj)e0Ebk&Y$Z`io(-NYI~E| znm7*hGw?!V5WB|KHo&yA*aW)~ENgq900VGge39;QNA|^RQjw$J``D8hyh2I0A^1oN zg005N+9=bcW@qh+YE%p@`BOm1%o(${@TM)yuDVc|bz%R|sv9@$eEM9HR8Zt`+G2e` zju$)#FI+PxOv?pRaR6gJD<^{ZCgbc*f5pdrig4>ZF?WEu?RmW*wrg=-W<}$g1xw`6 zuw-#beo1jjZO1$xpW517c&S5|Uq1`ZY;WjTRPYaYXzj+*hF122oZ^b2ijvB_OjR~M z`@vKS#v!D74WE(`Ae3?EESMPq5h53WyIW_qw|N=7(h`EAgJ*b&!eTSRDtus00T|!= z@z$BmEiKKJe`-pM5EKdHvJT!g{|Uy@L+Ev`HkW!v`O_V&54ZK_Z3;OMF7ED{Uzu6f z-L>tV?VZgb@6wgP*TZV$ioh7TYRA0ATemE3+Z+aCG_n2cCuw(Ax3<=n_weT( zkD-KV2@q60NO81 z^z7caaW`zl?+ka25R!9x-j1!5TO`~{y6HWLh|mWD(sx^?5OO64#1qOn&Y{n;7n2MI zIFQ$%^7r+g8C#bh_7~MXVEo&)WvQ-}F6uG~IkV?y7zh8zoo^ua$0cN(oC;)UhvU!j z@bYp)!uG(ZV4ddn_{=YF$;eAn3ERV7xZVy~Oi> z{Coj?uIo1tkew68U5Qs#s@Q}w0f)FIDNED>t2Kfq7j6I065og*4|jhEaw^%kZn>{4 zARr)U?&B9gN16f_xO05@d*XM-c94bd-Ru~YFh4yw*hzjvP$dKah8i-KB)`OnV^1I!H5zu_80 zXA!mEY|>k(HMeG^ROamy6q%p*p`j0qm$09uMY|Nam(&9pIl+$4^C*Qu2oG;QKi*D( z@~sQv7H?cP&=(C2BR%;Q75T-rwb1jx`n7wCzX!h^IZ)o;+R``wTt9b)2BPV=2&P>Z z3OjPDflu#pVXLb)tFWr3NnadN6_A+!m-Wzdp)pHqytl#2t1LGqB`P{5P8fW7^$w0^ zCB$b*>hopfpc|6mE3&G5geChMw!F7x%TP&8O-We|+Bj=r`sk|Nd#>y*>TPZ5?QLo8 zWq2Bb=ehH%>}jY1&;O36-zfwFX-tlKQCfU2U27qCqS~aZti#IcbVVgLRVjQC9zr{K z5r)a|mMA@YDbR%+yQCr3GJNr_T@AbL!f$NT!mh4!T>}GP_0_#D_untrcXglO#v5Hu zKehmZy%4g?1pSZolks0+gi;hFA_4MDL{BHv)>ma07lyxDtyuaP39sVqLsUIm7WXfIgkMf6)Kyolx! zi1Pt)MNcHnBf$2wnh*(IWWO}9|1cPhhNq&NV#dckAAHdLGLW*L*Vnni=82OYPwX9B zhVjlsdiV|WjL2Gxh|3-3jpUG?;!P}dOnRtkEjTwE0V0Oa6&MQ#jE2^QV0`19Uw3qT zedoq?w?4S)l~-0hcq{QqeM#)BG2SM2^ukDNJTNn8KPij3mB887ln2H*duv*2OXAGZ zdVtv4&Y0pNXK?d11(&a$qapvsUsW8TVIR|V(F^205+jlq{mOL-A zH;_#C#E37{@u?jo#;wDX14e@XFFym|ztw*q?VU|Oz%RI39i)XU>8`3k{$vs%zoRZ~ zTCrjCP?}7VSfSU~)EAH)_NAzi#RKcTbY68O6*W=pLu9`VslSY`6Qmw9f8tfeUbD~W zu>`pB48xt%z8%@WbLhDYmL?EX+u|dONOd@j!X0=HoH%*YhTGjb+~?P|Eq4dm>>oUq zw$=9kuzL4%XXr5tTbAoqY-#_$d*1WpzOL&%bKrWYeci$J=N+kH(17bY1mJfk1dD8>{a%gHrHy{24;W&_7Ly1 zA3l$PUTJQD%!(By zm{FnIz!GCcNkcK>!lLi1z{5j*mtQTd3}SzaI8gs?FehJ&NbRqWtyhuMG}?L=18Jvp z8}A}5VzsN0#7{s-61^-gLwxFTM~eVfb>6oN{VMG}wex1$vHqh|_uqUPC@0cE=&Ad6 zKE}Qx*g|2tntp=Y5lj)ye+5=)BAiP@W1EZ_(aV0UXv>q&_79886tmy=F06=z$+-b` z_2^I66uQ^B#il~(CwJBMZv#ioxtX{wuao%ks1F#QOhkRaYd$i(Zv5d-7u4y>@ zU-HFM+SQRUIW0xoDoV^=K`3W$Ik{y0`X%i6_qX0!jd`x_t)&;1AmZ(2CyLf-8Rq|% zPu~~O>mpfO{jg@@L{y1{MUY3L{P`6rHn2e3mL zy;g#H_BWs!zX%>uqzg0AJ}}z8U%!0Q`MdpHn3xsASsy=`_XmN?IC6zl&|Oyc_DK>z>6 z5lD|egs*t=4u6xh_H%6M$6RB4f#`E?y>hC}CsW{#I-B#^{9WJ!KQQm1_;`bl;~q-j zbNcqy+fU;+RxjagbAaAhvt8L z39aa$j+2YK__63X_$9b&{23z z`77pi%glplFU@fw$fg#}Ti_42rjp)b#?W<3Ameyhg#BH<976-nG9p2Y`m06^js2Dw zM&QqFylvD@K!E|ycC?cXC(vvm*@D3|Nk+0UiezK9#Sh5!UeZWZmi#ABchkue2i70< z>hS8XYg_8U{sCmWFK?@x@802d8@zOpJ$Z5WYF+!56}shHjI~Sma=l-!2p&MNeQls~ zDwO0@`N)YR!ZmwOoY=elUawK3an$SH?On^4cgk^!M-CszsX#nS95BArzY8M2Z#xv^b#wo(H?0SLd+({PCCn59*h?TQ z@usdp_CWwQWS7xCx47r8C&^>Io($IMGgYr8FO@r66Fm=qM6)1b2a4!vmF8U-nprN? zs0C89b9^FY`RcY=Fk#!^#w|;hZHy@IsoMI$&9!@L_3%>7Oiz!#)r)tn7}ydLqBlYF=*ZG$g9J4C2L$hu01aECJ&s z`As3vBPU5)@$o%6{htpXHusM?h+w+%x)B`w#(+I^6}TY~u3hVdS;RkVV?*Tv4YHwR zPze56Y+yGTvO{I=pwIC5%=nT|j~@Lr{`|`bz!LVSeusR$DLVyD*&@(sZ$O+s_#+zR zcbxwbt3k|I0(xvbsjX9j_upA|0XD)5%ig)L@FDc!p@q094)9`sAg{nr-$y^ZjRl^v z#2+jtSWj}~=MRm&&GQ$v^(<-~PRrh`RI2jTNrNqe(6hR*UJ4`Hi)#(~d9jg=#qm+{ z=#H9Zj^;1|;Y;%h$g!fcuv!vf!zd5H2xR)iR;}NGekGKz#}yvWE?ZW+?JY2lej7&K z;_B^T1hLJ+okLMrWewUvbhpYObcFu0Rey);?JoovH`6$HoAYDh=im*wl@xIdc-wH= zCAu&>aF(a1JX$OuU7ybV_7C|kMKJI8Px0fyhtd7BZDxhHEO-;?YmWLq+yFuL%+7(X zv;YX_?rn{d!I&^3hWKONhC3zy{O3;1hP)ra_!sTHt1G{-%*BLYdvRw~letJ#z+_-e z1_J=3mgX`T=X(eJr+#tL?*)y=*-J#ael+}xcDp)9CCt*h-ovbSEp6*b2Nz4M5)_&n z*Ehj{xuJaXdJnE~J$$r0I`%w=6c>8{kQ9K77{jlV@5U z06!OVUVK1ngShAKP#NS{5@c5k#K-hYiBBt-k>MU1$i%R?wUF{L_esUMU#H_ZVq4vx~Lwr{I&`?`efR=V;7{>Ps7&N{ODk*1#?_{0lw$icgQ?cW{pOjl*>{W_eNB*iYkpYQ-rL*$<{{9#YSj=Je{$|^a}hI`n8zNYYZe?u z_j*u2r{!+a3?q&7pQHD`itc6&-2LPDcEE6L>A3zPpKx#-pjbh$z8}*l3dz9N=J=0w zuSyMC#?1B-V_Ljv(_-VWd#h_nT3(g#{rB9fa@55xt-@g<*h2*G^`MO3@HoiEr)l^U#(pLw%b(dklsi&rN;S>SEoZzk>10V9`1@*{n7YYM_ssH(0b6o2G z>X}pjx6Wfi`iS(A8sj>?+O?6Ay5aT0zDefIq@X~~waWbPL#PCQ8t7x+#r>+HQ$YZ3 zu=O=e&S`DUIaSH?-9f%D9MyWH@()`{3R3Y$Or@7;4-t#boo!788*ey5CJX>^T8V2b zRkn!jge@*5>YPgVci$6MWt3|SLx?#R>rzYRR%)@yK>grc?Z`D(j!a!LGF`O@ojcc? z&#Ir~af88NK4*$ye!;m^wBCdGXngGZF``?{RUdd9>z0so4`CV?1R>d=nS2&qWMgL# zr2yWhTEW)jcy;ya#k`I(TOLGNkogL7h%Ode!8Y3oRM!C0NPBNj#~ajSKq`j=_sut8 z{Dl{&+HuymRW%t)8tjwbVi>$*;X|~8-=6l;%>_zcp_M%v3 zXD5Ef9c*T2AMUfQ0Se}l)4_@asPf}VIkNEhuKp0Rgh8&>iGOuaEP-RXgduVX|EvxhrZdi&5)G^O2D~e z`ES0N|96`AjMn3R+GC#Vtem)tl|T@kZwPU86%VmL>8~7h<|<~-kUbHyL-3x+4BN@J zNC>xR3?X(KqYG#QXSXr>l=Br~zp9T7uGqDz1W;OOknyh773>QbF|%tGqr*K*ypJ&7 zZ((2|cq-p8hhyK5(eRXYKQ;RtA0mAX7>R)L02vm~z+dSBVBWu6YBF0}GizKv9KvpO zP=5dY)ctw?{UDLOpWS1&mGaQ|7>x}L1QgE5$L2@n?*IYmYHncxyc&@!HEFQ*%A))*E>{;mgeBHK9bGfy& zlk|7+weSn?O;ieCQl=r;;!hm>9M99royh*0)bX+C8Gl4=S^gRGRx^6Y52YIXEOvAM z88m0kZoX>eTjV`M*2&Le^pMa5#@gDH#rlCIZR_><>D0yO<95?N*TwTbzO=#bjW=BU ztn6tHj>-v~Zi68zNn39))N5nnh*|CB+B;96FF$d(apuvx1>QX0bx?X>NmMJXgP0x0 z`kv)$jdO{sll=?t=w#1Y^b76t>8zu;RV#5PJ;bN0v#_kmT<>P{cmLBh^8eFym)7+v zq+10asqn)v13BxF4_18m>{?G&<@wjHwVvQ5&$Z@|1*_V=Vg-0=`|{=6t@2eo2~2;> zE}p{l!!Wsh{6m}SgzW3W*U&GJDCBnY?0G{?4M;<8j7{&5@M(I7ptW?$#v!bjgqNr4 z8uB=eGh2FwgiqZw1dlmo!w|NWTh5)e3we3p^~?{O98=Ek1HQxX6w|xT`H`6aRP(!& zJ6_fK^!Cx}OEkX$K1XWGC&+D5rhbaue6Gjj^E}4oXIalvHqDdd^M9s%n#Z|JFz53% z?~xizSK%A*Es_Bx40K4EQEAMlyCXFP5C8hT4GRaBv=-#%moHy-YfjG_#$O$5*asWW zCO$TApu1g@nV(Z#>!H0n^If!6KXKC$?KEfF6RxzY==d#7t*|@Pe)=;Z$w8YAw&Zrg z)%IsX(wbam0(gT;T3?MeoZkNcl{Ga~M+czqKH$GYcH#$Y8uumnPVlDXJHead`Pc9r zWEj&NaMiw!7}pTn)e#qiOUx;*zFdWtMy04Y8Ex#rC9b}Fy881X(^}>vGl;*}SbaZ8 zzP5vp)?u+sQQRYysgel*geUr*^rLelS>F@`r4=GM$!R<`6eR95jqWKo-$O^0SPc$b z@SPMzdK1KWf^vfAOf#kq_fWLCaR8$>?E-(}b1f{b?LfwT_qE)29~?VhF);?yE6!VA z>(5_nHo49Bkh}1GPgSr#RebhY1#qu;3g4?@z5^lP&v+b-RnL_ZNkv6T$wfuqY4Lk< zk`}KaS!gonn3eqgme0?V(E8^UgJAjKO8SF&OUQ(o{wDYfe46n(IzrX{HcQrMc|5-U9h3_$3z56rF5qONRML$xU5d)8X_#xp3^c_eg z-wElrO74m;xvR)^fJtW5%vEp^$Cvzth!ZtehlcdamVt|7xGLNBd!-n`NJii4hsgKX zx1>Wr?lJooW?883g)}GH5eUxrgR;JrqEZpiqqhP41KTG)gTeSk{S#RCy-Q#O;#Gzm zC8rdUs2Pq5$^^)CK{}t*#wmo#m-_m;p{_HgAT_jXMzx#K=sDT8s|qdL9ra5O(dER+3JJcx~h*}nEz1PVF;qZME>&S#UO(HYehwlYB8=O zlB4n0p!?^LyKO?4)LlwDr}~3=f1Lp(Ic1IQb(Jl3ASo&?H6=#tS2J56E!-@dTUymx zk&l#ii!#>*1atG+gyt29aqXeGD2R zIyFTQUzS&LkGiqAyk*7Gjk~^1i;YiH$HgiMpW*p;BmCV-O%HjX5-(s_n`p>f$^J_q zEjsbd)uZ^FScK0;gpWU39ij=P`52$Mrbuk2dLl4?+$D3q;O6nK7Fup4wRNPg<;{GTPmqtfR!^!iBK;y0_bii5fzLFR(ZXq-8GHxwMOmxv^!l8vj5#T%J7%bT^@!bAXE*yA9hF*`LbQtzsR ztw3FoolzDUnHpZ`=2dP?ib$4+%Nt9vnqtDy9M&M%QRdjOReqkc;PETf27OX&N7dZc zx{he&B46JmO;U7IT?rT(Uv+#=rLLkSCZaYkMkrxOr^B*N`VRE5FX@P=~KSk~FEndd>P6IlnXHnNVcdyKozR@T|CEy4~M4SIgdnWr)LYIwH_^^N1^_21+d zS1GDeE6bq#>B_RV-$;#Br#=sQ;?u~zK?rd_v}F1czbyV^G5RFXkNquBvag&u(>8Z5 zI1cNc)D4$!+g1+VGT%D`p2aZ~4QWk~YH5LN)c`ycn7bjn{R;H6zFqidpu25Bb4J>- z_2?(K23A$?2+PdKOdnjlxHG3sG<2l9s=s7Pj-Mk0>`8VPhgmOf*NU%RKFq%f&%!Q9Ytl}}u`aVGnY9|#P%b-f?> z9CpFL+yYJIOgOvisk6DNB6VUxBbT2WVEP#bqp@(rl~e&M@aae@{8Eb0{(`*Fv>xwx z@K{We5&xV-Kg&lz?yv531%9cesg3A$dUI=OYXf@yV~wTn!aUk{L5X+57#z~v#Al~K z@5n~n-n4wAY2EUs5`B}d1gLKwbsHLT8@-u*5u`2ZaG4l~E-oF5NbLqkk3d{?>d&15 zK@LOaMO3DWBIiJ)$=lu<8Xg{6``mM_I-L%LFJE3#Rt8!?*s0PEL*g? z2;0G-rYnLr^n7tHe+x%ad&G&Y8-aGGaMwQB_n)rQ5lWQ$Z zh>TB5OOPbNT317{uA>8nv70K;;yBRzKyU8@(b{3Hb{ITgmld8^l$oVXk>=}q4UN6t z)M6#Jg6T)F6yX$t^}R-9DO}3|WZ%v!I{_AMqz|5vMTvE9XJlvt{#1WvlKxTf-o-Q1PZ zrGz~{WYePsEYx>)9PjGdOz7}XNeL7?YueJ)+i2*W-_+QfQ#4#$JdE*3GF^q^@J&Mh z5bR|(chiY*^9hVl`vA+crh&q%pzz{F_WX0;d-l`Qr$NYRHs@r6(b&-5+}u0>-+YmM zcpKh zXSMAp+YntGePrm&8?T++(Kc%)cz))rc6jzrx6M2rKC?ADMN|6+kotT`oA>M!GiIEa z?cIhW_og4=8;EIf&+k}9$!N^=6SlU1wQVA_Y{z+XQiA0uy+Eg}Zn&|&x>%PV5v`C& z710uDT&yfIE}m_!Zcj-Og41Mc2ky*M=FSE|6`FzqO+^rxovX~t4Go?h5k4n4^Z{wQ z6#WI?v4bEmGa{0gDOV=M^rN5--p}D$$IQJxT(8OOBnsit$tN;#xu`~~kmY0P68y5c}{Kugrs@UM;&gPOA945 zC6pngTu8%E@*qHfhTdMI zG(^LpZ*cp{hZ7si%A3oJ5>m3#6qy>|FKFXvpS$|c_c=DLRgit3?m2GNA&@(gWz`J+ z7V5r<-TN+F+*M9(C9^*tHRIolp!?#&KDb=S^BDWv9bXQvR+K}1-UJA?gZ1pC6#wGL z>nC@CQgV2oyoiFbJTw=HLSslgt4-{j{8Ro5=Nc3L0^L- zczNK;(aN^k%4%yPy!4Y3FP+;lK6SW285p^8@P9i(KH>5s=ssIycY|x-Q}pb}!6?ZPOOnYTo%^8SEk;8}0_nd# zmt2&V7n!)!Y$-~sGRDzgs!QS|{{lWuOij#ESgg4@nds+P`jMN9|B22OYh^XybEqY8 zqQGal$ac1t{MGtv!RLodUi-SOvCVO$7=1Ri4TG`1hHcv#@DJQi@nrpTm`M96t_ljG ze9`~X3Twe5sB1jJKMK0|p1L}i*t`$!YyQE2y9}QHgdvf_w8Avfo3L0H|7abWJHGq< zfgfNoB!kugFxPo*Edq6uh!`#b0LS_Bx1K*=^2j3(qu8D1r-1`F%K7(k`Yz$Vj+}V` z_Hp=>C4Ns;idWd=Xq}%zj@K~g;UQ;KMsj-24xce_?xdjKrQ0a?gNo9cno|A+Q*ABS z!oQH7lamfA(9ehaP0jsF3$o+tlJb>NxvE~@P9HlLSW|lQIV=FHN^8_P={KLl0;Io=peW+Bd@SVIQ&{;rhTuFe9CB5Xz(7=!|H5ANU^C>G!+cv z(CGzDm!wiLt#PYr|%vx?zIwn?*G4u}?lGJ|QaxkBIIL ziV}?fcjAr+cPD{&JU7GXs+(`Rnnc^=v|)i3q@hO6p?wbB_v4n+n$d&YQBUU!QM5X< z?w_D3<3hFQ=SaPV?3rAadzj!o`;c&yd(J@o+3@6!*;$A;zCM0js45?-yz!@V_@tDCJpH8|ZNu)|>HNp!KE?tI=!d7#IFupqr?}_8v12(guKYLs z*}CSyDqomsE3T?&sZDNHsz4Lh`mKV@Y=u%@pn<1rYj)`~5@Je>{f5PXaB)*=vaa&I z2p@m{xY)R41JY{%72p78l7-__k`YmKgDJ{&0$xNdz7vKRQ)@bHH40-eZ1{ebPM4Lf z({ZNf;!;-Hx>hcYSA(l(t8c5WE-9`d<9HG%2UDm`F>D9fLl3y%dH3Qp-l?d%t*Ss# zZXG!}g6vE}cCI0ICa}|B3h|+ItsmR+)q%9e1`uLY)Yv*}Q%gc%ewR+yrR7X~usVL} z$}Zc=lsKQ7;*#p>+sJ*yHf}&RM$xwj-p;yf^S}jVzF$jFcTLCgeyiCQ62N}}i?T8c zeP8s|fjd$YG?k-0ZL2DZlM0Q+AV8g$rzZG;3_p=F`MB^6Dz=#yP2TEbHU2RYHC#+$ zNOuKR_12O)&QGtZi;8&Er%+H95f)Qah4n>nS~Uo$Nu!=pOP;m{!fUkU7&cYS$L>RT=5K4YHj`Rx*z5Y;0_VC-G$Ho`wcG zj(s6}S+);d=lP7fsc|YMG$1%3p2+Q6<70#gOTi2gruJ{vU=!_)am_RMh&67X|Vd1F<2 zb`$#BSO+srt;s6*bbamnzgSkRe)-q!CE9bqk)^R%Ts}m&;cVpax(5%RcH4xf{eKtg zpFyO@2%#^&y>E344tBH;4YlX#bb0xOh4A!9caH-_WhvQJWV~|**?DjP;m~nJGK5GH z-;imaqtL8LHHN^(1{iD%W#b4ujR%pG*dK#G7Q`<#xyBLPC(na51UrFoffh;zfM_B1 zPb-WeprH|ll%&>n+IEx3ho_gu7w`!`j!VYDZ*qn{^IIT%f@C2%XEM}jmqV8<3Dp{i z)1Kg}xw7KNfTOUO$|WM7S&==AqgHtOBt!J@N#>%2=a1y^^F&QEXizCrQUemAk~rU` z^1LW(byGWN>Xc`sn`&a@P4IM?acOF7BSu+Js zlKvv3sNv8iPW3xoUfqcLOH)0_02XI|;iqwb0l4}l7(%j(*xmv=8wQ59J9bzLk|SV1 zMga@IK6Cu`d&t>%)bBM&Cf<2gj_i6$56eYB&A?cCKnn0l@K=ouG%2D(V6wkzR235p z>oDSxl#StINk@R=kgaxW{I|Z)o@l zw-vU+laHR+zyHjm8#hw98?u+d2$J)h-x%F`cVdM(Bzkd}GBxDxb_Ya89In;+l=>uR z0SEsny%!NkcNOzT6y0AXOpaw2-r?W8@N;;w{Ex5{|NXzauKE9Pt?>WSdXDaK6+orH z=Y$W}Ya`OMl+OvgVffmx;+LC#$sc?ntSB0$WgIyIl{er2F!z6%$HvHdkjh_i)dP_t zkeT%?ly}ffU5o^NN6ylUu@Yuug$v0)2Cd(0%%ei`k8g#q1iOQz{-_vdlvqc!XM6FH z&{^=UxD?O2UJ3H!%MX!UMX3*BJfI5ciL+p%@rhfhD_lI}^Z6F1Sk6K`+_Y(}wEc%% zSZ{g7!uyD`u-@nYAb~oE3khMKvNEVeeI^P&W5rc987MBK$#CIfR!}pFVK?#bF>s-% zCe=`srv&3dw-S8HrL(?}?!jWw!3UM7pz5qfw6F?sS*#L~q(!Yl9k_pWRwWXA^$F1} z_oUfbY>3UGXDbbIRUh)BzevzFL(6eDMkY zO5A_6tOQZuCH}XuU;Txj`F`5s*4AUkptAM87T-@uf3cB0J*6xd^}%G%Tpna5KuJAp zKOc4s>WW5}#|@5_6_=VF0~?{TxuQQAF1Dy^I<7vPk)4(Grw3cw*cqp*Fdk|MGp)xp z6n=G=F}}@rz^}#B*xlV|YzY_&+&+58fdf!8)mLnuJUdxYGPwGG@7wzT?n4ys3LPQ6 zA`-HB&!{)>PK!J8^JLBM!cLh3TPQN=86L#5%32;&(0bz7CraXze0n}&jzae0WL;tg zcy=gYvd=^L`gJ=G+#xaOg`V*Mja$X~Z|~asfMC|b+sn#|d227LHs;>md|Z8O!S@Rf za-J1D)HBdnW%v&)|qPTLL6VFBVBE}4#WfKWMG2F1=SC?fp*5<-t z-CBaf`m%sS3Kw${|9IiY6~pW&nK({cT=jpw`q|)y@M(`&d>&am?GVY9;*1uTBV4j? zdAPs$=`D6ZEB^|^MmjdOO&z=x=t#7Umm@-Qbz6n<)-VNYxRC9p$)b5_4*h`8o8 z?VGP5yg-*FiZJjR|3?tWf7J(-Z9izkUDp}k_mgXvh_A-)L|qaVyC8J)eIiKYxYI-~ zL@Gz3z$FRf{4PP5&uN27GB$q+Q_$F)#73)h=U}CfF4}?Gu{~%-AA$!=~-YL5%X3Fv21HyOhMIzKwcJf||Tt!BEICC9c7fh~O!meXIHCl7ZzR}Fp zZ>{Ides?h$+yUFkT=jFzQ%&T8m|P4o{FJ@lVKbL?Ihe#f%a`B7*21#u%pNx$k5l%b z_PZ;Ne_BaxFRB*?WVX&#O&dZtYFB+?Nk zlf{TuLuiGM#?-snkQ!na4WwkfL)vi}0mP%V21j<$*nN;zG(BZMtb^*Tq}tFlUoHJb zNey_#VAAOfrb4`@Gjl`s5wgLZ5B#93d9J46eFWr}Cgi`x0u!%mFPh#^r{Hqoz6$cN zl-yhzN3m2V-~eTVz|;p2{1pUk{0ru8K+78bAN+?PfWHovfBh?q0pvg`7vUz!v4X)O zfEqGtNKkHmM;I^YbLee^g>${gbKw+y8qnteWZz$*XBOxcBqH!tZ5b{1{j8#~-04er0m;n6 zGYl{ELYNmnGU3ROL)d$Cpdc2eEBbMl1R+&>_f+#=fRKs)%6o@!dR6f7O zw&8Y{Uq3q;Z zh$o)WNpagH^Eh{WVG<|R5$j2Zip|`l@QZ}$niTm8n-}=F`6AAv^};$w3jGmT>dZ2k z@eIuCV}RE#Qbhhu{3M?3;|-9S z=@{<=gjb2;B7tx$#4y4GmA}g1VvLN6jEP9+@a~$5iw3+#TX}eMZ-rWoJ~u71Ok4X? z{+4aD_9y=>3s$C;w`|=#on4w<(Xw#`5-@kUSMay4E5%=p)NIMkX`k`Cp zb7`weX2+v@Bky$8MOPuEVPp?dy7tE^wP;>K=HOfq|0}k}th)EX2k+HshbJb6*}Cu$ z@H@n3gS{)ytYpu*FA-jlldoNr$55!VU0At#^~$xQqobRl(%x>hp9hy-7#wgtgTEB! z2ZWcA$|}NQsPw6|MB4r`5g)+vV^H}c3V_Fzi)360ArTzuALFlb9TxT>DJ3dH4BiS& zh2>SHdW*3Gd2Q3?!+h=Xwme0HzA3H$yC8f=vsqWA_|Bf))6;2Z*F-exn)SB9DK=Iv zB4ayaOlHLyh5RJiNQ7^D=}n_LB{i~Sg(fsVciG_Ju*nFO_iGy$!JsVN0|)aJzXrcN zrOob;3H!GQ_X@#HnHw2T06d`wkw={e4Iq||Z(<#(^Xee`ULMqB3XeZ8n((d-N1lO# zpXSlUo`#-u8R;X@gQlB*a?JykGgrZ{&^;$yhN2U2oHT18U6tp9`oUM1`nG6_N}AM0 zbMoygM%UYS8_P-?vT{wy(GyVf^mwK+O&+!=GOZ-D#Xi!%AulUU85*=CAw?sv?V){? z>boMG{hC)Jo^;Nom9X2)qxtzmhun1MEmSwYk#ni%h28FXEg&0m*xyRx?=oBi&2Nsa zZ>cF-iM8NYD>~iwz{8h>=L}DZO|y&4o~~UMpq6fi`#AcfHi}yC&-jWydgt_&@Eo4o zS8NLf+kn;yv~MoV2DXTp%Z8(LFJ*2ET>C0O)`p%ZtB?&#rJOyUDSJw`JvQ3gy}ZYs zSJ=C3s-XJc?0YxW-3iX`Oh3@t)!x#PmtCm$x2(zd0e=pZ-?p`w*24gwkUf0Y>CaEj z+0Q{`8=nK-ZIg+v331~xL{k!U?dsL`$;orz1Mu!K%a>nTj!-du$iMURfJT{{lC_!CvNHPyscDtiUVMtYDYuhB&abj2q@fpW5*ap5F-z>!Q| zU3eLiZG3lJ5qG;7KgN@tY~t#IUMg&3Nm0QO5*?hR-Lal508Bu$zZNE}F36wKeR+2? zUHkKM`;tsnU1Ox$ExANVv z0G^!U{#FJTqyCmcQT$2yLAL*7D0J(7c6(!HR9KwcQ63sQeyhET^uxzCHJkI5cw0(a z2)VUmpp*YmRZR^$D?#k!(n()Zd1}9ugTeU<-evqQ{N5eEV2?>njfs=XXSJl8zM9W8 zW;x%#3;y{8=}q<0hutQ=E`^~U7NKq`6GUrJKcU!*@YX4kk`y_L4uEFa&_LL+fz=VX7Jv;i;@)($sq}!=WN`Y}HYK-~mnmg}Y z^C?umdw6{R?eDyE`~Ew2zbn+4!F#3)0Kip}ci-spU`55y4A4*}(7({7M++=F~XI_L)69mh~%Ny8njjD3K#1961a4 z_n*Epc`rOX`O2B`{cs=Zo?r2QymSd9fI!Snh5Hvd04>P6=vGmWl3nb(IBLmBhe>)1 zl05U9-+-El+Umk?!i`4du29ZAsU+zsV(BpY2oWLB{@}uhbi;tG1Bg+UI7fF85PMO< zN$iQ5Wsz`a#dvS9pB9M!@mp~ z_y%C&-+;<4eiv-*0$X6KlRN(v*E?I66nU>Mk^~*Zt1fZsQp)6D)TobY>8~FVypL)gg+|0+#0sA1dm( z`G=mO&$sf|XsT~`Cn@KMi-O@?U)^V{HX}Slb9e)Rlm8Qd1HgCX=GX>kTfB7y_!3S} zhvnBd6#O*KY35}0=s6b$FQHzMNEsP~$7z^wu#IE&7o#F+5(QpZfxX|_zIx5AQ{zLE z#RsdJ?fs5jRc6QiWnd>(2vcZljxi&FAC@?%pC07}AHaq3}HG|J#Ak8lVEU&}Q zOJavBlUwG{LEE~Cp()q{D~hTu&@i~-_S@H#H8z%6nwnr>cLT4OTHDo_qi*Un*zUf4 z{ay7VogE{?wk}%JnAUS*wfNlXInhLl1=Mo_CwSX$kq_f%%1Dhcm6Pu)DteBZnb?D0 z53Ms4Z`$k_z0Gbh8yl?6t*zCqmBpKu-3o(N+DeY5_6rKZ}buh_q0 zlGGai5?rMmsU&9x2nOLh zU+M)#Lai@BtQRc}W~0M*T#ExBswd#8CJ^SSt`mHfA9{!0m%pPQ?^8a0e8y6ECi|UU zce=k`o&gi{>hSUBU#!^P`!Bz6@?iUukyOfotrgckut6>K7qei48Ka#LkbGyf5|VQv^4 zBtED|V~QTNCsyEQXU7%9E=Nce$h8{5&ov)?7x_}++y;vEB^QRUQiM!1yuIR_3o|f^ z3ZF#=7IjZ%7{-v%tB}2g>LLsF9JcJ15m3TkKqiBw{8>|FZ<9>0m9rsyh0|8=3h;4t z8!{W~(2t9BVCy~V0P#G{d&1)!>BGTzub*XC2_v0o-S9oAax5FeRsY^Flvk7#TdKf~ z^JS~Lm#rG@12u1#uc;_6E-J_T&S>1MA-w+yZg@ET#Mg!Rr4#W!;FyJZqd|m8Ywx`3 zsrF9TH>tgYx^|DW_>NHX>k?&*15tk2fISw0z%E32JB&aBU4tIDT-e>2CfAjZ-LmsH zyLzm*)V4UR9e1_1)>OB_OI4B4aY-2wDcf&Zzkly-Lw5$l?9O66|G}WGb7-)mi|ExN zy$OWhiL#W3B4wcl(Xe{z^46`Fw_dAnYO1e8qv+#L@sBiEm4>5cC10Txr85{@T)DPJ~1gz9JO-8?Uu6b ztEM(Cud6C;YHvwMsJ7Obb}YXWKJMsTmkpz>6}GW;t14^DwMKKZS+6bI>tN?|P*km4?DfkZV#GmX;Q(8CMJ^_{f)WCFEausX_ZQxkBPF3^7E~;qF2nmgi4~2V64U;C}_(@{6P;Mu2 zozVGso#r5-r zCm>k%BpZ9AaRQHv<76oa23CYSUz|MaEl%KxIpZWA+1-fn7aS)~dgD1eF?XDxcJvC* z9WYOvfXCbd1^dAlGzrg~e=1Jkaj$WLu(6N-+i?OXvtO`n%%C!4D{~wj{gl`28h8R> zr@Pk3^90W2?v=S}y?U}|aCG@Ze({!wNWEE~=ddF+9aZ_J2pCbWtL+}>8qH7dYskw; z&l|y-*qn{zB1quSu%EiKfQ)cFC*8IXan zpGAI{D|W(N{grPS@b3?9T<-_fwzd_kdsd9CIcP5_D#$BBUTCmBZys*5jqcy|tq1wb zrUIR@RHLSKuD~gJzn$|mCAj;bVZ^eJzX+8r=lIJY=`@+Ar89dX(W)}jOZ+tHH;juM$VPE7HFP69hL<+7TbH8igO(A}O zhxn1rpx|+!Ae#0TKmzxd>|^FrA%;Hg+g?=>APON;YeGiiHG%ok^SbA26hRN@XaHGo z0A-2-sFTLeXi<8RD}FMVuNEFZU-YcZ)#%l$dk07R$MZ|JE*)o>&-6ErpFB1mMvL=7yvGmlX&LnIU()2E(})6S-)?aL3HKX3;1)wm zyu=V5FP{HrV(80`iGk6{r>DjS#`ml+88vF-H;$n!r2D7DAE{nrNW8T9BOXwwKe}31 zOkjWX=i>pTxM;D&AI>N;5`P#$rtD!fCuBU44^Myx$(eLaS$Iz1?7|$8T%k6~8dV!L zaSJJr(oYh&!Hff}n0X7lhvo5$nt}=N9+Ag2XMay>m?qP`NE#?wf$T4mWmRKXAX~8^ ztD;!m0#s&AvZZ)?K%dY0f4L>tVb#|e3ToRHMYOc*b9CwXMLSlG!-+9mpBxvGI6!OJ z0ZtJC4%}?L=`3f5zK=oe+U;uB?$xASINn|YQJfFyW!k7Hg{%1h5Eh;FS;PD@L!=6s4^u70nsIG77A*6q{hg5qY|ww$a*rHit1w%VEr zS3J_;OLdT}P>M};pqX7BtqgLTt+^QF>i02)d-b`reN9M5 z4AQ~Q;b2Y(5VL;$Yn+eqrryYra|7WsFUfvQuOXG7(ckdbUR%GO^SN=>2>%bk(IOl_ zbPdi@K(`|j2VUrzCX>NnYTC#7ta|z5msgzuuQSfkmt8cDyGUF57pH?!|zd;2tJHSjV6oMf^1d)W`!HO#&x)6?zkob~1r17y7I zpp<(T9FWw^I?&uKdvT5*Lm?QHgnM$OxkXBS* zh@YD3Sho)5yvqJ~kipf4@M~me%^?$#=vd>Fk+EmSwCoy@k<>4uSGj#J!Xn>e`7Urt zc1BXm>kO{0CDiho*#Z(~{tWIFVlQR_+FKQJy7bi=kzr-B9rD%<2pc_(^GWnmjfuAwf>+NWkl|ueqH< zEvTj5bQ|MBC7e+ z!vBHQe8L!4WdGovMZGOb#BU|xLA%fG&<*#jKys0tS|FDfq|#a+xqzE_6YKEBR&c|U zJJjU8DApec4sx3*AJMGCHdc1BCd)@SV#93~j?|#|=0BBP1by!D4f@3Kjjs72yG9(} zppV7(e*qK9D^mb?+O3k!YTG~*g^v^`rKP0Z1iC7-4p${^n_nbQ(0MGFe4!%9F@Yb?} zXSlKK;t{@B-onsXSngoY`DA$;Pn|oC79W>y8o zl?Y43%+9!;nz%p$k0fw}oJ0InuQ8G0Tk(C#-wWpAxUAN7md>@f7Jbn3zOG~S~aS^R2STR#xg5o=9E@qBXUj~8I8pJtX4{##&ILgi!9;7 zYv!ihk@IWKP^GIpCQOZ~hWpwk1zYymxJ1adCsdh`Hd-5{A3EI!b;Iw+7UBdWR*#qy zn2MOHy2;8y^gJoU@#Jh0wk}(f#$(rd3fsd7Pe#+I8%T+NP{(iU{kg|q9Q_ZW_TSdL zBZu%gHuq)0Dw>iB<(FJnwoXHqe;EVJaKPCfYrqI|t*b-dZ|}(>(_T_8eMRxcmk*x7 z>|oZH!2n+YkDsk*0001Z+I1NPR2$j$3P}hFP-xfPz1wvc+EPl}E!_g!ZCAQOG9&|& znRF&o3hVCf?(+Zsb$54ncXxODPbSHP{?9qQd+&SK@0<7T10Ya8|EvTX!~giCUn6p*coO+H}pU+>;iLOSC|X)U^mzu_JBQMKI{bs zTnvZ6p>P+R2A{%Va2y;B=OV!+$Z!geMZ~c<4wt|saVcCHm%(LmIb0rBz!l+F_zhRW zm2nkZ6<5R6aSdD(*TS`N9b6aJ!}W0k91p+4E4U#}z>RQY+ypnp&2V$v0=LAiaBJKK zx5e$?efR*k#~pA-Y{Q8-2`6JaPQebGik&zOr{fH`7Oumca3*%)EZiAqV>k9-FYW?= zz@P9Te1vmwSDcIUa5vl?_rN`IKJJAE_F)FIXktI+Fpm}v;2_#?2Nuvl7mM&Qe1Z$m zgUisz5(c;shj0-N;|T7J`{2H~AMOvY!h3iCya8{*TktNt2Jhg3cn}_phv1=j7#@yC z;E{L~9*xJ~v3MLFk0;=XcoLqBr@$3>DxQX?;~97+o`q-QIe0Ffhv(x3cp+Yd7vm*( zDPD$`!})jx{tN$&SK@#0D!dx6!E5n4ydH1B8}TN*8E?T`@isUeZ^t|EPB=kW!65nsZW@fCa(U&Gh&4SW;d z!ng4qd>7xt_wfV#5I@3?@e}+MKf}-Q3;Ytl!msfg{1(5%@9_ux5r4v;@fZ9Rf5YGL z5BwAV!oTq!0zx8Us-qaiDM9s=qy|b+ni{EznrRHRP%Dk4akK<2NlVevva+%}No&#Cv<|IH>(TnO0ga~(X##CT8`CDVDQ!lZ(-yQPZADwt zHnc5mN88g5v?I0AM4CjCshy@!2Ti3;nnu%U2JJ*M;d;1%x@Z>M47b38v@_fYH^D=2 z5Zn)k!ZM)aPMSlz(p;KHyV35n2klAoX)iLUk1~`cllmz~d9rAL z2Fa!ZIpk827LW(OkWVEFXdw;JA{wR<+MD*Fec>3|kM^en=s-G%4yHrk3_29ff-~V8 zI*bm7OW`Cq2QG)>;S@L(ZiDCP2)GySqa*1kI+~85W9c|Lo=%_>=_ERtPN7rjG&-Hm zpfl+#I-Aa+bLl)fpDv&a=_0zAE}={5GP<0upnuW7=}P(!T}4;ZHFPaqN7vI0bR*qF zH`6V2E8Rx7(;ajt-9>lPJ#;VKNB7eM^dLP%57Q&`C_P4x(-ZV0Jw;E`GxRJyN6*s> z^dh}PFVidZD!oRp(;M_Ay+v=+JM=ESNAJ@I^dWsjAJZrFDSbwt(--t5eMMi>H}oxi zN8i&A^dtR5KhrPtEB!{l(;xIF{Y8J%KMaga%v{GYj&p+RImr#2;xspM6F2i1ZsArQ z%j0+nUXqvMrFj`%mY3t@c?DjPSK^g<6<(EB^BL8}bC+ zh&Sd}8j`M8s01vXw1$NlwA}?T% zeJ*jp3weka@i33@-nUa%g6EYd;*`y zC-KRA3ZKfS@#%a9pUG$O*?bP4%jfa=d;wp`7xBe>318Zn3oP3<3uehS`%4YJ+h58L z7xShQD_9xNZK^DLRxV#kv=t07>m&>f<86JOxzLOo3MAUxoa>l_2}8rwq>SZdf~BC~=f+Cw)? z4dd-vqp3iuBjQvp;#5afSFVDlJ2GyeV1z_2LZqff^yI5}-PAtAtILZa-dVEjtQofy zNOXpgSYafcIuc8#t~2!6(vUi*ku{K-7O^o<#naQHUJcd|InOj5+iC-nbp4X&ie1F*PL53{ zm*@(Ecf;VjbnvbMja~V`$r)Zyu#KS9=timdZ0&=meV85f!HfDZTl?T?(51ybFS zH2PJ%z9(a5#r8JpOCb{P(c&eYi5^+Xk}PGfE@hxg*&9X^gwgcsXaWUdy`JUdVu2hR zdut*KqEw}5q!9c$LHx7M-*t7SKYoN6*OkMPR@^YXYxZvL!0zS zGaD5&(ble^Vd`9U`L^NbHSSjNbayoKew65m5~T=HFZ{4g-yewi(t*b6z9_iaG5wb3 zmr5e?Ox|)#-yEkTOM&N@S)$Y+QgL{l15qiP1@)l1Lzq5QR-5K$qIb6T8EQf2A!yOmYit1pLd|jUmCMSc5Wlg(eBtl(vBQhkpSW+QLWwAjOlC48> z0$OB=vp~heUfyl+Wib7gW7si;a!JG$+UBB&No*1pWXzRGPDk_GJj%ti8?8_ft&m%( zP_om^d4||y!y@CE;n?H>fyO%I$nBCIkyxi#o@KDUQAr$NJrRGV>xo+|04kxZV z&zJEgQS__`-*mDv6HOyEWaD%rN)1M-*6G3luViHmyR58raIvYzb|^5>l#svKh-rdJS+PM__^=W3Z@1(LdhEe*MiqFC05 z`1}o9SZNGoVB+o)=K5@LL5MTIymjIQ%TXPJxLcfT+FX`fM|0IfBmXh~=Q<|rZR~vu4_=4=2GbT4q3R~3izCU53 z#_k%bCrUL~mG-ZBV3d+fjhJ6Um7-K!0C9E3`!vXCkk!CcAf?Y&J=L#4PJ_G#mIebF z3~FF&P|(29z}29r!2%6D4SWqs8Uz|F)L=-1MH&oiFronW&+m_k-}#mrZ9$6!&$ne{ zg-kJJ=*(zbHSP)@V^lkAHPKXQG(z4mYJsQ2S8zz^HeM0B!43t~n?d2C$yQLNRf3G> z$V6PpsF#PrBh`|QWkxyHTzxugZCM3G6PMSjvQ5Hk+~{@mmp_*65h6+L*0TFeqa&{^*_SFTQgt?TgkQ)~rrHffflO&IOT- z2ct6{)Mh-0WIR|r<3V&k2hoErs2+4dWCJYJU`VeFRlOQBG}@D)T2F?mp2WlNVOXyW zN3;x&)-qhHWjLZ`L{E)GQZrJ`Z1YI%_uN`@>Z;4I)n9z7wAfTyzUOX-u~nhebE`}>htIAu z-CBKYRi>&hvZ|9ogy<`4@18v|AzRS#c7Iwo_?DL}pIrUa6Z?WTgFqmt{Q$&~A= zsgj6ltR#c%Dg{g`eObpX)Ju&Dkvb*PptVXgsq|`0YF2zwx8l><6{__sMrA=^%7*9+ zJ!L~7(uPDr8xqwvG$w5*K50YoX&VaFHWZ_>p)h4b9i!5QLZprG#F94Dk)Uj7%nEn4 zvZ4624TWkOic#56pKF-=@Pt(P3y+tf%6wzF6j~&#M@ZmA8o2P<@Cju0i&jwHkDTT*#K)Oo=yj1=r70 zg}2uH`$bKSt^Jovl}$XFa&|47nu@ULC#|l8NW_%cZT~N^>W*~!{G!N9lTi>{zPO9R z=2ab(D$)81QK&vLRW2fjucRw~R@I5Co~KGqpTsK3H5ZFYMR>1BJgIIHiKT0vGx}Ch zAxCmveglq+roBA*Uyt#RZvX%Q00061{{RAb+GAj3U|`?@Vk;nKVqj-rWQ+jfNX94z zX2xiyCI&{PW~O!qCZ-OiH9+=Srj0=MCgw#9j0`Mb9Si`*?gvtM+Ra!8bX8Rr-RGQ; z5K0nS2oT`YYak#^lomoDBq0z&kv2e-q9Gs&Qe3qA0p!kI3bd=2)J2De- zgGb(S8$QY$kduWA2%--zUq(2MKwCU1nx`bi`_R8@ zTAU9<@^z)>6LE!4@HM;yA$fQg%)>jsPo03mZF;ry;nuco(tQ}&HjTV6A+3!M%M#Pc zZzr|s<-@U*)MOvdc1n)-N!hg26rZ$Cr@stJPfPMiR=#&B2+ia93tiK@a30=8^7RIb zUh|$|d3cBC>z)z$@+x-CPcEK^cZoc_%MTcknS(VM4YM=wO2&ZfTd?8gtl`73dC?@NXOBRD?6^4HEP&MsW*Z~ z8fEhtqtB+hdM6gxP;><$K@Rtb6n1G1;_sP zUfgjRRA%INLU;5>CUP(y6EO{Qu^21xBwoOJY{vW8fiG|f$8Z*xBuK&}QYuJwsV7aO zr6fov>F(dNMERd9XoPz*4QU?I-yK=V_>e^*ulT(}wg&9BfZZOjhXVF|z+Md4pZ&I= z25fM^77Ey~fGr-d{R4J&z@GKn(1`&%Enw#c>_Y$3hAs=;6!_1+fIS?r-}`Nmc)tx> z?ziDl0XxV4Jw+7puOnIqY&=w(NR-XBY5JVLrWAC zK`UYx;ThU(#1~y?&_g>ihbE zex>{LfPSfO>A&={{-{5h>CdKC-pW`xi?%uzY{jp-Hvd<~=qtnv#9HEYViWNu@doiW z@ec73v6a|Hd`!GYd`^5u>>_p&Ul4nUZ-}pn{lsD7pdKQQ5Z@8Ui4(;4#7W{bagO+b zI8R*A3nnIdNiP{g&VqSVMHmSBvF~DNR%Zi5fum@QJttu#8@oRkZ3>@ zBT5qsZGp|VMYhD2*YL>#UJAwsh-e-K~f9w41D#^|n6NmldD^v)aq+2trU5 zb@{(~Xu+z`mMDjQL^N}@KeK!wQ2|4Vip=3m_%MQ~gi%Cgj3uftugCK)6EGRokc$O~ z!2@_4H)1tjMiSQI6mG&9_V_utD4|#=g{1;kN+qd`^-@h*VS^+}GImL4>4Lq|Rk~rn z^pKu7DC=Y$4#_6jgs)|%?7?B#D+h5@4$EPjlp}Hkr{uUC$7wksr*K9HoR@QQ4nJrm zt%VC(N9&4ctj3CI3vDSuI#DM{u;ywmlYY9+kWk&I8>O&?TeuXlNQ;!B*3SkDGhegN z8uwxb=Cfuk#~N&4z1od$`58e{TzsrjjikB6Nk=|=cj+SoWr$=+j*OGLWs1y_`LbA6 z$ZA<5FUflDV~cE)9kN>va0kcatXx!Ru!d=*R?zBNR~u?GZK?6vQ9EmQ?V|&A2#hwx z?xpRkooq6*{wD26jLiFr%ktxHiWCr7-xUucb;TJx$1&!>(B2$*>2@34LLS| zv5;c7an)7hZ6M>KlVx(1uI(&?F_LP-xay_}b~EFpvt@DBUEA9&jGZnvoU0z%!3Hso z(u{RjdupN$w!YTYZs!yA)?{+7ehagQ?LM1GyWDbZ68}3#pCjL|uaW2K2J$@JOrEb> z$P0Bl`2qcuyhwL*uhaEG-Ag+|7xR9q59v|z5D5bu>KV`Io=Z7jK* zjUz|folu)&|KM>1GtleOVT7`WMzj3*h%jbU3_E&DB7zawnteAOed#fVsEhlE7_7u9 z)RT(hL#$Mhs%WUAbu=0=GPj(I^UX_03l^S4k zTHu#n|BFwI;~CdDo05;SPkY)!26)FBd&RNxO$4!4bd)643+fkdw{EZ3KEvy^jk|C1 ze{(Fid&jc#ieu$FFX8I-A69EmHL;3ql3mRDJ*-~)WIwb2OF762aD=t%gq)O9tXt=J z*V-t~T<^>LPG$ag(KKdhI=heREl=QD-k>|V);MSsXzw6;0rL(L0KeOqTpLywBciziDdP*$jQLPQJ zp?0g?W|=n3vTV4Gu-o&{Z{Plrg1bs@ZTvH8&FQVRPHDaAG}b##U2Su^>T{>4b~-Kf zjZ;y61$D$}rxQ*!opyTZyr-0$N(yrNsE|`e;nYQuP8U^nil~y)Le&E*sG-w8rJaUx z`h{9$q-9%ZpO5sKp4c!)%P9eyNXGDw~G5 z4vo+lP0$q0a6Ovi1}c#jxC?jV9?l<=*v}`kUgly7rg9pY&T2FhvoM?LIRhn1617Yft)?}!rsgu5lGxEx*tt{Lp}VjXcV%r?X@muTU3C3M&;P0Ta+?0n zMc7{vUsp$0J*S5c{!WA~xJHDkHjJyn#)ehTp~(Y^BEBhL5nFlksQRNxk_6_Tc~ya!Ni-?Rk{5^7lB&dHFmw^^f=o zmqj?R6p#=Jl_H#=BdASFa*mFYvJ%Z{+9#EzDrf4NQd{a$v&Kq8>eeRGOm2`C(u!R( zSu1N*D$rVR-W~8`Jq{IYsZPI?X=mXcAcm8pA){Tt2$p3>U5LPzt*BbvXbkUr_YU(rWP>D#@r=3mK zXZf6|x`v#rPmvQ{=Sy@QDmb9z)a$C$>NBVe^PUoeoazK4KgC_aYh2H>e*=wV_Z9$n z+U01#U+~UAXcXKjsnGvo$MOkd9~r~Bi;pife=9=f@21Tp zd=uC`QFug9v=SXePccl~Eglfhh&ROdvbP){FO;L?1M(p`OTHpYyS0581sS6jB<>Fn#gz$?b9Hxx2f2yN9|*x-WBI z=^o>r;C|3O)%}cRo_8;BFL!_9-tF;tI(T||&hiZRO!Q3gO!pLdial?8Hh9~42YQEl z-|(*WZtzCDRo-1b@>cmgzCvGjUvFPO-&ww~B((F5&1koijhE;mW4mfk<5O)g`O&T? z8Rq{-uT+Sjd%$*1^o^*L8>|?CtltviS5ViBQKbzv%C+G}r8dDRM>=lAYKK@V zrHhR9Rtl}<2*jR-dcA-c?Ts?Tj38FIHp19|n5(&+%2Ap!V3|teWNw2>#0#SxYxsK^ zN?t`SZLsmRHpEzmG(JP_+qLtI^$2qi>8(e4mE7_l0}IW%qJ*l2j1}xN6Q!y~2~d8@ zM_wnR-TN3NXb&B=DluCTVGiJZ30g3N&Lub1kXztaPJvqp4KNIlk2;~PTGA=7ePR3K z|K+gHP)l(V?5|+)UABd758Dy85aEuZfyP1_1bZgzS+M884u>5HI|sH1_HVE+!p?<# z9rmBF%V3woeh9k?_7m6&*iEnz*e{HQLWf2A0_h8+EruEk<)iqPNh1KCi_nIbz|J-z zLc@O{{%9-(CS+0wco#xX&!bx?BzwS~NFnVp__@SAMunJY>=zFkmEv(@i+BRRGmTwh zmQf|1Rqc&b%F#l18+#G%Ai{kqCL7fV_a(w@L%7co?n^P-s0IZCb|B7dz9rKW1W~t9`P_~h`A5t zS|^@>dnW9YNMRN^#k1&Xs#L3y{vxYH%aP_Lgs4WEYmsI-(%gnR-h{H>VSI(O_lmno zNBV1!zC+v#`?&ELWm)BhFG84QUWhc;TV+P>DC-RP&oovc{Ys=?g!D_1{z{~A6KZ-l ze(zCjg!CsHH3+pHr5wd+Z9p!2kj6&DuR+|6h`W(|ViX0D+d-?Idy(5-gxt$@oq-r; zeXCGk4LKb|i;O~A4;ybF^eU8VlX#r`NcR<_TaI+!K)O2+vJBxL=62hI`1{aKqm&QI zGZ_$@0{aBqGbw;Wu{|aeVTTuHP>3zlJ4I-_830M4@Wks&| zeHK<>o61$Ua&;otHC!t*R~34PRWm1YF++Z3rMVHcsz!`eoc0Wb@f>4~mA;el#*G*| z5W395f-1x)Md%3E=vjuz4%NRDWMJFD-eMe-Jz!4+#d-|?rFeyolbMVqZ=(EbQR?-^ z=Q3<8*Ls0g^+%WteEAN(5m968$Cn5&_Eps4O_Xspe%HdTH}>L7rPdee_6NmuAjD#X zcpYEf#g_`C_6okNAQ#F}jjt8>x>3A~y0163AVdj5tU`z_4ClRK9@_dQVnTWd=arffO z9(*Z-?{2`m9oq9CTIzf1g?fHZg`hrOP#-U-k5|zowCX(cvsXbQ-b9~Tg7n`77OqC0 zTZ=xt&UgZ;mLkt-NcmZmY8G0l7%6o`=_1I#6!m%z94=m`Jn<&wBc<=GdPR`R9;pIL;;16E!m_uHvNS%xPv(AMhNe!Qg7( zK_*wz6tB#*cxf59*wc3;aJz@qLou-=3Ju8FTsB zrNZh6%QAwBk9US@Q*gV8%9&-53~CQ)VubNJe9N@ykXuxkZSpvTJApa&UO;v{+GK?B zCiBVmsC8%HlnR@Pu;t9Z7jbQN;Y&GV0^|U+%$?+y7oa@mmnsEwP`;Bnf3yrsH5YJ+ z%C!)u89~davQ0;5FJK02MUQ(Iy>T_%>tM@`O@PlfK;SvXuwIl0NPG-DT1T4I2M(gX z{go7p&<7D}A42S9A4#K;kCMf>E%0v*+Pw;`TV<1xMgx0PI}S!_=Y!8F3@TOij6qdN z4bzlN20M#-Lb@rHMX-N^oeMh;xHlNsGlZoOKnaqDi=`OFh0XNy5u%DioNMevhzQCz z8m*zesPeQVhw%Y=i68j1nJxk~xdgp?G;$wfya)NJLXJbr--Y&=1{rH6EMm$z)K0#D z-y+z*!Om0ppaf<YjKQME=rYOI=nNkR@#7%m4ehK~hR8izOn z?`pL6t)Mz%fnnqL>#az2oRVu%u8rEQ@V^b=#{$}SAjNU`KOW^*aVt%!54o=9-c!#1 zi@1Hf)B(KyUfBC!?}vQ=_7AWR!oCIjFW7$@?~60=D}YHWkj6wM`=YJdQ%CAd$I%IN zB4o5aG!i{-6kSbY0I`YmEX}5W&@$Rb2k3htg(fzj#PIET)L5Vw!kdJRxR?nc^>EmUvdo5p%^n@hZkPCE^|NAMvhuPplJF z80k2rOS)xP=Ez)m3`RX?$`SGcIa*#R$H}|oO!*|nKYx|a%NJyk{F|I77t2-h8!c0F zXihDpwbwdpy|mt1U#-73SR109s}0r8(}rp1Ys0n6wX3w-wA;0@+8x@R+Bj{zHbJ{f zyGMIWn@%!MSL3e`>C4dqy)n|OGIkiHMzygKQcNcPl^T1DZN@=kudxAqzu6z-0Mafe zC!p&@3CLJw?6JP=L66J>Z}H-b`qe;-bi5Be&vMic1}P)IgfG=8f@{r^-wuopRO^;n zemlW837DPg@t{Qx<;hK`hnHHX4cRK@YT4x6FfuTfQ!eWRNWqd?F{S`k(b|FND7bwt!Bf!dL-Hr9n!qw|g`u;XXbzwECH23YvcX0l^P&yl%X7Zjm=26 z60X&-pC#mo{%-73bjDuN1n8vbL3MmPSZ|Bk@C%$K@!NLuYa$NDF((dD)xHgYUMcts z8Pkk)XgyN+4?4Ebc*%Gl@mIosj`5ta!1%;?)p*u`v~0|wuEq--a}MIZfRJ<0u4QPY zYJ^*dc6`~`Vtk1F-!UR^t;d&2{Jvy-!_YA4%NJ3cMEzP*YvVvtZB_r<$0a%#>j8Vs zf5z_mTQI4PAA)viiS3lsHhu-MIMj?aR=+Xv-^2Z()TjXCsVko?b{HD_n~CF8*ZFl< zG?eN$#<#ZKwI@}NY;4=5%rnB=b(g)y_PWO@N$g*x)sE5jRK2mn_%>B(6g5o5Y=+G? zhW~!ZU>4PBa_JA&=dWmTj6VOzjxWrGNpTCf4)X6__Wzm#W!h4!P?W^1YhwDz`GbP3 z2X=2k$Ts-*Ni0nTzt-ppc`Q#T`rIzoYbx!$!N%DRnx!)_z=VV13(i?xn!mjZyx z)n*xhNgFNyt&HhaOus8E`QTq>9|!l3)}%b%(@m(EeceXW!ci(}E9sX=Z8P%Pt=cPH ze@jJo(CT|F`dMRg-I%0s5UEB`GC$JZ6UR!6gWBomddM$ZV?OE$G49rqRxP|NYl`%q zlAhGV1&x0*|0`9Lh4C!HeWWBQ)IVV7+gsFl0+{&(@Rf|GfxR{8$MY0@IC-v4XXGwtJKNjOPrj6#mFUG;b1E$}T-7ML5yYb(@@Xxo5p7pcC_Tza0@)V96icoOIb@ni=w zSN_aTBY)O3T>iA`R~_RJl__O6XOc|2-`=NeJ!`9dl#qsZDvnoZERB~h#VE|rb<0n{ z&kEr5M&?%=qu9(6Re4NisEk3PI(1J<55F{zr?DeYl;&&nBSqC!*|r$Pz_c=UEk>WJ zMX$MURwLF9i~j6L?)4^~r>AG81Ys^+{hzeRzA) zxXo#NZhRKar=Av7waEv6&}00;AL9>&w*H_e^#|q;EMGT*KUm{2N*a$s|3K1;l&eJ?bdl7w;qGGVuYze<(hLd!<;3a;_4q;Pa9A2=3Kl4bogI z*1~6eU<;YgD6@_GL z*&6;w$)l*1%$NDpLLM!ThPyx(Pz$Y>){BnPex?0NY2UTp)LuJTJDGx7AFU6y)cR_D zDN8$5>qk;MO*;)f{k8toT031EKq2i6?F!sr?Js-<7ey5ZM0?+zRgt8Sgd5`!u@l8u0!jxL1qSbi7ytyzk0*-54;cR$zD7g@ z*!DRvzAa;X0b_hyVEmVKlGp;gFR~G81-<7eyEn~l%v0pIucVz7M zGxqniVSiV~`>u@lg^c$FjQ53%_XV=6>_$h+cs151~E< zbUR9LGL1t{XVYCIf1~F5=&b2Om(WnUgLz>M_@EB1<_E{hf(zUR?oaF1v;0&amV|Vc zs92i|x#wdw-ZkEaZ#n!O7!{WpyBjm+{ZZF9QdjW$W`*bwj6izf8gne@bnD9>cDKtT8k-oR!Uq2?0KRjf}N6E$`vwx6WpT=Wsi+q;r9yeMekc*O!o@bh3$k?S)pcr0P)Wib{i%9 z-hzH#6Yuk;<}8gqw9=$`Htn0vIqyPF{y20HCVUvAi@IP^W`lf-Zl`i7Oj{FST&Ue7#h zCHL`_%uf_ov0$rw;;qUpmmlvTmTudk@;uY0TXY|=wP<2FLpp5DsV!)1PvErD!ZtqR z!L!#TT*Jz!w88EY`sJzr$v*<}p_-+97Vv2S_jNoc?`K{AB-r) z3!blk*Nn|6cvx35y_Vb8uC(F(};`^mTAKr1(ksn?DkmK08`z^j( zt4DY)wT5Mc9iTv4Eccp5jew49%jU;;K~gWZ*WLC+Llq`y;go!|(`pw_bj}s;d^^|X zZ)SW*sdaH6mSL29c5Ho|%WA!>m~VbVF}aq8)yd^lBR;ML=vlcXQ+x&3R-%RxV_%&s zW19-wI_P6_NtX$j+#ot1lel&^DxaO;nmZF`;G6Z)>%?R|RSk`IAorGI{JRlmxw(Fb zaj+Pzt2eNv^;*4JS81itAUG0ubXk0yVDe#hZ!q>^jH@@GJvXQsp2pMUMBR*~g{rZ} z_xqx&@P0xxd8Zm>nEDsns-BpnqgHLO{Ie^%UjgpzYLux)BY1yh>TDPW5p!+1F<%-&RbOH=<;f4^UtPx+% zYb{MEer#zDs_gh&OA?IKTCEi2HG#U@)wX)?^JbzzNAfw6^Pl;3OBWcWzs6&)PeFgD z8FLlYH5RF{6~=Tg!xS0Y@P3b1Z%s4)g|T2E{=J8P|Kj&TV;0Ob*oC|%dNKPwkCcmz zH-Qrij1P<@*1GUnpu_pbTd-Be+Zb7@C(rl@DQ!0XrB=%#uUWhjZWSGie@pQHUFyms zybpLMu#>{9>E32a0F=l3acb$Nt#p>8#*Dw7DMeHZ$LsaB7+=OlfHB%;Nt9nEjdROW@b{fIDMe9?-D$?V z{>F`VqjG+N<|)Q2F!tOO)h9=FR&hO4gDIysmDV~Xy^1ttT$Y;RHipI}VR9+Yc9rt} zmr`>ci2WDZ!_`}=idsGiYt8NR6E@ykVrn0`y(@SHrqZ#Ln*5^ySgdrOOH+JkZSo&{ z*R4@qnYH4y0#qXsGc~bU&2pP&)Dh#C8xW?<3d3O;FLaK(oy#7vL0LCm(T}^R(g710!9+co$0E+2M;JHrQ z{?;>V<=-#i->*{ig~XK{<~+gab<}8b(*NU9_4y>M)YS#%$xy$nOcYKL)>QPu5Cmt+cnSVJN3kV&ykhKYJgzo=Jl4Eg4YY|L z@>6^bg*iL2iLrYd&x!A_uNSlFJIuWd+Y)Ca*&ShNdt>cA{|P=(n&am*wk5#bZ=*>5 z6m+@qTB_8V8b4sWK4tjUDKN)lo>+m={eDa8v-ToVyQoGWQ6Izj;7qUCWPY1&?^NqU zlgnefeiz#$*0LlytENu9YZ}=vc}Dv1j3XL}$<9P>VNtn%HkjLaSckLCI;p~!uo7}t zT6}Y+mKlLndjxUlxy|zQ%aU|eu>e#z@k31wvb>2fg1v@Nj zVdJzZaper3xS_r&?fEX&o>#JTUctNfs!?)t-FvP zXl1osR$onCmzCe#99ZcH$jLJ4e^?)GYRJE)=sb{Z{GUoz;m|wN%SE+uwDvrTrH^(t zlQi5Qif%uDsbMYI)b{57e)#5rob=;+@(+#D#3X>4M&_A9mP!jZJq=zQU|FgrNtV)+ zWGSj8OO>aE{eim(Pi*X1W23m9G^ zRZkuR)zN1A;-iA--VnS4O{$NRVXH=3g@;dLkwE_=^wWLvo1kGe*ZFVZedt^4eXlWk zsm8Y&&$&fnE=?(?TdP>-an}7{TCkD5vsu&hgHKkm?%vPy1?ps=t-SxXk~yb+Zr-*V#?rcOxApe;SjEF< zch@n8%O}o7UF&O|58^~GEw8)%63)qK%qeQ!t=Z2)>T2^nHcjY6z4kGO3$yC&0j-*- zTda!hkSR?Vf#|H8vsRf{6mkXYXtx;4jZJv(<qtGNjyHk2>9sj`v_?Ee*=Om{ zqbH)NA1=zDmzw>CQa1dA^Nt{At{1z6p=x@KC7eETW~U2{%R;ZR|$-@8$mO zN!X3Bn{_h{IAw^#?TMF)N1~~o@S#CAwWfyU++aXjX12Cs0cUDmfQ416^+tn>Nbh1*)iEV zyViP}E0`?o+SOzZdZZpf9kdV)qLXL{^`{Iv1#;S%Fh0tn5WD)**$8(O9ZhYi1G%UZ zC`Xs1F++e(<~Gm7_@WidItA38rJk_5jfMJ94?3Pspk5e(^rnG$pW002A7nEbs6&Qj z&a_N_woyZ{9W2uYbw3LwkDE-?A=5Hyg_1J4T!Xl8ChB0C?x`}xzqJU`k;!8K}+ zV+jBBo;;h|hn{ydV{!p{prSebs4Gl1ztz)^&*sg+yPx$!0~w*{*QtFl*TeR(#;?M`|~6*tB7BmJnGktd*)fF#UQ*ppniRj>rl&fWG?JNNYi#h z`i0295Wn3ldmL;hcDvwjw66(>HDh1DDNE%ASB!l*`3= zbhFCRDIr8xz@jU-MD$ll4pEzfn#JuP%k~7+JEO(=Fy#BkYAumg=5NqSHSUvZr4_c`W+}`s(Qw0IMq2hpaK)%;3)9+W%>Vh|%~8{W`Ar_1 zC?Cy5Ds37J4L4mySJUlu3*82HKe~zjyIC;x27dpJ-BtP;52683>Bj3e;^dILW!7+-*T={~zFdFZ~%<{Upu9w^wK(Qu`;ZL`^=T&2$fK zq3!fI?WBG57dim*0)0;g6$vRk^rG;IW9T2EvpAjJ7iWl}v{|;5ooSc6U*1pq<)7qa zIv}UWKMRsi$-fAXd|J*CKKX)tL4@Rs^6w%nUzRV67IMD)MC8d0a=SQP?$k~azabgi zq*j#qdjwub8GDeqr$Wt$tyC`KQ)8=9#j|78{J)aVru+slYwFl~rSY11*19pvc#UU3 z_8Rky_lpVRVd>fW0JAhh#192jWNe4S1bP!`ZZ$>V*LRn^z;1}DQ}rF zZ_Tkz;cU)R=C)c|tV(l*Yg}Jsnd4dz~z21~|Zjbn^|NSZT zExIlJa2@3@R%K1pva1~*G2PJztc$nGZ_JCWH7K#Im{NB(*4jDDH{b2z*q>QYs*2qw z6aTGg#*-al+F&)Wk?`f46uMm73>8{A-EPB`_R^Ztuz7#uk5sD}Teokn_uv_tPi@-3 zwbttKPvbh!WF0Nf_f$7{#zbotEvr_GKCI#Spn1Tq58~%7f@*!KP9Rk@&z#LN_841u zH?dkP^nP?!#@tb4?1R~3-RK#cHL#Cq?7GqDo`i({ps~iby0(r#i9RH+di~V+cWigm zzpY&@a}n;J#%jtp78y%`NBi;nHq0{Puc+-dV{-@M5 zj7uF|f#y$~4>Br@RonwpoWo;VX`GLiS=N}jr3T(1Qx{&WkG68kl>*WG1wR9)`pjBI zxeGL>#x_&GC4maBNo*gqvN@l)H|5kOrMj^hK=1a7Ug>z;`v&23ETI>fIhEDMW1<= zwGuc|Zl4t})}eoWXwk*(mag99)?dcxc(rx*>_KaXx;lS-T{0a`-rr%hi{DnC#C{*P zwMjiVX08JQ7Hi<1@$!Fe!jyj_$#YP)Qvj-KbA}jZ*>2I}GhrjP^gp$*F}6oa-IrOr zmssh0?7b*fp6XlD`V{)VEVbE?m5!L^933y zziGAePikd<`ZWP*@Utvdeoe`QG0v9;Kl#-Cx}J3O*}}e5JF;x$&xeHkWr|rkwPuD- zi&WH(d#B%`R?UDOz8h`$vx?hHkDo%yoOPQ;C3eMSx~Obn?(MM8x#L$-f4&#T z%lF@S#TDWT3W(8SG-={WaTU45HR2i);#zSndBktUZ>fd2PF#mD*Nf{(iW|fY6coP` zzk|<>;zq=}N!&yZakID?amR=;c;6~+r5tgaxD8=$7h~abhqwbF$BA)pj~C-9OZ;B^ zo^&xmOh9UPiMx>F-QsR)EAA2ZP*_Y96Ui;^75AbH_lf%u>wa-R!aN`zpmyR9;t$kD zJSZL{pZKHrBT6_)Orni^KbiT0D*1pApaC>$Bon$`!N4bMToX<{o~x#6~oWN@N+TzG8ujWhF=E5uN%X!fZ^AQ;g`wq>&)=WWBBDV{B(w24#TfA z!>>KVFPq`llHr%f@aw?v%Vqd=V)*F{zoQs_VTRvP3_mBsuM5MkGsCY1!>=RY_ZRpm z$oUy^ISjeZ3^@tN%?92)2ly2-{B(w24#TfA;P(RDMSx-<-|*w$yM5a5-9ACS)u#>L z>J#K!eS-2-c`CKzTYd87_40aZt4-7<(y@FqPj|kVr#s)w)17bT(X>ajN2s;-sP-t{ z>Smrc>Si8>Ix$2g_g4-5wFv%la5ts<7@!aIP)~Y^??UuL@>~O|wUN)~uZGmV0d_CT z>U-2GEk1)_C*Kmdh3_EVW`*4i*M`Hsp7JOD)VkBOB$aF%`}%?<2{@GnH`%PDTXiZh z?^CQ)^H_Xipl)o2|7H%M?qm4qXWoj%vD3ZFtP$F*A6nT9{h< zH+dhZb?-$vuL+9qy7>s72d^icCG*pJ)VT!}=)apV=2bU3&oW!o_{cn)4rZ;jvQwRS z#+ogJEw)x|ZbJL$DP=@Gt@NnJtkaU2%-z>~S{}=Mem+NU6KoM&8N7a7Lx0hEM@BX8 zbz?UqN!`-gs*{vvp$1hLHR)#9M19~dPp#gtu+Fb(&H={QbJGzlbiTD~Ab#@cEZayh z&5ku5QI#>qs(Z(xBZXBl*Bbs(7W-e8@;ti3Htyrnl{NhAj6-}Tr5wGddctfDzveWY zFj{TO-huciGV!FXL3F{Po}|!#r#Lo)Yu4lan9Cepy{~+XX)&x#So3VWWZ|zKJ2OJJ z>7430Ki51}lx-ECZC90Yx6X2N$82;|j}m2H z{u%~PT*umze1zPK7N|sCN#}VR^C^$ZnjrD16Fp;(mpUY$9~7s+#tLISAfxhHiqdRD zonAugSHXVSV2#kzHq26GeJ64L0j;Za^piM5K4Y`rrX4a*DKpOxj-G-Z(+wn@Xc@7) ztP>BbVy2v?VWWgUT)lfGU#mC^WnaAclPecC^ zrt~AkbsJ~W>HqelH@W4~@RH`yQ2bQyH%d3gj>)8zwcF3OH~g@kty9-&2i(X>*SdS=1i?qatPhl4tnfsegj+4 zuKD%H?tj;;L5mc;PZ!cnxY(|C&is2P!#d`_2zwZ;OTzce-R<{9pK;z@tD+E=G= z#cpQfd{WAvQLII*x^ACL4dsgx@a`hI$u6&@jL|Ml2JYsUtAVMT6S1R?c@O(2)V6}t zwi;1yZtP9*RZq&ZIeL(~RrD~M^;-5&c5IY&~K0^iwbyrcHKnfu;MDyD7&9 ztEM(aX+O7Ho~`^Zb4k}(HPCD0Avo{mLn~hcTQaH{d6!RnAY)1@X~K4{TS9EhVeW(Y zHf5OU336=>&pMX#{O)4wMlaPq1Br_(w0B)y4V!^ zCVzf6xcKP}~tfAJgJz-5{y=jn%syBr#=h-yY+v%j-a zhMQG~G++N{T(9Lyrzy#&U!K~J=a(ipY(3z!|I@WEt5fovb!0V7Ki%GH>^Zct5wB^E zq|lE16jzcR;yhDqrD8e#@*IXSf_cAnw7;jgJ*>*qJ+VHzG!~;YI$E-1uAP>)r8Ig^ zIft)epYrHv%vbRSK7dpcFS%z`Q5_pI1$B2~$pBaJLy z)>Lj?Kb9r*pC5^YAD^@NnNjv%cFi>!KYw`|MBkf1OTo9l{M=fm9-UqKQPj_2op_!1 zPNna8kJvCG9MiGc_AFTvR2A>tvUcaiPuR1$8aEzFuel5J8Nm(XQsD%d%pX0)CYFA` zSV(ma%^*H)Gj;E&`?j!#-z6q#1fMO^md_S(Tjz4C6GqJQxsT^kw&c?hGx(el7oRht z@i`+dK4+vW6~N^1>8BZd+DH#R={1+n9zUKggE^i?!E~c5VUDG%VLI|DB-wllNlQM3 z#7(!-ZPbG9glR|PVL~(!CZFDb$>0+-GNlLAxDsuBjs=4zCd0;?d5;T z3*o+8UQWl#(Q-6(=kqvP$~)v8D9PROZpzWl(axb(+F)%k`LrS05IROXS38%&+E8sM z9j%?GokzMhOdCd7+WFe~B(&k$aPnv)v=N9kMjJ!NX=AmqZ7SUAWRT9JB_=NA1 z=ugy{j;2m@axCt>DN6RJRflM8qR(Hf->0qLyOK^Iu6;|#C@y`}DEH}>F;Cg4=g?{W_w>`hZ59gg$)&pW>}fo4(JD)ygb+6Y7B|t@ z*l!C!CTdSd&EmGuvgnC`n-BF>kUu$Q&2xiQ-F2(}D$N#rx_qAoQLUD+ce1$|xO@lA z;JZT18$&LKy)5=mt<^IB-9k=Kwf|Ooa%mcC+pePf=pn>?0xkmWx)J{gK9|DJ?Ky2$5ZsQW%c})-xpc$ z^AU0=T@&MPX6(mdAEpQB3jTK`ji&49K`Xv_U%+VVJ&EqeTdfW>PXwP7`}#*32{VEJ zO~m^TG@av4;1KuQ+Vpow-TqulzekCFgA&D08NUdrD68NawKEyQ>V8f0ww%YnH41FM z>L~z?IR)lX^ugd^5-5&IORwxt-|jr#UF$<_z=SpJ_JV)^i%HIvIU7_}_D|vtgb~FtaVA!VcunQJ?4NSvIq6 z_H3BwSM&F5E7iEqnO0h-S#Prx=9g$Vbwbzx%Tnx)p$z8YQ*6fkpHFASOcrx}jm;UB zIg@W%8prrQk#RTmW8!L0@cyf53=O9j;r=hWhn_hkY#2sU=>_^5&7r@-eI6Cr?(OJS zZ)`89%4ojr#|=8+1;q&P32WJ)DFvVu?LZ& zl1dLqC?`NNISCR8q!Gv>{UC{)AqUD|%R!JsAcH^x879w{!y$t}{($rW$pdo7XviCP z$h#q942EoRE@X=HAWNJN8Da!vhp~_u#z9t?02$#P$OiX8CU_9Cz(d-@+GNN9Q^5bH zg6~fUw-*`DXXKO2n1_CPx^M`e2#GwAFFJ@WqKD`u`icSKEHPA!6c>xj#ns{lF-F`e z?iLS-hs0DdL(CF$#Eaq;@wzAxOT{wro>(QyMTPi6Y!y31jW{5sbjg6!Wh+@AJE7h^ zWpC7TpgadPyFgwlN6BmDjq)}*UQUz`%E@w?oGG7?&&#>8ST2x@Okw(PF9g}1}Y-X?Y! z+0#EE8Q)Ui*c5h;=P)5#TzmQj+zv-2yREMwez#-)cIQ^$cZqw& zed2!L&mY8th&@UCNjxGR6_1HOi>JkNz^1>7=lT5BdT_hNhq+5gwkRi`xIXih%-1tZ zGM8p9%X}|$Rc3i+MdlZoTQhfL)?^-VNQcW2aOjR!jsiy~M>j`LM{h?z$3Vw9j$w`q z9G5yqIj(iw=(x=>-Z9bfpkuOQnq#Kp8OQUExsGDT0>>i9+m7XqGRJDiCyq^y&5kO^ zF2{F{@0}S=k2C1Zb+&P~a~3+gJ5O|;;_UAnne$5Lbw^b(U+WYozO9*X6FOT{pPKxbAe_?RvoVkZY=IhHI8n?ULa4&Md?OyIKbFX%P;@;%m?5=X}a)0Ok z-jm_+c!Hi>Pa97=Pobx~=S0sbp8lReo*|y$o(nyfd9L(a=egN4)-%C#pJ$S1if6j# zDbH+Ak!PM~zUK|k5>KgTh37-hTF(Yg#Iwcojc2!KpO?H2ug@Fu=6UnI9lTwfPb3@gDF=pUW5U>AqIJ0$(RzH(yU*Z(l#(K;JpOVZIA|m-H}V-}An?zGB}3-y+}JzU96$-)i3{zD>T(zAE1?-*>+6{TY6b zKj_c(xAC|07y7&VPxPPS@9!VvAL1YGztDe~|4RRL{+s<{{S*B6`6v0O_^11y^3V1c z`RDoP``_>{@t68n_&@Zo^>6S;{9F9r_;>sF1t{PM_yVCoULZfvAe!<$T3JwVl4_+9&EO=$`y5P;hvB3$!`+}2#Q-afjPX%WO zi-Pll^Mh{$mjp|LD}o;e*9JEPBf%}fZ-Tpn`?4w9k?qS4W#?t*XLrc%lHDV_S9ag* z0oi9|56vE#eR1~X*;i-ZkUb{*&g{FhAIN?vdusNK>{;1!vR}-8CHwX4lI*3~%d+3g zUX@**U6K7o_SWnj*)`b*LNeqE1wwkLRj44;Dby|0Gt@iOFElW8PH0%@g3zU*QK4%? zH->HtjSo!>Js6rCniiTFdM5OIXl|%Dv>>!7^mb@@s4TQP^hsz_XmhA4v@7&o==*R+ z*b@$hbHi=I?ZSoO?%@-|r-b{52Ze`(hlei=UlzVHd|mkF@YwK#@O|M);VI$i;itm0 z!$skF;rZb=!b`%X;T7Qz!)wDE!jbTn@HgSz;e9&k4&A4R^gKOZ@1S?ld+5FNzWMvso$+Xpg*Kf)o19l^f~&A`YZbDdWpVNU#7pOuhPr)3jGUx ztG+|8(GTRv99K>tN6%@MQ;^dsr&~_XoZdP8at7v{lQS&mf}BfpM&(?ab7RhJIpcFC z<~*1)IcHkV%$#R(p3j+^Q=GFPXHm}EIm>g(a#rVjlCvpib52#xuAJ|3zR%6b_2dR~ zb939|w#zNd?VfvL?kTzba|h)P$sL}1VeVzQSLR-qdvosC+zGk&U4-22nuK)MlT z8h6@JWg2$^j-|tgLvdfxNcRb8Mu~^u#(1QD+-rb4?MN?;I~^W2+TFVTQCZs2T2*Qs zw&PwxTQ%0-j;r>zZ7%<_)8MKd|LyQP6#sN#?DW=7qngYAmeeEmbp8o_*^YaM*>cD8{nTn|Lt__aQoZcb{Xd0)Y`NJ`k7A7vC9UH^-o7* z?XtnVG`Q3{S$1kTj1u~6x^`%+f0}knkW1|}KaHH3R-nmZsgE%VGRKv|Ii*UIzIm<(4%TOgq@%+cHg+-izSVW z`$lTF2^Y~i*-d|Ccd$urdtT47zt56klzU*4+$Y$|{6o5*wz;#pJRKV9rf=D;9kP2L zmtkL1+@ia!{6D1o-a~MUrn~8@#<}hEDovY9I@Vf2(TNJ-*M*Lw3_6~Al7~*B-sIy| zA3^F%r&2brc?i=W7@b!Q<00U^dvol_|H)>4WRk7 z5MlpGOAvM`eL$DdN|+nzBl?(bqV@D0jir6UL(_#{978XN&Y~wR6(@?*XoWaKoJ(tE zTiJ;|lZCP~eF-}E80tGi{+V{k`En8MmP=$Q8FHCiCLD6PTq&ILBe@HByIX!Mj+cA2 z3~`d?(z3Ly#^^6D&NoZF|mGXKdTHZQJHEwr$(y8QZq4`+o7qzqk=MH`S4w&aOp9RCT(` zi!lQM1O11xX&}V^3W$CFe`l-zkNY40e}i94OhpzCM+i6gkshx~0m1+%777^(CZr87 zxYh+WP67y+9fS-t2L_A?Je&%0m{*&MGzn^b)J^ykjc|rWi31|Pbw;zV*Fr0nIXowS z?s*I1ybzp)2+heQa8oZnZQ>6ZFQG^%RevI-N1$|nqDnX{cgFFZdSFkiXybW1HU-5ix0$DnMA zZQ)XT&vlHGZDy->DT204)FEgzqvm%L4;DjV-NnQgWj=FGz?xD@gI7ENx1GW^qT7tM zxKzqLs9i?DRvD4gYqlZyKJVo5)uNyiitCj=WeiFBfEP)5!12?UZQddt-`v#t1d@>v zYp%O6oYoa?ZEr81fJjOV4(?qNx-{Lse6*!xJI`{`G9-kMkp;`w8@?H)xRp0;>J>uY z^KCIP-BT0F59{t63+C|&+eWdm+d z_QMimg$3;kTH8feCGlbto`CDXCL@NnR2$)$ONm*|GvJ_qCNZTg`M_xk%7L?Bl5wg0 zqVE5jYT(aEwhZTllqj0nb9?&BKYGBw%GdVm4H{x4lsSPcO_mY`;TFO^$yj+yvZdnX z;b+(L`l}BaZDwNwA5)GD!B*WbG-3rNipL(ILPeABTaM)(L?mV`T0ay{S2J|W z08q8JRFncb*!U3ACVBR~<37vDI2r0I^M|4CLe5mm*sw!P_}w|n?&z+sofZ!Im74LX zBxZ7jXRF_M7Yz!joNMRhB*Z=)oQ5o*Nh1j@D7->FYBdg#lIdTA@)Izpn#FDoq5t;B z`+C{J)Mk-HQcyuP#WKjW{$Nl=@0?;bT}WSWlc$N1sUnEp1_bP(dSC<$9Et+Y+fIL- zto&un+6ds6F+5UjF z7g!!f+Y#`lc_Wea1o;9j4W7wzA_AiddkruQirgC(clc>5f#-S4L;0atm4fLwkuqmw zj?(N9+NL(k;c{4K^-oY>+>oDzN6;yviYm0sEIo&kh=7J&g5QNJ4hKCguBm~cuZNUFEq(9?8?lh5=SQGsaBD*GguD6pl$zqQdFts2B@81ijovHxRq0W-?!Tn+JB0U zfjNGqs7sQSkkN<$pg(RA{}V=q*#55kKi0aEjdV@4KHulH;>>vdcU2p}4u4nw z4|X-w9|3#}X$7+KfP5gNBkn*IGFRd;soo1Iu##c!aIC3>E}gKYj^^kE-OE~s#g!j^ zo}Hq%lR0XH~Bc3tiMRPAhtD zpR#0KJ1WM+#QgS?6inQ$D*C9TR3#if&$u*3)lD5rxD#YT22)PZ2dN_bxg|fDNtO?b zf>a%&vr?pcZ5oNxZDyh3Pb+XOpI?+~iUTbram0ba7mD#9Tv)_?{)mTgUsvA^Fjm)i z1~>{}Dg1J?ouB{S%6J4|085HT+D>36(2C5|RlA$fPiv#96IC=#C=Ni2`G1?88YqpSPZja9$rV5HBoV=|2;} zKtJc|a3BGF-{H7GUzeY25CH)kKzx{tVD-cX!ixg9y?zeTZ77YZ)Y!w-OgC;(S^g#jRQIpP@spDO z^5Kgg0W07CbEV?Jzptk0*B9MKc*RNUSIA^sCYi$9_kn#aER#mP6N7alA%nfWd)eky zuGUwb{!{hJw~3?fBew4o@vG&PC!zb(*1xaq#q$+Wr!f~U%`rND_ntRbry>(&IiA4O zxp3;ntL1!TclC)M{^Wykn%1mtS3bUElZOY#PZmjSyEHnbYSpMn7a<HJW0WQ9TjzvZX(1i>J|2h~3AQ#U54TqRnSJxNy*gyWcr{I$7J-!y ze(s$-IX|Dq$qS4&Vv^a&%W!lBR!>%O>GFitEfY>hwL8;9`>;ico|sq1S6xcCf%qU# zX1|J+j`RE2%7@7X{X|Kvh_I(nykU|*@jD}G9QGebQ5braDb4-5q}V!{~O;spi=)^PZt9fNZG|s)3;FYK96{VLFJ|aLo zT!>~=H|Ux?)9Ud+=S$k`NYCxNbeGWe<1VHFHCDQeZY|?2M=X2esbNKPd@>ExcV-p@ z;b{6Wkoh4tL{exWa%oA85s?w?-#9J^<&g}5CmysRV!#|lRK1b@8;~nwD6Su{zaO#9+HoF^M`I2JynI}D=Qvb(iSb> zhR_!}_8DCZ*Y=IFluR{(N|-?xx>>Mb_BibtGq~n)Nl7Rfpte&T7P6T(yZx{J#>MA< z&f>=+DOy-E5ZjW|p;qGo)IaVS5(AY|rkYv_Qu_x&Q1=1?he*qH7SXDyk~gpkCxcqg z>4ve6%R)&i_Uqk3#w;SWvS7lC-(0AeQ2#JL#+}VDxqvAEW2WpeLoGFN2Tykg2kQt<0&!&O# z05QUN7bht{F?m!V^v>USR$7A1VHuJv2Q2Wz2O3v(g53^i+0Y`?g=_uouC zj|23kRwXN{KEd4qjswmfW~OtknC_*|Ij^%6L<4WVySL{A2X64(TAQP=1t!PbusE|B zO7qlZ_7O52`#osm80mwGVaH81=c~5Ege-;UWo|Zj*KzckPTvWa@ghumdqq(UfS#M9 z{z{zI7UGjU`ku_e?tozEI$?r3XKdi1ZN^|i6fTUP~9^-U%FY@Sk>C-4|96HVr7P_riM}BjLabVg91y z72~c%;fDc22m%?$v3L;E=ADVs@Y=P$;f{P7_<3_$WIUq((pvV!; z@6)EDNink<((P*Y5l@TLt_?SNT(>5vsjDp&&i7c%AG;hdUlxni1Y`x@XrVyvbFPs> z<=W!Lmv?Ao#cla4yszF8&5=_dS}Vj>V3VU|WfY1Qc)lFFXn;r?V*d$8cYu?tSJpE9 zonyFLnnM_ej~5Z0$;u5S^dAs{XVj@=Z8CM(EML(p`+g8thY~4Z&&ysmnM!1Fmvvpz zRNwZztY|AaZs`n)qN!+ppsBRdWwWjB&0%XUD@Aan;9;gQO#KlTh=79LkKy?7!Qg!{ zQJ&?Q+F0$0tJ{&0r(aj*o|W%P z1=HY5sKI+^u(dlIlStOMk=WvMa#`%d)r?bXV^sCr&0!Lcps34{%3P2EyhJ{B;5zCp zFqWN3d!50V4wVr!o$E&u)}!kzXA3ZP<#xHO^Q%C>a@Cs$?Bn{9^?vEKE{BhWa8IN_ z6?4DAC)_*0HzoBENa&KQ8i68_N9R`!Y-cc(xA=qxHTSDsd_2nNs7m!dT@CIHin7U{ z8ZO?5&WP@oBTasOS)~Zg(SVC{ih7py^n!&fN?K}y_$fraE8=lY^?!H7Ws7k^UEaWuVYFEEqiRDaM>>S`^-?vL4N75Y$DGBQf; zDzCMP8Ys;Yi7UHe3)7@g6U14;7wvbgjm}0T18x9!QbQk?k0dqE-LE_TY+?u@qy~V5 z`;ZYu1S`5Pqnr0a=dD|;@UIX|$IL%&V7LqCB(R1U8UIIg1AUmSkp_onzx7;62T5*`odp1#7hRw=XlXa4oJT=AZaS%ej8vHP%as_OFa(QV zb2?lK{pn_GY>%Pwr#rjF1qSu|`QpE0L9`ltW{cjnwTjK)v zB3hH7uJXp!TeD>EX6YzODL~iJzE!rym|jwLKp?sd90RCWbCc2J=5jDUYc6ukvg}m# zMh;xTf3s(Rl=YT;4viVYd{TU2zFc0utbL;72MvCW~_=k39BxZkQUQ!Aze;cUG(l#7lT;dM>3WDlvr`qy-wfZ5nNFL zshWAZ65|LX$gpyjRg=}qS_FW*T1Rf?DlBbvHXgvQo|%!FSB(z8!Fn|xzLK>+Q7vf~ zQx-1lG-MX90=x~<3$uDQf`v*ccRuOsJL?QSUEwXlKs?|<6ZU~N?tqv<`U#QyV^!Ep zLU@XS62!oL#HvE#{)NK<2Qh~8x=2r(W2(VMASQmKs&NzMk~uQsN`1rIlBAElr8ZTAl|{ z5mS2i`~Zd(1HOqq=XNzK&~Ntg4KtZFb6A?XvyY4&ajoC9ZVjYgs}8^`La)ppbdkrb z{E>#baS>n8k~(md_n^yS_DVgaUZz+K;7boi7bzxqMVPHyP{9%{xGr1E9$VN=++FMS zq2mb%vIf88^iLjSw*Qb+?-49+7+ktx&6DF`y3CKKm>gbqagc{(4*I=qfxru+PEr~D z9cyk~iRB2whg#EyDmc#v7zUR^Xs)`>Dkr*Ls2wDuK#aq|9y|DrU+jzP+_rJ9ZVO&+ z4pHW@&VFb_Wq<`x36nSUDEpc@*0`I2fXrYW@pN@qQNg&e=xA*B^H4`62B$4*d4R|@ z#u#5$p2s8ZVE}^qpwI$qG--C{s)Yv&F6FIJyoAefK8CETiaRhJN~3llGLx^QOF02g zR4qlqB3RW|WozuP?|NLNb0ef)nm&{iF}}1F{_GH@B-jGXGK3PObCeSrS44vTn3z&x zx7w%+ny1Rb(gJzhL;y)f#8(_D91*hd#x~jng^LAH60&B?YAxGfO_@{_u#z~p71w|m zbOar#T~5RPKM3&Ubgw^fY0}UjeTFb+FL)6T*0B9MPoQo<1$7n zhJK;&?o^==siv^;5Xr7~I3Pud!McFH>heQsDGT$3&SLNI-$q6u~I4&K_uov+) zNgDZR@-jLk{_1i5ZrI7Mv^|jV<#Vf|b3+ADue$mA*cd-%iisfL+vhQHm9GQ-$01if zm{8JR^E;V_)yAR{y-f^Yu@j_U?`g){+kmH*hJY;-WT2t$OH7h-rECxJ!o>Vq;ZY`E z72MLpqi=vs-KWcR+Q_-iU;m`fNt0U2*Kv_L*INKD3c{Ox$BH}uJ{MPzZws6zPvs;@ zO&tT_L~p>}vmjz!%B_l$Tx^lIy^6xQWbIZ&hzP{M+gZBWGLT_5`UZxgC;a4$7oT!?)N~zSf!Q!s+Dha;+xD5EyAXTO*R_+R zOJPfSCFh)?O7BO-jW)hz;O=!;A>!yrIJ)R9 zW%`lX3W6rNf>-kQD!G0-beh0hY2JAK80752%((qTkcF?KphD6Sp9(}teHKH!6mZeA zG|ZU`qpp37a`9|o(@!(AhLvPPY8*U8F-xc}SG3g2*$xwxQPi%Q5Ba^0z`bY83Y$D^ zWxM=Bf|2Hw0!gfwG&gxG|L?3J!U)40gys?UE}O1Qgsi3c0#5W;jUZ(1wLNi0|J?N> zfq>`KQMETRd&-KpS*4BPj30dj`ed#D+}QaDL~JDb;#}X0KVYV%3e|~Cd2FQQOpNyv zxoqd+#l?vdvMqq&EVdLzL7kA&#@5ralyr!ih6HR%W2#sp(p{i4%f@wr~l;Sh;z> zxJW>Us}J9TYDT&(xbe~#Ni;Fh8ljrz=KXuBAnPu%`xX7`tipc6A0DElJ^tA8nl^?c zru^bE?H5@AOEEr*!+B8NRHx>-Ju{zUd2H5DBXY1>$PHUO26eb zUx5qSArrXh6M37t3VB`;KO&XH-%J#f#Z4|$h}g}~r2C&NT~lbve99zN5ZYbjrs*=n zSO{k_x7?JNVJxPYmfQprlss6Akp~1OniUgDD4C4*TEo3IQ8T3vSWZiZ$MW6I((Jlm>`j-JX_chNBb);R zh1d_}h?#F2Dhf##cb2!cVUOlQMWn~ zlxW{__XRqlm651AW}1n*`ZkP&bY^7+%S5w0%c&fzv?iSHT8QGZ8evWJOTtRdaGntZ z3{zpFHaU^4mG$Uswiy8Ip%IFfMgjv5v&f_4L(Ob$wdog!Q(6XX^{4V+nnMr;G-tEf z3MkHnO|z=9@Rn{vXvD*rJ8EtuGhR%nwvZFluojsCa8>AE@AHOx zR9lLLQ5w+6m}0RhrZ-JW`bi&ZUJL=s+i8BHYaPE)PpVx|ZWSu|0kBrwx|^yujPAZh zW#D=u+so1Th0Aht4V)An@mKgFQ$)J((AbeVpzR{Z%yHUHKah2;UN*5#5jK_w`OCfe z20^tL3x}>OFFv;@xxKDvBFAE}^DS4T9zV+1RvCUG4GVP5TR;!Rs6V^OacBkOX<~{3 zv2iyymj`Z)JKJXEdU@T?VKllO2xIrHOs z?3{$KSme`I3FDlV5N`@SZcou5;-bFS&iE#(W|#nDE-=Bc_XqFb;G%GLhaqe4qwc_Y ztV(p&$+^gKH?D<~c{)bzSf`kPayTTW{|LLDJ<_|-Hjkw3yR}|Itc5SyHYN-Vjp1T@ zGeN_uqLFIMPxZk@P^D#LJ=+^!1MosOcKMSK!!COjF-}+VnO8zo(8kDleL*~X$i7

CM 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 S&>ITYmzh^_4#R3(l>h)KDPfEN literal 0 HcmV?d00001 diff --git a/public/fonts/TinkoffSans-Bold.woff b/public/fonts/TinkoffSans-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..ee421a4f82314a2ae10f294d800d78585cc99044 GIT binary patch literal 35164 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 TTa4Hf7s_yJPof!>4gdfEF1gQj literal 0 HcmV?d00001 diff --git a/public/fonts/icons/icons.css b/public/fonts/icons/icons.css new file mode 100644 index 0000000..ac8e7bc --- /dev/null +++ b/public/fonts/icons/icons.css @@ -0,0 +1,56 @@ +@font-face { + font-family: "icons"; + src: url("./public/fonts/icons/icons.woff?ce6361810f7aeed17b09d8e9e447cd48") format("woff"), +url("./public/fonts/icons/icons.woff2?ce6361810f7aeed17b09d8e9e447cd48") format("woff2"); +} + +i[class^="icon-"]:before, i[class*=" icon-"]:before { + font-family: icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-book-open:before { + content: "\f101"; +} +.icon-calendar:before { + content: "\f102"; +} +.icon-dots-vertical:before { + content: "\f103"; +} +.icon-help-circle:before { + content: "\f104"; +} +.icon-message-text:before { + content: "\f105"; +} +.icon-plus:before { + content: "\f106"; +} +.icon-search:before { + content: "\f107"; +} +.icon-trash:before { + content: "\f108"; +} +.icon-user-edit:before { + content: "\f109"; +} +.icon-user-plus:before { + content: "\f10a"; +} +.icon-user:before { + content: "\f10b"; +} +.icon-users-right:before { + content: "\f10c"; +} +.icon-video-recorder:before { + content: "\f10d"; +} diff --git a/public/fonts/icons/icons.woff b/public/fonts/icons/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..9ffc1bf2bfae17be3b16b25da491b1b9de822b9b GIT binary patch literal 6460 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 literal 0 HcmV?d00001 diff --git a/public/fonts/icons/icons.woff2 b/public/fonts/icons/icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3639334af1e4adb7eeaa277a18e9bfcb21b461d4 GIT binary patch literal 5488 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 m2f5o;oujZz3%XE65c6QM}5 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 literal 0 HcmV?d00001 diff --git a/public/images/default/circle-matrix-1.svg b/public/images/default/circle-matrix-1.svg new file mode 100644 index 0000000..d947012 --- /dev/null +++ b/public/images/default/circle-matrix-1.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/icons/google.svg b/public/images/icons/google.svg new file mode 100644 index 0000000..0c88092 --- /dev/null +++ b/public/images/icons/google.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/images/icons/vk.svg b/public/images/icons/vk.svg new file mode 100644 index 0000000..7765307 --- /dev/null +++ b/public/images/icons/vk.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/images/icons/yandex.svg b/public/images/icons/yandex.svg new file mode 100644 index 0000000..4f206fd --- /dev/null +++ b/public/images/icons/yandex.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/app/App.vue b/src/app/App.vue new file mode 100644 index 0000000..c9fe6a0 --- /dev/null +++ b/src/app/App.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/app/configs.ts b/src/app/configs.ts new file mode 100644 index 0000000..79fc710 --- /dev/null +++ b/src/app/configs.ts @@ -0,0 +1,7 @@ +const mainHost = import.meta.env.MAIN_HOST || 'https://human.dmtay.ru' + +export default { + mainHost, + baseURL: mainHost + '/api/', + medicalURL: mainHost + '/medical/', +} diff --git a/src/app/createApp.ts b/src/app/createApp.ts new file mode 100644 index 0000000..7d075b9 --- /dev/null +++ b/src/app/createApp.ts @@ -0,0 +1,143 @@ +import VueDatePicker from '@vuepic/vue-datepicker' +import { createApp, defineAsyncComponent, h } from 'vue' +import Vue3Toasity, { type ToastContainerOptions } from 'vue3-toastify' + +import App from '@/app/App.vue' + +import { PageLayout } from '@/widgets' +import { + AuthCard, + AuthForm, + Button, + ButtonMenu, + Card, + FileCard, + IconBase, + type IconNames, + InfinityLoading, + Input, + Link, + Logo, + Spinner, + Tabs, + Tag, + ToastIcon, + Tooltip, + TransitionFade, + UserBase, + Dropdown, + Textarea, +} from '@/shared' + +export const create = () => { + const app = createApp(App) + + app.use(Vue3Toasity, { + autoClose: 2000, + hideProgressBar: true, + pauseOnHover: false, + icon: ({ type }) => + h(ToastIcon, { + view: type, + }), + closeButton: ({ closeToast }) => + h(IconBase, { + name: 'close' as IconNames, + class: 'Toastify__close-button', + onClick: closeToast, + }), + } as ToastContainerOptions) + + app.component('VueDatePicker', VueDatePicker) + app.component('icon-base-component', IconBase) + app.component('button-component', Button) + app.component('card-component', Card) + app.component('file-card-component', FileCard) + app.component('transition-fade-component', TransitionFade) + app.component('input-component', Input) + app.component('page-layout-component', PageLayout) + app.component('user-base-component', UserBase) + app.component('link-component', Link) + app.component('button-menu-component', ButtonMenu) + app.component('tag-component', Tag) + app.component('tooltip-component', Tooltip) + app.component('spinner-component', Spinner) + app.component('tabs-component', Tabs) + app.component('infinity-loading-component', InfinityLoading) + app.component('logo-component', Logo) + app.component('auth-form-component', AuthForm) + app.component('auth-card-component', AuthCard) + app.component('dropdown-component', Dropdown) + app.component('textarea-component', Textarea) + + //modals + app.component( + 'modal-dialog-component', + defineAsyncComponent( + () => import('@/widgets/modals/ui/ModalDialog/ModalDialog.vue'), + ), + ) + + app.component( + 'modal-edit-patient-component', + defineAsyncComponent( + () => import('@/widgets/modals/ui/EditPatient/EditPatient.vue'), + ), + ) + + app.component( + 'modal-select-questionnaire-component', + defineAsyncComponent( + () => + import( + '@/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.vue' + ), + ), + ) + + app.component( + 'modal-add-destination-component', + defineAsyncComponent( + () => + import( + '@/widgets/modals/ui/ModalAddDestination/ModalAddDestination.vue' + ), + ), + ) + + app.component( + 'modal-add-reminder-component', + defineAsyncComponent( + () => + import( + '@/widgets/modals/ui/ModalAddReminder/ModalAddReminder.vue' + ), + ), + ) + + app.component( + 'modal-view-questionnaire-component', + defineAsyncComponent( + () => + import( + '@/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.vue' + ), + ), + ) + + app.component( + 'modal-analysis-hint-component', + defineAsyncComponent( + () => import('@/widgets/modals/ui/AnalysisHints/AnalysisHints.vue'), + ), + ) + + app.component( + 'modal-view-optimums-component', + defineAsyncComponent( + () => import('@/widgets/modals/ui/ViewOptimums/ViewOptimums.vue'), + ), + ) + + return app +} diff --git a/src/app/directives/clickOutside.ts b/src/app/directives/clickOutside.ts new file mode 100644 index 0000000..6d186c1 --- /dev/null +++ b/src/app/directives/clickOutside.ts @@ -0,0 +1,16 @@ +import type { Directive } from 'vue' + +export const clickOutside: Directive = { + mounted(element, { value }) { + element.clickOutside = function (event: Event) { + if (!(element === event.target || element.contains(event.target))) { + value(event) + } + } + + document.body.addEventListener('click', element.clickOutside) + }, + unmounted(element) { + document.body.removeEventListener('click', element.clickOutside) + }, +} diff --git a/src/app/directives/index.ts b/src/app/directives/index.ts new file mode 100644 index 0000000..d2b6fcf --- /dev/null +++ b/src/app/directives/index.ts @@ -0,0 +1 @@ +export * from './clickOutside' diff --git a/src/app/main.ts b/src/app/main.ts new file mode 100644 index 0000000..3224e16 --- /dev/null +++ b/src/app/main.ts @@ -0,0 +1,16 @@ +import '@/app/styles/index.scss' +import { createPinia } from 'pinia' +import VueLazyLoad from 'vue3-lazyload' +import { create } from '@/app/createApp' +import { router } from '@/app/providers/router' +import { clickOutside } from './directives' + +export const app = create() +app.use(createPinia()) +app.use(router) +app.directive('click-outside', clickOutside) +app.use(VueLazyLoad, { + delay: 300, +}) + +app.mount('#app') diff --git a/src/app/providers/router/index.ts b/src/app/providers/router/index.ts new file mode 100644 index 0000000..0e93633 --- /dev/null +++ b/src/app/providers/router/index.ts @@ -0,0 +1,44 @@ +import { createRouter, createWebHistory } from 'vue-router' +import { type Middleware, type MiddlewareContext } from './middlewares' +import { routes } from './routes' + +export const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes, +}) + +router.beforeEach(async (to, from, next) => { + if (!to.meta.middleware) { + return next() + } + + const middleware = to.meta.middleware as Middleware[] + + const context: MiddlewareContext = { + to, + from, + next, + } + + return middleware[0]({ + ...context, + next: middlewarePipeline(context, middleware, 1), + }) +}) + +const middlewarePipeline = ( + context: MiddlewareContext, + middleware: Middleware[], + index: number, +) => { + const nextMiddleware = middleware[index] + + if (!nextMiddleware) { + return context.next + } + + return () => { + const nextPipeline = middlewarePipeline(context, middleware, index + 1) + nextMiddleware({ ...context, next: nextPipeline }) + } +} diff --git a/src/app/providers/router/middlewares.ts b/src/app/providers/router/middlewares.ts new file mode 100644 index 0000000..155189b --- /dev/null +++ b/src/app/providers/router/middlewares.ts @@ -0,0 +1,43 @@ +import type { NavigationGuardNext, RouteLocationNormalized } from 'vue-router' +import { tokenValidate } from '@/features' +import { Routes } from '@/shared' + +export type MiddlewareContext = { + to: RouteLocationNormalized + from: RouteLocationNormalized + next: NavigationGuardNext +} + +export type Middleware = (context: MiddlewareContext) => any + +export const guest = async ({ next }: MiddlewareContext) => { + const isAuth = await tokenValidate() + + if (isAuth) { + return next({ + name: Routes.INDEX, + }) + } + + return next() +} + +export const auth = async ({ next }: MiddlewareContext) => { + const isAuth = await tokenValidate() + + if (!isAuth) { + return next({ + name: Routes.LOGIN, + }) + } + + return next() +} + +export const patient = ({ to, next }: MiddlewareContext) => { + if (to.params.id) { + return next() + } + + return next({ name: Routes.MY_PATIENTS }) +} diff --git a/src/app/providers/router/routes.ts b/src/app/providers/router/routes.ts new file mode 100644 index 0000000..dc1ffd2 --- /dev/null +++ b/src/app/providers/router/routes.ts @@ -0,0 +1,124 @@ +import type { RouteRecordRaw } from 'vue-router' +import { Routes } from '@/shared' +import { auth, guest, patient } from './middlewares' + +export const routes: RouteRecordRaw[] = [ + { + path: '/', + name: Routes.INDEX, + redirect: { name: Routes.MY_PATIENTS }, + meta: { + middleware: [auth], + }, + }, + { + path: '/patient/:id?', + name: Routes.PATIENT, + props: true, + component: () => import('@/pages/patient/ui/Patient/Patient.vue'), + meta: { + middleware: [auth, patient], + page: { + title: 'Пациента', + }, + }, + }, + { + path: '/my-patients', + name: Routes.MY_PATIENTS, + component: () => + import('@/pages/patients/ui/MyPatients/MyPatients.vue'), + meta: { + middleware: [auth], + page: { + title: 'Мои пациенты', + }, + }, + }, + { + path: '/requests-patients', + name: Routes.REQUESTS_PATIENTS, + component: () => + import('@/pages/patients/ui/RequestsPatients/RequestsPatients.vue'), + meta: { + middleware: [auth], + page: { + title: 'Запросы на ведение', + }, + }, + }, + { + path: '/calendar', + name: Routes.CALENDAR, + component: () => import('@/pages/calendar/ui/Calendar/Calendar.vue'), + meta: { + middleware: [auth], + page: { + title: 'Календарь', + }, + }, + }, + { + path: '/chat', + name: Routes.CHAT, + component: () => import('@/pages/chat/ui/Chat/Chat.vue'), + meta: { + middleware: [auth], + page: { + title: 'Чат', + }, + }, + }, + { + path: '/videochat', + name: Routes.VIDEOCHAT, + component: () => import('@/pages/videochat/ui/Videochat/Videochat.vue'), + meta: { + middleware: [auth], + page: { + title: 'Видеочат', + }, + }, + }, + { + path: '/library', + name: Routes.LIBRARY, + component: () => import('@/pages/library/ui/Library/Library.vue'), + meta: { + middleware: [auth], + page: { + title: 'Моя библиотека', + }, + }, + }, + { + path: '/login', + name: Routes.LOGIN, + component: () => import('@/pages/login/ui/LoginPage/LoginPage.vue'), + meta: { + middleware: [guest], + }, + }, + { + path: '/support', + name: Routes.SUPPORT, + component: () => import('@/pages/support/ui/Support/Support.vue'), + meta: { + middleware: [auth], + page: { + title: 'Поддержка', + }, + }, + }, + { + path: '/profile', + name: Routes.PROFILE, + component: () => import('@/pages/profile/ui/Profile/Profile.vue'), + meta: { + middleware: [auth], + page: { + title: 'Профиль', + }, + }, + }, +] diff --git a/src/app/styles/index.scss b/src/app/styles/index.scss new file mode 100644 index 0000000..2fc7bea --- /dev/null +++ b/src/app/styles/index.scss @@ -0,0 +1,16 @@ +@import './utils/utils'; +@import './utils/reset'; +@import './utils/common'; + +@import './utils/fonts'; +@import './utils/icons'; +@import './utils/toast'; +@import './utils/datetimepocker'; + +@import '../../shared/shared'; +@import '../../entities/entities'; +@import '../../features/features'; +@import '../../widgets/widgets'; +@import '../../pages/pages'; + +@import './utils/animations'; diff --git a/src/app/styles/utils/animations.scss b/src/app/styles/utils/animations.scss new file mode 100644 index 0000000..2341e23 --- /dev/null +++ b/src/app/styles/utils/animations.scss @@ -0,0 +1,46 @@ +// fade +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.3s ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} + +// fade-page +.fade-page-enter-active, +.fade-page-leave-active { + transition: opacity 0.5s linear !important; +} + +.fade-page-enter-from, +.fade-page-leave-to { + opacity: 0; +} + +// list +.list-item { + display: inline-block; + margin-right: 10px; +} +.list-enter-active, +.list-leave-active { + transition: all 0.3s ease; +} +.list-enter-from, +.list-leave-to { + opacity: 0; + transform: translateX(30px); +} + +@keyframes rotate360 { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(360deg); + } +} diff --git a/src/app/styles/utils/common.scss b/src/app/styles/utils/common.scss new file mode 100644 index 0000000..c2cfabc --- /dev/null +++ b/src/app/styles/utils/common.scss @@ -0,0 +1,121 @@ +body { + font-size: toRem(14); + color: var(--dark-main); + font-family: $mainFontFamily, sans-serif; + font-weight: 400; + background-color: var(--white); + overflow-y: hidden; + position: relative; +} + +#app { + height: 100vh; +} + +img { + height: auto; + width: auto; + transition: opacity 0.3s ease; + + &[lazy='loading'] { + opacity: 0; + will-change: transform, opacity; + } + + &[lazy='error'] { + } + + &[lazy='loaded'] { + opacity: 1; + } +} + +a { + color: var(--bright-blue); + text-decoration: none; +} + +html { + font-size: 12px; +} + +input { + border: none; +} + +.scroller { + &::-webkit-scrollbar { + width: 15px; + } + + &::-webkit-scrollbar-thumb { + background: var(--dark-64); + background-clip: content-box; + border: 5px solid transparent; + border-radius: 1000px; + } +} + +.visually-hidden { + position: absolute; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + height: 1px; + width: 1px; + clip: rect(0 0 0 0); + clip-path: inset(100%); +} + +.justify-center { + justify-content: center; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-between { + justify-content: space-between; +} + +.items-center { + align-items: center; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.row { + @include row(toRem(4)); +} + +.column { + @include column(toRem(4)); +} + +.wrap { + flex-wrap: wrap; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} diff --git a/src/app/styles/utils/datetimepocker.scss b/src/app/styles/utils/datetimepocker.scss new file mode 100644 index 0000000..d29e540 --- /dev/null +++ b/src/app/styles/utils/datetimepocker.scss @@ -0,0 +1,76 @@ +@import '@vuepic/vue-datepicker/dist/main.css'; + +.dp { + $b: &; + + font-family: $mainFontFamily !important; + &__theme_light { + --dp-font-size: toRem(15); + --dp-text-color: var(--dark-main); + // --dp-background-color: var(--grey-main); + --dp-input-padding: 12px 30px 12px 12px; + --dp-icon-color: var(--brand-main); + --dp-hover-icon-color: var(--brand-main); + --dp-hover-text-color: var(--dark-main); + --dp-primary-color: var(--brand-main); + } + + &__main { + height: inherit; + display: flex; + align-items: center; + + > div { + height: inherit; + width: inherit; + } + } + + &__input { + border: none; + background-color: transparent; + + &_wrap { + height: inherit; + display: flex; + align-items: center; + } + } + + &__month_year_wrap { + font-size: toRem(17); + #{$b}__btn:last-child { + color: var(--brand-main); + } + } + + &__today { + border: none; + position: relative; + + &::after { + content: ''; + position: absolute; + width: 50%; + height: 2px; + bottom: 5px; + background: #000; + } + } + + &__calendar { + font-size: toRem(15); + &_header { + font-weight: 400; + text-transform: uppercase; + } + } + + &__container_block { + font-size: toRem(15); + } + + &__overlay_container { + font-size: toRem(15); + } +} diff --git a/src/app/styles/utils/fonts.scss b/src/app/styles/utils/fonts.scss new file mode 100644 index 0000000..b306de8 --- /dev/null +++ b/src/app/styles/utils/fonts.scss @@ -0,0 +1,6 @@ +@include newFont($mainFontFamily, 'NeueHaasUnica-Regular', 400); +@include newFont($mainFontFamily, 'NeueHaasUnica-Medium', 500); +@include newFont($mainFontFamily, 'NeueHaasUnica-Bold', 700); +@include newFont($mainFontFamily, 'NeueHaasUnica-Black', 900); + +@include newFont($decorationFontFamily, 'TinkoffSans-Bold', 700); diff --git a/src/app/styles/utils/functions.scss b/src/app/styles/utils/functions.scss new file mode 100644 index 0000000..981262e --- /dev/null +++ b/src/app/styles/utils/functions.scss @@ -0,0 +1,40 @@ +@use 'sass:math'; + +@function toRem($size) { + $remSize: math.div($size, 12) * 1rem; + + @return $remSize; +} + +@mixin fontSize($name, $options: ()) { + @each $tagName, $tagValue in $tags { + @if $tagName == $name { + $selectedTag: map-get($tags, $tagName); + $fontSize: nth($selectedTag, 1); + $lineHeight: nth($selectedTag, 2); + + font-size: $fontSize; + line-height: $lineHeight; + + @if map-get($options, weight) { + font-weight: map-get($options, weight); + } + + @if map-get($options, style) { + font-style: map-get($options, style); + } + + @if map-get($options, uppercase) { + text-transform: uppercase; + } + + @if map-get($options, letter-spacing) { + letter-spacing: map-get($options, letter-spacing); + } + + @if map-get($options, line-height) { + line-height: map-get($options, line-height); + } + } + } +} diff --git a/src/app/styles/utils/icons.scss b/src/app/styles/utils/icons.scss new file mode 100644 index 0000000..d2558a7 --- /dev/null +++ b/src/app/styles/utils/icons.scss @@ -0,0 +1,128 @@ +@font-face { + font-family: "icons"; + src: url("/fonts/icons/icons.woff?98e4dbf90127ac6ec671d6317de9533e") format("woff"), +url("/fonts/icons/icons.woff2?98e4dbf90127ac6ec671d6317de9533e") format("woff2"); +} + +i[class^="icon-"]:before, i[class*=" icon-"]:before { + font-family: icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-arrow-down:before { + content: "\f101"; +} +.icon-arrow-left:before { + content: "\f102"; +} +.icon-arrow-narrow-down:before { + content: "\f103"; +} +.icon-arrow-narrow-up-right:before { + content: "\f104"; +} +.icon-arrow-narrow-up:before { + content: "\f105"; +} +.icon-arrow-right:before { + content: "\f106"; +} +.icon-bell:before { + content: "\f107"; +} +.icon-book-open:before { + content: "\f108"; +} +.icon-calculator:before { + content: "\f109"; +} +.icon-calendar:before { + content: "\f10a"; +} +.icon-camera:before { + content: "\f10b"; +} +.icon-check-circle:before { + content: "\f10c"; +} +.icon-check-heart:before { + content: "\f10d"; +} +.icon-check:before { + content: "\f10e"; +} +.icon-clock:before { + content: "\f10f"; +} +.icon-close:before { + content: "\f110"; +} +.icon-date:before { + content: "\f111"; +} +.icon-dots-vertical:before { + content: "\f112"; +} +.icon-file:before { + content: "\f113"; +} +.icon-help-circle:before { + content: "\f114"; +} +.icon-info-circle:before { + content: "\f115"; +} +.icon-info:before { + content: "\f116"; +} +.icon-link:before { + content: "\f117"; +} +.icon-message-text:before { + content: "\f118"; +} +.icon-pencil-line:before { + content: "\f119"; +} +.icon-placeholder:before { + content: "\f11a"; +} +.icon-plus:before { + content: "\f11b"; +} +.icon-search:before { + content: "\f11c"; +} +.icon-switch-vertical:before { + content: "\f11d"; +} +.icon-trash:before { + content: "\f11e"; +} +.icon-tui-marker:before { + content: "\f11f"; +} +.icon-user-edit:before { + content: "\f120"; +} +.icon-user-plus:before { + content: "\f121"; +} +.icon-user:before { + content: "\f122"; +} +.icon-users-right:before { + content: "\f123"; +} +.icon-video-recorder:before { + content: "\f124"; +} +.icon-x-circle:before { + content: "\f125"; +} diff --git a/src/app/styles/utils/mixins.scss b/src/app/styles/utils/mixins.scss new file mode 100644 index 0000000..997e540 --- /dev/null +++ b/src/app/styles/utils/mixins.scss @@ -0,0 +1,111 @@ +@mixin newFont($family, $pathName, $weight) { + @font-face { + font-family: '#{$family}'; + src: + url('/fonts/#{$pathName}.woff2') format('woff2'), + url('/fonts/#{$pathName}.woff') format('woff'); + font-weight: #{$weight}; + font-display: swap; + } +} + +@mixin ellipsis { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} + +@mixin center($position: 'both') { + position: absolute; + + @if $position == 'vertical' { + top: 50%; + transform: translateY(-50%); + } @else if $position == 'horizontal' { + left: 50%; + transform: translateX(-50%); + } @else if $position == 'both' { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } @else if $position == 'stretch' { + top: 0; + left: 0; + width: 100%; + height: 100%; + } +} + +@mixin column($gap: 0px) { + display: flex; + flex-direction: column; + gap: $gap; +} + +@mixin row($gap: 0px) { + display: flex; + flex-direction: row; + gap: $gap; +} + +@mixin responsive($breakpoint) { + @if $breakpoint == 'sm' { + @media only screen and (max-width: 576px) { + @content; + } + } + @if $breakpoint == 'md' { + @media only screen and (max-width: 768px) { + @content; + } + } + @if $breakpoint == 'lg' { + @media only screen and (max-width: 992px) { + @content; + } + } + @if $breakpoint == 'xl' { + @media only screen and (max-width: 1200px) { + @content; + } + } + @if $breakpoint == 'xxl' { + @media only screen and (max-width: 1400px) { + @content; + } + } +} + +@mixin modalBaseStyles() { + &__content { + @include center(); + @include column(); + width: toRem(490); + background-color: var(--white); + border-radius: $borderRadius24; + padding: toRem(32); + } + + &__title { + @include fontSize( + h2, + ( + weight: 500, + ) + ); + } + + &__description { + margin-top: toRem(20); + + @include fontSize(s-13); + } + + &__buttons { + display: flex; + justify-content: flex-end; + gap: toRem(12); + margin-top: toRem(24); + } +} diff --git a/src/app/styles/utils/reset.scss b/src/app/styles/utils/reset.scss new file mode 100644 index 0000000..51cd361 --- /dev/null +++ b/src/app/styles/utils/reset.scss @@ -0,0 +1,571 @@ +//** * Modern CSS Reset Tweaks * ================================================== */ +html { + -webkit-text-size-adjust: 100%; + + &:focus-within { + scroll-behavior: smooth; + } +} + +body { + text-size-adjust: 100%; + position: relative; + + width: 100%; + min-height: 100vh; + + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeSpeed; +} + +/* Box sizing normalization */ +*, +::after, +::before { + box-sizing: border-box; +} + +/* Elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +/** + * CSS Reset Tweaks + * + * http://meyerweb.com/eric/tools/css/reset/ + * v2.0-modified | 20110126 + * License: none (public domain) + */ + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + font-size: 100%; + font: inherit; + margin: 0; + padding: 0; + border: 0; + vertical-align: baseline; +} + +/* make sure to set some focus styles for accessibility */ +:focus { + outline: 0; +} + +/* HTML5 display-role reset for older browsers */ +main, +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} + +ol, +ul { + list-style: none; +} + +blockquote, +q { + quotes: none; + + &:before, + &:after { + content: ''; + content: none; + } +} + +/** + * Input Reset + */ +input:required, +input { + box-shadow: none; +} + +input:-webkit-autofill, +input:-webkit-autofill:hover, +input:-webkit-autofill:focus, +input:-webkit-autofill:active { + -webkit-box-shadow: 0 0 0 30px white inset; +} + +input[type='search']::-webkit-search-cancel-button, +input[type='search']::-webkit-search-decoration, +input[type='search']::-webkit-search-results-button, +input[type='search']::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; +} + +input[type='search'] { + -webkit-appearance: none; + -moz-appearance: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +textarea { + overflow: auto; + vertical-align: top; + resize: vertical; +} + +input { + &:focus { + outline: none; + } +} + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + */ +audio, +canvas, +video { + display: inline-block; + max-width: 100%; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + */ +[hidden] { + display: none; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: none; +} + +/* Make images easier to work with */ +img { + max-width: 100%; + display: inline-block; + vertical-align: middle; + height: auto; +} + +/* Make pictures easier to work with */ +picture { + display: inline-block; +} + +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +button, +html input[type='button'], +input[type='reset'], +input[type='submit'] { + -webkit-appearance: button; + cursor: pointer; + border: 0; + background: transparent; +} + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; +} + +[disabled] { + pointer-events: none; +} + +/** + * 1. Address box sizing set to content-box in IE 8/9. + */ +input[type='checkbox'], +input[type='radio'] { + padding: 0; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ +input[type='search'] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ +input[type='search']::-webkit-search-cancel-button, +input[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 3+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +button { + border: 0; + background: transparent; +} + +textarea { + overflow: auto; + vertical-align: top; + resize: vertical; +} + +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; + text-indent: 0; +} + +/** + * Based on normalize.css v8.0.1 + * github.com/necolas/normalize.css + */ +hr { + box-sizing: content-box; + overflow: visible; + background: #000; + border: 0; + height: 1px; + line-height: 0; + margin: 0; + padding: 0; + page-break-after: always; + width: 100%; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + */ +pre { + font-family: monospace, monospace; + font-size: 100%; +} + +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + text-decoration: none; +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; +} + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 75%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -5px; +} + +sup { + top: -5px; +} + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1; + margin: 0; + padding: 0; +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + border-style: none; + padding: 0; + outline: 0; +} + +legend { + color: inherit; + white-space: normal; + + display: block; + border: 0; + max-width: 100%; + width: 100%; +} + +fieldset { + min-width: 0; +} + +body:not(:-moz-handler-blocked) fieldset { + display: block; +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} + +/* + * Misc + * ========================================================================== */ + +template { + display: none; +} diff --git a/src/app/styles/utils/toast.scss b/src/app/styles/utils/toast.scss new file mode 100644 index 0000000..b1789bc --- /dev/null +++ b/src/app/styles/utils/toast.scss @@ -0,0 +1,43 @@ +@import 'vue3-toastify/dist/index.css'; + +:root { + --toastify-text-color-light: var(--dark-main); + --toastify-toast-min-height: toRem(48); +} + +.Toastify { + font-family: $mainFontFamily, sans-serif; + + &__toast { + border-radius: $borderRadius8; + box-shadow: 0 4px 24px 0 rgba(0, 0, 0, 0.12); + padding: toRem(12) toRem(16); + + &-body { + margin: 0; + padding: 0; + } + + &-content { + @include fontSize(s-13); + } + + &-icon { + font-size: toRem(16); + } + + &--success { + background-color: var(--green-bg); + } + + &--error { + background-color: var(--critical-bg); + } + } + + &__close-button { + color: var(--dark-main); + font-size: toRem(24); + height: 100%; + } +} diff --git a/src/app/styles/utils/utils.scss b/src/app/styles/utils/utils.scss new file mode 100644 index 0000000..3c45ce9 --- /dev/null +++ b/src/app/styles/utils/utils.scss @@ -0,0 +1,8 @@ +@import 'functions'; + +@import 'vars/colors'; +@import 'vars/other'; +@import 'vars/spaces'; +@import 'vars/typography'; + +@import 'mixins'; diff --git a/src/app/styles/utils/vars/colors.scss b/src/app/styles/utils/vars/colors.scss new file mode 100644 index 0000000..f545af5 --- /dev/null +++ b/src/app/styles/utils/vars/colors.scss @@ -0,0 +1,71 @@ +:root { + --white: #fff; + + // main + --dark-main: #364153; + --berry-main: #ef6093; + --grey-main: #f2f5f9; + --brand-main: #a241f0; + --berry-main: #ef6093; + --orange-main: #fab619; + --purple-main: #775abf; + --green-main: #b2d677; + --critical-main: #ed6a5eff; + + //border + --grey-border: #dfe4ed; + --green-border: rgba(135, 163, 88, 1); + + //background + --green-bg: rgba(236, 244, 225, 1); + --critical-bg: #f6c2bd; + --brand-4-bg: rgba(162, 65, 240, 0.04); //#F6EEFF + --blue-20-bg: rgba(134, 200, 241, 0.2); //#f4f5fd + --purple-bg: #f6eeff; + --purple-8-bg: rgba(119, 90, 191, 0.08); + + //hover + --brand-hover: #9138d8; + --grey-hover: #eaeffa; + + //states + --berry-8: rgba(239, 96, 147, 0.08); + --dark-4: rgba(54, 65, 83, 0.04); + --dark-14: rgba(54, 65, 83, 0.14); + --dark-20: rgba(54, 65, 83, 0.2); + --berry-14: rgba(239, 96, 147, 0.14); + --berry-20: rgba(239, 96, 147, 0.2); + --dark-32: rgba(54, 65, 83, 0.32); + --green-32: rgba(206, 248, 137, 0.32); + --green-64: rgba(178, 214, 119, 0.64); + --dark-64: #364153a3; + --grey-64: #f8fafc; + --blue-20: #86c8f133; + --brand-20: rgba(162, 65, 240, 0.2); + --brand-64: rgba(162, 65, 240, 0.64); + --brand-8: rgba(162, 65, 240, 0.08); + --brand-4: rgba(162, 65, 240, 0.04); + --dark-blue: #3388bc; + --blue-14: rgba(134, 200, 241, 0.14); + --green-14: rgba(178, 214, 119, 0.14); + --green-20: rgba(178, 214, 119, 0.2); + --orange-20: rgba(255, 219, 117, 0.2); + --orange-32: rgba(255, 219, 117, 0.32); + --berry-4: rgba(239, 96, 147, 0.04); + --berry-8: rgba(239, 96, 147, 0.08); + --berry-14: rgba(239, 96, 147, 0.14); + + --text-primary: rgba(0, 0, 0, 0.8); + --day-Base-base-04: #dddfe0; + + // gradients + --brand-linear: linear-gradient(138deg, #a241f0 2.35%, #775abf 96.98%); + --ch-linear1: linear-gradient( + 112deg, + #ac52f4 0.73%, + #a9139a 33.95%, + #5a409c 104.31% + ); + + --dp-font-family: $mainFontFamily; +} diff --git a/src/app/styles/utils/vars/other.scss b/src/app/styles/utils/vars/other.scss new file mode 100644 index 0000000..370d989 --- /dev/null +++ b/src/app/styles/utils/vars/other.scss @@ -0,0 +1,11 @@ +$borderRadius2: toRem(2); +$borderRadius4: toRem(4); +$borderRadius6: toRem(6); +$borderRadius8: toRem(8); +$borderRadius10: toRem(10); +$borderRadius12: toRem(12); +$borderRadius16: toRem(16); +$borderRadius20: toRem(20); +$borderRadius24: toRem(24); + +$widthSideBar: toRem(260); diff --git a/src/app/styles/utils/vars/spaces.scss b/src/app/styles/utils/vars/spaces.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/styles/utils/vars/typography.scss b/src/app/styles/utils/vars/typography.scss new file mode 100644 index 0000000..606be41 --- /dev/null +++ b/src/app/styles/utils/vars/typography.scss @@ -0,0 +1,38 @@ +$mainFontFamily: 'NeueHaasUnicaW1G'; +$decorationFontFamily: 'Tinkoff Sans'; +$icon: 'icon', sans-serif; + +$tags: ( + h2: ( + toRem(28), + normal, + ), + h3: ( + toRem(20), + normal, + ), + b-16: ( + toRem(16), + normal, + ), + b-15: ( + toRem(15), + normal, + ), + b-14: ( + toRem(14), + normal, + ), + s-13: ( + toRem(13), + normal, + ), + s-12: ( + toRem(12), + toRem(16.5), + ), + s-11: ( + toRem(11), + toRem(16), + ), +); diff --git a/src/entities/entities.scss b/src/entities/entities.scss new file mode 100644 index 0000000..eff82bc --- /dev/null +++ b/src/entities/entities.scss @@ -0,0 +1,18 @@ +/*---------------- User Styles ------------------------*/ +@import 'user/ui/UserAvatar/UserAvatar'; + +/*---------------- Patient Styles ---------------------*/ +@import 'patient/ui/PatientRequest/PatientRequest'; +@import 'patient/ui/ProgressBar/ProgressBar'; +@import 'patient/ui/PatientSurveyCard/PatientSurveyCard'; +@import 'patient/ui/PatientHealthMatrix/PatientHealthMatrix'; +@import 'patient/ui/PatientBasicInfo/PatientBasicInfo'; +@import 'patient/ui/PatientFilesCard/PatientFilesCard'; +@import 'patient/ui/PatientReminders/PatientReminders'; +@import 'patient/ui/EditableCard/EditableCard'; +@import 'patient/ui/InitialAppointment/InitialAppointment'; +@import 'patient/ui/QuestionnaireCard/QuestionnaireCard'; +@import 'patient/ui/EmptySurvey/EmptySurvey'; +@import 'patient/ui/InitialHealthMatrix/InitialHealthMatrix'; +@import 'patient/ui/InitialPurpose/InitialPurpose'; +@import 'patient/ui/EditableInput/EditableInput'; diff --git a/src/entities/index.ts b/src/entities/index.ts new file mode 100644 index 0000000..1c89925 --- /dev/null +++ b/src/entities/index.ts @@ -0,0 +1,3 @@ +export * from './user' +export * from './patient' +export * from './medical' diff --git a/src/entities/medical/api/index.ts b/src/entities/medical/api/index.ts new file mode 100644 index 0000000..2a2e3fd --- /dev/null +++ b/src/entities/medical/api/index.ts @@ -0,0 +1,245 @@ +import type { AxiosPromise } from 'axios' +import type { + Patient, + PatientReminder, + THealthMatrix, + HealthMatrixData, + PatientAnalysis, + PatientTreatmentCourse, +} from '@/entities' +import { medicalApi } from '@/shared' +import type { + Medical, + SetSurveyData, + AddReminderData, + TreatmentCourse, + AddTreatmentCourseData, + DeleteAppointmentData, + DeleteTreatmentCourseFromPatientData, + MedicalSurvey, + ViewSurveyAnswersData, + SurveyDetail, + MedicalTest, + AddOrUpdateOptimumData, + MarkerOptimums, + AddOrUpdateAnalysisData, + TreatmentCourseData, +} from '../lib' + +/**------------------ Surveys -------------------------- */ +export const fetchSurveys = ( + search?: MedicalAPI.GET.FetchSurveys.Params, +): MedicalAPI.GET.FetchSurveys.Response => + medicalApi.get('survey', { + params: { search }, + }) + +export const setSurveysToPatient = ( + data: MedicalAPI.PUT.SetSurveysToPatient.Params, +): MedicalAPI.PUT.SetSurveysToPatient.Response => + medicalApi.put(`customer/${data.customer_id}/survey`, { + survey_ids: data.survey_ids, + }) + +export const fetchSurveyQuestions = ( + params: MedicalAPI.GET.FetchQuestionsOfSurvey.Params, +): MedicalAPI.GET.FetchQuestionsOfSurvey.Response => + medicalApi.get(`survey/${params}`) + +export const viewSurveyAnswers = ( + params: MedicalAPI.GET.FetchAnswersOfSurvey.Params, +): MedicalAPI.GET.FetchAnswersOfSurvey.Response => + medicalApi.get( + `customer/${params.customer_id}/survey/${params.survey_attemp_id}`, + ) + +/**------------------ Reminder -------------------------- */ +export const addReminderToPatient = ( + data: MedicalAPI.POST.addReminderToPatient.Params, +): MedicalAPI.POST.addReminderToPatient.Response => + medicalApi.post('eventReminder', data) + +/**------------------ Treatmen Course -------------------------- */ +export const fetchTreatmentCourse = ( + search?: MedicalAPI.GET.FetchTreatmentCourse.Params, +): MedicalAPI.GET.FetchTreatmentCourse.Response => + medicalApi.get('treatmentCourse', { + params: { search }, + }) + +export const addTreatmentCourseToPatient = ( + data: MedicalAPI.POST.AddTreatmentCourseToPatient.Params, +): MedicalAPI.POST.AddTreatmentCourseToPatient.Response => + medicalApi.post(`users/${data.user_id}/treatmentCourseUser`, data) + +export const addFileToTreatment = (data: { + user_id: number + payload: FormData +}): MedicalAPI.POST.AddTreatmentCourseToPatient.Response => + medicalApi.post(`users/${data.user_id}/treatmentCourseUser`, data.payload) + +export const fetchPatientTreatmentCourse = ( + data: MedicalAPI.GET.FetchPatientTreatmentCourse.Params, +): MedicalAPI.GET.FetchPatientTreatmentCourse.Response => + medicalApi.get(`users/${data}/treatmentCourseUser`) + +export const deleteTreatmentCourseFromPatient = ( + data: MedicalAPI.DELETE.DeleteTreatmentCourseFromPatient.Params, +): MedicalAPI.DELETE.DeleteTreatmentCourseFromPatient.Response => + medicalApi.delete( + `users/${data.user_id}/treatmentCourseUser/${data.treatment_course_id}`, + ) + +export const editTreatmentCourse = ( + data: MedicalAPI.PUT.UpdateTreatmentCourse.Params, +): MedicalAPI.PUT.UpdateTreatmentCourse.Response => + medicalApi.put( + `users/${data.user_id}/treatmentCourseUser/${data.treatment_course_id}`, + data.payload, + ) + +/**------------------ Appointment -------------------------- */ + +export const deleteAppointmentFromPatient = ( + data: MedicalAPI.DELETE.DeleteAppointmentFromPatient.Params, +): MedicalAPI.DELETE.DeleteAppointmentFromPatient.Response => + medicalApi.delete(`appointment/${data.appointment}`) + +/**------------------ Medical Test -------------------------- */ + +export const fetchMedicalTests = + (): MedicalAPI.GET.FetchAllMedicalTest.Response => + medicalApi.get('listMedicalTest') + +export const updateCustomOptimum = ( + data: MedicalAPI.POST.UpdateCustomOptimum.Params, +): MedicalAPI.POST.UpdateCustomOptimum.Response => + medicalApi.post('optimalCustom', data) + +export const addOrUpdateAnalysis = ( + data: MedicalAPI.POST.AddOrUpdateAnalysis.Params, +): MedicalAPI.POST.AddOrUpdateAnalysis.Response => + medicalApi.post(`users/${data.user_id}/analysis`, data) + +/**------------------ Health Matrix -------------------------- */ +export const updateHealthMatrixValue = ( + data: MedicalAPI.POST.UpdateHealthMatrixValue.Params, +): MedicalAPI.POST.UpdateHealthMatrixValue.Response => + medicalApi.post(`appointment/${data.appointment_id}/healthMatrix`, data) + +export namespace MedicalAPI { + export namespace GET { + export namespace FetchSurveys { + export type Params = string + export type Response = AxiosPromise<{ + data: Medical['survey_list'] + }> + } + + export namespace FetchTreatmentCourse { + export type Params = string + export type Response = AxiosPromise<{ + data: TreatmentCourse[] + }> + } + + export namespace FetchPatientTreatmentCourse { + export type Params = Patient['id'] + export type Response = AxiosPromise<{ + data: TreatmentCourse[] + }> + } + + export namespace FetchAnswersOfSurvey { + export type Params = ViewSurveyAnswersData + export type Response = AxiosPromise<{ + data: SurveyDetail + }> + } + + export namespace FetchQuestionsOfSurvey { + export type Params = MedicalSurvey['id'] + export type Response = AxiosPromise<{ + data: SurveyDetail + }> + } + + export namespace FetchAllMedicalTest { + export type Response = AxiosPromise<{ + data: MedicalTest[] + }> + } + } + + export namespace PUT { + export namespace SetSurveysToPatient { + export type Params = SetSurveyData + export type Response = AxiosPromise<{ + data: any + }> + } + + export namespace UpdateTreatmentCourse { + export type Params = TreatmentCourseData + export type Response = AxiosPromise<{ + data: PatientTreatmentCourse + }> + } + } + + export namespace POST { + export namespace addReminderToPatient { + export type Params = AddReminderData + export type Response = AxiosPromise<{ + data: PatientReminder + }> + } + + export namespace AddTreatmentCourseToPatient { + export type Params = AddTreatmentCourseData + export type Response = AxiosPromise<{ + data: any + }> + } + + export namespace UpdateCustomOptimum { + export type Params = AddOrUpdateOptimumData + export type Response = AxiosPromise<{ + data: MarkerOptimums + }> + } + + export namespace AddOrUpdateAnalysis { + export type Params = AddOrUpdateAnalysisData + export type Response = AxiosPromise<{ + data: PatientAnalysis + }> + } + export namespace UpdateHealthMatrixValue { + export type Params = HealthMatrixData + export type Response = AxiosPromise<{ + data: Maybe + }> + } + } + + export namespace DELETE { + export namespace DeleteAppointmentFromPatient { + export type Params = DeleteAppointmentData + export type Response = AxiosPromise<{ + data: { + success: boolean + data: boolean + message: null | string + } + }> + } + + export namespace DeleteTreatmentCourseFromPatient { + export type Params = DeleteTreatmentCourseFromPatientData + export type Response = AxiosPromise<{ + data: any + }> + } + } +} diff --git a/src/entities/medical/index.ts b/src/entities/medical/index.ts new file mode 100644 index 0000000..bdd8c6b --- /dev/null +++ b/src/entities/medical/index.ts @@ -0,0 +1,3 @@ +export * from './api' +export * from './lib' +export * from './model' diff --git a/src/entities/medical/lib/helpers.ts b/src/entities/medical/lib/helpers.ts new file mode 100644 index 0000000..36dd1f0 --- /dev/null +++ b/src/entities/medical/lib/helpers.ts @@ -0,0 +1,44 @@ +import type { MedicalTest, BaseAnalysisOptimumValues } from './types' + +export function setTestOptimums( + list: MedicalTest[], + patientInfo: { + age: number + sex: string + }, +): BaseAnalysisOptimumValues[] { + return list?.map(x => { + const markesLength = x.markers?.length || 0 + let optimums + let i + markers: for (i = 0; i < markesLength; i++) { + optimums = x.markers[i].optimums?.find(y => { + const ages = y.age.split('-').map(Number) + if (ages.length == 2) { + return ( + ages[0] <= patientInfo.age && + patientInfo.age <= ages[1] && + y.sex == patientInfo.sex + ) + } else if (ages.length == 1) { + return ( + ages[0] <= patientInfo.age && y.sex == patientInfo.sex + ) + } else { + return false + } + }) + + if (optimums && optimums.age) { + break markers + } + } + + return { + type: 'base', + test_id: Number(x.id), + sex: patientInfo.sex, + value: String(optimums?.age), + } + }) +} diff --git a/src/entities/medical/lib/index.ts b/src/entities/medical/lib/index.ts new file mode 100644 index 0000000..8a42fe0 --- /dev/null +++ b/src/entities/medical/lib/index.ts @@ -0,0 +1,2 @@ +export * from './types' +export * from './helpers' diff --git a/src/entities/medical/lib/types.ts b/src/entities/medical/lib/types.ts new file mode 100644 index 0000000..c7372fd --- /dev/null +++ b/src/entities/medical/lib/types.ts @@ -0,0 +1,215 @@ +import type { Appointments, Patient, PatientAnalysis } from '@/entities' + +export type Medical = { + survey_list: MedicalSurvey[] + treatment_courses: TreatmentCourse[] + patient_treatment: TreatmentCourse[] + survey: Maybe + medical_test: MedicalTest[] +} + +export type MedicalSurvey = { + id: number + title: string + description: string + questions_count: number | string +} + +export type SetSurveyData = { + customer_id: number + survey_ids: number[] +} + +export type AddReminderData = { + performer_id: number // user id + datetime: string + type: 'appointment' | 'notice' + text: string +} + +export type TreatmentCourse = { + id: number + title: string + duration: number + created_at: string | null + updated_at: string | null + nutrition: string | null + medication: string | null + buds: string | null + analysis_and_research: string | null + comment: string | null + enable: 1 | 0 +} + +export type SurveyDetail = { + id: number + title: string + description: string + questions: { + id: number + question_text: string + question_type: 'text' | 'checkbox' | 'radio' + survey_id: number + options: { + id: number + option: string + question_id: number + sort: null + is_selected?: boolean + model?: any + }[] + answers?: { + id: number + question_id: number + survey_attempt_id: number + user_id: number + answer_text: string + question_option_id: number | null + }[] + }[] +} + +export type MedicalTest = { + id: number + title: string + created_at: null | string + updated_at: null | string + unit: null | string + markers: { + id: number + name: string + list_medical_test_id: number + unit: null | string + created_at: null | string + updated_at: null | string + tip_min: null | string + tip_max: null | string + notice: null | string + optimums: MarkerOptimums[] + optimums_custom: MarkerOptimums[] + head: string[] + result: any[] + }[] +} + +// For displaying analysis +export type TestMarkers = { + id: number + name: string + list_medical_test_id: number + unit: null | string + created_at: null | string + updated_at: null | string + tip_min: null | string + tip_max: null | string + notice: null | string + optimums: MarkerOptimums | MarkerOptimums[] + optimums_custom: any[] + result?: PatientAnalysis[] +} + +export type MarkerOptimums = { + id: number + marker_id: number + sex: string + age: string + min: number + max: number + created_at: string + updated_at: string + interval?: string +} + +export type BaseAnalysisOptimumValues = { + type: 'base' | 'custom' + test_id: MedicalTest['id'] + sex: string + value: string +} + +export type AddTreatmentCourseData = { + user_id: number + appointment_id: number + treatment_course_id?: number + enabled?: boolean | number + file?: File +} + +export type DeleteAppointmentData = { + appointment: Appointments['id'] +} + +export type DeleteTreatmentCourseFromPatientData = { + user_id: Patient['id'] + treatment_course_id: TreatmentCourse['id'] +} + +export type ViewSurveyAnswersData = { + customer_id: Patient['id'] + survey_attemp_id: MedicalSurvey['id'] +} + +export type AddOrUpdateOptimumData = { + list_medical_test_id: number + marker_id: number + sex: string + age: string + min: number + max?: number +} + +export type AddOrUpdateAnalysisData = { + list_medical_test_id: number + result?: number | null + quality: string + date: string + user_id: number + marker_id: number +} + +export type HealthMatrixData = { + appointment_id: number + antecedents?: string | null + triggers?: string | null + medmators?: string | null + nutrition?: string | null + sleep?: string | null + movement?: string | null + stress?: string | null + relation?: string | null + assimilation?: string | null + assimilation_color?: string | null + energy?: string | null + energy_color?: string | null + inflammation?: string | null + inflammation_color?: string | null + structure?: string | null + structure_color?: string | null + mental?: string | null + mental_color?: string | null + communications?: string | null + communications_color?: string | null + transport?: string | null + transport_color?: string | null + detoxification?: string | null + detoxification_color?: string | null + circle_mental?: string | null + circle_spiritual?: string | null + circle_emotional?: string | null +} + +export type TreatmentCourseData = { + user_id: Patient['id'] + treatment_course_id?: TreatmentCourse['id'] + payload?: + | { + nutrition?: TreatmentCourse['nutrition'] + medication?: TreatmentCourse['medication'] + buds?: TreatmentCourse['buds'] + analysis_and_research?: TreatmentCourse['analysis_and_research'] + comment?: TreatmentCourse['comment'] + title?: TreatmentCourse['title'] + enable?: TreatmentCourse['enable'] + } + | FormData +} diff --git a/src/entities/medical/model/index.ts b/src/entities/medical/model/index.ts new file mode 100644 index 0000000..ade88eb --- /dev/null +++ b/src/entities/medical/model/index.ts @@ -0,0 +1 @@ +export * from './medical' diff --git a/src/entities/medical/model/medical.ts b/src/entities/medical/model/medical.ts new file mode 100644 index 0000000..9e914ae --- /dev/null +++ b/src/entities/medical/model/medical.ts @@ -0,0 +1,489 @@ +import { defineStore, storeToRefs } from 'pinia' +import { computed, reactive, ref } from 'vue' +import { toast } from 'vue3-toastify' +import { + addReminderToPatient, + addTreatmentCourseToPatient, + fetchMedicalTests, + editTreatmentCourse, + fetchPatientTreatmentCourse, + fetchSurveyQuestions, + fetchSurveys, + fetchTreatmentCourse, + setSurveysToPatient, + setTestOptimums, + updateCustomOptimum, + viewSurveyAnswers, + type PatientAnalysis, + addFileToTreatment, +} from '@/entities' +import { usePatientStore } from '@/entities' +import { Stores, declension } from '@/shared' +import type { + Medical, + SetSurveyData, + AddReminderData, + AddTreatmentCourseData, + ViewSurveyAnswersData, + BaseAnalysisOptimumValues, + MarkerOptimums, + AddOrUpdateOptimumData, + TreatmentCourseData, +} from '../lib' + +type MedicalState = BaseState> + +export const useMedicalStore = defineStore(Stores.MEDICAL, () => { + /** + * State + */ + + const state: MedicalState = reactive({ + data: { + survey_list: [], + treatment_courses: [], + patient_treatment: [], + survey: null, + medical_test: [], + }, + loading: false, + }) + + const currOptimums = ref([]) + const { analysisResults, infoForMedicalTest } = storeToRefs( + usePatientStore(), + ) + + /** + * Getters + */ + + const surveyList = computed(() => { + return state.data?.survey_list?.map(x => ({ + ...x, + questions_count: declension(Number(x.questions_count), [ + 'вопрос', + 'вопроса', + 'вопросов', + ]), + })) + }) + + const treatmentCourses = computed( + () => + state.data?.treatment_courses?.map(x => ({ + ...x, + duration: declension(x.duration, ['день', 'дня', 'дней']), + })), + ) + + const patientTreatments = computed(() => { + return ( + state.data?.patient_treatment?.map(x => ({ + id: x.id, + title: x.title, + })) || [] + ) + }) + + const currSurvey = computed(() => state.data?.survey) + + const medicalTestList = computed(() => { + if (state.data?.medical_test && state.data.medical_test?.length) { + const newList: any[] = [] + + state.data.medical_test.forEach((x, idx) => { + const date: Set = new Set() + const markers: any[] = [] + + x.markers?.forEach(el => { + const result: PatientAnalysis[] = [] + let optimums: MarkerOptimums | undefined + let interval: string = '' + + if (currOptimums.value[idx]['type'] == 'custom') { + optimums = el.optimums_custom?.find(x => { + return ( + String( + currOptimums.value[idx]['value'], + ).includes(x.age) && + currOptimums.value[idx].sex == x.sex + ) + }) + } else { + optimums = el.optimums?.find(x => { + return ( + String( + currOptimums.value[idx]['value'], + ).includes(x.age) && + currOptimums.value[idx].sex == x.sex + ) + }) + } + + analysisResults.value?.forEach(a => { + if (a.marker_id === el.id) { + let analysisState: string = '' + + if (a.result) { + if ( + optimums?.min && + optimums?.max && + !Number.isNaN(optimums?.min) && + !Number.isNaN(optimums?.max) + ) { + if (optimums.min > a.result) { + analysisState = 'down' + } else if ( + optimums.min <= a.result && + a.result <= optimums.max + ) { + analysisState = 'normal' + } else { + analysisState = 'up' + } + + interval = `${ + optimums?.min + '-' + optimums?.max + }` + } else if (optimums?.min) { + if (optimums.min > a.result) { + analysisState = 'down' + } else if (optimums.min == a.result) { + analysisState = 'normal' + } else { + analysisState = 'up' + } + interval = `${optimums?.min}` + } + } + + date.add(a.date) + + result.push({ + ...a, + state: analysisState, + }) + } + }) + + markers.push({ + id: el.id, + name: el.name, + unit: el.unit, + list_medical_test_id: el.list_medical_test_id, + tip_min: el.tip_min, + tip_max: el.tip_max, + notice: el.notice, + result, + optimums: { + ...optimums, + interval, + }, + }) + }) + + newList.push({ + id: x.id, + title: x.title, + unit: x.unit, + analyze_date: [...date], + markers, + }) + }) + + return newList + } else { + return [] + } + }) + + const hasCustomGetters = (testId: number, markerId: number, age: string) => + computed(() => { + const medicalTest = state.data?.medical_test.find( + x => x.id == testId, + ) + const testMarker = medicalTest?.markers.find(x => x.id == markerId) + + return testMarker?.optimums_custom.find(x => x.age == age) + }) + + const updateCurrOptimumsVal = (optimum: { + value: string + sex: string + type: 'base' | 'custom' + test_id: number + }) => { + currOptimums.value.forEach((el, idx) => { + if (el.test_id == optimum.test_id) { + currOptimums.value[idx] = { + ...optimum, + sex: + optimum.sex == 'children' + ? infoForMedicalTest.value.sex + : optimum.sex, + } + return + } + }) + } + /** + * Actions + */ + + const setSurveyList = async (search: string) => { + try { + state.loading = true + const { data } = await fetchSurveys(search) + + if (data.data && state.data?.survey_list) { + state.data.survey_list = data.data + } + } catch (e) { + console.log(e) + } + state.loading = false + } + + const setTreatmentCourseList = async (search: string) => { + try { + state.loading = true + const { data } = await fetchTreatmentCourse(search) + if (data.data?.length && state.data?.treatment_courses) { + state.data.treatment_courses = data.data + } + } catch (e: any) { + console.log('e ->', e) + } + state.loading = false + } + + const setPatientTreatmentCourseList = async (payload: number) => { + try { + state.loading = true + const { data } = await fetchPatientTreatmentCourse(payload) + + if (data.data?.length && state.data?.patient_treatment) { + state.data.patient_treatment = data.data + } + } catch (e: any) { + console.log('e ->', e) + } + state.loading = false + } + + const addDestinationToPatient = async (payload: AddTreatmentCourseData) => { + try { + state.loading = true + const { data } = await addTreatmentCourseToPatient(payload) + if (data.data) { + usePatientStore().setDataToState(data.data) + } + + toast.success('Успешно сохранено!') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + } + state.loading = false + } + + const addFileToTreatmentCourse = async (payload: any) => { + try { + state.loading = true + const { data } = await addFileToTreatment(payload) + if (data.data) { + usePatientStore().setDataToState(data.data) + } + + toast.success('Успешно сохранено!') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + } + state.loading = false + } + + const addSurveyToPatient = async (payload: SetSurveyData) => { + try { + state.loading = true + const { data } = await setSurveysToPatient(payload) + usePatientStore().setDataToState(data.data) + toast.success('Успешно сохранено!') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + } + state.loading = false + } + + const addReminder = async (payload: AddReminderData) => { + try { + state.loading = true + const { data } = await addReminderToPatient(payload) + + usePatientStore().setReminderToState(data.data) + toast.success('Успешно сохранено!') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + } + state.loading = false + } + + const viewSurvey = async (survey_id: number) => { + state.loading = true + try { + state.loading = true + const { data } = await fetchSurveyQuestions(survey_id) + if (data.data && state.data) { + state.data.survey = data.data + } + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + } + state.loading = false + } + + const viewSurveyResult = async (payload: ViewSurveyAnswersData) => { + try { + state.loading = true + const { data } = await viewSurveyAnswers(payload) + if (data.data && state.data) { + state.data.survey = data.data + + state.data.survey['questions'] = data.data.questions.map(x => ({ + ...x, + options: x.options.map(y => ({ + ...y, + model: y.is_selected ? y.id : '', + })), + })) + } + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + } + state.loading = false + } + + const setMedicalTest = async () => { + try { + state.loading = true + const { data } = await fetchMedicalTests() + if (data.data && data.data?.length && state.data?.medical_test) { + currOptimums.value = setTestOptimums( + data.data, + infoForMedicalTest.value, + ) + state.data.medical_test = data.data + } + } catch (e: any) { + console.log('e ->', e) + } + + state.loading = true + } + + /** + * только для кастомных оптимумов + * @param {AddOrUpdateOptimumData} payload + */ + const addOrUpdateCustomOptimum = async ( + payload: AddOrUpdateOptimumData, + ) => { + try { + const { data } = await updateCustomOptimum(payload) + toast.success('Успешно сохранено!') + + if (data.data && data.data?.marker_id) { + const testIdx = state.data?.medical_test.length || 0 + let markerIdx, optimumIdx, i, j + testLoop: for (i = 0; i < testIdx; i++) { + if ( + state.data?.medical_test[i]['id'] == + payload.list_medical_test_id + ) { + markerIdx = + state.data?.medical_test[i]?.markers?.length || 0 + for (j = 0; j < markerIdx; j++) { + if ( + state.data.medical_test[i]['markers'][j][ + 'id' + ] == payload.marker_id + ) { + optimumIdx = + state.data.medical_test[i]['markers'][j]?.[ + 'optimums_custom' + ]?.length || 0 + let hasOptimum = false + for (let k = 0; k < optimumIdx; k++) { + if ( + state.data.medical_test[i]['markers'][ + j + ]?.['optimums_custom'][k]['sex'] == + payload.sex && + state.data.medical_test[i]['markers'][ + j + ]?.['optimums_custom'][k]['age'] == + payload.age + ) { + state.data.medical_test[i]['markers'][ + j + ]['optimums_custom'][k] = { + ...data.data, + } + hasOptimum = true + } + } + + if (!hasOptimum) { + state.data.medical_test[i]['markers'][j][ + 'optimums_custom' + ].push({ + ...data.data, + }) + + break testLoop + } + } + } + } + } + } + } catch (e: any) { + console.log('e ->', e) + } + } + + const updateTreatmentCourse = async (payload: TreatmentCourseData) => { + try { + const { data } = await editTreatmentCourse(payload) + + if (data.data) { + usePatientStore().setTreatmentDataToState(data.data) + } + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + } + } + + return { + state, + surveyList, + currSurvey, + treatmentCourses, + patientTreatments, + medicalTestList, + currOptimums, + hasCustomGetters, + updateCurrOptimumsVal, + setSurveyList, + addSurveyToPatient, + addReminder, + setTreatmentCourseList, + addDestinationToPatient, + setPatientTreatmentCourseList, + viewSurvey, + viewSurveyResult, + setMedicalTest, + addOrUpdateCustomOptimum, + updateTreatmentCourse, + addFileToTreatmentCourse, + } +}) diff --git a/src/entities/medical/ui/index.ts b/src/entities/medical/ui/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/entities/patient/api/index.ts b/src/entities/patient/api/index.ts new file mode 100644 index 0000000..d06ae03 --- /dev/null +++ b/src/entities/patient/api/index.ts @@ -0,0 +1,180 @@ +import { type AxiosPromise } from 'axios' +import { baseApi, medicalApi } from '@/shared' +import type { + Appointments, + EditAppointmentData, + EditPatientData, + Patient, + PatientAnalysis, + PatientMediaFile, +} from '../lib' + +/**------------------ Patient -------------------------- */ +export const fetchPatients = async ({ + search, + page, + per_page, +}: PatientAPI.GET.FetchPatients.Params): PatientAPI.GET.FetchPatients.Response => { + const response = await baseApi.get( + `customer?search=${search}&page=${page}&perPage=${per_page}`, + ) + + return response.data +} + +export const fetchPatient = async ( + data: PatientAPI.GET.FetchPatient.Params, +): PatientAPI.GET.FetchPatient.Response => { + const response = await baseApi.get(`customer/${data}`) + + return response.data +} + +export const deletePatient = (data: PatientAPI.DELETE.DeletePatient.Params) => + new Promise(resolve => { + setTimeout(() => { + console.log('delete: ', data) + + resolve(data) + }, 1000) + }) + +export const editPatient = ( + data: PatientAPI.PUT.EditPatient.Params, +): PatientAPI.PUT.EditPatient.Response => + baseApi.put(`customer/${data.id}`, data) + +/**------------------ Patient Appointment -------------------------- */ +export const editPatientAppointment = ( + data: PatientAPI.PUT.EditAppointment.Params, +): PatientAPI.PUT.EditAppointment.Response => + medicalApi.put(`appointment/${data.id}`, data) + +export const addAppointmentToPatient = ( + data: PatientAPI.POST.AddAppointment.Params, +): PatientAPI.POST.AddAppointment.Response => + medicalApi.post('appointment', data) + +/**------------------ Set Avatar of Customer -------------------------- */ +export const setPatientAvatar = ( + data: PatientAPI.POST.SetAvatar.Params, +): PatientAPI.POST.SetAvatar.Response => baseApi.post('user/setAvatar', data) + +/**------------------ Media Files -------------------------- */ +export const setFilesToPatient = ( + data: PatientAPI.POST.SetFiles.Params, +): PatientAPI.POST.SetFiles.Response => + medicalApi.post(`customer/${data.customer_id}/file`, data.files) + +export const deleteMediaFile = async ( + data: PatientAPI.DELETE.DeleteFile.Params, +) => medicalApi.delete(`file/${data}`) + +/**------------------ Medical Tests -------------------------- */ + +export const fetchCustomerMedicalTest = ( + customer_id: PatientAPI.GET.FetchCustomerMedicalTests.Params, +): PatientAPI.GET.FetchCustomerMedicalTests.Response => + medicalApi.get(`users/${customer_id}/analysis`) + +/** + * Module PatientAPI + * Interfaces: + * EditPatientParams + * EditAppointmentParams + */ +interface EditPatientParams extends EditPatientData { + id: number +} + +interface EditAppointmentParams extends EditAppointmentData { + id: Appointments['id'] + user_id: Appointments['user_id'] +} +export namespace PatientAPI { + export namespace GET { + export namespace FetchPatients { + export type Params = { + page: number + per_page: number + search: string + } + export type Response = AxiosPromise> + } + + export namespace FetchPatient { + export type Params = Patient['id'] + export type Response = AxiosPromise + + // export type Response = AxiosResponse<{ + // data: Patient[] + // }> + } + + export namespace FetchCustomerMedicalTests { + export type Params = Patient['id'] + export type Response = AxiosPromise<{ + data: PatientAnalysis[] + }> + } + } + + export namespace DELETE { + export namespace DeletePatient { + export type Params = Patient['id'] + } + + export namespace DeleteFile { + export type Params = PatientMediaFile['id'] + } + } + + export namespace PUT { + export namespace EditPatient { + export type Params = EditPatientParams + export type Response = AxiosPromise<{ + data: Patient + }> + } + + export namespace EditAppointment { + export type Params = EditAppointmentParams + export type Response = AxiosPromise<{ + data: Appointments + }> + } + } + + export namespace POST { + export namespace AddAppointment { + export type Params = { + user_id: Appointments['user_id'] + } + export type Response = AxiosPromise<{ + data: { + user_id: number + updated_at: string + created_at: string + id: number + } + }> + } + + export namespace SetAvatar { + export type Params = FormData + export type Response = AxiosPromise<{ + data: Patient + }> + } + + export namespace SetFiles { + export type Params = { + customer_id: Patient['id'] + files: FormData + } + export type Response = AxiosPromise<{ + data: Patient + }> + } + } +} diff --git a/src/entities/patient/index.ts b/src/entities/patient/index.ts new file mode 100644 index 0000000..97b4aa2 --- /dev/null +++ b/src/entities/patient/index.ts @@ -0,0 +1,4 @@ +export * from './api' +export * from './ui' +export * from './lib' +export * from './model' diff --git a/src/entities/patient/lib/hooks.ts b/src/entities/patient/lib/hooks.ts new file mode 100644 index 0000000..b4aba63 --- /dev/null +++ b/src/entities/patient/lib/hooks.ts @@ -0,0 +1,65 @@ +import { onBeforeUnmount, onMounted, ref, watch } from 'vue' +import { fetchPatients } from '../api' +import type { Patient, PatientsState, PatientTableRow } from '../lib' + +export const useSearchPatient = (cb: (search: string) => void) => { + let timeout: Timeout + + const search = ref('') + + onBeforeUnmount(() => { + clearTimeout(timeout) + }) + + watch(search, value => { + clearTimeout(timeout) + + timeout = setTimeout(async () => { + await cb(value) + }, 300) + }) + + return search +} + +export const useFetchPatients = async ( + search: string = '', + page: Pagination['current_page'] = 1, + state: PatientsState, + converter: (list: Patient[]) => PatientTableRow[], +) => { + const { data } = await fetchPatients({ + page, + per_page: state.pagination.per_page, + search, + }) + + const newData = converter(data.data) + + return { + pagination: data, + data: !state.data || search ? newData : [...state.data, ...newData], + } +} + +export const useBasePatientsLoad = ( + cb: (search?: string, page?: Pagination['current_page']) => Promise, + currentPage: Pagination['current_page'], + lastPage: Pagination['last_page'], + isFirstLoad: boolean, +) => { + const loadData = async ($state: any) => { + await cb('', currentPage + 1) + if (currentPage < lastPage) { + $state.loaded() + } else { + $state.complete() + } + } + + onMounted(async () => { + if (isFirstLoad) await cb() + }) + + return loadData +} diff --git a/src/entities/patient/lib/index.ts b/src/entities/patient/lib/index.ts new file mode 100644 index 0000000..3850a8e --- /dev/null +++ b/src/entities/patient/lib/index.ts @@ -0,0 +1,2 @@ +export * from './types' +export * from './hooks' diff --git a/src/entities/patient/lib/types.ts b/src/entities/patient/lib/types.ts new file mode 100644 index 0000000..4236707 --- /dev/null +++ b/src/entities/patient/lib/types.ts @@ -0,0 +1,205 @@ +import type { LinkProps, UserBaseProps } from '@/shared' +import type { PatientRequestProps } from '../ui' + +export type Patient = { + id: number + sex: string + avatar: string + name: string + gender: Gender + anamnesis: string | null + asking: string | null + birthdate: string + children_count: number + city: string + contact: string + email: string + marital: string + profession: string + media: PatientMediaFile[] + medical_test: PatientMedicalTest[] + survey_attempts: PatientSurvey[] + files: PatientFiles[] + health_matrix: number[] + appointments: Appointments[] + event_reminder_customer: PatientReminder[] +} + +export type PatientTableRow = { + id: Patient['id'] + patient: UserBaseProps + age: number + gender: Gender + contact?: LinkProps + time?: string + actions?: boolean + type?: string + description?: string + request?: PatientRequestProps['request'] + applicationDate?: string + reminder?: string +} + +export type PatientsState = BaseStatePagination> + +export enum PatientStep { + MAIN, + QUESTIONNAIRE, + ANALYZES, + FILES, + HEALTH_MATRIX, + PURPOSE, +} + +export type PatientFiles = { + id: number + name: string + file_name: string + url: string +} + +export type PatientSurvey = { + id: number + title: string + survey_id: number + attemp: number + percent: number + answers_count: number + survey: { + id: number + title: string + questions_count: number + description: string + } +} + +export type PatientMediaFile = { + id: number + file_name: string + created_at: string +} + +export type PatientMedicalTest = { + id: number + title: string + created_at: string + unit: string | null + medical_tests: any[] +} + +export type Appointments = { + id: number + user_id: number + complaint: string + taking_medication: string + taking_bud: string + physical_activity: string + stress: string + sleep: string + bad_habits: string + conclusion: string + created_at: string + updated_at: string + treatment_course_user?: PatientTreatmentCourse + health_matrix: THealthMatrix +} + +export type THealthMatrix = { + id: number + appointment_id: number + antecedents: string | null + triggers: string | null + medmators: string | null + nutrition: string | null + sleep: string | null + movement: string | null + stress: string | null + relation: string | null + assimilation: string | null + assimilation_color: string | null + energy: string | null + energy_color: string | null + inflammation: string | null + inflammation_color: string | null + structure: string | null + structure_color: string | null + mental: string | null + mental_color: string | null + communications: string | null + communications_color: string | null + transport: string | null + transport_color: string | null + detoxification: string | null + detoxification_color: string | null + circle_mental: string | null + circle_spiritual: string | null + circle_emotional: string | null + created_at: string + updated_at: string +} + +export type EditPatientData = { + name?: string + sex?: string + city?: string + asking?: string + marital?: string + contact?: string + anamnesis?: string + birthdate?: string + profession?: string + children_count?: string +} + +export type EditAppointmentData = { + complaint?: Appointments['complaint'] + taking_medication?: Appointments['taking_medication'] + taking_bud?: Appointments['taking_bud'] + physical_activity?: Appointments['physical_activity'] + stress?: Appointments['stress'] + sleep?: Appointments['sleep'] + bad_habits?: Appointments['bad_habits'] + conclusion?: Appointments['conclusion'] +} + +export type PatientReminder = { + id: number + text: string + type: string + user_id: number + performer_id: number + datetime: string + created_at: string + updated_at: string +} + +export type PatientTreatmentCourse = { + id: number + title: string + duration: number | null + user_id: number + performer_id: number + created_at: string + updated_at: string + appointment_id: number + nutrition: string | null + medication: string + buds: string | null + analysis_and_research: string | null + comment: string | null + media: PatientFiles[] + enabled: number +} + +export type PatientAnalysis = { + id?: number + user_id: number + performer_id?: number + result: number | null + marker_id: number + quality: string + date: string + created_at?: string + updated_at?: string + state?: string +} diff --git a/src/entities/patient/model/converters/index.ts b/src/entities/patient/model/converters/index.ts new file mode 100644 index 0000000..4672991 --- /dev/null +++ b/src/entities/patient/model/converters/index.ts @@ -0,0 +1,2 @@ +export * from './patientsToMyPatients' +export * from './patientsToRequestsPatients' diff --git a/src/entities/patient/model/converters/patientsToMyPatients.ts b/src/entities/patient/model/converters/patientsToMyPatients.ts new file mode 100644 index 0000000..03c4568 --- /dev/null +++ b/src/entities/patient/model/converters/patientsToMyPatients.ts @@ -0,0 +1,20 @@ +import { dateToAge } from '@/shared' +import type { Patient, PatientTableRow } from '../../lib' + +export const patientsToMyPatients = (list: Patient[]): PatientTableRow[] => { + return list.map(item => ({ + id: item.id, + patient: { + name: item.name || '', + avatar: item.avatar || '', + }, + gender: 1, + age: dateToAge(item.birthdate), + request: item.asking || '', + reminder: 'моковые данные, с бека не приходит!!!', + contact: { + href: `tel:${item.contact || ''}`, + text: item.contact || '', + }, + })) +} diff --git a/src/entities/patient/model/converters/patientsToRequestsPatients.ts b/src/entities/patient/model/converters/patientsToRequestsPatients.ts new file mode 100644 index 0000000..db0450f --- /dev/null +++ b/src/entities/patient/model/converters/patientsToRequestsPatients.ts @@ -0,0 +1,19 @@ +import { dateToAge } from '@/shared' +import type { Patient, PatientTableRow } from '../../lib' + +export const patientsToRequestsPatients = ( + list: Patient[], +): PatientTableRow[] => { + return list.map(item => ({ + id: item.id, + patient: { + name: item.name || '', + avatar: item.avatar || '', + }, + gender: 1, + age: dateToAge(item.birthdate), + applicationDate: '2023-10-23T05:57:37.000000Z', + request: item.asking || '', + actions: true, + })) +} diff --git a/src/entities/patient/model/index.ts b/src/entities/patient/model/index.ts new file mode 100644 index 0000000..5401340 --- /dev/null +++ b/src/entities/patient/model/index.ts @@ -0,0 +1 @@ +export * from './module' diff --git a/src/entities/patient/model/module/index.ts b/src/entities/patient/model/module/index.ts new file mode 100644 index 0000000..4dd713a --- /dev/null +++ b/src/entities/patient/model/module/index.ts @@ -0,0 +1,3 @@ +export * from './my-patients' +export * from './request-patients' +export * from './patient' diff --git a/src/entities/patient/model/module/my-patients.ts b/src/entities/patient/model/module/my-patients.ts new file mode 100644 index 0000000..55da99f --- /dev/null +++ b/src/entities/patient/model/module/my-patients.ts @@ -0,0 +1,54 @@ +import { defineStore } from 'pinia' +import { reactive } from 'vue' +import { patientsToMyPatients } from '@/entities/patient/model/converters' +import { Stores } from '@/shared' +import { deletePatient } from '../../api' +import type { Patient, PatientsState } from '../../lib' +import { useFetchPatients } from '../../lib' + +export const usePatientsStore = defineStore(Stores.MY_PATIENTS, () => { + const state = reactive({ + loading: false, + data: null, + pagination: { + current_page: 1, + per_page: 10, + last_page: 1, + }, + }) + + const setMyPatients = async ( + search: string = '', + page: Pagination['current_page'] = 1, + ) => { + try { + const { data, pagination } = await useFetchPatients( + search, + page, + state, + patientsToMyPatients, + ) + + state.pagination = pagination + state.data = data + } catch (e) { + console.log(e) + } + } + + const deleteMyPatient = async (id: Patient['id']) => { + try { + await deletePatient(id) + + state.data = state.data?.filter(item => item.id !== id) + } catch (e) { + console.log(e) + } + } + + return { + state, + setMyPatients: setMyPatients, + deleteMyPatient: deleteMyPatient, + } +}) diff --git a/src/entities/patient/model/module/patient.ts b/src/entities/patient/model/module/patient.ts new file mode 100644 index 0000000..cb2afbf --- /dev/null +++ b/src/entities/patient/model/module/patient.ts @@ -0,0 +1,562 @@ +import { defineStore } from 'pinia' +import { computed, reactive, ref } from 'vue' +import { toast } from 'vue3-toastify' +import { + editPatient, + fetchPatient, + editPatientAppointment, + addAppointmentToPatient, + setPatientAvatar, + setFilesToPatient, + deleteMediaFile, + deleteAppointmentFromPatient, + deleteTreatmentCourseFromPatient, + updateHealthMatrixValue, + type DeleteTreatmentCourseFromPatientData, + fetchCustomerMedicalTest, + addOrUpdateAnalysis, + type AddOrUpdateAnalysisData, + type HealthMatrixData, +} from '@/entities' +import { + Stores, + dateToAge, + declension, + formattingDateForClient, + getTimeFromDate, + prettifyDate, +} from '@/shared' +import { + PatientStep, + type Appointments, + type EditAppointmentData, + type EditPatientData, + type Patient, + type PatientReminder, + type PatientMediaFile, + type PatientAnalysis, + type PatientTreatmentCourse, +} from '../../lib' + +type PatientState = BaseState> +export const APPOINTMENTSITEMS: { + key: + | 'taking_medication' + | 'taking_bud' + | 'physical_activity' + | 'stress' + | 'sleep' + | 'bad_habits' + | 'complaint' + name: any +}[] = [ + { + name: 'Прием медикаментов', + key: 'taking_medication', + }, + { + name: 'Прием бадов', + key: 'taking_bud', + }, + { + name: 'Физическая активность', + key: 'physical_activity', + }, + { + name: 'Стресс', + key: 'stress', + }, + { + name: 'Сон', + key: 'sleep', + }, + { + name: 'Вредные привычки', + key: 'bad_habits', + }, + { + name: 'Жалобы', + key: 'complaint', + }, +] + +export const usePatientStore = defineStore(Stores.PATIENT, () => { + /**-------- State -------------- */ + + const state = reactive({ + loading: false, + data: null, + }) + + const analysisResults = ref([]) + const idxAppointment = ref(0) + const patientStep = ref(PatientStep.MAIN) + + /**-------- Action -------------- */ + const setCurrentPatient = async (id: Patient['id']) => { + try { + state.loading = true + + const { data } = await fetchPatient(id) + state.data = data + idxAppointment.value = data?.appointments?.[0]?.id || 0 + } catch (e) { + console.log(e) + } finally { + state.loading = false + } + } + + const resetCurrentPatient = () => { + state.data = null + } + + const onEditPatient = async (payload: EditPatientData) => { + try { + const { data } = await editPatient({ + ...payload, + id: Number(state.data?.id), + }) + state.data = data.data + toast.success('Изменения сохранены !') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + state.loading = false + } + + const onEditAppointment = async (payload: EditAppointmentData) => { + try { + const { data } = await editPatientAppointment({ + ...payload, + id: Number(currAppointment.value?.id), + user_id: Number(currAppointment.value?.user_id), + }) + const appointment = data.data + let appointmentID = -1 + state.data?.appointments.forEach((el, i) => { + if (el.id == appointment.id) { + appointmentID = i + } + }) + + if (typeof appointmentID == 'number' && appointmentID > -1) { + APPOINTMENTSITEMS.forEach(elem => { + if (state.data?.appointments[appointmentID]) { + state.data.appointments[appointmentID][elem.key] = + appointment[elem.key] + } + }) + } + toast.success('Изменения сохранены!') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const onCreateAppointment = async (payload: { + user_id: Appointments['user_id'] + }) => { + try { + await addAppointmentToPatient(payload) + await setCurrentPatient(payload.user_id) + toast.success('Успешно добавлено новый прием!') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const onUpdateAvatar = async (payload: FormData) => { + try { + const { data } = await setPatientAvatar(payload) + if (data.data) { + state.data = data.data + } + toast.success('Изменения сохранены') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const onUploadFiles = async (payload: FormData) => { + try { + const { data } = await setFilesToPatient({ + customer_id: Number(state.data?.id), + files: payload, + }) + + if (data.data) { + state.data = data.data + } + toast.success('Файлы успешно сохранены') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const onDeleteMediaFile = async (payload: { + id: PatientMediaFile['id'] + type: 'patient' | 'treatmentCourse' + }) => { + try { + state.loading = true + + await deleteMediaFile(payload.id) + + if (payload.type == 'patient' && state.data?.media) { + const filteredMedia = state.data.media.filter( + file => file.id !== payload.id, + ) + + state.data.media = filteredMedia + } + + if (payload.type == 'treatmentCourse') { + state.data?.appointments?.forEach((app, idx) => { + if ( + app.id == currAppointment.value?.id && + state.data?.appointments[idx]?.treatment_course_user + ) { + const media = + state.data.appointments[ + idx + ].treatment_course_user?.media.filter( + x => x.id != payload.id, + ) || [] + + state.data.appointments[idx].treatment_course_user = { + analysis_and_research: + currAppointment.value.treatment_course_user + ?.analysis_and_research || '', + appointment_id: + currAppointment.value.treatment_course_user + ?.appointment_id || 0, + buds: + currAppointment.value.treatment_course_user + ?.buds || '[]', + comment: + currAppointment.value.treatment_course_user + ?.comment || '', + created_at: + currAppointment.value.treatment_course_user + ?.created_at || '', + duration: + currAppointment.value.treatment_course_user + ?.duration || 0, + enabled: + currAppointment.value.treatment_course_user + ?.enabled || 0, + id: + currAppointment.value.treatment_course_user + ?.id || 1, + media: media, + medication: + currAppointment.value.treatment_course_user + ?.medication || '[]', + nutrition: + currAppointment.value.treatment_course_user + ?.nutrition || '', + performer_id: + currAppointment.value.treatment_course_user + ?.performer_id || 1, + title: + currAppointment.value.treatment_course_user + ?.title || '', + updated_at: + currAppointment.value.treatment_course_user + ?.updated_at || '', + user_id: + currAppointment.value.treatment_course_user + ?.user_id || 1, + } + } + }) + } + + toast.success('Файл удален') + } catch (e) { + console.log(e) + + toast.error('Произошла ошибка') + } finally { + state.loading = false + } + } + + const onDeleteAppointment = async (id: Appointments['id']) => { + try { + await deleteAppointmentFromPatient({ appointment: id }) + + if (state.data?.appointments) { + state.data.appointments = state.data?.appointments.filter( + x => x.id != id, + ) + } + if (idxAppointment.value == id) { + idxAppointment.value = state.data?.appointments?.[0]?.id || 0 + } + toast.success('Прием удален') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const onDeleteTreatmentCourse = async ( + payload: DeleteTreatmentCourseFromPatientData, + ) => { + try { + await deleteTreatmentCourseFromPatient(payload) + state.data?.appointments?.forEach((app, idx) => { + if ( + app.id == currAppointment.value?.id && + state.data?.appointments[idx]?.treatment_course_user + ) { + state.data.appointments[idx].treatment_course_user = + undefined + } + }) + + toast.success('Назначения удален') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const setPatientAnalysis = async () => { + try { + if (state.data?.id) { + const { data } = await fetchCustomerMedicalTest(state.data.id) + + if (data.data && Array.isArray(data.data)) { + analysisResults.value = data.data + } + } + } catch (e: any) { + console.log('e -> ', e) + } + } + + const updatePatientAnalysisResult = async ( + payload: AddOrUpdateAnalysisData, + ) => { + try { + const { data } = await addOrUpdateAnalysis(payload) + const lenAnalysis = analysisResults.value.length + let isChanged = false + + for (let i = 0; i < lenAnalysis; i++) { + if ( + analysisResults.value[i]['marker_id'] == + payload.marker_id && + analysisResults.value[i]['date'] == payload.date + ) { + analysisResults.value[i]['result'] = Number( + data?.data?.result || payload.result, + ) + isChanged = true + break + } + } + + if (!isChanged) { + // If analysisResult has not been changed, then this is a new analysis + analysisResults.value.push(data.data) + } + } catch (e: any) { + console.log('e -> ', e) + } + } + + const updateAnalysisDate = async (payload: AddOrUpdateAnalysisData) => { + try { + const { data } = await addOrUpdateAnalysis(payload) + const lenAnalysis = analysisResults.value.length + + for (let i = 0; i < lenAnalysis; i++) { + if ( + analysisResults.value[i]['marker_id'] == + payload.marker_id && + analysisResults.value[i]['id'] == data.data.id + ) { + analysisResults.value[i] = { + ...data.data, + } + break + } + } + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const onUpdateHealthMatrix = async (payload: HealthMatrixData) => { + try { + const { data } = await updateHealthMatrixValue(payload) + if (data.data?.appointment_id) { + for (let i = 0; i < appointmentLen.value; i++) { + if ( + state.data?.appointments[i]?.health_matrix + ?.appointment_id == data.data.appointment_id + ) { + state.data.appointments[i].health_matrix = { + ...data.data, + } + } + } + } + toast.success('Изменения сохранены!') + } catch (e: any) { + toast.error(`Что-то не так! ${e?.message || ''}`) + console.log('e -> ', e) + } + } + + const setDataToState = (data: Patient) => { + state.data = data + } + + const setReminderToState = (data: PatientReminder) => { + state.data?.event_reminder_customer.push(data) + } + + const setTreatmentDataToState = (data: PatientTreatmentCourse) => { + state.data?.appointments?.forEach((app, idx) => { + if ( + app.id == currAppointment.value?.id && + state.data?.appointments[idx] + ) { + state.data.appointments[idx].treatment_course_user = data + } + }) + } + + /**-------- Getters -------------- */ + const appointmentLen = computed(() => state.data?.appointments?.length || 0) + const patientInfo = computed(() => ({ + sex: state.data?.sex || '', + name: state.data?.name || '', + city: state.data?.city || '', + avatar: state.data?.avatar || '', + marital: state.data?.marital || '', + contact: state.data?.contact || '', + birthdate: state.data?.birthdate || '', + profession: state.data?.profession || '', + children_count: state.data?.children_count || '', + birthday: prettifyDate(state.data?.birthdate) || '', + age: + declension(dateToAge(state.data?.birthdate || '0'), [ + 'год', + 'года', + 'лет', + ]) || '', + asking: state.data?.asking || '', + anamnesis: state.data?.anamnesis || '', + })) + + const analyzes = computed( + () => + state.data?.medical_test?.map(x => ({ + ...x, + created_at: prettifyDate(x.created_at), + })) || [], + ) + + const survey = computed( + () => + state.data?.survey_attempts?.map(x => ({ + id: x.id, + title: x.survey?.title, + total: x.survey?.questions_count || 0, + answers: x.answers_count || 0, + percent: x.percent, + })), + ) + + const files = computed(() => state.data?.files) + + const media = computed(() => state.data?.media) + + const matrixHealth = computed(() => state.data?.health_matrix) + + const reminders = computed( + () => + state.data?.event_reminder_customer?.map(x => ({ + id: x.id, + date: String( + formattingDateForClient(x.datetime, 'short'), + ).replace(/\./g, ''), + time: getTimeFromDate(x.datetime), + type: x.type, + name: x.text, + })), + ) + + const appointments = computed( + () => + state.data?.appointments?.map(x => ({ + id: x.id, + name: prettifyDate(x.created_at) || '', + })), + ) + + const currAppointment = computed( + () => state.data?.appointments?.find(x => x.id == idxAppointment.value), + ) + + const infoForMedicalTest = computed( + (): { + sex: string + age: number + } => ({ + sex: state.data?.sex || '', + age: dateToAge(state.data?.birthdate || '0'), + }), + ) + + const treatmentCourse = computed((): PatientTreatmentCourse | null => { + return currAppointment.value?.treatment_course_user || null + }) + + return { + state, + media, + files, + survey, + analyzes, + reminders, + patientInfo, + patientStep, + matrixHealth, + appointments, + idxAppointment, + currAppointment, + analysisResults, + infoForMedicalTest, + treatmentCourse, + setCurrentPatient, + resetCurrentPatient, + onEditPatient, + onEditAppointment, + onCreateAppointment, + setDataToState, + setReminderToState, + setTreatmentDataToState, + onUpdateAvatar, + onUploadFiles, + onDeleteMediaFile, + onDeleteAppointment, + onDeleteTreatmentCourse, + setPatientAnalysis, + updatePatientAnalysisResult, + updateAnalysisDate, + onUpdateHealthMatrix, + } +}) diff --git a/src/entities/patient/model/module/request-patients.ts b/src/entities/patient/model/module/request-patients.ts new file mode 100644 index 0000000..a448dc9 --- /dev/null +++ b/src/entities/patient/model/module/request-patients.ts @@ -0,0 +1,44 @@ +import { defineStore } from 'pinia' +import { reactive } from 'vue' +import { Stores } from '@/shared' +import { type PatientsState, useFetchPatients } from '../../lib' +import { patientsToRequestsPatients } from '../converters' + +export const useRequestPatientsStore = defineStore( + Stores.REQUEST_PATIENTS, + () => { + const state = reactive({ + loading: false, + data: null, + pagination: { + current_page: 1, + per_page: 10, + last_page: 0, + }, + }) + + const setRequestPatients = async ( + search: string = '', + page: Pagination['current_page'] = 1, + ) => { + try { + const { data, pagination } = await useFetchPatients( + search, + page, + state, + patientsToRequestsPatients, + ) + + state.pagination = pagination + state.data = data + } catch (e) { + console.log(e) + } + } + + return { + state, + setRequestPatients, + } + }, +) diff --git a/src/entities/patient/ui/EditableCard/EditableCard.scss b/src/entities/patient/ui/EditableCard/EditableCard.scss new file mode 100644 index 0000000..a2d3080 --- /dev/null +++ b/src/entities/patient/ui/EditableCard/EditableCard.scss @@ -0,0 +1,58 @@ +.editable__card { + &--title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + .card { + gap: toRem(24); + } + + pre { + font-family: $mainFontFamily; + color: var(--dark-main); + @include fontSize( + s-13, + ( + line-height: 1.3, + ) + ); + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; + } + + p { + color: var(--dark-64); + @include fontSize( + s-13, + ( + line-height: 1.3, + ) + ); + } + + textarea { + border: none; + overflow: auto; + outline: none; + @include fontSize( + s-13, + ( + line-height: 1.3, + ) + ); + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + resize: none; + color: var(--dark-main); + } +} diff --git a/src/entities/patient/ui/EditableCard/EditableCard.vue b/src/entities/patient/ui/EditableCard/EditableCard.vue new file mode 100644 index 0000000..c6bcdf0 --- /dev/null +++ b/src/entities/patient/ui/EditableCard/EditableCard.vue @@ -0,0 +1,92 @@ + + diff --git a/src/entities/patient/ui/EditableCard/index.ts b/src/entities/patient/ui/EditableCard/index.ts new file mode 100644 index 0000000..73776ea --- /dev/null +++ b/src/entities/patient/ui/EditableCard/index.ts @@ -0,0 +1,3 @@ +import EditableCard, { type EditableCardProps } from './EditableCard.vue' + +export { EditableCard, type EditableCardProps } diff --git a/src/entities/patient/ui/EditableInput/EditableInput.scss b/src/entities/patient/ui/EditableInput/EditableInput.scss new file mode 100644 index 0000000..24bfd19 --- /dev/null +++ b/src/entities/patient/ui/EditableInput/EditableInput.scss @@ -0,0 +1,20 @@ +.editable-input { + display: flex; + align-items: center; + p { + @include fontSize(s-13); + cursor: pointer; + padding: toRem(8) 0; + &.empty { + text-align: center; + color: var(--dark-32); + } + } + + input { + width: 100%; + padding: toRem(6); + border: 1px solid var(--brand-main); + border-radius: $borderRadius6; + } +} diff --git a/src/entities/patient/ui/EditableInput/EditableInput.vue b/src/entities/patient/ui/EditableInput/EditableInput.vue new file mode 100644 index 0000000..bc5e3e1 --- /dev/null +++ b/src/entities/patient/ui/EditableInput/EditableInput.vue @@ -0,0 +1,43 @@ + + diff --git a/src/entities/patient/ui/EditableInput/index.ts b/src/entities/patient/ui/EditableInput/index.ts new file mode 100644 index 0000000..2d7c28e --- /dev/null +++ b/src/entities/patient/ui/EditableInput/index.ts @@ -0,0 +1,3 @@ +import EditableInput, { type EditableInputProps } from './EditableInput.vue' + +export { EditableInput, type EditableInputProps } diff --git a/src/entities/patient/ui/EmptySurvey/EmptySurvey.scss b/src/entities/patient/ui/EmptySurvey/EmptySurvey.scss new file mode 100644 index 0000000..efe809e --- /dev/null +++ b/src/entities/patient/ui/EmptySurvey/EmptySurvey.scss @@ -0,0 +1,20 @@ +.empty-survey { + aspect-ratio: 1 / 1.1; + max-height: 252px; + background: var(--brand-4-bg); + border-radius: $borderRadius20; + + &__title { + @include fontSize( + h3, + ( + weight: 500, + ) + ); + } + + &__subtitle { + @include fontSize(b-14); + text-align: center; + } +} diff --git a/src/entities/patient/ui/EmptySurvey/EmptySurvey.vue b/src/entities/patient/ui/EmptySurvey/EmptySurvey.vue new file mode 100644 index 0000000..5c85c0d --- /dev/null +++ b/src/entities/patient/ui/EmptySurvey/EmptySurvey.vue @@ -0,0 +1,11 @@ + + diff --git a/src/entities/patient/ui/EmptySurvey/index.ts b/src/entities/patient/ui/EmptySurvey/index.ts new file mode 100644 index 0000000..b9b1f65 --- /dev/null +++ b/src/entities/patient/ui/EmptySurvey/index.ts @@ -0,0 +1,3 @@ +import EmptySurvey, { type EmptySurveyProps } from './EmptySurvey.vue' + +export { EmptySurvey, type EmptySurveyProps } diff --git a/src/entities/patient/ui/InitialAppointment/InitialAppointment.scss b/src/entities/patient/ui/InitialAppointment/InitialAppointment.scss new file mode 100644 index 0000000..a1f1169 --- /dev/null +++ b/src/entities/patient/ui/InitialAppointment/InitialAppointment.scss @@ -0,0 +1,28 @@ +.initial-appointment { + aspect-ratio: 1 / 1.1; + max-height: 390px; + background: var(--brand-4-bg); + border-radius: $borderRadius20; + + &__title { + @include fontSize( + h2, + ( + weight: 500, + ) + ); + } + + &__subtitle { + max-width: 330px; + @include fontSize(b-14); + text-align: center; + } + + &__actions { + margin-top: toRem(24); + display: flex; + flex-wrap: wrap; + gap: 12px; + } +} diff --git a/src/entities/patient/ui/InitialAppointment/InitialAppointment.vue b/src/entities/patient/ui/InitialAppointment/InitialAppointment.vue new file mode 100644 index 0000000..642b3ea --- /dev/null +++ b/src/entities/patient/ui/InitialAppointment/InitialAppointment.vue @@ -0,0 +1,27 @@ + + diff --git a/src/entities/patient/ui/InitialAppointment/index.ts b/src/entities/patient/ui/InitialAppointment/index.ts new file mode 100644 index 0000000..6cc302d --- /dev/null +++ b/src/entities/patient/ui/InitialAppointment/index.ts @@ -0,0 +1,5 @@ +import InitialAppointment, { + type InitialAppointmentProps, +} from './InitialAppointment.vue' + +export { InitialAppointment, type InitialAppointmentProps } diff --git a/src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.scss b/src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.scss new file mode 100644 index 0000000..78b45a8 --- /dev/null +++ b/src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.scss @@ -0,0 +1,27 @@ +.initial-health-matrix { + width: 100%; + aspect-ratio: 1 / 1.1; + max-height: 413px; + background: var(--brand-4-bg); + border-radius: $borderRadius20; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + margin-top: toRem(45); + + &__title { + max-width: toRem(340); + text-align: center; + margin-bottom: toRem(24); + + @include fontSize( + h3, + ( + weight: 700, + ) + ); + } +} diff --git a/src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.vue b/src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.vue new file mode 100644 index 0000000..043b600 --- /dev/null +++ b/src/entities/patient/ui/InitialHealthMatrix/InitialHealthMatrix.vue @@ -0,0 +1,23 @@ + + diff --git a/src/entities/patient/ui/InitialHealthMatrix/index.ts b/src/entities/patient/ui/InitialHealthMatrix/index.ts new file mode 100644 index 0000000..a66c07b --- /dev/null +++ b/src/entities/patient/ui/InitialHealthMatrix/index.ts @@ -0,0 +1,5 @@ +import InitialHealthMatrix, { + type InitialHealthMatrixProps, +} from './InitialHealthMatrix.vue' + +export { InitialHealthMatrix, type InitialHealthMatrixProps } diff --git a/src/entities/patient/ui/InitialPurpose/InitialPurpose.scss b/src/entities/patient/ui/InitialPurpose/InitialPurpose.scss new file mode 100644 index 0000000..4195ad6 --- /dev/null +++ b/src/entities/patient/ui/InitialPurpose/InitialPurpose.scss @@ -0,0 +1,24 @@ +.initial-purpose { + width: 100%; + aspect-ratio: 1 / 1.1; + max-height: 413px; + background: var(--brand-4-bg); + border-radius: $borderRadius20; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin-top: toRem(45); + + &__title { + max-width: toRem(340); + text-align: center; + margin-bottom: toRem(24); + @include fontSize( + h3, + ( + weight: 700, + ) + ); + } +} diff --git a/src/entities/patient/ui/InitialPurpose/InitialPurpose.vue b/src/entities/patient/ui/InitialPurpose/InitialPurpose.vue new file mode 100644 index 0000000..5f7a04c --- /dev/null +++ b/src/entities/patient/ui/InitialPurpose/InitialPurpose.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/entities/patient/ui/InitialPurpose/index.ts b/src/entities/patient/ui/InitialPurpose/index.ts new file mode 100644 index 0000000..d8f1e89 --- /dev/null +++ b/src/entities/patient/ui/InitialPurpose/index.ts @@ -0,0 +1,3 @@ +import InitialPurpose, { type InitialPurposeProps } from './InitialPurpose.vue' + +export { InitialPurpose, type InitialPurposeProps } diff --git a/src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.scss b/src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.scss new file mode 100644 index 0000000..eaeb7b9 --- /dev/null +++ b/src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.scss @@ -0,0 +1,21 @@ +.patient-basic-info { + .row-name { + text-align: left; + font-size: toRem(16); + margin-bottom: 2px; + } + + &__row[class$='unavailable'] { + color: var(--dark-32); + } + + table { + td, + th { + font-size: toRem(13); + line-height: toRem(20); + padding: toRem(4) 0; + vertical-align: middle; + } + } +} diff --git a/src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.vue b/src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.vue new file mode 100644 index 0000000..ccb947c --- /dev/null +++ b/src/entities/patient/ui/PatientBasicInfo/PatientBasicInfo.vue @@ -0,0 +1,133 @@ + + diff --git a/src/entities/patient/ui/PatientBasicInfo/index.ts b/src/entities/patient/ui/PatientBasicInfo/index.ts new file mode 100644 index 0000000..ed4626f --- /dev/null +++ b/src/entities/patient/ui/PatientBasicInfo/index.ts @@ -0,0 +1,5 @@ +import PatientBasicInfo, { + type PatientBasicInfoProps, +} from './PatientBasicInfo.vue' + +export { PatientBasicInfo, type PatientBasicInfoProps } diff --git a/src/entities/patient/ui/PatientFilesCard/PatientFilesCard.scss b/src/entities/patient/ui/PatientFilesCard/PatientFilesCard.scss new file mode 100644 index 0000000..89815e2 --- /dev/null +++ b/src/entities/patient/ui/PatientFilesCard/PatientFilesCard.scss @@ -0,0 +1,64 @@ +.patient-files { + &__card { + &--title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &--button { + height: 20px; + font-size: toRem(13); + padding: 0; + &:hover { + background-color: white; + } + } + + .card { + gap: toRem(20); + } + + p { + font-size: toRem(13); + color: var(--dark-64); + } + } + + &__list { + padding: 0 !important; + display: flex; + flex-direction: column; + gap: toRem(10); + + &--item { + list-style: none; + display: flex; + align-items: center; + justify-content: space-between; + + .file { + display: flex; + align-items: flex-start; + @include fontSize(s-13); + color: var(--dark-main) !important; + + i { + padding: 0 toRem(8) 0 0; + } + + &-name { + width: 240px; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + border: none !important; + } + } + } + } +} diff --git a/src/entities/patient/ui/PatientFilesCard/PatientFilesCard.vue b/src/entities/patient/ui/PatientFilesCard/PatientFilesCard.vue new file mode 100644 index 0000000..e46840d --- /dev/null +++ b/src/entities/patient/ui/PatientFilesCard/PatientFilesCard.vue @@ -0,0 +1,54 @@ + + diff --git a/src/entities/patient/ui/PatientFilesCard/index.ts b/src/entities/patient/ui/PatientFilesCard/index.ts new file mode 100644 index 0000000..4788531 --- /dev/null +++ b/src/entities/patient/ui/PatientFilesCard/index.ts @@ -0,0 +1,5 @@ +import PatientFilesCard, { + type PatientFilesCardProps, +} from './PatientFilesCard.vue' + +export { PatientFilesCard, type PatientFilesCardProps } diff --git a/src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.scss b/src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.scss new file mode 100644 index 0000000..daa016a --- /dev/null +++ b/src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.scss @@ -0,0 +1,51 @@ +.health-matrix { + &__card { + &--title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + .card { + gap: toRem(20); + } + } + + &__graph { + display: flex; + width: 100%; + overflow: hidden; + + &--item { + display: flex; + flex-direction: column; + + &:first-child .overlay { + border-radius: toRem(24) 0 0 toRem(24); + } + + &:last-child .overlay { + border-radius: 0 toRem(24) toRem(24) 0; + } + } + + .overlay { + height: toRem(24); + } + + .value { + display: block; + padding: toRem(6) 0 0; + text-align: center; + @include fontSize( + s-13, + ( + line-height: toRem(20), + ) + ); + } + } +} diff --git a/src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.vue b/src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.vue new file mode 100644 index 0000000..dbe9efd --- /dev/null +++ b/src/entities/patient/ui/PatientHealthMatrix/PatientHealthMatrix.vue @@ -0,0 +1,54 @@ + + diff --git a/src/entities/patient/ui/PatientHealthMatrix/index.ts b/src/entities/patient/ui/PatientHealthMatrix/index.ts new file mode 100644 index 0000000..7210eec --- /dev/null +++ b/src/entities/patient/ui/PatientHealthMatrix/index.ts @@ -0,0 +1,5 @@ +import PatientHealthMatrix, { + type PatientHealthMatrixProps, +} from './PatientHealthMatrix.vue' + +export { PatientHealthMatrix, type PatientHealthMatrixProps } diff --git a/src/entities/patient/ui/PatientNavigation/PatientNavigation.scss b/src/entities/patient/ui/PatientNavigation/PatientNavigation.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/entities/patient/ui/PatientNavigation/PatientNavigation.vue b/src/entities/patient/ui/PatientNavigation/PatientNavigation.vue new file mode 100644 index 0000000..dcb2eb1 --- /dev/null +++ b/src/entities/patient/ui/PatientNavigation/PatientNavigation.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/entities/patient/ui/PatientNavigation/index.ts b/src/entities/patient/ui/PatientNavigation/index.ts new file mode 100644 index 0000000..0eb8a05 --- /dev/null +++ b/src/entities/patient/ui/PatientNavigation/index.ts @@ -0,0 +1,5 @@ +import PatientNavigation, { + type PatientNavigationProps, +} from './PatientNavigation.vue' + +export { PatientNavigation, type PatientNavigationProps } diff --git a/src/entities/patient/ui/PatientReminders/PatientReminders.scss b/src/entities/patient/ui/PatientReminders/PatientReminders.scss new file mode 100644 index 0000000..e22bb8a --- /dev/null +++ b/src/entities/patient/ui/PatientReminders/PatientReminders.scss @@ -0,0 +1,69 @@ +.patient-reminders { + &__card { + &--title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &--button { + height: 20px; + font-size: toRem(13); + padding: 0; + &:hover { + background-color: white; + } + } + + .card { + gap: toRem(20); + } + + p { + font-size: toRem(13); + color: var(--dark-64); + } + } + + &__list { + td, + th { + padding: toRem(8) 0; + @include fontSize( + s-13, + ( + line-height: 1.5, + ) + ); + } + + th { + padding-right: toRem(4); + } + + span { + min-width: toRem(50); + height: 20px; + display: flex; + align-items: center; + justify-content: center; + color: var(--dark-64); + } + + mark { + min-width: toRem(50); + height: 20px; + display: flex; + align-items: center; + justify-content: center; + padding: 0 toRem(4); + color: var(--dark-main); + background: var(--blue-20); + border-radius: 3px; + @include fontSize(s-13); + } + } +} diff --git a/src/entities/patient/ui/PatientReminders/PatientReminders.vue b/src/entities/patient/ui/PatientReminders/PatientReminders.vue new file mode 100644 index 0000000..5b1365c --- /dev/null +++ b/src/entities/patient/ui/PatientReminders/PatientReminders.vue @@ -0,0 +1,83 @@ + + diff --git a/src/entities/patient/ui/PatientReminders/index.ts b/src/entities/patient/ui/PatientReminders/index.ts new file mode 100644 index 0000000..6a55052 --- /dev/null +++ b/src/entities/patient/ui/PatientReminders/index.ts @@ -0,0 +1,5 @@ +import PatientReminders, { + type PatientRemindersProps, +} from './PatientReminders.vue' + +export { PatientReminders, type PatientRemindersProps } diff --git a/src/entities/patient/ui/PatientRequest/PatientRequest.scss b/src/entities/patient/ui/PatientRequest/PatientRequest.scss new file mode 100644 index 0000000..08dd3a7 --- /dev/null +++ b/src/entities/patient/ui/PatientRequest/PatientRequest.scss @@ -0,0 +1,10 @@ +.patient-request { + display: flex; + gap: toRem(6); + + &__tooltip-content { + @include column(toRem(12)); + + align-items: flex-start; + } +} diff --git a/src/entities/patient/ui/PatientRequest/PatientRequest.vue b/src/entities/patient/ui/PatientRequest/PatientRequest.vue new file mode 100644 index 0000000..a82c76f --- /dev/null +++ b/src/entities/patient/ui/PatientRequest/PatientRequest.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/entities/patient/ui/PatientRequest/index.ts b/src/entities/patient/ui/PatientRequest/index.ts new file mode 100644 index 0000000..7faca9b --- /dev/null +++ b/src/entities/patient/ui/PatientRequest/index.ts @@ -0,0 +1,3 @@ +import PatientRequest, { type PatientRequestProps } from './PatientRequest.vue' + +export { PatientRequest, type PatientRequestProps } diff --git a/src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.scss b/src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.scss new file mode 100644 index 0000000..7b4f070 --- /dev/null +++ b/src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.scss @@ -0,0 +1,39 @@ +.patient-survey { + &__card { + &--title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &--button { + height: 20px; + font-size: toRem(13); + padding: 0; + &:hover { + background-color: white; + } + } + + .card { + gap: toRem(20); + } + + table { + td, + th { + font-size: toRem(13); + line-height: toRem(20); + padding: toRem(4) 0; + } + } + + p { + font-size: toRem(13); + color: var(--dark-64); + } + } +} diff --git a/src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.vue b/src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.vue new file mode 100644 index 0000000..8f85529 --- /dev/null +++ b/src/entities/patient/ui/PatientSurveyCard/PatientSurveyCard.vue @@ -0,0 +1,93 @@ + + diff --git a/src/entities/patient/ui/PatientSurveyCard/index.ts b/src/entities/patient/ui/PatientSurveyCard/index.ts new file mode 100644 index 0000000..e05154c --- /dev/null +++ b/src/entities/patient/ui/PatientSurveyCard/index.ts @@ -0,0 +1,5 @@ +import PatientSurveyCard, { + type PatientSurveyCardProps, +} from './PatientSurveyCard.vue' + +export { PatientSurveyCard, type PatientSurveyCardProps } diff --git a/src/entities/patient/ui/ProgressBar/ProgressBar.scss b/src/entities/patient/ui/ProgressBar/ProgressBar.scss new file mode 100644 index 0000000..9f33672 --- /dev/null +++ b/src/entities/patient/ui/ProgressBar/ProgressBar.scss @@ -0,0 +1,27 @@ +.progress { + display: flex; + + &.row { + flex-direction: row; + align-items: center; + gap: toRem(16); + } + + &.column { + flex-direction: column; + align-items: flex-start; + gap: toRem(8); + } + &__bar { + width: 100%; + overflow: hidden; + position: relative; + background: var(--grey-main); + } + + .value { + height: inherit; + border-radius: inherit; + background: var(--green-main); + } +} diff --git a/src/entities/patient/ui/ProgressBar/ProgressBar.vue b/src/entities/patient/ui/ProgressBar/ProgressBar.vue new file mode 100644 index 0000000..9c1ca0f --- /dev/null +++ b/src/entities/patient/ui/ProgressBar/ProgressBar.vue @@ -0,0 +1,50 @@ + + diff --git a/src/entities/patient/ui/ProgressBar/index.ts b/src/entities/patient/ui/ProgressBar/index.ts new file mode 100644 index 0000000..f120549 --- /dev/null +++ b/src/entities/patient/ui/ProgressBar/index.ts @@ -0,0 +1,3 @@ +import ProgressBar, { type ProgressBarProps } from './ProgressBar.vue' + +export { ProgressBar, type ProgressBarProps } diff --git a/src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.scss b/src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.scss new file mode 100644 index 0000000..124f075 --- /dev/null +++ b/src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.scss @@ -0,0 +1,27 @@ +.questionnaire-card { + &__title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &__subtitle { + display: block; + margin-top: toRem(8); + @include fontSize(s-13); + color: var(--dark-64); + } + + &__actions { + display: flex; + flex-wrap: wrap; + gap: toRem(20); + } + + .card { + gap: toRem(20); + } +} diff --git a/src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.vue b/src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.vue new file mode 100644 index 0000000..a715d6a --- /dev/null +++ b/src/entities/patient/ui/QuestionnaireCard/QuestionnaireCard.vue @@ -0,0 +1,42 @@ + + diff --git a/src/entities/patient/ui/QuestionnaireCard/index.ts b/src/entities/patient/ui/QuestionnaireCard/index.ts new file mode 100644 index 0000000..72d4a5b --- /dev/null +++ b/src/entities/patient/ui/QuestionnaireCard/index.ts @@ -0,0 +1,5 @@ +import QuestionnaireCard, { + type QuestionnaireCardProps, +} from './QuestionnaireCard.vue' + +export { QuestionnaireCard, type QuestionnaireCardProps } diff --git a/src/entities/patient/ui/index.ts b/src/entities/patient/ui/index.ts new file mode 100644 index 0000000..f07c96f --- /dev/null +++ b/src/entities/patient/ui/index.ts @@ -0,0 +1,15 @@ +export * from './PatientRequest' +export * from './PatientNavigation' +export * from './ProgressBar' +export * from './PatientFilesCard' +export * from './PatientHealthMatrix' +export * from './PatientBasicInfo' +export * from './PatientSurveyCard' +export * from './PatientReminders' +export * from './EditableCard' +export * from './InitialAppointment' +export * from './QuestionnaireCard' +export * from './EmptySurvey' +export * from './InitialHealthMatrix' +export * from './InitialPurpose' +export * from './EditableInput' diff --git a/src/entities/user/api/index.ts b/src/entities/user/api/index.ts new file mode 100644 index 0000000..2e90ef6 --- /dev/null +++ b/src/entities/user/api/index.ts @@ -0,0 +1,16 @@ +import type { AxiosResponse } from 'axios' +import { baseApi } from '@/shared' +import type { User } from '../lib' + +export const fetchUser = (): Promise => + baseApi.get('user') + +export namespace UserAPI { + export namespace GET { + export namespace FetchUser { + export type Response = AxiosResponse<{ + data: User + }> + } + } +} diff --git a/src/entities/user/index.ts b/src/entities/user/index.ts new file mode 100644 index 0000000..9ce2daa --- /dev/null +++ b/src/entities/user/index.ts @@ -0,0 +1,4 @@ +export * from './model' +export * from './lib' +export * from './api' +export * from './ui' diff --git a/src/entities/user/lib/index.ts b/src/entities/user/lib/index.ts new file mode 100644 index 0000000..c9f6f04 --- /dev/null +++ b/src/entities/user/lib/index.ts @@ -0,0 +1 @@ +export * from './types' diff --git a/src/entities/user/lib/types.ts b/src/entities/user/lib/types.ts new file mode 100644 index 0000000..d49c9df --- /dev/null +++ b/src/entities/user/lib/types.ts @@ -0,0 +1,24 @@ +export type User = { + id: number + name: string + email: string + birthdate: Maybe + city: Maybe + marital: Maybe + children_count: Maybe + profession: Maybe + contact: Maybe + anamnesis: Maybe + asking: Maybe + roles: UserRole[] +} + +export type UserRole = { + id: number + name: UserRoles + guard_name: number +} + +export enum UserRoles { + ADMIN = 'admin', +} diff --git a/src/entities/user/model/index.ts b/src/entities/user/model/index.ts new file mode 100644 index 0000000..5401340 --- /dev/null +++ b/src/entities/user/model/index.ts @@ -0,0 +1 @@ +export * from './module' diff --git a/src/entities/user/model/module/index.ts b/src/entities/user/model/module/index.ts new file mode 100644 index 0000000..c0f3d4b --- /dev/null +++ b/src/entities/user/model/module/index.ts @@ -0,0 +1,19 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { Stores } from '@/shared' +import { fetchUser } from '../../api' +import type { User } from '../../lib' + +export const useUserStore = defineStore(Stores.USER, () => { + const currentUser = ref>(null) + + const setCurrentUser = async () => { + const { data } = await fetchUser() + currentUser.value = data.data + } + + return { + currentUser, + setCurrentUser, + } +}) diff --git a/src/entities/user/ui/UserAvatar/UserAvatar.scss b/src/entities/user/ui/UserAvatar/UserAvatar.scss new file mode 100644 index 0000000..179a7ef --- /dev/null +++ b/src/entities/user/ui/UserAvatar/UserAvatar.scss @@ -0,0 +1,17 @@ +.user-avatar { + &__img { + width: 40px; + height: 40px; + border-radius: 50%; + cursor: pointer; + + &.noavatar { + background: var(--purple-8-bg); + cursor: pointer; + } + } + + input[type='file'] { + display: none; + } +} diff --git a/src/entities/user/ui/UserAvatar/UserAvatar.vue b/src/entities/user/ui/UserAvatar/UserAvatar.vue new file mode 100644 index 0000000..8a3726d --- /dev/null +++ b/src/entities/user/ui/UserAvatar/UserAvatar.vue @@ -0,0 +1,59 @@ + + diff --git a/src/entities/user/ui/UserAvatar/index.ts b/src/entities/user/ui/UserAvatar/index.ts new file mode 100644 index 0000000..cc724ab --- /dev/null +++ b/src/entities/user/ui/UserAvatar/index.ts @@ -0,0 +1,3 @@ +import UserAvatar, { type UserAvatarProps } from './UserAvatar.vue' + +export { UserAvatar, type UserAvatarProps } diff --git a/src/entities/user/ui/index.ts b/src/entities/user/ui/index.ts new file mode 100644 index 0000000..3cb17f5 --- /dev/null +++ b/src/entities/user/ui/index.ts @@ -0,0 +1 @@ +export * from './UserAvatar' diff --git a/src/features/auth/api/index.ts b/src/features/auth/api/index.ts new file mode 100644 index 0000000..1808718 --- /dev/null +++ b/src/features/auth/api/index.ts @@ -0,0 +1,48 @@ +import type { AxiosResponse } from 'axios' +import { fetchUser } from '@/entities' +import { type AuthData, baseApi } from '@/shared' +import type { RegistrationData } from '../model' + +export const tokenValidate = async () => { + const { data } = await fetchUser() + + // @ts-ignore + return data !== 1 +} + +export const login = ( + data: AuthAPI.POST.Login.Params, +): Promise => baseApi.post('login', data) + +export const registration = ( + data: AuthAPI.POST.Registration.Params, +): Promise => baseApi.post('register', data) + +export const logout = (): Promise => + baseApi.post('logout') + +export namespace AuthAPI { + export namespace POST { + export namespace Login { + export type Params = AuthData + export type Response = AxiosResponse<{ + data: { + access_token: string + } + }> + } + + export namespace Registration { + export type Params = RegistrationData + export type Response = AxiosResponse<{ + data: { + access_token: string + } + }> + } + + export namespace Logout { + export type Response = AxiosResponse + } + } +} diff --git a/src/features/auth/index.ts b/src/features/auth/index.ts new file mode 100644 index 0000000..3b81eef --- /dev/null +++ b/src/features/auth/index.ts @@ -0,0 +1,3 @@ +export * from './ui' +export * from './model' +export * from './api' diff --git a/src/features/auth/model/index.ts b/src/features/auth/model/index.ts new file mode 100644 index 0000000..5401340 --- /dev/null +++ b/src/features/auth/model/index.ts @@ -0,0 +1 @@ +export * from './module' diff --git a/src/features/auth/model/module/index.ts b/src/features/auth/model/module/index.ts new file mode 100644 index 0000000..7705fa0 --- /dev/null +++ b/src/features/auth/model/module/index.ts @@ -0,0 +1,85 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { useRouter } from 'vue-router' +import { toast } from 'vue3-toastify' +import { type AuthData, Routes, Stores, useJWT } from '@/shared' +import { login, logout, registration } from '../../api' + +enum MedicType { + DOCTOR = 'doctor', + NUTRITIONIST = 'nutritionist', +} + +export type EducationData = { + permission: boolean + passport: Maybe + diploma: Maybe + medicType: Maybe +} + +export type RegistrationData = AuthData & EducationData + +export const useAuthStore = defineStore(Stores.AUTH, () => { + const router = useRouter() + const loading = ref(false) + + const { removeJWT, setJWT } = useJWT() + + const onLogin = async (data: AuthData) => { + try { + loading.value = true + const res = await login(data) + + setJWT(res.data.data.access_token) + + await router.push({ name: Routes.INDEX }) + } catch (e: any) { + console.log(e.response.data.message) + + if (e.response.data.message === 'Invalid login credentials') { + toast.error('Неверные логин или пароль') + } + } finally { + loading.value = false + } + } + + const onRegistration = async (data: NonNullable) => { + try { + loading.value = true + const res = await registration(data) + + setJWT(res.data.data.access_token) + + await router.push({ name: Routes.INDEX }) + } catch (e: any) { + console.log(e.response.data.message) + + toast.error('Такой пользователь уже зарегестрирован') + } finally { + loading.value = false + } + } + + const onLogout = async () => { + try { + loading.value = true + await logout() + + removeJWT() + + await router.push({ name: Routes.LOGIN }) + } catch (e: any) { + console.log(e.response.data.message) + } finally { + loading.value = false + } + } + + return { + onLogin, + onRegistration, + onLogout, + loading, + } +}) diff --git a/src/features/auth/ui/LogIn/LogIn.scss b/src/features/auth/ui/LogIn/LogIn.scss new file mode 100644 index 0000000..10bb1dc --- /dev/null +++ b/src/features/auth/ui/LogIn/LogIn.scss @@ -0,0 +1,3 @@ +.log-in { + @include column(toRem(12)); +} diff --git a/src/features/auth/ui/LogIn/LogIn.vue b/src/features/auth/ui/LogIn/LogIn.vue new file mode 100644 index 0000000..6d68fc5 --- /dev/null +++ b/src/features/auth/ui/LogIn/LogIn.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/features/auth/ui/LogIn/index.ts b/src/features/auth/ui/LogIn/index.ts new file mode 100644 index 0000000..1733fd5 --- /dev/null +++ b/src/features/auth/ui/LogIn/index.ts @@ -0,0 +1,3 @@ +import LogIn, { type LogInProps } from './LogIn.vue' + +export { LogIn, type LogInProps } diff --git a/src/features/auth/ui/LogOut/LogOut.scss b/src/features/auth/ui/LogOut/LogOut.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/auth/ui/LogOut/LogOut.vue b/src/features/auth/ui/LogOut/LogOut.vue new file mode 100644 index 0000000..01ee4f8 --- /dev/null +++ b/src/features/auth/ui/LogOut/LogOut.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/features/auth/ui/LogOut/index.ts b/src/features/auth/ui/LogOut/index.ts new file mode 100644 index 0000000..15066e0 --- /dev/null +++ b/src/features/auth/ui/LogOut/index.ts @@ -0,0 +1,3 @@ +import LogOut, { type LogOutProps } from './LogOut.vue' + +export { LogOut, type LogOutProps } diff --git a/src/features/auth/ui/Registration/Registration.scss b/src/features/auth/ui/Registration/Registration.scss new file mode 100644 index 0000000..ab3d6f4 --- /dev/null +++ b/src/features/auth/ui/Registration/Registration.scss @@ -0,0 +1,6 @@ +@import 'steps/DataStep/DataStep'; +@import 'steps/EmailStep/EmailStep'; + +.registration { + @include column(toRem(12)); +} diff --git a/src/features/auth/ui/Registration/Registration.vue b/src/features/auth/ui/Registration/Registration.vue new file mode 100644 index 0000000..58441ec --- /dev/null +++ b/src/features/auth/ui/Registration/Registration.vue @@ -0,0 +1,78 @@ + + + diff --git a/src/features/auth/ui/Registration/index.ts b/src/features/auth/ui/Registration/index.ts new file mode 100644 index 0000000..b0ba18a --- /dev/null +++ b/src/features/auth/ui/Registration/index.ts @@ -0,0 +1,3 @@ +import Registration, { type RegistrationProps } from './Registration.vue' + +export { Registration, type RegistrationProps } diff --git a/src/features/auth/ui/Registration/steps/DataStep/DataStep.scss b/src/features/auth/ui/Registration/steps/DataStep/DataStep.scss new file mode 100644 index 0000000..20f967f --- /dev/null +++ b/src/features/auth/ui/Registration/steps/DataStep/DataStep.scss @@ -0,0 +1,25 @@ +.data-step { + &__content, + &__files { + @include column(toRem(22)); + } + + &__medic-type { + border: 1px solid #000; + height: toRem(57); + } + + &__files { + border: 1px solid #000; + height: toRem(130); + } + + &__permission { + border: 1px solid #000; + height: toRem(27); + } + + &__button { + align-self: center; + } +} diff --git a/src/features/auth/ui/Registration/steps/DataStep/DataStep.vue b/src/features/auth/ui/Registration/steps/DataStep/DataStep.vue new file mode 100644 index 0000000..ba61e84 --- /dev/null +++ b/src/features/auth/ui/Registration/steps/DataStep/DataStep.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/features/auth/ui/Registration/steps/DataStep/index.ts b/src/features/auth/ui/Registration/steps/DataStep/index.ts new file mode 100644 index 0000000..ef1a9de --- /dev/null +++ b/src/features/auth/ui/Registration/steps/DataStep/index.ts @@ -0,0 +1,3 @@ +import DataStep, { type DataStepProps } from './DataStep.vue' + +export { DataStep, type DataStepProps } diff --git a/src/features/auth/ui/Registration/steps/EmailStep/EmailStep.scss b/src/features/auth/ui/Registration/steps/EmailStep/EmailStep.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/auth/ui/Registration/steps/EmailStep/EmailStep.vue b/src/features/auth/ui/Registration/steps/EmailStep/EmailStep.vue new file mode 100644 index 0000000..0838cbb --- /dev/null +++ b/src/features/auth/ui/Registration/steps/EmailStep/EmailStep.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/features/auth/ui/Registration/steps/EmailStep/index.ts b/src/features/auth/ui/Registration/steps/EmailStep/index.ts new file mode 100644 index 0000000..a034c9d --- /dev/null +++ b/src/features/auth/ui/Registration/steps/EmailStep/index.ts @@ -0,0 +1,3 @@ +import EmailStep, { type EmailStepProps } from './EmailStep.vue' + +export { EmailStep, type EmailStepProps } diff --git a/src/features/auth/ui/Registration/steps/index.ts b/src/features/auth/ui/Registration/steps/index.ts new file mode 100644 index 0000000..6ba7443 --- /dev/null +++ b/src/features/auth/ui/Registration/steps/index.ts @@ -0,0 +1,2 @@ +export * from './EmailStep' +export * from './DataStep' diff --git a/src/features/auth/ui/index.ts b/src/features/auth/ui/index.ts new file mode 100644 index 0000000..87d65de --- /dev/null +++ b/src/features/auth/ui/index.ts @@ -0,0 +1,3 @@ +export * from './LogOut' +export * from './LogIn' +export * from './Registration' diff --git a/src/features/features.scss b/src/features/features.scss new file mode 100644 index 0000000..0c6cc54 --- /dev/null +++ b/src/features/features.scss @@ -0,0 +1,24 @@ +@import 'auth/ui/LogIn/LogIn'; +@import 'auth/ui/LogOut/LogOut'; +@import 'auth/ui/Registration/Registration'; + +@import 'patient/ui/EditPatientAnamnesis/EditPatientAnamnesis'; +@import 'patient/ui/EditPatientAsking/EditPatientAsking'; +@import 'patient/ui/EditAppointmentItems/EditAppointmentItems'; +@import 'patient/ui/AddMediaFiles/AddMediaFiles'; +@import 'patient/ui/DeleteMediaFile/DeleteMediaFile'; +@import 'patient/ui/EditableAnalysisResult/EditableAnalysisResult'; +@import 'patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum'; +@import 'patient/ui/AddNewAnalysis/AddNewAnalysis'; +@import 'patient/ui/EditAnalysisDate/EditAnalysisDate'; + +/*------------ Medical ---------------*/ +@import 'medical/ui/MedicalCalculator/MedicalCalculator'; +@import 'patient/ui/EditHealthMatrixItems/EditHealthMatrixItems'; +@import 'patient/ui/HealthMatrixCircle/HealthMatrixCircle'; +@import 'patient/ui/AddPurpose/AddPurpose'; +@import 'patient/ui/SelectPurposeItem/SelectPurposeItem'; +@import 'patient/ui/EditTreatmentTitle/EditTreatmentTitle'; +@import 'patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse'; +@import 'patient/ui/AddPreparations/AddPreparations'; +@import 'patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles'; diff --git a/src/features/index.ts b/src/features/index.ts new file mode 100644 index 0000000..62607aa --- /dev/null +++ b/src/features/index.ts @@ -0,0 +1,3 @@ +export * from './auth' +export * from './patient' +export * from './medical' diff --git a/src/features/medical/api/index.ts b/src/features/medical/api/index.ts new file mode 100644 index 0000000..ea3d8ad --- /dev/null +++ b/src/features/medical/api/index.ts @@ -0,0 +1,33 @@ +import type { AxiosPromise } from 'axios' +import { baseApi } from '@/shared' +import type { CalculationData, CalculatorUnits } from '../lib' + +/**------------------ Medical Calculator -------------------------- */ +export const fetchCalcUnits = + (): MedicalFeaturesAPI.GET.FetchCalculatorUnits.Response => + baseApi.get('unit') + +export const calculation = ( + params: MedicalFeaturesAPI.GET.Calculation.Params, +): MedicalFeaturesAPI.GET.Calculation.Response => + baseApi.get('calculate', { + params, + }) + +export namespace MedicalFeaturesAPI { + export namespace GET { + export namespace Calculation { + export type Params = CalculationData + + export type Response = AxiosPromise<{ + data: CalculatorUnits + }> + } + + export namespace FetchCalculatorUnits { + export type Response = AxiosPromise<{ + data: any + }> + } + } +} diff --git a/src/features/medical/index.ts b/src/features/medical/index.ts new file mode 100644 index 0000000..ed7fac8 --- /dev/null +++ b/src/features/medical/index.ts @@ -0,0 +1,4 @@ +export * from './ui' +export * from './api' +export * from './model' +export * from './lib' diff --git a/src/features/medical/lib/index.ts b/src/features/medical/lib/index.ts new file mode 100644 index 0000000..c9f6f04 --- /dev/null +++ b/src/features/medical/lib/index.ts @@ -0,0 +1 @@ +export * from './types' diff --git a/src/features/medical/lib/types.ts b/src/features/medical/lib/types.ts new file mode 100644 index 0000000..ffd43d2 --- /dev/null +++ b/src/features/medical/lib/types.ts @@ -0,0 +1,12 @@ +export type CalculationData = { + unit_from: string + unit_to: string + value: string +} + +export type CalculatorUnits = { + [key: string]: { + value: number + title: string + } +} diff --git a/src/features/medical/model/calculator.ts b/src/features/medical/model/calculator.ts new file mode 100644 index 0000000..0f64f2b --- /dev/null +++ b/src/features/medical/model/calculator.ts @@ -0,0 +1,59 @@ +import { defineStore } from 'pinia' +import { computed, ref } from 'vue' +import { toast } from 'vue3-toastify' +import { calculation, fetchCalcUnits } from '@/features' +import type { CalculationData, CalculatorUnits } from '../lib' + +export const useCalculatorStore = defineStore('calculator', () => { + /** + * ----------- State ------------- + */ + const units = ref({}) + const loading = ref(false) + + /** + * ----------- Actions ------------- + */ + const setUnits = async () => { + loading.value = true + try { + const { data } = await fetchCalcUnits() + if (data.data && Object.keys(data.data).length) { + units.value = data.data + } + } catch (e: any) { + console.log('e -> ', e) + } + loading.value = false + } + + const calcValue = async (params: CalculationData) => { + loading.value = true + try { + const { data } = await calculation(params) + return data + } catch (e: any) { + toast.error(e?.error || '') + console.log('e -> ', e) + } + loading.value = false + } + + /** + * ----------- Getters ------------- + */ + + const formUnits = computed<{ key: string; title: string }[]>(() => { + return Object.keys(units.value || {}).map(x => ({ + title: units.value?.[x]?.title || '', + key: x, + })) + }) + + return { + formUnits, + loading, + setUnits, + calcValue, + } +}) diff --git a/src/features/medical/model/index.ts b/src/features/medical/model/index.ts new file mode 100644 index 0000000..bd06b67 --- /dev/null +++ b/src/features/medical/model/index.ts @@ -0,0 +1 @@ +export * from './calculator' diff --git a/src/features/medical/ui/MedicalCalculator/MedicalCalculator.scss b/src/features/medical/ui/MedicalCalculator/MedicalCalculator.scss new file mode 100644 index 0000000..76aa2bb --- /dev/null +++ b/src/features/medical/ui/MedicalCalculator/MedicalCalculator.scss @@ -0,0 +1,130 @@ +.medical-calculator { + $b: &; + + @keyframes btnAnimation { + from { + transform: rotate(0); + } + to { + transform: rotate(180); + } + } + + width: 100%; + min-width: 200px; + position: relative; + + &.show #{$b}__body { + opacity: 1; + visibility: visible; + } + + &__control { + cursor: pointer; + padding: toRem(8) toRem(16); + color: var(--brand-main); + display: flex; + align-items: center; + gap: toRem(6); + background-color: var(--brand-8); + border-radius: $borderRadius10; + } + + &__body { + border-radius: $borderRadius20; + position: absolute; + padding: toRem(32); + width: 500px; + top: 110%; + right: 0; + opacity: 0; + visibility: hidden; + + border: 1px solid var(--grey-border); + background: var(--white); + z-index: 99; + box-shadow: + 0px 0px 32px 0px rgba(0, 0, 0, 0.08), + 0px 0px 0px 0px rgba(0, 0, 0, 0.04); + transition: all 0.2s linear; + + &--title { + display: flex; + align-items: center; + gap: toRem(12); + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + + &-icon { + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + background-color: var(--brand-8); + border-radius: $borderRadius6; + } + } + + &--subtitle { + margin: toRem(16) 0 toRem(11); + @include fontSize( + s-12, + ( + line-height: toRem(16.5), + ) + ); + } + } + + &__content { + .row { + gap: toRem(24); + } + + .dropdown__menu { + z-index: 2 !important; + } + + .input { + background-color: var(--grey-64); + } + } + + &__reverse { + width: 20px; + height: 20px; + + i { + transition: transform 0.3s ease-in-out; + } + + &.clickEvent { + i { + transform: rotate(180deg); + } + } + } + + &__units { + display: flex; + flex-direction: column; + gap: toRem(8); + + &--item { + padding: toRem(9) toRem(12); + border-radius: $borderRadius6; + cursor: pointer; + transition: all 0.25 linear; + @include fontSize(s-13); + + &:hover { + background-color: var(--grey-64); + } + } + } +} diff --git a/src/features/medical/ui/MedicalCalculator/MedicalCalculator.vue b/src/features/medical/ui/MedicalCalculator/MedicalCalculator.vue new file mode 100644 index 0000000..4217790 --- /dev/null +++ b/src/features/medical/ui/MedicalCalculator/MedicalCalculator.vue @@ -0,0 +1,187 @@ + + diff --git a/src/features/medical/ui/MedicalCalculator/index.ts b/src/features/medical/ui/MedicalCalculator/index.ts new file mode 100644 index 0000000..8b00a97 --- /dev/null +++ b/src/features/medical/ui/MedicalCalculator/index.ts @@ -0,0 +1,5 @@ +import MedicalCalculator, { + type MedicalCalculatorProps, +} from './MedicalCalculator.vue' + +export { MedicalCalculator, type MedicalCalculatorProps } diff --git a/src/features/medical/ui/index.ts b/src/features/medical/ui/index.ts new file mode 100644 index 0000000..6edeae0 --- /dev/null +++ b/src/features/medical/ui/index.ts @@ -0,0 +1 @@ +export * from './MedicalCalculator' diff --git a/src/features/patient/api/index.ts b/src/features/patient/api/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/index.ts b/src/features/patient/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/features/patient/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/features/patient/model/index.ts b/src/features/patient/model/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/ui/AddMediaFiles/AddMediaFiles.scss b/src/features/patient/ui/AddMediaFiles/AddMediaFiles.scss new file mode 100644 index 0000000..6aa543f --- /dev/null +++ b/src/features/patient/ui/AddMediaFiles/AddMediaFiles.scss @@ -0,0 +1,42 @@ +.add-media-files { + @include row(toRem(10)); + + position: relative; + justify-content: center; + align-items: center; + cursor: pointer; + border-radius: $borderRadius8; + + &--view--field { + width: toRem(381); + margin-top: toRem(24); + padding: toRem(15); + border: 1px dashed var(--brand-64, rgba(162, 65, 240, 0.64)); + + &.treatment-media { + width: 100%; + } + } + + &--view--button { + width: toRem(28); + height: toRem(28); + transition: background-color 0.3s ease; + + &:hover { + background-color: var(--brand-4); + } + } + + &__text { + text-align: center; + color: var(--brand-main, #a241f0); + font-size: toRem(15); + font-weight: 400; + line-height: 1.6; + } + + &__plus-icon { + color: var(--brand-main, #a241f0); + } +} diff --git a/src/features/patient/ui/AddMediaFiles/AddMediaFiles.vue b/src/features/patient/ui/AddMediaFiles/AddMediaFiles.vue new file mode 100644 index 0000000..f01d8b4 --- /dev/null +++ b/src/features/patient/ui/AddMediaFiles/AddMediaFiles.vue @@ -0,0 +1,98 @@ + + diff --git a/src/features/patient/ui/AddMediaFiles/index.ts b/src/features/patient/ui/AddMediaFiles/index.ts new file mode 100644 index 0000000..c98eb25 --- /dev/null +++ b/src/features/patient/ui/AddMediaFiles/index.ts @@ -0,0 +1,3 @@ +import AddMediaFiles, { type AddMediaFilesProps } from './AddMediaFiles.vue' + +export { AddMediaFiles, type AddMediaFilesProps } diff --git a/src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.scss b/src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.scss new file mode 100644 index 0000000..711ed81 --- /dev/null +++ b/src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.scss @@ -0,0 +1,4 @@ +.add-new-analysis { + width: 100% !important; + height: 100%; +} diff --git a/src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.vue b/src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.vue new file mode 100644 index 0000000..7f08875 --- /dev/null +++ b/src/features/patient/ui/AddNewAnalysis/AddNewAnalysis.vue @@ -0,0 +1,54 @@ + + diff --git a/src/features/patient/ui/AddNewAnalysis/index.ts b/src/features/patient/ui/AddNewAnalysis/index.ts new file mode 100644 index 0000000..b33eac5 --- /dev/null +++ b/src/features/patient/ui/AddNewAnalysis/index.ts @@ -0,0 +1,3 @@ +import AddNewAnalysis, { type AddNewAnalysisProps } from './AddNewAnalysis.vue' + +export { AddNewAnalysis, type AddNewAnalysisProps } diff --git a/src/features/patient/ui/AddPreparations/AddPreparations.scss b/src/features/patient/ui/AddPreparations/AddPreparations.scss new file mode 100644 index 0000000..1639006 --- /dev/null +++ b/src/features/patient/ui/AddPreparations/AddPreparations.scss @@ -0,0 +1,97 @@ +.add-preparations { + .card { + gap: toRem(20); + } + + &__title { + text-transform: capitalize; + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &__list { + @include column(toRem(16)); + + &--item { + display: grid; + grid-template-columns: 170px auto 82px 16px; + gap: toRem(12); + + .item--period { + display: flex; + } + + .item--title { + display: flex; + align-items: center; + gap: toRem(8); + } + + .item--link { + position: relative; + } + } + } + + &__delete-btn { + width: 16px; + height: 16px; + color: var(--brand-main); + margin: auto; + } + + &__add--item-btn { + width: fit-content !important; + } + + .dropdown { + width: auto; + min-width: auto; + margin: auto; + + &__control { + width: auto; + align-items: center; + justify-content: flex-start; + padding: 0; + background: none; + + span { + @include fontSize(s-13); + color: var(--brand-main); + + &.empty { + color: var(--dark-32); + } + } + + i { + font-size: toRem(16); + color: var(--brand-main); + } + } + + &__menu { + right: 0; + left: auto; + padding: toRem(6); + + ul { + li { + padding: toRem(8) toRem(12); + transition: all 0.25s linear; + border-radius: $borderRadius6; + cursor: pointer; + + &:hover { + background-color: var(--grey-main); + } + } + } + } + } +} diff --git a/src/features/patient/ui/AddPreparations/AddPreparations.vue b/src/features/patient/ui/AddPreparations/AddPreparations.vue new file mode 100644 index 0000000..915f6ae --- /dev/null +++ b/src/features/patient/ui/AddPreparations/AddPreparations.vue @@ -0,0 +1,221 @@ + + diff --git a/src/features/patient/ui/AddPreparations/index.ts b/src/features/patient/ui/AddPreparations/index.ts new file mode 100644 index 0000000..0a8b688 --- /dev/null +++ b/src/features/patient/ui/AddPreparations/index.ts @@ -0,0 +1,5 @@ +import AddPreparations, { + type AddPreparationsProps, +} from './AddPreparations.vue' + +export { AddPreparations, type AddPreparationsProps } diff --git a/src/features/patient/ui/AddPurpose/AddPurpose.scss b/src/features/patient/ui/AddPurpose/AddPurpose.scss new file mode 100644 index 0000000..1bd346b --- /dev/null +++ b/src/features/patient/ui/AddPurpose/AddPurpose.scss @@ -0,0 +1,28 @@ +.add-purpose { + width: 100%; + aspect-ratio: 1 / 1.1; + max-height: 252px; + background: var(--brand-4-bg); + border-radius: $borderRadius20; + + &__title { + @include fontSize( + h3, + ( + weight: 500, + ) + ); + } + + &__subtitle { + @include fontSize(b-14); + text-align: center; + } + + &__actions { + margin-top: toRem(24); + display: flex; + flex-wrap: wrap; + gap: 12px; + } +} diff --git a/src/features/patient/ui/AddPurpose/AddPurpose.vue b/src/features/patient/ui/AddPurpose/AddPurpose.vue new file mode 100644 index 0000000..798ad2d --- /dev/null +++ b/src/features/patient/ui/AddPurpose/AddPurpose.vue @@ -0,0 +1,34 @@ + + diff --git a/src/features/patient/ui/AddPurpose/index.ts b/src/features/patient/ui/AddPurpose/index.ts new file mode 100644 index 0000000..606b0a2 --- /dev/null +++ b/src/features/patient/ui/AddPurpose/index.ts @@ -0,0 +1,3 @@ +import AddPurpose, { type AddPurposeProps } from './AddPurpose.vue' + +export { AddPurpose, type AddPurposeProps } diff --git a/src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.scss b/src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.scss new file mode 100644 index 0000000..fe6fc19 --- /dev/null +++ b/src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.scss @@ -0,0 +1,44 @@ +.add-treatment-course-files { + &__card--title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &__list { + padding: 0 !important; + display: flex; + flex-direction: column; + gap: toRem(10); + + &--item { + list-style: none; + display: flex; + align-items: center; + justify-content: space-between; + + .file { + display: flex; + align-items: flex-start; + @include fontSize(s-13); + color: var(--dark-main) !important; + + i { + padding: 0 toRem(8) 0 0; + } + + &-name { + width: 240px; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + border: none !important; + } + } + } + } +} diff --git a/src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.vue b/src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.vue new file mode 100644 index 0000000..8fcebdc --- /dev/null +++ b/src/features/patient/ui/AddTreatmentCourseFiles/AddTreatmentCourseFiles.vue @@ -0,0 +1,51 @@ + + diff --git a/src/features/patient/ui/AddTreatmentCourseFiles/index.ts b/src/features/patient/ui/AddTreatmentCourseFiles/index.ts new file mode 100644 index 0000000..acbbef5 --- /dev/null +++ b/src/features/patient/ui/AddTreatmentCourseFiles/index.ts @@ -0,0 +1,5 @@ +import AddTreatmentCourseFiles, { + type AddTreatmentCourseFilesProps, +} from './AddTreatmentCourseFiles.vue' + +export { AddTreatmentCourseFiles, type AddTreatmentCourseFilesProps } diff --git a/src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.scss b/src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.scss new file mode 100644 index 0000000..a9cf455 --- /dev/null +++ b/src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.scss @@ -0,0 +1,5 @@ +.delete-media-file { + &:hover { + background-color: var(--grey-64); + } +} diff --git a/src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.vue b/src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.vue new file mode 100644 index 0000000..b1e5bd7 --- /dev/null +++ b/src/features/patient/ui/DeleteMediaFile/DeleteMediaFile.vue @@ -0,0 +1,50 @@ + + diff --git a/src/features/patient/ui/DeleteMediaFile/index.ts b/src/features/patient/ui/DeleteMediaFile/index.ts new file mode 100644 index 0000000..4edf844 --- /dev/null +++ b/src/features/patient/ui/DeleteMediaFile/index.ts @@ -0,0 +1,5 @@ +import DeleteMediaFile, { + type DeleteMediaFileProps, +} from './DeleteMediaFile.vue' + +export { DeleteMediaFile, type DeleteMediaFileProps } diff --git a/src/features/patient/ui/DeleteTreatmentCourse/DeleteTreatmentCourse.scss b/src/features/patient/ui/DeleteTreatmentCourse/DeleteTreatmentCourse.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/ui/DeleteTreatmentCourse/DeleteTreatmentCourse.vue b/src/features/patient/ui/DeleteTreatmentCourse/DeleteTreatmentCourse.vue new file mode 100644 index 0000000..2a322a5 --- /dev/null +++ b/src/features/patient/ui/DeleteTreatmentCourse/DeleteTreatmentCourse.vue @@ -0,0 +1,29 @@ + + diff --git a/src/features/patient/ui/DeleteTreatmentCourse/index.ts b/src/features/patient/ui/DeleteTreatmentCourse/index.ts new file mode 100644 index 0000000..7f42afa --- /dev/null +++ b/src/features/patient/ui/DeleteTreatmentCourse/index.ts @@ -0,0 +1,5 @@ +import DeleteTreatmentCourse, { + type DeleteTreatmentCourseProps, +} from './DeleteTreatmentCourse.vue' + +export { DeleteTreatmentCourse, type DeleteTreatmentCourseProps } diff --git a/src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.scss b/src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.scss new file mode 100644 index 0000000..8df0d5a --- /dev/null +++ b/src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.scss @@ -0,0 +1,24 @@ +.edit-analysis-date { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + + &__value { + padding: toRem(12) toRem(12) toRem(12) 0; + } + + &__empty { + padding: toRem(12) toRem(12) toRem(12) 0; + color: var(--dark-32); + } + + &__input { + width: 100%; + padding: toRem(6); + margin: toRem(6) 0; + border: 1px solid var(--brand-main); + border-radius: $borderRadius6; + } +} diff --git a/src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.vue b/src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.vue new file mode 100644 index 0000000..e1c426f --- /dev/null +++ b/src/features/patient/ui/EditAnalysisDate/EditAnalysisDate.vue @@ -0,0 +1,94 @@ + + diff --git a/src/features/patient/ui/EditAnalysisDate/index.ts b/src/features/patient/ui/EditAnalysisDate/index.ts new file mode 100644 index 0000000..308e6f5 --- /dev/null +++ b/src/features/patient/ui/EditAnalysisDate/index.ts @@ -0,0 +1,5 @@ +import EditAnalysisDate, { + type EditAnalysisDateProps, +} from './EditAnalysisDate.vue' + +export { EditAnalysisDate, type EditAnalysisDateProps } diff --git a/src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.scss b/src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.scss new file mode 100644 index 0000000..23affe8 --- /dev/null +++ b/src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.scss @@ -0,0 +1,2 @@ +.edit-appointment-items { +} diff --git a/src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.vue b/src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.vue new file mode 100644 index 0000000..8d47686 --- /dev/null +++ b/src/features/patient/ui/EditAppointmentItems/EditAppointmentItems.vue @@ -0,0 +1,20 @@ + + diff --git a/src/features/patient/ui/EditAppointmentItems/index.ts b/src/features/patient/ui/EditAppointmentItems/index.ts new file mode 100644 index 0000000..fcd0c22 --- /dev/null +++ b/src/features/patient/ui/EditAppointmentItems/index.ts @@ -0,0 +1,5 @@ +import EditAppointmentItems, { + type EditAppointmentItemsProps, +} from './EditAppointmentItems.vue' + +export { EditAppointmentItems, type EditAppointmentItemsProps } diff --git a/src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.scss b/src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.scss new file mode 100644 index 0000000..d8a27f8 --- /dev/null +++ b/src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.scss @@ -0,0 +1,134 @@ +.edit-health-matrix-items { + --matrix-item-bg-color: var(--grey-64); + --matrix-item-border-color: var(--dark-main); + --matrix-item-hover-color: var(--dark-4); + + &.view-good { + --matrix-item-bg-color: var(--green-14); + --matrix-item-border-color: var(--green-main); + --matrix-item-hover-color: var(--green-20); + } + + &.view-normal { + --matrix-item-bg-color: var(--orange-20); + --matrix-item-border-color: var(--orange-main); + --matrix-item-hover-color: var(--orange-32); + } + + &.view-bad { + --matrix-item-bg-color: var(--berry-8); + --matrix-item-border-color: var(--berry-main); + --matrix-item-hover-color: var(--berry-4); + } + + width: 100%; + height: 100%; + padding: toRem(16); + background-color: var(--matrix-item-bg-color); + border-radius: $borderRadius12; + display: flex; + flex-direction: column; + gap: toRem(12); + + &__title { + @include fontSize( + b-14, + ( + weight: 500, + ) + ); + line-height: toRem(21); + } + + &__header { + display: flex; + align-items: center; + gap: toRem(3); + + .tooltip__content { + padding: toRem(12); + width: 196px; + } + + .space { + flex-grow: 1; + } + + .dropdown { + width: auto; + min-width: 0; + + &__control { + padding: 0; + gap: toRem(4); + background: none; + } + + &__menu { + width: 178px; + right: 0; + left: auto; + padding: toRem(12); + } + } + } + + &__body { + flex-grow: 1; + + &--text { + height: 100%; + padding: toRem(4) toRem(6); + border-radius: $borderRadius6; + transition: all 0.3s linear; + cursor: pointer; + + &:hover { + background-color: var(--matrix-item-hover-color); + } + .empty { + color: var(--dark-32); + @include fontSize(s-12); + } + + pre { + font-family: $mainFontFamily; + color: var(--dark-main); + @include fontSize( + s-12, + ( + line-height: 1.2, + ) + ); + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; + } + } + + &--input { + width: 100%; + height: 100%; + min-height: 58px; + border: none; + overflow: auto; + outline: none; + @include fontSize( + s-12, + ( + line-height: 1.3, + ) + ); + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + resize: none; + border-radius: $borderRadius6; + border: 1px solid var(--matrix-item-border-color); + padding: toRem(4) toRem(6); + } + } +} diff --git a/src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.vue b/src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.vue new file mode 100644 index 0000000..ae2fca1 --- /dev/null +++ b/src/features/patient/ui/EditHealthMatrixItems/EditHealthMatrixItems.vue @@ -0,0 +1,142 @@ + + diff --git a/src/features/patient/ui/EditHealthMatrixItems/index.ts b/src/features/patient/ui/EditHealthMatrixItems/index.ts new file mode 100644 index 0000000..1edd5e0 --- /dev/null +++ b/src/features/patient/ui/EditHealthMatrixItems/index.ts @@ -0,0 +1,5 @@ +import EditHealthMatrixItems, { + type EditHealthMatrixItemsProps, +} from './EditHealthMatrixItems.vue' + +export { EditHealthMatrixItems, type EditHealthMatrixItemsProps } diff --git a/src/features/patient/ui/EditPatientAnamnesis/EditPatientAnamnesis.scss b/src/features/patient/ui/EditPatientAnamnesis/EditPatientAnamnesis.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/ui/EditPatientAnamnesis/EditPatientAnamnesis.vue b/src/features/patient/ui/EditPatientAnamnesis/EditPatientAnamnesis.vue new file mode 100644 index 0000000..0429152 --- /dev/null +++ b/src/features/patient/ui/EditPatientAnamnesis/EditPatientAnamnesis.vue @@ -0,0 +1,20 @@ + + diff --git a/src/features/patient/ui/EditPatientAnamnesis/index.ts b/src/features/patient/ui/EditPatientAnamnesis/index.ts new file mode 100644 index 0000000..e3705f7 --- /dev/null +++ b/src/features/patient/ui/EditPatientAnamnesis/index.ts @@ -0,0 +1,5 @@ +import EditPatientAnamnesis, { + type EditPatientAnamnesisProps, +} from './EditPatientAnamnesis.vue' + +export { EditPatientAnamnesis, type EditPatientAnamnesisProps } diff --git a/src/features/patient/ui/EditPatientAsking/EditPatientAsking.scss b/src/features/patient/ui/EditPatientAsking/EditPatientAsking.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/ui/EditPatientAsking/EditPatientAsking.vue b/src/features/patient/ui/EditPatientAsking/EditPatientAsking.vue new file mode 100644 index 0000000..c7e2b73 --- /dev/null +++ b/src/features/patient/ui/EditPatientAsking/EditPatientAsking.vue @@ -0,0 +1,22 @@ + + diff --git a/src/features/patient/ui/EditPatientAsking/index.ts b/src/features/patient/ui/EditPatientAsking/index.ts new file mode 100644 index 0000000..a72d01e --- /dev/null +++ b/src/features/patient/ui/EditPatientAsking/index.ts @@ -0,0 +1,5 @@ +import EditPatientAsking, { + type EditPatientAskingProps, +} from './EditPatientAsking.vue' + +export { EditPatientAsking, type EditPatientAskingProps } diff --git a/src/features/patient/ui/EditTreatmentItems/EditTreatmentItems.scss b/src/features/patient/ui/EditTreatmentItems/EditTreatmentItems.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/ui/EditTreatmentItems/EditTreatmentItems.vue b/src/features/patient/ui/EditTreatmentItems/EditTreatmentItems.vue new file mode 100644 index 0000000..b7f280d --- /dev/null +++ b/src/features/patient/ui/EditTreatmentItems/EditTreatmentItems.vue @@ -0,0 +1,32 @@ + + diff --git a/src/features/patient/ui/EditTreatmentItems/index.ts b/src/features/patient/ui/EditTreatmentItems/index.ts new file mode 100644 index 0000000..8187389 --- /dev/null +++ b/src/features/patient/ui/EditTreatmentItems/index.ts @@ -0,0 +1,5 @@ +import EditTreatmentItems, { + type EditTreatmentItemsProps, +} from './EditTreatmentItems.vue' + +export { EditTreatmentItems, type EditTreatmentItemsProps } diff --git a/src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.scss b/src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.scss new file mode 100644 index 0000000..a1c723c --- /dev/null +++ b/src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.scss @@ -0,0 +1,28 @@ +.edit-treatment-title { + flex: 1 0 90%; + + p { + @include fontSize( + b-16, + ( + weight: 700, + ) + ); + padding: toRem(5) 0; + color: var(--dark-main); + + &.empty { + font-weight: 400; + color: var(--dark-32); + } + } + + input { + width: 100%; + padding: toRem(6); + + border: 1px solid var(--brand-main); + + border-radius: $borderRadius6; + } +} diff --git a/src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.vue b/src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.vue new file mode 100644 index 0000000..1fb21e9 --- /dev/null +++ b/src/features/patient/ui/EditTreatmentTitle/EditTreatmentTitle.vue @@ -0,0 +1,56 @@ + + diff --git a/src/features/patient/ui/EditTreatmentTitle/index.ts b/src/features/patient/ui/EditTreatmentTitle/index.ts new file mode 100644 index 0000000..1541652 --- /dev/null +++ b/src/features/patient/ui/EditTreatmentTitle/index.ts @@ -0,0 +1,5 @@ +import EditTreatmentTitle, { + type EditTreatmentTitleProps, +} from './EditTreatmentTitle.vue' + +export { EditTreatmentTitle, type EditTreatmentTitleProps } diff --git a/src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.scss b/src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.scss new file mode 100644 index 0000000..9f54624 --- /dev/null +++ b/src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.scss @@ -0,0 +1,21 @@ +.editable-analysis-optimum { + display: flex; + align-items: center; + justify-content: flex-end; + p { + @include fontSize(s-12); + cursor: pointer; + padding: toRem(12) toRem(16) toRem(12) 0; + &.empty { + text-align: center; + color: var(--dark-32); + } + } + + input { + width: 100%; + padding: toRem(6); + border: 1px solid var(--brand-main); + border-radius: $borderRadius6; + } +} diff --git a/src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.vue b/src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.vue new file mode 100644 index 0000000..0a9ff03 --- /dev/null +++ b/src/features/patient/ui/EditableAnalysisOptimum/EditableAnalysisOptimum.vue @@ -0,0 +1,66 @@ + + diff --git a/src/features/patient/ui/EditableAnalysisOptimum/index.ts b/src/features/patient/ui/EditableAnalysisOptimum/index.ts new file mode 100644 index 0000000..1ae4c65 --- /dev/null +++ b/src/features/patient/ui/EditableAnalysisOptimum/index.ts @@ -0,0 +1,5 @@ +import EditableAnalysisOptimum, { + type EditableAnalysisOptimumProps, +} from './EditableAnalysisOptimum.vue' + +export { EditableAnalysisOptimum, type EditableAnalysisOptimumProps } diff --git a/src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.scss b/src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.scss new file mode 100644 index 0000000..d437d71 --- /dev/null +++ b/src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.scss @@ -0,0 +1,71 @@ +.analysis-result { + $b: &; + + width: 100%; + cursor: pointer; + transition: all 0.2s linear; + + &__state { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: toRem(6); + border-radius: $borderRadius6; + padding: toRem(6) toRem(10); + background-color: var(--grey-64); + &:hover { + background-color: var(--grey-hover); + #{$b}__hint { + opacity: 1; + background-color: var(--blue-20-bg); + } + } + + span { + line-height: 12px; + } + + &.up, + &.down { + background-color: var(--berry-14); + + #{$b}__hint { + background-color: var(--berry-20); + } + } + + &.normal { + background-color: var(--green-32); + + #{$b}__hint { + background-color: var(--green-64); + } + } + } + + &__hint { + width: 14px; + height: 14px; + opacity: 0; + transition: all 0.3s linear; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + } + + &.disable { + cursor: not-allowed; + #{$b}__state:hover { + background-color: var(--grey-64); + } + } + + input { + width: 100%; + padding: toRem(6); + border: 1px solid var(--brand-main); + border-radius: $borderRadius6; + } +} diff --git a/src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.vue b/src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.vue new file mode 100644 index 0000000..92c982d --- /dev/null +++ b/src/features/patient/ui/EditableAnalysisResult/EditableAnalysisResult.vue @@ -0,0 +1,121 @@ + + diff --git a/src/features/patient/ui/EditableAnalysisResult/index.ts b/src/features/patient/ui/EditableAnalysisResult/index.ts new file mode 100644 index 0000000..d83ba98 --- /dev/null +++ b/src/features/patient/ui/EditableAnalysisResult/index.ts @@ -0,0 +1,5 @@ +import EditableAnalysisResult, { + type EditableAnalysisResultProps, +} from './EditableAnalysisResult.vue' + +export { EditableAnalysisResult, type EditableAnalysisResultProps } diff --git a/src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.scss b/src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.scss new file mode 100644 index 0000000..e441d12 --- /dev/null +++ b/src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.scss @@ -0,0 +1,52 @@ +.health-matrix-circle { + width: 140px; + height: 140px; + border-radius: 50%; + background-image: url('/images/default/circle-matrix-1.svg'); + background-size: cover; + background-position: center; + display: flex; + align-items: center; + justify-content: center; + margin: auto; + position: relative; + top: 50%; + transform: translate(0, -50%); + + svg { + border-radius: 50%; + cursor: pointer; + } + + .dropdown { + position: absolute; + transform: translate(0, 0); + opacity: 0; + width: auto; + min-width: 0; + transition: + transform 0.2s linear, + opacity 0.25s linear; + + &__control { + padding: 0; + gap: toRem(4); + background: none; + + i { + display: flex; + align-items: center; + justify-content: center; + height: 14px; + width: 14px; + } + } + + &__menu { + width: 178px; + right: 0; + left: auto; + padding: toRem(12); + } + } +} diff --git a/src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.vue b/src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.vue new file mode 100644 index 0000000..79c9025 --- /dev/null +++ b/src/features/patient/ui/HealthMatrixCircle/HealthMatrixCircle.vue @@ -0,0 +1,132 @@ + + diff --git a/src/features/patient/ui/HealthMatrixCircle/index.ts b/src/features/patient/ui/HealthMatrixCircle/index.ts new file mode 100644 index 0000000..3afc18c --- /dev/null +++ b/src/features/patient/ui/HealthMatrixCircle/index.ts @@ -0,0 +1,5 @@ +import HealthMatrixCircle, { + type HealthMatrixCircleProps, +} from './HealthMatrixCircle.vue' + +export { HealthMatrixCircle, type HealthMatrixCircleProps } diff --git a/src/features/patient/ui/SearchPurposeLibrary/SearchPurposeLibrary.scss b/src/features/patient/ui/SearchPurposeLibrary/SearchPurposeLibrary.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/ui/SearchPurposeLibrary/SearchPurposeLibrary.vue b/src/features/patient/ui/SearchPurposeLibrary/SearchPurposeLibrary.vue new file mode 100644 index 0000000..b7e5e4e --- /dev/null +++ b/src/features/patient/ui/SearchPurposeLibrary/SearchPurposeLibrary.vue @@ -0,0 +1,41 @@ + + diff --git a/src/features/patient/ui/SearchPurposeLibrary/index.ts b/src/features/patient/ui/SearchPurposeLibrary/index.ts new file mode 100644 index 0000000..2afd69c --- /dev/null +++ b/src/features/patient/ui/SearchPurposeLibrary/index.ts @@ -0,0 +1,5 @@ +import SearchPurposeLibrary, { + type SearchPurposeLibraryProps, +} from './SearchPurposeLibrary.vue' + +export { SearchPurposeLibrary, type SearchPurposeLibraryProps } diff --git a/src/features/patient/ui/SearchSurvey/SearchSurvey.scss b/src/features/patient/ui/SearchSurvey/SearchSurvey.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/features/patient/ui/SearchSurvey/SearchSurvey.vue b/src/features/patient/ui/SearchSurvey/SearchSurvey.vue new file mode 100644 index 0000000..4a98a7c --- /dev/null +++ b/src/features/patient/ui/SearchSurvey/SearchSurvey.vue @@ -0,0 +1,36 @@ + + diff --git a/src/features/patient/ui/SearchSurvey/index.ts b/src/features/patient/ui/SearchSurvey/index.ts new file mode 100644 index 0000000..6240453 --- /dev/null +++ b/src/features/patient/ui/SearchSurvey/index.ts @@ -0,0 +1,3 @@ +import SearchSurvey, { type SearchSurveyProps } from './SearchSurvey.vue' + +export { SearchSurvey, type SearchSurveyProps } diff --git a/src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.scss b/src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.scss new file mode 100644 index 0000000..1b5858b --- /dev/null +++ b/src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.scss @@ -0,0 +1,28 @@ +.select-purpose-item { + &__list { + @include column(toRem(8)); + + &--item { + padding: toRem(6) toRem(8); + display: flex; + align-items: center; + gap: toRem(10); + border-radius: $borderRadius6; + transition: all 0.2s linear; + cursor: pointer; + + &:hover { + background-color: var(--grey-64); + } + + &-name { + @include fontSize( + s-12, + ( + weight: 500, + ) + ); + } + } + } +} diff --git a/src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.vue b/src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.vue new file mode 100644 index 0000000..fa9a1c2 --- /dev/null +++ b/src/features/patient/ui/SelectPurposeItem/SelectPurposeItem.vue @@ -0,0 +1,36 @@ + + diff --git a/src/features/patient/ui/SelectPurposeItem/index.ts b/src/features/patient/ui/SelectPurposeItem/index.ts new file mode 100644 index 0000000..7876fdb --- /dev/null +++ b/src/features/patient/ui/SelectPurposeItem/index.ts @@ -0,0 +1,5 @@ +import SelectPurposeItem, { + type SelectPurposeItemProps, +} from './SelectPurposeItem.vue' + +export { SelectPurposeItem, type SelectPurposeItemProps } diff --git a/src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.scss b/src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.scss new file mode 100644 index 0000000..efb3173 --- /dev/null +++ b/src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.scss @@ -0,0 +1,73 @@ +.toggle-treatment-course { + $b: &; + + width: 100%; + display: flex; + align-items: center; + gap: toRem(12); + padding: toRem(16) toRem(20); + border-radius: $borderRadius12; + border: 1px solid var(--grey-border); + cursor: pointer; + + &__label { + @include fontSize(b-14); + } + + &__input { + display: none; + + &:checked ~ #{$b}__thumb { + left: 28px; + } + + &:checked ~ #{$b}__track { + background: var(--ch-linear1); + } + } + + &__inner { + width: 48px; + height: 24px; + position: relative; + } + + &__track { + width: inherit; + height: inherit; + border-radius: $borderRadius12; + background: var(--grey-main); + position: relative; + transition: all 0.3s ease-in; + + &::after { + content: ''; + width: 12px; + height: 12px; + position: absolute; + right: 6px; + top: 6px; + border: 2px solid var(--dark-20); + border-radius: 50%; + } + } + + &__icon { + position: absolute; + z-index: 2; + color: var(--white); + top: 4px; + left: 4px; + } + + &__thumb { + width: 16px; + height: 16px; + top: 4px; + left: 4px; + position: absolute; + border-radius: 50%; + background-color: var(--white); + transition: all 0.25s ease-in; + } +} diff --git a/src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.vue b/src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.vue new file mode 100644 index 0000000..0af9920 --- /dev/null +++ b/src/features/patient/ui/ToggleTreatmentCourse/ToggleTreatmentCourse.vue @@ -0,0 +1,48 @@ + + diff --git a/src/features/patient/ui/ToggleTreatmentCourse/index.ts b/src/features/patient/ui/ToggleTreatmentCourse/index.ts new file mode 100644 index 0000000..4805bf1 --- /dev/null +++ b/src/features/patient/ui/ToggleTreatmentCourse/index.ts @@ -0,0 +1,5 @@ +import ToggleTreatmentCourse, { + type ToggleTreatmentCourseProps, +} from './ToggleTreatmentCourse.vue' + +export { ToggleTreatmentCourse, type ToggleTreatmentCourseProps } diff --git a/src/features/patient/ui/index.ts b/src/features/patient/ui/index.ts new file mode 100644 index 0000000..48da520 --- /dev/null +++ b/src/features/patient/ui/index.ts @@ -0,0 +1,21 @@ +export * from './EditPatientAsking' +export * from './EditPatientAnamnesis' +export * from './EditAppointmentItems' +export * from './AddMediaFiles' +export * from './DeleteMediaFile' +export * from './DeleteTreatmentCourse' +export * from './SearchSurvey' +export * from './EditableAnalysisResult' +export * from './EditableAnalysisOptimum' +export * from './AddNewAnalysis' +export * from './EditAnalysisDate' +export * from './EditHealthMatrixItems' +export * from './HealthMatrixCircle' +export * from './AddPurpose' +export * from './SearchPurposeLibrary' +export * from './SelectPurposeItem' +export * from './EditTreatmentTitle' +export * from './ToggleTreatmentCourse' +export * from './EditTreatmentItems' +export * from './AddPreparations' +export * from './AddTreatmentCourseFiles' diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..c7eb815 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,28 @@ +import 'vue3-bem' + +export {} + +declare global { + type Maybe = null | undefined | T + type Timeout = ReturnType + type Gender = 1 | 0 + + type BaseState = { + loading: boolean + data: T + } + + type BaseStatePagination = { + loading: boolean + data: T + pagination: Pagination + } + + type Pagination = { + current_page: number + per_page: number + last_page: number + } + + type PaginationData = Pagination & { data: T } +} diff --git a/src/pages/calendar/index.ts b/src/pages/calendar/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/calendar/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/calendar/ui/Calendar/Calendar.scss b/src/pages/calendar/ui/Calendar/Calendar.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/calendar/ui/Calendar/Calendar.vue b/src/pages/calendar/ui/Calendar/Calendar.vue new file mode 100644 index 0000000..4c9eae2 --- /dev/null +++ b/src/pages/calendar/ui/Calendar/Calendar.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/pages/calendar/ui/Calendar/index.ts b/src/pages/calendar/ui/Calendar/index.ts new file mode 100644 index 0000000..2f94fff --- /dev/null +++ b/src/pages/calendar/ui/Calendar/index.ts @@ -0,0 +1,3 @@ +import Calendar, { type CalendarProps } from './Calendar.vue' + +export { Calendar, type CalendarProps } diff --git a/src/pages/calendar/ui/index.ts b/src/pages/calendar/ui/index.ts new file mode 100644 index 0000000..8c50cf8 --- /dev/null +++ b/src/pages/calendar/ui/index.ts @@ -0,0 +1 @@ +export * from './Calendar' diff --git a/src/pages/chat/index.ts b/src/pages/chat/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/chat/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/chat/ui/Chat/Chat.scss b/src/pages/chat/ui/Chat/Chat.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/chat/ui/Chat/Chat.vue b/src/pages/chat/ui/Chat/Chat.vue new file mode 100644 index 0000000..d2f7b66 --- /dev/null +++ b/src/pages/chat/ui/Chat/Chat.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/pages/chat/ui/Chat/index.ts b/src/pages/chat/ui/Chat/index.ts new file mode 100644 index 0000000..b4b6ed3 --- /dev/null +++ b/src/pages/chat/ui/Chat/index.ts @@ -0,0 +1,3 @@ +import Chat, { type ChatProps } from './Chat.vue' + +export { Chat, type ChatProps } diff --git a/src/pages/chat/ui/index.ts b/src/pages/chat/ui/index.ts new file mode 100644 index 0000000..62a2487 --- /dev/null +++ b/src/pages/chat/ui/index.ts @@ -0,0 +1 @@ +export * from './Chat' diff --git a/src/pages/index.ts b/src/pages/index.ts new file mode 100644 index 0000000..fc9377c --- /dev/null +++ b/src/pages/index.ts @@ -0,0 +1,7 @@ +export * from './login' +export * from './patients' +export * from './calendar' +export * from './chat' +export * from './library' +export * from './videochat' +export * from './patient' diff --git a/src/pages/library/index.ts b/src/pages/library/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/library/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/library/ui/Library/Library.scss b/src/pages/library/ui/Library/Library.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/library/ui/Library/Library.vue b/src/pages/library/ui/Library/Library.vue new file mode 100644 index 0000000..2ab99c9 --- /dev/null +++ b/src/pages/library/ui/Library/Library.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/pages/library/ui/Library/index.ts b/src/pages/library/ui/Library/index.ts new file mode 100644 index 0000000..22cb8c1 --- /dev/null +++ b/src/pages/library/ui/Library/index.ts @@ -0,0 +1,3 @@ +import Library, { type LibraryProps } from './Library.vue' + +export { Library, type LibraryProps } diff --git a/src/pages/library/ui/index.ts b/src/pages/library/ui/index.ts new file mode 100644 index 0000000..d5c5532 --- /dev/null +++ b/src/pages/library/ui/index.ts @@ -0,0 +1 @@ +export * from './Library' diff --git a/src/pages/login/index.ts b/src/pages/login/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/login/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/login/ui/LoginPage/LoginPage.scss b/src/pages/login/ui/LoginPage/LoginPage.scss new file mode 100644 index 0000000..031b7cb --- /dev/null +++ b/src/pages/login/ui/LoginPage/LoginPage.scss @@ -0,0 +1,26 @@ +.login-page { + @include column(); + align-items: center; + height: 100vh; + position: relative; + padding-top: toRem(130); + + &__header { + position: absolute; + top: toRem(32); + left: 0; + padding: 0 toRem(32); + width: 100%; + } + + &__content { + @include column(toRem(26)); + + align-items: center; + } + + &__footer { + @include center(horizontal); + bottom: toRem(50); + } +} diff --git a/src/pages/login/ui/LoginPage/LoginPage.vue b/src/pages/login/ui/LoginPage/LoginPage.vue new file mode 100644 index 0000000..4ed3f08 --- /dev/null +++ b/src/pages/login/ui/LoginPage/LoginPage.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/pages/login/ui/LoginPage/index.ts b/src/pages/login/ui/LoginPage/index.ts new file mode 100644 index 0000000..de3fb19 --- /dev/null +++ b/src/pages/login/ui/LoginPage/index.ts @@ -0,0 +1,3 @@ +import LoginPage from './LoginPage.vue' + +export { LoginPage } diff --git a/src/pages/login/ui/index.ts b/src/pages/login/ui/index.ts new file mode 100644 index 0000000..f5de7eb --- /dev/null +++ b/src/pages/login/ui/index.ts @@ -0,0 +1 @@ +export * from './LoginPage' diff --git a/src/pages/pages.scss b/src/pages/pages.scss new file mode 100644 index 0000000..5f7469d --- /dev/null +++ b/src/pages/pages.scss @@ -0,0 +1,8 @@ +@import 'login/ui/LoginPage/LoginPage'; +@import 'patients/ui/MyPatients/MyPatients'; +@import 'patients/ui/RequestsPatients/RequestsPatients'; +@import 'calendar/ui/Calendar/Calendar'; +@import 'chat/ui/Chat/Chat'; +@import 'videochat/ui/Videochat/Videochat'; +@import 'library/ui/Library/Library'; +@import 'patient/ui/Patient/Patient'; diff --git a/src/pages/patient/index.ts b/src/pages/patient/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/patient/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/patient/ui/Patient/Patient.scss b/src/pages/patient/ui/Patient/Patient.scss new file mode 100644 index 0000000..c5486f0 --- /dev/null +++ b/src/pages/patient/ui/Patient/Patient.scss @@ -0,0 +1,5 @@ +.patient { + //&__wrapper { + // @include column(toRem(24)); + //} +} diff --git a/src/pages/patient/ui/Patient/Patient.vue b/src/pages/patient/ui/Patient/Patient.vue new file mode 100644 index 0000000..c58dd17 --- /dev/null +++ b/src/pages/patient/ui/Patient/Patient.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/pages/patient/ui/Patient/index.ts b/src/pages/patient/ui/Patient/index.ts new file mode 100644 index 0000000..ab5c32b --- /dev/null +++ b/src/pages/patient/ui/Patient/index.ts @@ -0,0 +1,3 @@ +import Patient, { type PatientProps } from './Patient.vue' + +export { Patient, type PatientProps } diff --git a/src/pages/patient/ui/index.ts b/src/pages/patient/ui/index.ts new file mode 100644 index 0000000..e7ace59 --- /dev/null +++ b/src/pages/patient/ui/index.ts @@ -0,0 +1 @@ +export * from './Patient' diff --git a/src/pages/patients/index.ts b/src/pages/patients/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/patients/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/patients/ui/MyPatients/MyPatients.scss b/src/pages/patients/ui/MyPatients/MyPatients.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/patients/ui/MyPatients/MyPatients.vue b/src/pages/patients/ui/MyPatients/MyPatients.vue new file mode 100644 index 0000000..6ac283f --- /dev/null +++ b/src/pages/patients/ui/MyPatients/MyPatients.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/pages/patients/ui/MyPatients/index.ts b/src/pages/patients/ui/MyPatients/index.ts new file mode 100644 index 0000000..99b3ee7 --- /dev/null +++ b/src/pages/patients/ui/MyPatients/index.ts @@ -0,0 +1,3 @@ +import MyPatients, { type MyPatientsProps } from './MyPatients.vue' + +export { MyPatients, type MyPatientsProps } diff --git a/src/pages/patients/ui/RequestsPatients/RequestsPatients.scss b/src/pages/patients/ui/RequestsPatients/RequestsPatients.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/patients/ui/RequestsPatients/RequestsPatients.vue b/src/pages/patients/ui/RequestsPatients/RequestsPatients.vue new file mode 100644 index 0000000..d658de6 --- /dev/null +++ b/src/pages/patients/ui/RequestsPatients/RequestsPatients.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/pages/patients/ui/RequestsPatients/index.ts b/src/pages/patients/ui/RequestsPatients/index.ts new file mode 100644 index 0000000..f0c2522 --- /dev/null +++ b/src/pages/patients/ui/RequestsPatients/index.ts @@ -0,0 +1,5 @@ +import RequestsPatients, { + type RequestsPatientsProps, +} from './RequestsPatients.vue' + +export { RequestsPatients, type RequestsPatientsProps } diff --git a/src/pages/patients/ui/index.ts b/src/pages/patients/ui/index.ts new file mode 100644 index 0000000..a9d8497 --- /dev/null +++ b/src/pages/patients/ui/index.ts @@ -0,0 +1,2 @@ +export * from './MyPatients' +export * from './RequestsPatients' diff --git a/src/pages/profile/ui/Profile/Profile.scss b/src/pages/profile/ui/Profile/Profile.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/profile/ui/Profile/Profile.vue b/src/pages/profile/ui/Profile/Profile.vue new file mode 100644 index 0000000..86e86fb --- /dev/null +++ b/src/pages/profile/ui/Profile/Profile.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/pages/profile/ui/Profile/index.ts b/src/pages/profile/ui/Profile/index.ts new file mode 100644 index 0000000..774357a --- /dev/null +++ b/src/pages/profile/ui/Profile/index.ts @@ -0,0 +1,3 @@ +import Profile, { type ProfileProps } from './Profile.vue' + +export { Profile, type ProfileProps } diff --git a/src/pages/profile/ui/index.ts b/src/pages/profile/ui/index.ts new file mode 100644 index 0000000..ea36afc --- /dev/null +++ b/src/pages/profile/ui/index.ts @@ -0,0 +1 @@ +export * from './Profile' diff --git a/src/pages/support/index.ts b/src/pages/support/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/support/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/support/ui/Support/Support.scss b/src/pages/support/ui/Support/Support.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/support/ui/Support/Support.vue b/src/pages/support/ui/Support/Support.vue new file mode 100644 index 0000000..66f6402 --- /dev/null +++ b/src/pages/support/ui/Support/Support.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/pages/support/ui/Support/index.ts b/src/pages/support/ui/Support/index.ts new file mode 100644 index 0000000..b4decf6 --- /dev/null +++ b/src/pages/support/ui/Support/index.ts @@ -0,0 +1,3 @@ +import Support, { type SupportProps } from './Support.vue' + +export { Support, type SupportProps } diff --git a/src/pages/support/ui/index.ts b/src/pages/support/ui/index.ts new file mode 100644 index 0000000..2d31231 --- /dev/null +++ b/src/pages/support/ui/index.ts @@ -0,0 +1 @@ +export * from './Support' diff --git a/src/pages/videochat/index.ts b/src/pages/videochat/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/pages/videochat/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/pages/videochat/ui/Videochat/Videochat.scss b/src/pages/videochat/ui/Videochat/Videochat.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/videochat/ui/Videochat/Videochat.vue b/src/pages/videochat/ui/Videochat/Videochat.vue new file mode 100644 index 0000000..fc7b5f5 --- /dev/null +++ b/src/pages/videochat/ui/Videochat/Videochat.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/pages/videochat/ui/Videochat/index.ts b/src/pages/videochat/ui/Videochat/index.ts new file mode 100644 index 0000000..383d37b --- /dev/null +++ b/src/pages/videochat/ui/Videochat/index.ts @@ -0,0 +1,3 @@ +import Videochat, { type VideochatProps } from './Videochat.vue' + +export { Videochat, type VideochatProps } diff --git a/src/pages/videochat/ui/index.ts b/src/pages/videochat/ui/index.ts new file mode 100644 index 0000000..7504e78 --- /dev/null +++ b/src/pages/videochat/ui/index.ts @@ -0,0 +1 @@ +export * from './Videochat' diff --git a/src/shared/api/index.ts b/src/shared/api/index.ts new file mode 100644 index 0000000..3f25746 --- /dev/null +++ b/src/shared/api/index.ts @@ -0,0 +1,20 @@ +import axios from 'axios' +import config from '@/app/configs' + +const token = localStorage.getItem('user-token') || '' + +const baseApi = axios.create({ + baseURL: config.baseURL, + headers: { + Authorization: `Bearer ${token}`, + }, +}) + +const medicalApi = axios.create({ + baseURL: config.medicalURL, + headers: { + Authorization: `Bearer ${token}`, + }, +}) + +export { baseApi, medicalApi } diff --git a/src/shared/assets/icons/arrow-down.svg b/src/shared/assets/icons/arrow-down.svg new file mode 100644 index 0000000..bf579b6 --- /dev/null +++ b/src/shared/assets/icons/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/bell.svg b/src/shared/assets/icons/bell.svg new file mode 100644 index 0000000..0126b2a --- /dev/null +++ b/src/shared/assets/icons/bell.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/assets/icons/book-open.svg b/src/shared/assets/icons/book-open.svg new file mode 100644 index 0000000..ed27f4d --- /dev/null +++ b/src/shared/assets/icons/book-open.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/calendar.svg b/src/shared/assets/icons/calendar.svg new file mode 100644 index 0000000..5b85631 --- /dev/null +++ b/src/shared/assets/icons/calendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/check-circle.svg b/src/shared/assets/icons/check-circle.svg new file mode 100644 index 0000000..19f8b15 --- /dev/null +++ b/src/shared/assets/icons/check-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/close.svg b/src/shared/assets/icons/close.svg new file mode 100644 index 0000000..f914599 --- /dev/null +++ b/src/shared/assets/icons/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/dots-vertical.svg b/src/shared/assets/icons/dots-vertical.svg new file mode 100644 index 0000000..7c95d12 --- /dev/null +++ b/src/shared/assets/icons/dots-vertical.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/assets/icons/file.svg b/src/shared/assets/icons/file.svg new file mode 100644 index 0000000..0b85034 --- /dev/null +++ b/src/shared/assets/icons/file.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/assets/icons/formatting/arrow-down.svg b/src/shared/assets/icons/formatting/arrow-down.svg new file mode 100644 index 0000000..caa15bc --- /dev/null +++ b/src/shared/assets/icons/formatting/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/arrow-left.svg b/src/shared/assets/icons/formatting/arrow-left.svg new file mode 100644 index 0000000..250fedf --- /dev/null +++ b/src/shared/assets/icons/formatting/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/arrow-narrow-down.svg b/src/shared/assets/icons/formatting/arrow-narrow-down.svg new file mode 100644 index 0000000..a972a86 --- /dev/null +++ b/src/shared/assets/icons/formatting/arrow-narrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/arrow-narrow-up-right.svg b/src/shared/assets/icons/formatting/arrow-narrow-up-right.svg new file mode 100644 index 0000000..dd7e6fd --- /dev/null +++ b/src/shared/assets/icons/formatting/arrow-narrow-up-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/arrow-narrow-up.svg b/src/shared/assets/icons/formatting/arrow-narrow-up.svg new file mode 100644 index 0000000..2a814cb --- /dev/null +++ b/src/shared/assets/icons/formatting/arrow-narrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/arrow-right.svg b/src/shared/assets/icons/formatting/arrow-right.svg new file mode 100644 index 0000000..8863178 --- /dev/null +++ b/src/shared/assets/icons/formatting/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/bell.svg b/src/shared/assets/icons/formatting/bell.svg new file mode 100644 index 0000000..2c271c5 --- /dev/null +++ b/src/shared/assets/icons/formatting/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/book-open.svg b/src/shared/assets/icons/formatting/book-open.svg new file mode 100644 index 0000000..19313ee --- /dev/null +++ b/src/shared/assets/icons/formatting/book-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/calculator.svg b/src/shared/assets/icons/formatting/calculator.svg new file mode 100644 index 0000000..8b59010 --- /dev/null +++ b/src/shared/assets/icons/formatting/calculator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/calendar.svg b/src/shared/assets/icons/formatting/calendar.svg new file mode 100644 index 0000000..ec63fa8 --- /dev/null +++ b/src/shared/assets/icons/formatting/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/camera.svg b/src/shared/assets/icons/formatting/camera.svg new file mode 100644 index 0000000..a8b6f51 --- /dev/null +++ b/src/shared/assets/icons/formatting/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/check-circle.svg b/src/shared/assets/icons/formatting/check-circle.svg new file mode 100644 index 0000000..b821d95 --- /dev/null +++ b/src/shared/assets/icons/formatting/check-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/check-heart.svg b/src/shared/assets/icons/formatting/check-heart.svg new file mode 100644 index 0000000..aae2731 --- /dev/null +++ b/src/shared/assets/icons/formatting/check-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/check.svg b/src/shared/assets/icons/formatting/check.svg new file mode 100644 index 0000000..a4ccbc0 --- /dev/null +++ b/src/shared/assets/icons/formatting/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/clock.svg b/src/shared/assets/icons/formatting/clock.svg new file mode 100644 index 0000000..9686b38 --- /dev/null +++ b/src/shared/assets/icons/formatting/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/close.svg b/src/shared/assets/icons/formatting/close.svg new file mode 100644 index 0000000..695cfdb --- /dev/null +++ b/src/shared/assets/icons/formatting/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/date.svg b/src/shared/assets/icons/formatting/date.svg new file mode 100644 index 0000000..8f622ac --- /dev/null +++ b/src/shared/assets/icons/formatting/date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/dots-vertical.svg b/src/shared/assets/icons/formatting/dots-vertical.svg new file mode 100644 index 0000000..8dbac2f --- /dev/null +++ b/src/shared/assets/icons/formatting/dots-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/file.svg b/src/shared/assets/icons/formatting/file.svg new file mode 100644 index 0000000..4ca3c53 --- /dev/null +++ b/src/shared/assets/icons/formatting/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/help-circle.svg b/src/shared/assets/icons/formatting/help-circle.svg new file mode 100644 index 0000000..b582973 --- /dev/null +++ b/src/shared/assets/icons/formatting/help-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/info-circle.svg b/src/shared/assets/icons/formatting/info-circle.svg new file mode 100644 index 0000000..c6dbc8a --- /dev/null +++ b/src/shared/assets/icons/formatting/info-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/info.svg b/src/shared/assets/icons/formatting/info.svg new file mode 100644 index 0000000..760e9b2 --- /dev/null +++ b/src/shared/assets/icons/formatting/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/link.svg b/src/shared/assets/icons/formatting/link.svg new file mode 100644 index 0000000..1a480bf --- /dev/null +++ b/src/shared/assets/icons/formatting/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/message-text.svg b/src/shared/assets/icons/formatting/message-text.svg new file mode 100644 index 0000000..a0c4146 --- /dev/null +++ b/src/shared/assets/icons/formatting/message-text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/pencil-line.svg b/src/shared/assets/icons/formatting/pencil-line.svg new file mode 100644 index 0000000..33bafa1 --- /dev/null +++ b/src/shared/assets/icons/formatting/pencil-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/placeholder.svg b/src/shared/assets/icons/formatting/placeholder.svg new file mode 100644 index 0000000..698a8e7 --- /dev/null +++ b/src/shared/assets/icons/formatting/placeholder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/plus.svg b/src/shared/assets/icons/formatting/plus.svg new file mode 100644 index 0000000..de8f4c5 --- /dev/null +++ b/src/shared/assets/icons/formatting/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/search.svg b/src/shared/assets/icons/formatting/search.svg new file mode 100644 index 0000000..50e0e53 --- /dev/null +++ b/src/shared/assets/icons/formatting/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/switch-vertical.svg b/src/shared/assets/icons/formatting/switch-vertical.svg new file mode 100644 index 0000000..3c4ae81 --- /dev/null +++ b/src/shared/assets/icons/formatting/switch-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/trash.svg b/src/shared/assets/icons/formatting/trash.svg new file mode 100644 index 0000000..5b7a7e2 --- /dev/null +++ b/src/shared/assets/icons/formatting/trash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/tui-marker.svg b/src/shared/assets/icons/formatting/tui-marker.svg new file mode 100644 index 0000000..7f94bc0 --- /dev/null +++ b/src/shared/assets/icons/formatting/tui-marker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/user-edit.svg b/src/shared/assets/icons/formatting/user-edit.svg new file mode 100644 index 0000000..1c51c23 --- /dev/null +++ b/src/shared/assets/icons/formatting/user-edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/user-plus.svg b/src/shared/assets/icons/formatting/user-plus.svg new file mode 100644 index 0000000..75e5408 --- /dev/null +++ b/src/shared/assets/icons/formatting/user-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/user.svg b/src/shared/assets/icons/formatting/user.svg new file mode 100644 index 0000000..182ba52 --- /dev/null +++ b/src/shared/assets/icons/formatting/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/users-right.svg b/src/shared/assets/icons/formatting/users-right.svg new file mode 100644 index 0000000..bdf2105 --- /dev/null +++ b/src/shared/assets/icons/formatting/users-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/video-recorder.svg b/src/shared/assets/icons/formatting/video-recorder.svg new file mode 100644 index 0000000..e55a4f5 --- /dev/null +++ b/src/shared/assets/icons/formatting/video-recorder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/formatting/x-circle.svg b/src/shared/assets/icons/formatting/x-circle.svg new file mode 100644 index 0000000..74e9207 --- /dev/null +++ b/src/shared/assets/icons/formatting/x-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/help-circle.svg b/src/shared/assets/icons/help-circle.svg new file mode 100644 index 0000000..7866838 --- /dev/null +++ b/src/shared/assets/icons/help-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/message-text.svg b/src/shared/assets/icons/message-text.svg new file mode 100644 index 0000000..6f02207 --- /dev/null +++ b/src/shared/assets/icons/message-text.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/pencil-line.svg b/src/shared/assets/icons/pencil-line.svg new file mode 100644 index 0000000..5335520 --- /dev/null +++ b/src/shared/assets/icons/pencil-line.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/assets/icons/placeholder.svg b/src/shared/assets/icons/placeholder.svg new file mode 100644 index 0000000..97a5ebc --- /dev/null +++ b/src/shared/assets/icons/placeholder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/assets/icons/plus.svg b/src/shared/assets/icons/plus.svg new file mode 100644 index 0000000..eef1e5b --- /dev/null +++ b/src/shared/assets/icons/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/search.svg b/src/shared/assets/icons/search.svg new file mode 100644 index 0000000..2236798 --- /dev/null +++ b/src/shared/assets/icons/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/trash.svg b/src/shared/assets/icons/trash.svg new file mode 100644 index 0000000..1c198aa --- /dev/null +++ b/src/shared/assets/icons/trash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/user-edit.svg b/src/shared/assets/icons/user-edit.svg new file mode 100644 index 0000000..6e2b5bc --- /dev/null +++ b/src/shared/assets/icons/user-edit.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/user-plus.svg b/src/shared/assets/icons/user-plus.svg new file mode 100644 index 0000000..7dae4b6 --- /dev/null +++ b/src/shared/assets/icons/user-plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/user.svg b/src/shared/assets/icons/user.svg new file mode 100644 index 0000000..ada60e4 --- /dev/null +++ b/src/shared/assets/icons/user.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/assets/icons/users-right.svg b/src/shared/assets/icons/users-right.svg new file mode 100644 index 0000000..0c39933 --- /dev/null +++ b/src/shared/assets/icons/users-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/assets/icons/video-recorder.svg b/src/shared/assets/icons/video-recorder.svg new file mode 100644 index 0000000..6ad3dd4 --- /dev/null +++ b/src/shared/assets/icons/video-recorder.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/assets/icons/x-circle.svg b/src/shared/assets/icons/x-circle.svg new file mode 100644 index 0000000..31ada7c --- /dev/null +++ b/src/shared/assets/icons/x-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/index.ts b/src/shared/index.ts new file mode 100644 index 0000000..89107e1 --- /dev/null +++ b/src/shared/index.ts @@ -0,0 +1,5 @@ +export * from './lib' +export * from './utils' +export * from './ui' +export * from './lib/types' +export * from './api' diff --git a/src/shared/lib/hooks/index.ts b/src/shared/lib/hooks/index.ts new file mode 100644 index 0000000..389bc29 --- /dev/null +++ b/src/shared/lib/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './usePageTitle' +export * from './useJWT' diff --git a/src/shared/lib/hooks/useJWT.ts b/src/shared/lib/hooks/useJWT.ts new file mode 100644 index 0000000..bfa8779 --- /dev/null +++ b/src/shared/lib/hooks/useJWT.ts @@ -0,0 +1,18 @@ +import { baseApi } from '@/shared' + +export const useJWT = () => { + const setJWT = (token: string) => { + localStorage.setItem('user-token', token) + baseApi.defaults.headers.Authorization = `Bearer ${token}` + } + + const removeJWT = () => { + localStorage.removeItem('user-token') + baseApi.defaults.headers.Authorization = '' + } + + return { + setJWT, + removeJWT, + } +} diff --git a/src/shared/lib/hooks/usePageTitle.ts b/src/shared/lib/hooks/usePageTitle.ts new file mode 100644 index 0000000..d2501c5 --- /dev/null +++ b/src/shared/lib/hooks/usePageTitle.ts @@ -0,0 +1,6 @@ +import { useRoute } from 'vue-router' + +export const usePageTitle = () => { + const route = useRoute() + return route.meta.page?.title ?? '' +} diff --git a/src/shared/lib/hooks/useWindowSize.ts b/src/shared/lib/hooks/useWindowSize.ts new file mode 100644 index 0000000..72a4327 --- /dev/null +++ b/src/shared/lib/hooks/useWindowSize.ts @@ -0,0 +1,23 @@ +import { onMounted, onUnmounted, ref } from 'vue' + +export const useWindowSize = () => { + const width = ref(window.innerWidth) + const height = ref(window.innerHeight) + const handleResize = () => { + width.value = window.innerWidth + height.value = window.innerHeight + } + + onMounted(() => { + window.addEventListener('resize', handleResize) + }) + + onUnmounted(() => { + window.removeEventListener('resize', handleResize) + }) + + return { + width, + height, + } +} diff --git a/src/shared/lib/index.ts b/src/shared/lib/index.ts new file mode 100644 index 0000000..a1c77e9 --- /dev/null +++ b/src/shared/lib/index.ts @@ -0,0 +1,2 @@ +export * from './hooks' +export * from './types' diff --git a/src/shared/lib/types/icons.ts b/src/shared/lib/types/icons.ts new file mode 100644 index 0000000..3a97a30 --- /dev/null +++ b/src/shared/lib/types/icons.ts @@ -0,0 +1,38 @@ +export type IconNames = + | 'arrow-down' + | 'arrow-left' + | 'arrow-narrow-down' + | 'arrow-narrow-up-right' + | 'arrow-narrow-up' + | 'arrow-right' + | 'bell' + | 'book-open' + | 'calculator' + | 'calendar' + | 'camera' + | 'check-circle' + | 'check-heart' + | 'check' + | 'clock' + | 'close' + | 'date' + | 'dots-vertical' + | 'file' + | 'help-circle' + | 'info-circle' + | 'info' + | 'link' + | 'message-text' + | 'pencil-line' + | 'placeholder' + | 'plus' + | 'search' + | 'switch-vertical' + | 'trash' + | 'tui-marker' + | 'user-edit' + | 'user-plus' + | 'user' + | 'users-right' + | 'video-recorder' + | 'x-circle' diff --git a/src/shared/lib/types/index.ts b/src/shared/lib/types/index.ts new file mode 100644 index 0000000..765c7e1 --- /dev/null +++ b/src/shared/lib/types/index.ts @@ -0,0 +1,3 @@ +export * from './other' +export * from './store' +export * from './icons' diff --git a/src/shared/lib/types/other.ts b/src/shared/lib/types/other.ts new file mode 100644 index 0000000..e1f0831 --- /dev/null +++ b/src/shared/lib/types/other.ts @@ -0,0 +1,20 @@ +export type IconSvgNames = 'yandex' | 'vk' | 'google' + +export enum Routes { + INDEX = 'index', + LOGIN = 'login', + PATIENT = 'patient', + MY_PATIENTS = 'my-patients', + REQUESTS_PATIENTS = 'requests-patients', + CALENDAR = 'calendar', + VIDEOCHAT = 'videochat', + CHAT = 'chat', + LIBRARY = 'library', + SUPPORT = 'support', + PROFILE = 'profile', +} + +export type AuthData = { + email: string + password: string +} diff --git a/src/shared/lib/types/store.ts b/src/shared/lib/types/store.ts new file mode 100644 index 0000000..26b24a8 --- /dev/null +++ b/src/shared/lib/types/store.ts @@ -0,0 +1,9 @@ +export enum Stores { + AUTH = 'auth', + USER = 'user', + MY_PATIENTS = 'my-patients', + REQUEST_PATIENTS = 'request-patients', + PATIENT = 'patient', + MODALS = 'modals', + MEDICAL = 'medical', +} diff --git a/src/shared/shared.scss b/src/shared/shared.scss new file mode 100644 index 0000000..34c4fb0 --- /dev/null +++ b/src/shared/shared.scss @@ -0,0 +1,29 @@ +@import './ui/IconBase/IconBase'; +@import './ui/Button/Button'; +@import './ui/Card/Card'; +@import './ui/Input/Input'; +@import './ui/MenuItem/MenuItem'; +@import './ui/MenuItemList/MenuItemList'; +@import './ui/UserBase/UserBase'; +@import './ui/Link/Link'; +@import './ui/ButtonMenu/ButtonMenu'; +@import './ui/Tag/Tag'; +@import './ui/Tooltip/Tooltip'; +@import './ui/Spinner/Spinner'; +@import './ui/InfinityLoading/InfinityLoading'; +@import './ui/Tabs/Tabs'; +@import './ui/Logo/Logo'; +@import './ui/AuthForm/AuthForm'; +@import './ui/AuthCard/AuthCard'; +@import './ui/ButtonSocial/ButtonSocial'; +@import './ui/ToastIcon/ToastIcon'; +@import './ui/Dropdown/Dropdown'; +@import './ui/RadioBox/RadioBox'; +@import './ui/CheckBox/CheckBox'; +@import './ui/DataList/DataList'; +@import './ui/Textarea/Textarea'; +@import './ui/DatePicker/DatePicker'; +@import './ui/FileCard/FileCard'; +@import './ui/RadioInput/RadioInput'; +@import './ui/Accordion/Accordion'; +@import './ui/InputLink/InputLink'; diff --git a/src/shared/ui/Accordion/Accordion.scss b/src/shared/ui/Accordion/Accordion.scss new file mode 100644 index 0000000..a187839 --- /dev/null +++ b/src/shared/ui/Accordion/Accordion.scss @@ -0,0 +1,43 @@ +.accordion { + width: 100%; + border: 1px solid var(--grey-border); + border-radius: $borderRadius20; + overflow: hidden; + transition: 0.4s; + + &__header { + width: inherit; + display: flex; + justify-content: space-between; + align-items: center; + padding: toRem(24); + transition: padding 0.2s ease-out; + + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + color: var(--dark-main); + + i { + pointer-events: none; + transition: all 0.2s; + } + + &.active { + padding: toRem(24) toRem(24) toRem(12); + i { + transform: rotate(180deg); + } + } + } + + &__panel { + padding: 0 toRem(24); + max-height: 0; + overflow: hidden; + transition: max-height 0.2s ease-out; + } +} diff --git a/src/shared/ui/Accordion/Accordion.vue b/src/shared/ui/Accordion/Accordion.vue new file mode 100644 index 0000000..09795e3 --- /dev/null +++ b/src/shared/ui/Accordion/Accordion.vue @@ -0,0 +1,33 @@ + + diff --git a/src/shared/ui/Accordion/index.ts b/src/shared/ui/Accordion/index.ts new file mode 100644 index 0000000..1edda9a --- /dev/null +++ b/src/shared/ui/Accordion/index.ts @@ -0,0 +1,3 @@ +import Accordion, { type AccordionProps } from './Accordion.vue' + +export { Accordion, type AccordionProps } diff --git a/src/shared/ui/AuthCard/AuthCard.scss b/src/shared/ui/AuthCard/AuthCard.scss new file mode 100644 index 0000000..0efdb88 --- /dev/null +++ b/src/shared/ui/AuthCard/AuthCard.scss @@ -0,0 +1,23 @@ +.auth-card { + padding: toRem(40); + border-radius: $borderRadius24; + border: 1px solid var(--grey-border); + width: toRem(440); + + @include column(toRem(22)); + + align-items: center; + + &__title { + @include fontSize( + h3, + ( + weight: 700, + ) + ); + } + + &__content { + width: 100%; + } +} diff --git a/src/shared/ui/AuthCard/AuthCard.vue b/src/shared/ui/AuthCard/AuthCard.vue new file mode 100644 index 0000000..c3f7d4a --- /dev/null +++ b/src/shared/ui/AuthCard/AuthCard.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/shared/ui/AuthCard/index.ts b/src/shared/ui/AuthCard/index.ts new file mode 100644 index 0000000..4f33139 --- /dev/null +++ b/src/shared/ui/AuthCard/index.ts @@ -0,0 +1,3 @@ +import AuthCard, { type AuthCardProps } from './AuthCard.vue' + +export { AuthCard, type AuthCardProps } diff --git a/src/shared/ui/AuthForm/AuthForm.scss b/src/shared/ui/AuthForm/AuthForm.scss new file mode 100644 index 0000000..8f7f862 --- /dev/null +++ b/src/shared/ui/AuthForm/AuthForm.scss @@ -0,0 +1,19 @@ +.auth-form { + text-align: center; + + &__content { + @include column(toRem(22)); + } + + &__step-toggle { + @include fontSize(s-13); + } + + &__socials { + @include column(toRem(12)); + } + + &__divider { + @include fontSize(b14); + } +} diff --git a/src/shared/ui/AuthForm/AuthForm.vue b/src/shared/ui/AuthForm/AuthForm.vue new file mode 100644 index 0000000..f017c36 --- /dev/null +++ b/src/shared/ui/AuthForm/AuthForm.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/shared/ui/AuthForm/index.ts b/src/shared/ui/AuthForm/index.ts new file mode 100644 index 0000000..84a864a --- /dev/null +++ b/src/shared/ui/AuthForm/index.ts @@ -0,0 +1,3 @@ +import AuthForm, { type AuthFormProps } from './AuthForm.vue' + +export { AuthForm, type AuthFormProps } diff --git a/src/shared/ui/Button/Button.scss b/src/shared/ui/Button/Button.scss new file mode 100644 index 0000000..c33823b --- /dev/null +++ b/src/shared/ui/Button/Button.scss @@ -0,0 +1,110 @@ +.button { + $b: &; + + position: relative; + display: flex; + gap: toRem(6); + justify-content: space-between; + align-items: center; + transition: 0.3s ease; + + @include fontSize(s-12); + + &__content { + width: 100%; + } + + &__icon { + display: flex; + align-items: center; + } + + &--size { + &-xs { + padding: 0 toRem(8); + height: toRem(28); + border-radius: $borderRadius8; + + #{$b}__icon { + font-size: toRem(12); + } + + &.is-only-icon { + width: toRem(28) !important; + } + } + + &-m { + padding: 0 toRem(12); + height: toRem(36); + border-radius: $borderRadius8; + + #{$b}__icon { + font-size: toRem(14); + } + } + + &-l { + padding: 0 toRem(16); + height: toRem(44); + border-radius: $borderRadius8; + + #{$b}__icon { + font-size: toRem(12); + } + } + } + + &--view { + &-brand { + background: var(--brand-main); + color: var(--white); + + &:hover { + background-color: var(--brand-hover); + } + } + + &-flat { + &:hover { + background-color: var(--grey-hover); + } + } + + &-secondary { + color: var(--brand-main); + + &:hover { + color: var(--brand-hover); + background-color: var(--brand-4); + } + } + + &-dense { + background-color: var(--brand-8); + color: var(--brand-main); + } + + &-blue { + background-color: var(--blue-14); + color: var(--dark-blue); + } + } + + &.is-only-icon { + padding: 0; + justify-content: center; + } + + &.is-disabled { + pointer-events: none; + opacity: 0.7; + } + + &.rounded { + border: 1px solid var(--dark-14); + // &:hover { + // background: rgba(0,0,0, .08); + // } + } +} diff --git a/src/shared/ui/Button/Button.vue b/src/shared/ui/Button/Button.vue new file mode 100644 index 0000000..4e4b174 --- /dev/null +++ b/src/shared/ui/Button/Button.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/shared/ui/Button/index.ts b/src/shared/ui/Button/index.ts new file mode 100644 index 0000000..86cccab --- /dev/null +++ b/src/shared/ui/Button/index.ts @@ -0,0 +1,3 @@ +import Button, { type ButtonProps } from './Button.vue' + +export { Button, type ButtonProps } diff --git a/src/shared/ui/ButtonMenu/ButtonMenu.scss b/src/shared/ui/ButtonMenu/ButtonMenu.scss new file mode 100644 index 0000000..762f98a --- /dev/null +++ b/src/shared/ui/ButtonMenu/ButtonMenu.scss @@ -0,0 +1,43 @@ +.button-menu { + display: inline-block; + position: relative; + + &__menu { + position: absolute; + top: calc(100% + #{toRem(12)}); + right: 0; + min-width: toRem(180); + border: 1px solid var(--grey-border); + background-color: var(--white); + padding: toRem(16); + border-radius: $borderRadius16; + z-index: 2; + + @include column(toRem(8)); + } + + &__menu-item { + display: flex; + align-items: center; + gap: toRem(4); + border-radius: $borderRadius6; + transition: background-color 0.3s ease; + height: toRem(36); + cursor: pointer; + padding: 0 toRem(8); + + &:hover { + background-color: var(--grey-main); + } + } + + &__icon { + font-size: toRem(16); + } + + &__text { + @include fontSize(s-13); + + white-space: nowrap; + } +} diff --git a/src/shared/ui/ButtonMenu/ButtonMenu.vue b/src/shared/ui/ButtonMenu/ButtonMenu.vue new file mode 100644 index 0000000..79073d0 --- /dev/null +++ b/src/shared/ui/ButtonMenu/ButtonMenu.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/shared/ui/ButtonMenu/index.ts b/src/shared/ui/ButtonMenu/index.ts new file mode 100644 index 0000000..966c19a --- /dev/null +++ b/src/shared/ui/ButtonMenu/index.ts @@ -0,0 +1,3 @@ +import ButtonMenu, { type ButtonMenuProps } from './ButtonMenu.vue' + +export { ButtonMenu, type ButtonMenuProps } diff --git a/src/shared/ui/ButtonSocial/ButtonSocial.scss b/src/shared/ui/ButtonSocial/ButtonSocial.scss new file mode 100644 index 0000000..a81b439 --- /dev/null +++ b/src/shared/ui/ButtonSocial/ButtonSocial.scss @@ -0,0 +1,24 @@ +.button-social { + display: flex; + padding: toRem(9) 0 toRem(9) toRem(60); + border-radius: $borderRadius8; + background-color: var(--white); + border: 1px solid var(--grey-border); + align-items: center; + gap: toRem(4); + cursor: pointer; + transition: border 0.3s ease; + + &__icon { + width: toRem(24); + height: toRem(24); + } + + &__text { + @include fontSize(b-15); + } + + &:hover { + border-color: var(--dark-main); + } +} diff --git a/src/shared/ui/ButtonSocial/ButtonSocial.vue b/src/shared/ui/ButtonSocial/ButtonSocial.vue new file mode 100644 index 0000000..8caaf8c --- /dev/null +++ b/src/shared/ui/ButtonSocial/ButtonSocial.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/shared/ui/ButtonSocial/index.ts b/src/shared/ui/ButtonSocial/index.ts new file mode 100644 index 0000000..9abe28c --- /dev/null +++ b/src/shared/ui/ButtonSocial/index.ts @@ -0,0 +1,3 @@ +import ButtonSocial, { type ButtonSocialProps } from './ButtonSocial.vue' + +export { ButtonSocial, type ButtonSocialProps } diff --git a/src/shared/ui/Card/Card.scss b/src/shared/ui/Card/Card.scss new file mode 100644 index 0000000..e1eb83a --- /dev/null +++ b/src/shared/ui/Card/Card.scss @@ -0,0 +1,32 @@ +.card { + display: flex; + flex-direction: column; + gap: toRem(11); + background-color: var(--light-blue); + border-radius: $borderRadius20; + + &--size { + &-m { + padding: toRem(24) toRem(24) toRem(20) toRem(24); + } + + &-l { + padding: toRem(30) toRem(32); + } + } + + &.rounded { + border: 1px solid var(--grey-border); + } + + &.hoverable { + &:hover { + border-color: var(--brand-main); + cursor: pointer; + } + } + + &.active { + border-color: var(--brand-main); + } +} diff --git a/src/shared/ui/Card/Card.vue b/src/shared/ui/Card/Card.vue new file mode 100644 index 0000000..4d5f869 --- /dev/null +++ b/src/shared/ui/Card/Card.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/shared/ui/Card/index.ts b/src/shared/ui/Card/index.ts new file mode 100644 index 0000000..d3b42e5 --- /dev/null +++ b/src/shared/ui/Card/index.ts @@ -0,0 +1,3 @@ +import Card, { type CardProps } from './Card.vue' + +export { Card, type CardProps } diff --git a/src/shared/ui/CheckBox/CheckBox.scss b/src/shared/ui/CheckBox/CheckBox.scss new file mode 100644 index 0000000..19690d6 --- /dev/null +++ b/src/shared/ui/CheckBox/CheckBox.scss @@ -0,0 +1,49 @@ +.check-box { + $b: &; + position: relative; + display: inline-flex; + align-items: center; + gap: toRem(8); + padding-left: 6px; + cursor: pointer; + @include fontSize( + s-13, + ( + line-height: 1, + ) + ); + + &.read-only { + pointer-events: none; + } + + &__inner { + display: block; + width: 16px; + height: 16px; + border-radius: $borderRadius4; + background-color: var(--dark-14); + display: flex; + align-items: center; + justify-content: center; + + svg path { + stroke: inherit; + } + } + + &__label { + padding-top: 3px; + } + + &__checkbox { + display: none; + + &:checked ~ #{$b}__inner { + background-color: var(--brand-main); + svg path { + stroke: #fff; + } + } + } +} diff --git a/src/shared/ui/CheckBox/CheckBox.vue b/src/shared/ui/CheckBox/CheckBox.vue new file mode 100644 index 0000000..89f2e0c --- /dev/null +++ b/src/shared/ui/CheckBox/CheckBox.vue @@ -0,0 +1,76 @@ + + diff --git a/src/shared/ui/CheckBox/index.ts b/src/shared/ui/CheckBox/index.ts new file mode 100644 index 0000000..0f697b5 --- /dev/null +++ b/src/shared/ui/CheckBox/index.ts @@ -0,0 +1,3 @@ +import CheckBox, { type CheckBoxProps } from './CheckBox.vue' + +export { CheckBox, type CheckBoxProps } diff --git a/src/shared/ui/DataList/DataList.scss b/src/shared/ui/DataList/DataList.scss new file mode 100644 index 0000000..1cbe876 --- /dev/null +++ b/src/shared/ui/DataList/DataList.scss @@ -0,0 +1,24 @@ +.data-list { + &__search { + padding: 0 0 toRem(24) 0; + } + &__label { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + &__body { + display: flex; + flex-direction: column; + gap: toRem(24); + padding: toRem(12) 0; + } + + &__additional--info { + color: var(--dark-64); + @include fontSize(s-13); + } +} diff --git a/src/shared/ui/DataList/DataList.vue b/src/shared/ui/DataList/DataList.vue new file mode 100644 index 0000000..c156c4f --- /dev/null +++ b/src/shared/ui/DataList/DataList.vue @@ -0,0 +1,77 @@ + + diff --git a/src/shared/ui/DataList/index.ts b/src/shared/ui/DataList/index.ts new file mode 100644 index 0000000..d32f562 --- /dev/null +++ b/src/shared/ui/DataList/index.ts @@ -0,0 +1,3 @@ +import DataList, { type DataListProps } from './DataList.vue' + +export { DataList, type DataListProps } diff --git a/src/shared/ui/DatePicker/DatePicker.scss b/src/shared/ui/DatePicker/DatePicker.scss new file mode 100644 index 0000000..08fc747 --- /dev/null +++ b/src/shared/ui/DatePicker/DatePicker.scss @@ -0,0 +1,28 @@ +.date-picker { + width: 100%; + display: flex; + align-items: center; + position: relative; + background-color: var(--grey-main); + border-radius: $borderRadius12; + + &:hover { + background-color: var(--grey-hover); + } + + i { + position: absolute; + right: toRem(20); + } + + &.size { + &-m { + height: toRem(44); + font-weight: 400; + } + &-l { + height: toRem(57); + width: 500; + } + } +} diff --git a/src/shared/ui/DatePicker/DatePicker.vue b/src/shared/ui/DatePicker/DatePicker.vue new file mode 100644 index 0000000..f8cd7a4 --- /dev/null +++ b/src/shared/ui/DatePicker/DatePicker.vue @@ -0,0 +1,44 @@ + + diff --git a/src/shared/ui/DatePicker/index.ts b/src/shared/ui/DatePicker/index.ts new file mode 100644 index 0000000..57377af --- /dev/null +++ b/src/shared/ui/DatePicker/index.ts @@ -0,0 +1,3 @@ +import DatePicker, { type DatePickerProps } from './DatePicker.vue' + +export { DatePicker, type DatePickerProps } diff --git a/src/shared/ui/Dropdown/Dropdown.scss b/src/shared/ui/Dropdown/Dropdown.scss new file mode 100644 index 0000000..e562b3a --- /dev/null +++ b/src/shared/ui/Dropdown/Dropdown.scss @@ -0,0 +1,40 @@ +.dropdown { + width: 100%; + min-width: 200px; + position: relative; + + &:focus .dropdown__menu { + opacity: 1; + visibility: visible; + } + + &__control { + display: flex; + align-items: center; + justify-content: space-between; + padding: toRem(10) toRem(24); + border-radius: $borderRadius12; + cursor: pointer; + font-size: toRem(15); + line-height: toRem(24); + color: var(--text-primary); + background-color: var(--grey-64); + + i { + font-size: 20px; + } + } + + &__menu { + border-radius: $borderRadius12; + position: absolute; + padding: toRem(16); + top: 110%; + left: 0; + right: 0; + opacity: 0; + visibility: hidden; + border: 1px solid #dddfe0; + transition: all 0.2s linear; + } +} diff --git a/src/shared/ui/Dropdown/Dropdown.vue b/src/shared/ui/Dropdown/Dropdown.vue new file mode 100644 index 0000000..3c93115 --- /dev/null +++ b/src/shared/ui/Dropdown/Dropdown.vue @@ -0,0 +1,21 @@ + + diff --git a/src/shared/ui/Dropdown/index.ts b/src/shared/ui/Dropdown/index.ts new file mode 100644 index 0000000..b771c9e --- /dev/null +++ b/src/shared/ui/Dropdown/index.ts @@ -0,0 +1,3 @@ +import Dropdown, { type DropdownProps } from './Dropdown.vue' + +export { Dropdown, type DropdownProps } diff --git a/src/shared/ui/FileCard/FileCard.scss b/src/shared/ui/FileCard/FileCard.scss new file mode 100644 index 0000000..c63ffdb --- /dev/null +++ b/src/shared/ui/FileCard/FileCard.scss @@ -0,0 +1,15 @@ +.file-card { + @include row(toRem(11)); + + align-items: center; + transition: background-color 0.3s ease; + border-radius: $borderRadius8; + background-color: var(--white); + + &.hoverable { + &:hover { + cursor: pointer; + background-color: var(--grey-64); + } + } +} diff --git a/src/shared/ui/FileCard/FileCard.vue b/src/shared/ui/FileCard/FileCard.vue new file mode 100644 index 0000000..eaf3fc4 --- /dev/null +++ b/src/shared/ui/FileCard/FileCard.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/shared/ui/FileCard/index.ts b/src/shared/ui/FileCard/index.ts new file mode 100644 index 0000000..4a50c6b --- /dev/null +++ b/src/shared/ui/FileCard/index.ts @@ -0,0 +1,3 @@ +import FileCard, { type FileCardProps } from './FileCard.vue' + +export { FileCard, type FileCardProps } diff --git a/src/shared/ui/IconBase/IconBase.scss b/src/shared/ui/IconBase/IconBase.scss new file mode 100644 index 0000000..15a7ce5 --- /dev/null +++ b/src/shared/ui/IconBase/IconBase.scss @@ -0,0 +1,40 @@ +.icon-base { + display: inline-block; + font-weight: 400; + + &::before { + font-family: $icon; + display: block; + font-size: inherit; + color: inherit; + line-height: 1; + } + + &.icon--size { + &-xs { + font-size: toRem(12); + } + + &-m { + font-size: toRem(16); + } + + &-l { + font-size: toRem(20); + } + } + + &.icon--view { + &-secondary { + color: var(--dark-64); + } + + &-brand { + color: var(--brand-main); + } + + &-danger { + color: var(--berry-main); + } + } +} diff --git a/src/shared/ui/IconBase/IconBase.vue b/src/shared/ui/IconBase/IconBase.vue new file mode 100644 index 0000000..4d184e6 --- /dev/null +++ b/src/shared/ui/IconBase/IconBase.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/shared/ui/IconBase/index.ts b/src/shared/ui/IconBase/index.ts new file mode 100644 index 0000000..8ae8276 --- /dev/null +++ b/src/shared/ui/IconBase/index.ts @@ -0,0 +1,3 @@ +import IconBase, { type IconBaseProps } from './IconBase.vue' + +export { IconBase, type IconBaseProps } diff --git a/src/shared/ui/InfinityLoading/InfinityLoading.scss b/src/shared/ui/InfinityLoading/InfinityLoading.scss new file mode 100644 index 0000000..765cd18 --- /dev/null +++ b/src/shared/ui/InfinityLoading/InfinityLoading.scss @@ -0,0 +1 @@ +@import 'v3-infinite-loading/lib/style.css'; diff --git a/src/shared/ui/InfinityLoading/InfinityLoading.vue b/src/shared/ui/InfinityLoading/InfinityLoading.vue new file mode 100644 index 0000000..24149ae --- /dev/null +++ b/src/shared/ui/InfinityLoading/InfinityLoading.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/shared/ui/InfinityLoading/index.ts b/src/shared/ui/InfinityLoading/index.ts new file mode 100644 index 0000000..ec382f0 --- /dev/null +++ b/src/shared/ui/InfinityLoading/index.ts @@ -0,0 +1,5 @@ +import InfinityLoading, { + type InfinityLoadingProps, +} from './InfinityLoading.vue' + +export { InfinityLoading, type InfinityLoadingProps } diff --git a/src/shared/ui/Input/Input.scss b/src/shared/ui/Input/Input.scss new file mode 100644 index 0000000..db53ee8 --- /dev/null +++ b/src/shared/ui/Input/Input.scss @@ -0,0 +1,45 @@ +.input { + display: flex; + align-items: center; + gap: toRem(8); + background-color: var(--grey-main); + border-radius: $borderRadius12; + padding: 0 toRem(20); + color: var(--dark-main); + transition: background 0.3s ease; + + &__value { + border: none; + height: 100%; + background-color: transparent; + width: 100%; + } + + &.size { + &-m { + height: toRem(44); + font-weight: 400; + } + &-l { + height: toRem(57); + width: 500; + } + } + + &.readonly { + cursor: not-allowed; + } + + input:-webkit-autofill { + box-shadow: inset 0 0 0 30px var(--grey-main); + transition: box-shadow 0.3s ease; + + &:hover { + box-shadow: inset 0 0 0 1000px var(--grey-hover); + } + } + + &:hover { + background-color: var(--grey-hover); + } +} diff --git a/src/shared/ui/Input/Input.vue b/src/shared/ui/Input/Input.vue new file mode 100644 index 0000000..f3eeb6e --- /dev/null +++ b/src/shared/ui/Input/Input.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/shared/ui/Input/index.ts b/src/shared/ui/Input/index.ts new file mode 100644 index 0000000..deae6fb --- /dev/null +++ b/src/shared/ui/Input/index.ts @@ -0,0 +1,3 @@ +import Input, { type InputProps } from './Input.vue' + +export { Input, type InputProps } diff --git a/src/shared/ui/InputLink/InputLink.scss b/src/shared/ui/InputLink/InputLink.scss new file mode 100644 index 0000000..c4af096 --- /dev/null +++ b/src/shared/ui/InputLink/InputLink.scss @@ -0,0 +1,60 @@ +.input-link { + position: relative; + + &__icon { + width: toRem(12); + height: toRem(12); + color: var(--dark-32); + + &.active { + color: var(--brand-main); + } + } + + &__toolbar { + position: absolute; + top: - toRem(46); + left: - toRem(12); + width: toRem(264); + padding: toRem(6); + border-radius: $borderRadius6; + background-color: var(--white); + box-shadow: + 0px 0px 32px 0px rgba(0, 0, 0, 0.08), + 0px 0px 0px 0px rgba(0, 0, 0, 0.04); + display: none; + transition: all 0.25s linear; + + &--input { + width: 100%; + padding: toRem(6) toRem(58) toRem(6) toRem(6); + border-radius: $borderRadius6; + border: 1px solid var(--Grey-border, #dfe4ed); + @include fontSize(s-13); + } + + button { + position: absolute; + width: toRem(22) !important; + height: toRem(22); + top: toRem(9); + border-radius: toRem(5); + + &:nth-child(2) { + right: toRem(39); + + i { + font-size: toRem(14); + } + } + + &:nth-child(3) { + right: toRem(12); + + i { + font-size: toRem(10) !important; + } + } + } + } +} diff --git a/src/shared/ui/InputLink/InputLink.vue b/src/shared/ui/InputLink/InputLink.vue new file mode 100644 index 0000000..9ea0d5f --- /dev/null +++ b/src/shared/ui/InputLink/InputLink.vue @@ -0,0 +1,75 @@ + + diff --git a/src/shared/ui/InputLink/index.ts b/src/shared/ui/InputLink/index.ts new file mode 100644 index 0000000..73ba231 --- /dev/null +++ b/src/shared/ui/InputLink/index.ts @@ -0,0 +1,3 @@ +import InputLink, { type InputLinkProps } from './InputLink.vue' + +export { InputLink, type InputLinkProps } diff --git a/src/shared/ui/Link/Link.scss b/src/shared/ui/Link/Link.scss new file mode 100644 index 0000000..2422477 --- /dev/null +++ b/src/shared/ui/Link/Link.scss @@ -0,0 +1,43 @@ +.link { + $b: &; + + display: inline-flex; + gap: toRem(8); + align-items: center; + cursor: pointer; + transition: color 0.3s ease; + + &__icon { + font-size: toRem(12); + } + + &--view { + &-brand { + color: var(--brand-main); + + &:hover { + color: var(--brand-hover); + } + } + + &-base { + &:hover { + color: var(--dark-64); + } + } + } + + &--size { + &-xs { + #{$b}__text { + @include fontSize(s-12); + } + } + + &-s { + #{$b}__text { + @include fontSize(s-13); + } + } + } +} diff --git a/src/shared/ui/Link/Link.vue b/src/shared/ui/Link/Link.vue new file mode 100644 index 0000000..56ff69b --- /dev/null +++ b/src/shared/ui/Link/Link.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/shared/ui/Link/index.ts b/src/shared/ui/Link/index.ts new file mode 100644 index 0000000..6911264 --- /dev/null +++ b/src/shared/ui/Link/index.ts @@ -0,0 +1,3 @@ +import Link, { type LinkProps } from './Link.vue' + +export { Link, type LinkProps } diff --git a/src/shared/ui/Logo/Logo.scss b/src/shared/ui/Logo/Logo.scss new file mode 100644 index 0000000..3f84821 --- /dev/null +++ b/src/shared/ui/Logo/Logo.scss @@ -0,0 +1,20 @@ +.logo { + background: var(--brand-linear); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + text-transform: uppercase; + font-weight: 900; + + &--size { + &-m { + font-size: toRem(24); + letter-spacing: -0.24px; + } + + &-l { + font-size: toRem(60); + letter-spacing: -0.6px; + } + } +} diff --git a/src/shared/ui/Logo/Logo.vue b/src/shared/ui/Logo/Logo.vue new file mode 100644 index 0000000..24fc736 --- /dev/null +++ b/src/shared/ui/Logo/Logo.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/shared/ui/Logo/index.ts b/src/shared/ui/Logo/index.ts new file mode 100644 index 0000000..e2be97b --- /dev/null +++ b/src/shared/ui/Logo/index.ts @@ -0,0 +1,3 @@ +import Logo, { type LogoProps } from './Logo.vue' + +export { Logo, type LogoProps } diff --git a/src/shared/ui/MenuItem/MenuItem.scss b/src/shared/ui/MenuItem/MenuItem.scss new file mode 100644 index 0000000..8c68104 --- /dev/null +++ b/src/shared/ui/MenuItem/MenuItem.scss @@ -0,0 +1,42 @@ +.menu-item { + $b: &; + + display: flex; + gap: toRem(8); + align-items: center; + height: toRem(32); + padding: 0 toRem(18); + border-radius: $borderRadius6; + transition: background-color 0.3s ease; + + @include fontSize(s-13); + + &__icon { + font-size: toRem(16); + } + + &--view { + &-base { + #{$b}__icon { + color: var(--dark-main); + } + } + + &-brand { + #{$b}__icon { + color: var(--brand-main); + } + } + + &-orange { + #{$b}__icon { + color: var(--orange-main); + } + } + } + + &--active, + &:hover { + background-color: var(--grey-main); + } +} diff --git a/src/shared/ui/MenuItem/MenuItem.vue b/src/shared/ui/MenuItem/MenuItem.vue new file mode 100644 index 0000000..d3aae11 --- /dev/null +++ b/src/shared/ui/MenuItem/MenuItem.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/shared/ui/MenuItem/index.ts b/src/shared/ui/MenuItem/index.ts new file mode 100644 index 0000000..58d998b --- /dev/null +++ b/src/shared/ui/MenuItem/index.ts @@ -0,0 +1,3 @@ +import MenuItem, { type MenuItemProps } from './MenuItem.vue' + +export { MenuItem, type MenuItemProps } diff --git a/src/shared/ui/MenuItemList/MenuItemList.scss b/src/shared/ui/MenuItemList/MenuItemList.scss new file mode 100644 index 0000000..de6f9ea --- /dev/null +++ b/src/shared/ui/MenuItemList/MenuItemList.scss @@ -0,0 +1,11 @@ +.menu-item-list { + &, + &__links-children { + @include column(toRem(8)); + } + + &__links-children { + padding-top: toRem(8); + padding-left: toRem(24); + } +} diff --git a/src/shared/ui/MenuItemList/MenuItemList.vue b/src/shared/ui/MenuItemList/MenuItemList.vue new file mode 100644 index 0000000..c9abac9 --- /dev/null +++ b/src/shared/ui/MenuItemList/MenuItemList.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/shared/ui/MenuItemList/index.ts b/src/shared/ui/MenuItemList/index.ts new file mode 100644 index 0000000..9951ce8 --- /dev/null +++ b/src/shared/ui/MenuItemList/index.ts @@ -0,0 +1,3 @@ +import MenuItemList, { type MenuItemListProps } from './MenuItemList.vue' + +export { MenuItemList, type MenuItemListProps } diff --git a/src/shared/ui/RadioBox/RadioBox.scss b/src/shared/ui/RadioBox/RadioBox.scss new file mode 100644 index 0000000..74fa129 --- /dev/null +++ b/src/shared/ui/RadioBox/RadioBox.scss @@ -0,0 +1,36 @@ +.radio-box { + display: table-cell; + cursor: pointer; + + &__label { + margin: 2px; + display: flex; + align-items: center; + justify-content: center; + background: var(--grey-main); + border: 1px solid #000; + padding: 2px toRem(8) 0; + border: 1.5px solid var(--grey-main); + border-radius: $borderRadius4; + @include fontSize( + b-14, + ( + line-height: normal, + ) + ); + height: 32px; + + &--active { + background: var(--white); + border-color: var(--brand-main); + } + } + + &__checkbox { + position: absolute; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; + } +} diff --git a/src/shared/ui/RadioBox/RadioBox.vue b/src/shared/ui/RadioBox/RadioBox.vue new file mode 100644 index 0000000..fbfaed4 --- /dev/null +++ b/src/shared/ui/RadioBox/RadioBox.vue @@ -0,0 +1,31 @@ + + diff --git a/src/shared/ui/RadioBox/index.ts b/src/shared/ui/RadioBox/index.ts new file mode 100644 index 0000000..d46926a --- /dev/null +++ b/src/shared/ui/RadioBox/index.ts @@ -0,0 +1,3 @@ +import RadioBox, { type RadioBoxProps } from './RadioBox.vue' + +export { RadioBox, type RadioBoxProps } diff --git a/src/shared/ui/RadioInput/RadioInput.scss b/src/shared/ui/RadioInput/RadioInput.scss new file mode 100644 index 0000000..2d504d0 --- /dev/null +++ b/src/shared/ui/RadioInput/RadioInput.scss @@ -0,0 +1,58 @@ +.radio-input { + $b: &; + position: relative; + display: inline-flex; + align-items: center; + gap: toRem(8); + padding-left: 6px; + cursor: pointer; + @include fontSize( + s-13, + ( + line-height: 1, + ) + ); + + &.read-only { + pointer-events: none; + } + + &__inner { + display: block; + width: 16px; + height: 16px; + border-radius: 50%; + background-color: var(--brand-8); + position: relative; + &::before { + content: ''; + position: absolute; + width: 8px; + height: 8px; + background-color: var(--brand-main); + border-radius: 50%; + opacity: 0; + visibility: hidden; + @include center(both); + transition: all 0.25s linear; + } + + &.active::before { + opacity: 1; + visibility: visible; + } + } + + &__label { + padding-top: 3px; + } + + &__radio { + display: none; + + &:checked ~ #{$b}__inner::before { + opacity: 1; + visibility: visible; + } + } +} diff --git a/src/shared/ui/RadioInput/RadioInput.vue b/src/shared/ui/RadioInput/RadioInput.vue new file mode 100644 index 0000000..287c369 --- /dev/null +++ b/src/shared/ui/RadioInput/RadioInput.vue @@ -0,0 +1,36 @@ + + diff --git a/src/shared/ui/RadioInput/index.ts b/src/shared/ui/RadioInput/index.ts new file mode 100644 index 0000000..109a6ea --- /dev/null +++ b/src/shared/ui/RadioInput/index.ts @@ -0,0 +1,3 @@ +import RadioInput, { type RadioInputProps } from './RadioInput.vue' + +export { RadioInput, type RadioInputProps } diff --git a/src/shared/ui/Spinner/Spinner.scss b/src/shared/ui/Spinner/Spinner.scss new file mode 100644 index 0000000..fb48494 --- /dev/null +++ b/src/shared/ui/Spinner/Spinner.scss @@ -0,0 +1,30 @@ +.spinner { + position: relative; + border-radius: 100%; + overflow: hidden; + + img, + svg { + display: block; + width: 100%; + height: 100%; + animation: rotate360 1s infinite linear; + } + + &--size { + &-s { + width: toRem(16); + height: toRem(16); + } + + &-m { + width: toRem(20); + height: toRem(20); + } + + &-xxl { + width: toRem(80); + height: toRem(80); + } + } +} diff --git a/src/shared/ui/Spinner/Spinner.vue b/src/shared/ui/Spinner/Spinner.vue new file mode 100644 index 0000000..94db714 --- /dev/null +++ b/src/shared/ui/Spinner/Spinner.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/shared/ui/Spinner/index.ts b/src/shared/ui/Spinner/index.ts new file mode 100644 index 0000000..5bb4f27 --- /dev/null +++ b/src/shared/ui/Spinner/index.ts @@ -0,0 +1,3 @@ +import Spinner, { type SpinnerProps } from './Spinner.vue' + +export { Spinner, type SpinnerProps } diff --git a/src/shared/ui/Tabs/Tabs.scss b/src/shared/ui/Tabs/Tabs.scss new file mode 100644 index 0000000..5f92eba --- /dev/null +++ b/src/shared/ui/Tabs/Tabs.scss @@ -0,0 +1,46 @@ +.tabs { + &__list { + display: flex; + gap: toRem(8); + } + + &__item { + display: flex; + align-items: center; + padding: 0 toRem(16); + height: toRem(32); + border-radius: $borderRadius8; + border: 1px solid var(--grey-hover); + background-color: var(--white); + transition: border 0.3s ease; + + @include fontSize( + s-13, + ( + line-height: toRem(20), + ) + ); + + &:hover { + border-color: var(--grey-border); + } + } + + &__scroller { + position: relative; + } + + &__toggle { + position: absolute; + left: 0; + top: 0; + bottom: 0; + border-radius: $borderRadius8; + //background-color: var(--white); + border: 2px solid var(--brand-main); + box-sizing: border-box; + + transition: 0.3s ease; + transition-property: transform, width; + } +} diff --git a/src/shared/ui/Tabs/Tabs.vue b/src/shared/ui/Tabs/Tabs.vue new file mode 100644 index 0000000..a180bd3 --- /dev/null +++ b/src/shared/ui/Tabs/Tabs.vue @@ -0,0 +1,100 @@ + + + diff --git a/src/shared/ui/Tabs/index.ts b/src/shared/ui/Tabs/index.ts new file mode 100644 index 0000000..63f62ae --- /dev/null +++ b/src/shared/ui/Tabs/index.ts @@ -0,0 +1,3 @@ +import Tabs, { type TabsProps } from './Tabs.vue' + +export { Tabs, type TabsProps } diff --git a/src/shared/ui/Tag/Tag.scss b/src/shared/ui/Tag/Tag.scss new file mode 100644 index 0000000..87ed945 --- /dev/null +++ b/src/shared/ui/Tag/Tag.scss @@ -0,0 +1,33 @@ +.tag { + display: inline-flex; + align-items: center; + padding: toRem(4) toRem(6); + border-radius: $borderRadius6; + height: toRem(24); + transition: background-color 0.3s ease; + white-space: nowrap; + + @include fontSize(s-12); + + &.is-hoverable { + background-color: transparent; + } + + &--view { + &-base { + background-color: var(--blue-20); + + &:hover { + background-color: var(--blue-20); + } + } + + &-grey { + background-color: var(--grey-hover); + + &:hover { + background-color: var(--grey-hover); + } + } + } +} diff --git a/src/shared/ui/Tag/Tag.vue b/src/shared/ui/Tag/Tag.vue new file mode 100644 index 0000000..10f15a1 --- /dev/null +++ b/src/shared/ui/Tag/Tag.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/shared/ui/Tag/index.ts b/src/shared/ui/Tag/index.ts new file mode 100644 index 0000000..59c94a9 --- /dev/null +++ b/src/shared/ui/Tag/index.ts @@ -0,0 +1,3 @@ +import Tag, { type TagProps } from './Tag.vue' + +export { Tag, type TagProps } diff --git a/src/shared/ui/Textarea/Textarea.scss b/src/shared/ui/Textarea/Textarea.scss new file mode 100644 index 0000000..a4b7906 --- /dev/null +++ b/src/shared/ui/Textarea/Textarea.scss @@ -0,0 +1,32 @@ +.textarea { + width: 100%; + display: flex; + align-items: center; + gap: toRem(8); + background-color: var(--grey-main); + border-radius: $borderRadius12; + padding: toRem(20); + color: var(--dark-main); + transition: background 0.3s ease; + + &__value { + width: 100%; + height: 100%; + min-height: 50px; + border: none; + background-color: transparent; + } + + input:-webkit-autofill { + box-shadow: inset 0 0 0 30px var(--grey-main); + transition: box-shadow 0.3s ease; + + &:hover { + box-shadow: inset 0 0 0 1000px var(--grey-hover); + } + } + + &:hover { + background-color: var(--grey-hover); + } +} diff --git a/src/shared/ui/Textarea/Textarea.vue b/src/shared/ui/Textarea/Textarea.vue new file mode 100644 index 0000000..3c41bf2 --- /dev/null +++ b/src/shared/ui/Textarea/Textarea.vue @@ -0,0 +1,26 @@ + + diff --git a/src/shared/ui/Textarea/index.ts b/src/shared/ui/Textarea/index.ts new file mode 100644 index 0000000..7149694 --- /dev/null +++ b/src/shared/ui/Textarea/index.ts @@ -0,0 +1,3 @@ +import Textarea, { type TextareaProps } from './Textarea.vue' + +export { Textarea, type TextareaProps } diff --git a/src/shared/ui/ToastIcon/ToastIcon.scss b/src/shared/ui/ToastIcon/ToastIcon.scss new file mode 100644 index 0000000..ec1a96c --- /dev/null +++ b/src/shared/ui/ToastIcon/ToastIcon.scss @@ -0,0 +1,11 @@ +.toast-icon { + &--view { + &-success { + color: var(--green-border); + } + + &-error { + color: var(--critical-main); + } + } +} diff --git a/src/shared/ui/ToastIcon/ToastIcon.vue b/src/shared/ui/ToastIcon/ToastIcon.vue new file mode 100644 index 0000000..c21af95 --- /dev/null +++ b/src/shared/ui/ToastIcon/ToastIcon.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/shared/ui/ToastIcon/index.ts b/src/shared/ui/ToastIcon/index.ts new file mode 100644 index 0000000..e574785 --- /dev/null +++ b/src/shared/ui/ToastIcon/index.ts @@ -0,0 +1,3 @@ +import ToastIcon, { type ToastIconProps } from './ToastIcon.vue' + +export { ToastIcon, type ToastIconProps } diff --git a/src/shared/ui/Tooltip/Tooltip.scss b/src/shared/ui/Tooltip/Tooltip.scss new file mode 100644 index 0000000..053f85b --- /dev/null +++ b/src/shared/ui/Tooltip/Tooltip.scss @@ -0,0 +1,44 @@ +.tooltip { + position: relative; + + &__parent { + cursor: pointer; + } + + &__header { + display: flex; + gap: toRem(12); + align-items: center; + } + + &__icon-wrapper { + padding: toRem(5); + width: toRem(24); + height: toRem(24); + border-radius: $borderRadius6; + background-color: var(--brand-20); + color: var(--purple-main); + } + + &__icon { + font-size: toRem(14); + } + + &__title { + font-weight: 700; + } + + &__content { + position: absolute; + left: 0; + z-index: 2; + + border: 1px solid var(--grey-border); + border-radius: $borderRadius16; + padding: toRem(24); + background-color: var(--white); + @include column(toRem(24)); + + display: inline-flex; + } +} diff --git a/src/shared/ui/Tooltip/Tooltip.vue b/src/shared/ui/Tooltip/Tooltip.vue new file mode 100644 index 0000000..192246e --- /dev/null +++ b/src/shared/ui/Tooltip/Tooltip.vue @@ -0,0 +1,77 @@ + + + diff --git a/src/shared/ui/Tooltip/index.ts b/src/shared/ui/Tooltip/index.ts new file mode 100644 index 0000000..bf3c0fa --- /dev/null +++ b/src/shared/ui/Tooltip/index.ts @@ -0,0 +1,3 @@ +import Tooltip, { type TooltipProps } from './Tooltip.vue' + +export { Tooltip, type TooltipProps } diff --git a/src/shared/ui/TransitionFade/TransitionFade.scss b/src/shared/ui/TransitionFade/TransitionFade.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/ui/TransitionFade/TransitionFade.vue b/src/shared/ui/TransitionFade/TransitionFade.vue new file mode 100644 index 0000000..ec85dd5 --- /dev/null +++ b/src/shared/ui/TransitionFade/TransitionFade.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/shared/ui/TransitionFade/index.ts b/src/shared/ui/TransitionFade/index.ts new file mode 100644 index 0000000..03979bc --- /dev/null +++ b/src/shared/ui/TransitionFade/index.ts @@ -0,0 +1,3 @@ +import TransitionFade, { type TransitionFadeProps } from './TransitionFade.vue' + +export { TransitionFade, type TransitionFadeProps } diff --git a/src/shared/ui/UserBase/UserBase.scss b/src/shared/ui/UserBase/UserBase.scss new file mode 100644 index 0000000..22b4486 --- /dev/null +++ b/src/shared/ui/UserBase/UserBase.scss @@ -0,0 +1,18 @@ +.user-base { + $b: &; + + display: flex; + gap: toRem(8); + align-items: center; + padding: toRem(2) 0; + + &__avatar { + border-radius: 50%; + width: toRem(32); + height: toRem(32); + } + + &__name { + @include fontSize(s-12); + } +} diff --git a/src/shared/ui/UserBase/UserBase.vue b/src/shared/ui/UserBase/UserBase.vue new file mode 100644 index 0000000..d817be1 --- /dev/null +++ b/src/shared/ui/UserBase/UserBase.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/shared/ui/UserBase/index.ts b/src/shared/ui/UserBase/index.ts new file mode 100644 index 0000000..fb44d1a --- /dev/null +++ b/src/shared/ui/UserBase/index.ts @@ -0,0 +1,3 @@ +import UserBase, { type UserBaseProps } from './UserBase.vue' + +export { UserBase, type UserBaseProps } diff --git a/src/shared/ui/index.ts b/src/shared/ui/index.ts new file mode 100644 index 0000000..55913c0 --- /dev/null +++ b/src/shared/ui/index.ts @@ -0,0 +1,30 @@ +export * from './IconBase' +export * from './Button' +export * from './Card' +export * from './TransitionFade' +export * from './Input' +export * from './MenuItem' +export * from './MenuItemList' +export * from './UserBase' +export * from './Link' +export * from './ButtonMenu' +export * from './Tag' +export * from './Tooltip' +export * from './Spinner' +export * from './ToastIcon' +export * from './Tabs' +export * from './InfinityLoading' +export * from './Logo' +export * from './AuthForm' +export * from './AuthCard' +export * from './ButtonSocial' +export * from './Dropdown' +export * from './RadioBox' +export * from './CheckBox' +export * from './DataList' +export * from './Textarea' +export * from './DatePicker' +export * from './FileCard' +export * from './RadioInput' +export * from './Accordion' +export * from './InputLink' diff --git a/src/shared/utils/functions/date.ts b/src/shared/utils/functions/date.ts new file mode 100644 index 0000000..16a92b0 --- /dev/null +++ b/src/shared/utils/functions/date.ts @@ -0,0 +1,46 @@ +export const formattingDateForClient = ( + date: string, + format: 'long' | 'short' = 'long', +) => { + const dateSrc = new Date(date).toLocaleString('ru', { + // year: 'numeric', + month: format, + day: 'numeric', + }) + + return dateSrc.split('.').join('.') +} + +export const dateToAge = (date: string) => { + const birthYear = +new Date(date).toLocaleString('ru', { + year: 'numeric', + }) + + const currentYear = +new Date().toLocaleString('ru', { + year: 'numeric', + }) + + return currentYear - birthYear +} + +export const getSeconds = (date: string) => { + return Math.floor(new Date(date).getTime() / 1000) +} + +export const prettifyDate = (date: string | undefined) => { + if (!date) return + + date = new Intl.DateTimeFormat('en-GB').format(new Date(date)) + + return date.split('/').join('.') +} + +export const getTimeFromDate = (val: string) => { + if (!val) return + const date = new Intl.DateTimeFormat('ru', { + hour: 'numeric', + minute: 'numeric', + }).format(new Date(val)) + + return date +} diff --git a/src/shared/utils/functions/declension.ts b/src/shared/utils/functions/declension.ts new file mode 100644 index 0000000..ef8eb35 --- /dev/null +++ b/src/shared/utils/functions/declension.ts @@ -0,0 +1,16 @@ +export const declension = (number: number, words: string[]) => { + let word + if (number % 10 === 1 && number % 100 !== 11) { + word = words[0] // for numbers ending in 1, except 11 + } else if ( + number % 10 >= 2 && + number % 10 <= 4 && + (number % 100 < 10 || number % 100 >= 20) + ) { + word = words[1] // for numbers ending in 2, 3, 4, except 12, 13, 14 + } else { + word = words[2] // for all other cases + } + + return `${number} ${word}` +} diff --git a/src/shared/utils/functions/getIconSvg.ts b/src/shared/utils/functions/getIconSvg.ts new file mode 100644 index 0000000..a958281 --- /dev/null +++ b/src/shared/utils/functions/getIconSvg.ts @@ -0,0 +1,7 @@ +import type { IconSvgNames } from '@/shared' + +export const getIconSvg = (name: IconSvgNames) => { + const directory = `/images/icons/` + + return `${directory}/${name}.svg` +} diff --git a/src/shared/utils/functions/index.ts b/src/shared/utils/functions/index.ts new file mode 100644 index 0000000..9017af4 --- /dev/null +++ b/src/shared/utils/functions/index.ts @@ -0,0 +1,4 @@ +export * from './getIconSvg' +export * from './declension' +export * from './date' +export * from './other' diff --git a/src/shared/utils/functions/other.ts b/src/shared/utils/functions/other.ts new file mode 100644 index 0000000..2635112 --- /dev/null +++ b/src/shared/utils/functions/other.ts @@ -0,0 +1,7 @@ +export const getGender = (gender: Gender) => (gender ? 'М' : 'Ж') + +export const toRem = (px: number) => { + const rem = 12 + + return `${(px / 12) * rem}rem` +} diff --git a/src/shared/utils/index.ts b/src/shared/utils/index.ts new file mode 100644 index 0000000..326e352 --- /dev/null +++ b/src/shared/utils/index.ts @@ -0,0 +1 @@ +export * from './functions' diff --git a/src/shared/utils/npm/formattingIcons.js b/src/shared/utils/npm/formattingIcons.js new file mode 100644 index 0000000..0d580d3 --- /dev/null +++ b/src/shared/utils/npm/formattingIcons.js @@ -0,0 +1,11 @@ +/* eslint-env node */ +const SVGFixer = require('oslllo-svg-fixer') + +const iconsFolder = './src/shared/assets/icons' +const destination = './src/shared/assets/icons/formatting' + +SVGFixer(iconsFolder, destination, { + showProgressBar: true, +}) + .fix() + .then() diff --git a/src/shims-vue.ts b/src/shims-vue.ts new file mode 100644 index 0000000..31e5f11 --- /dev/null +++ b/src/shims-vue.ts @@ -0,0 +1,10 @@ +export {} + +declare module 'vue-router' { + interface RouteMeta { + middleware?: unknown + page?: { + title: string + } + } +} diff --git a/src/widgets/index.ts b/src/widgets/index.ts new file mode 100644 index 0000000..5f61722 --- /dev/null +++ b/src/widgets/index.ts @@ -0,0 +1,4 @@ +export * from './layouts' +export * from './patient' +export * from './modals' +export * from './navigation' diff --git a/src/widgets/layouts/index.ts b/src/widgets/layouts/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/widgets/layouts/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/widgets/layouts/ui/PageLayout/PageLayout.scss b/src/widgets/layouts/ui/PageLayout/PageLayout.scss new file mode 100644 index 0000000..ae69bcf --- /dev/null +++ b/src/widgets/layouts/ui/PageLayout/PageLayout.scss @@ -0,0 +1,52 @@ +.page-layout { + padding-left: $widthSideBar; + height: 100%; + overflow-y: auto; + + &__header { + display: flex; + align-items: center; + justify-content: space-between; + height: toRem(90); + + &--small { + height: toRem(60); + } + } + + &__control { + display: flex; + align-items: center; + height: toRem(90); + } + + &__title { + @include fontSize( + h2, + ( + weight: 500, + ) + ); + } + + &__wrapper { + box-sizing: content-box; + padding: 0 toRem(60); + max-width: toRem(1024); + margin: 0 auto; + position: relative; + height: 100%; + } + + &__tabs { + margin-bottom: toRem(24); + } + + &__spinner { + @include center(); + } + + &__content { + padding-bottom: toRem(20); + } +} diff --git a/src/widgets/layouts/ui/PageLayout/PageLayout.vue b/src/widgets/layouts/ui/PageLayout/PageLayout.vue new file mode 100644 index 0000000..2a494f5 --- /dev/null +++ b/src/widgets/layouts/ui/PageLayout/PageLayout.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/widgets/layouts/ui/PageLayout/index.ts b/src/widgets/layouts/ui/PageLayout/index.ts new file mode 100644 index 0000000..8998991 --- /dev/null +++ b/src/widgets/layouts/ui/PageLayout/index.ts @@ -0,0 +1,3 @@ +import PageLayout, { type PageLayoutProps } from './PageLayout.vue' + +export { PageLayout, type PageLayoutProps } diff --git a/src/widgets/layouts/ui/index.ts b/src/widgets/layouts/ui/index.ts new file mode 100644 index 0000000..c3fa771 --- /dev/null +++ b/src/widgets/layouts/ui/index.ts @@ -0,0 +1 @@ +export * from './PageLayout' diff --git a/src/widgets/modals/index.ts b/src/widgets/modals/index.ts new file mode 100644 index 0000000..1ccc9c5 --- /dev/null +++ b/src/widgets/modals/index.ts @@ -0,0 +1,2 @@ +export * from './ui' +export * from './model' diff --git a/src/widgets/modals/model/index.ts b/src/widgets/modals/model/index.ts new file mode 100644 index 0000000..497dcff --- /dev/null +++ b/src/widgets/modals/model/index.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' +import { reactive } from 'vue' +import type { ModalDialogProps } from '@/widgets/modals/ui/ModalDialog' +import { Stores } from '@/shared' + +export enum ModalsName { + DIALOG = 'dialog', + EDITPATIENT = 'edit-patient', + SELECTQUESTIONAIRE = 'select-questionnaire', + ADDDESTINATION = 'add-destination', + ADDREMINDER = 'add-reminder', + VIEWQUESTIONNAIRE = 'view-questionnaire', + ANALYSISHINTS = 'analysis-hint', + VIEWOPTIMUMS = 'view-optimums', +} + +type ModalsProps = ModalDialogProps + +type ModalsStore = { + active: Maybe + props: Maybe +} + +export const useModalsStore = defineStore(Stores.MODALS, () => { + const state = reactive({ + active: null, + props: null, + }) + + const setModal = ( + modal: ModalsStore['active'], + props?: ModalsStore['props'], + ) => { + state.active = modal + state.props = props + } + + const closeModal = () => { + state.active = null + state.props = null + } + + return { + state, + setModal, + closeModal, + } +}) diff --git a/src/widgets/modals/ui/AnalysisHints/AnalysisHints.scss b/src/widgets/modals/ui/AnalysisHints/AnalysisHints.scss new file mode 100644 index 0000000..8bcb4da --- /dev/null +++ b/src/widgets/modals/ui/AnalysisHints/AnalysisHints.scss @@ -0,0 +1,85 @@ +.analysis-hints { + @include modalBaseStyles(); + + &__content { + width: toRem(430); + gap: toRem(32); + } + + &__notice { + margin-top: toRem(12); + padding: toRem(16); + border-radius: $borderRadius12; + background-color: var(--berry-8); + + &--title { + @include fontSize( + b-14, + ( + weight: 500, + ) + ); + line-height: toRem(21); + margin-bottom: toRem(8); + } + + &--subtitle { + @include fontSize(s-13); + } + + .row { + gap: toRem(12); + } + } + + &__reasons { + @include column(toRem(16)); + &--title { + display: flex; + align-items: center; + gap: toRem(12); + + &-icon { + width: 24px; + height: 24px; + padding: toRem(5); + background-color: var(--brand-8); + border-radius: $borderRadius6; + } + + &-text { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + color: var(--dark-main); + } + } + + &--list { + @include column(toRem(8)); + + &-item { + @include fontSize(s-12); + color: var(--dark-main); + } + + &-empty { + color: var(--dark-64); + } + } + } + + &__close-btn { + position: absolute; + width: 20px; + height: 20px; + top: 20px; + right: 20px; + &:hover { + background: none; + } + } +} diff --git a/src/widgets/modals/ui/AnalysisHints/AnalysisHints.vue b/src/widgets/modals/ui/AnalysisHints/AnalysisHints.vue new file mode 100644 index 0000000..a63732e --- /dev/null +++ b/src/widgets/modals/ui/AnalysisHints/AnalysisHints.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/widgets/modals/ui/AnalysisHints/index.ts b/src/widgets/modals/ui/AnalysisHints/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/widgets/modals/ui/EditPatient/EditPatient.scss b/src/widgets/modals/ui/EditPatient/EditPatient.scss new file mode 100644 index 0000000..cc12a69 --- /dev/null +++ b/src/widgets/modals/ui/EditPatient/EditPatient.scss @@ -0,0 +1,22 @@ +.edit-patient { + @include modalBaseStyles(); + &__body { + margin-top: 24px; + overflow-y: scroll; + max-height: 60vh; + table { + width: 100%; + td, + th { + font-size: toRem(13); + line-height: toRem(20); + padding: toRem(8) 0; + vertical-align: middle; + } + + th { + padding-left: 20px; + } + } + } +} diff --git a/src/widgets/modals/ui/EditPatient/EditPatient.vue b/src/widgets/modals/ui/EditPatient/EditPatient.vue new file mode 100644 index 0000000..87af075 --- /dev/null +++ b/src/widgets/modals/ui/EditPatient/EditPatient.vue @@ -0,0 +1,145 @@ +t + + + diff --git a/src/widgets/modals/ui/EditPatient/index.ts b/src/widgets/modals/ui/EditPatient/index.ts new file mode 100644 index 0000000..c53bc73 --- /dev/null +++ b/src/widgets/modals/ui/EditPatient/index.ts @@ -0,0 +1,3 @@ +import EditPatient, { type EditPatientProps } from './EditPatient.vue' + +export { EditPatient, type EditPatientProps } diff --git a/src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.scss b/src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.scss new file mode 100644 index 0000000..038ce5d --- /dev/null +++ b/src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.scss @@ -0,0 +1,43 @@ +.modal-add-destination { + @include modalBaseStyles(); + + &__content { + width: 600px; + } + + &__body { + margin-top: 24px; + overflow-y: scroll; + overflow-x: hidden; + max-height: 60vh; + @include column(toRem(24)); + + &--section { + @include column(toRem(20)); + + h3 { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &-empty { + color: var(--dark-64); + padding: 0 toRem(16); + } + } + + .input.size-m { + padding: toRem(12) toRem(16); + } + } + + &__buttons { + .space { + flex-grow: 1; + } + } +} diff --git a/src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.vue b/src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.vue new file mode 100644 index 0000000..2cfcf08 --- /dev/null +++ b/src/widgets/modals/ui/ModalAddDestination/ModalAddDestination.vue @@ -0,0 +1,100 @@ + + diff --git a/src/widgets/modals/ui/ModalAddDestination/index.ts b/src/widgets/modals/ui/ModalAddDestination/index.ts new file mode 100644 index 0000000..c97c777 --- /dev/null +++ b/src/widgets/modals/ui/ModalAddDestination/index.ts @@ -0,0 +1,5 @@ +import ModalAddDestination, { + type ModalAddDestinationProps, +} from './ModalAddDestination.vue' + +export { ModalAddDestination, type ModalAddDestinationProps } diff --git a/src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.scss b/src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.scss new file mode 100644 index 0000000..842da21 --- /dev/null +++ b/src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.scss @@ -0,0 +1,48 @@ +.modal-add-reminder { + @include modalBaseStyles(); + &__content { + width: toRem(590); + } + + &__tab { + &--header { + padding: toRem(24) 0; + li { + display: inline-flex; + width: 50%; + justify-content: center; + border: 2px solid var(--dark-14); + padding: toRem(19) 0; + cursor: pointer; + transition: border 0.25s linear; + + &:first-child { + border-radius: $borderRadius12 0 0 $borderRadius12; + } + + &:last-child { + border-radius: 0 $borderRadius12 $borderRadius12 0; + } + + &.active { + border-color: var(--brand-main); + } + } + } + + &--content { + display: flex; + flex-direction: column; + gap: toRem(16); + + &.row { + display: flex; + flex-direction: row; + } + + &.reverse { + flex-direction: column-reverse; + } + } + } +} diff --git a/src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.vue b/src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.vue new file mode 100644 index 0000000..501adf9 --- /dev/null +++ b/src/widgets/modals/ui/ModalAddReminder/ModalAddReminder.vue @@ -0,0 +1,111 @@ + + diff --git a/src/widgets/modals/ui/ModalAddReminder/index.ts b/src/widgets/modals/ui/ModalAddReminder/index.ts new file mode 100644 index 0000000..e224dd5 --- /dev/null +++ b/src/widgets/modals/ui/ModalAddReminder/index.ts @@ -0,0 +1,5 @@ +import ModalAddReminder, { + type ModalAddReminderProps, +} from './ModalAddReminder.vue' + +export { ModalAddReminder, type ModalAddReminderProps } diff --git a/src/widgets/modals/ui/ModalDialog/ModalDialog.scss b/src/widgets/modals/ui/ModalDialog/ModalDialog.scss new file mode 100644 index 0000000..521d73d --- /dev/null +++ b/src/widgets/modals/ui/ModalDialog/ModalDialog.scss @@ -0,0 +1,3 @@ +.modal-dialog { + @include modalBaseStyles(); +} diff --git a/src/widgets/modals/ui/ModalDialog/ModalDialog.vue b/src/widgets/modals/ui/ModalDialog/ModalDialog.vue new file mode 100644 index 0000000..4f9ad3c --- /dev/null +++ b/src/widgets/modals/ui/ModalDialog/ModalDialog.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/widgets/modals/ui/ModalDialog/index.ts b/src/widgets/modals/ui/ModalDialog/index.ts new file mode 100644 index 0000000..8b6e49f --- /dev/null +++ b/src/widgets/modals/ui/ModalDialog/index.ts @@ -0,0 +1,3 @@ +import ModalDialog, { type ModalDialogProps } from './ModalDialog.vue' + +export { ModalDialog, type ModalDialogProps } diff --git a/src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.scss b/src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.scss new file mode 100644 index 0000000..a0bee6e --- /dev/null +++ b/src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.scss @@ -0,0 +1,12 @@ +.modal-popup-base { + @include center('stretch'); + + z-index: 3; + + &__overlay { + @include center('stretch'); + + background-color: #000; + opacity: 0.75; + } +} diff --git a/src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.vue b/src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.vue new file mode 100644 index 0000000..33941a3 --- /dev/null +++ b/src/widgets/modals/ui/ModalPopupBase/ModalPopupBase.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/widgets/modals/ui/ModalPopupBase/index.ts b/src/widgets/modals/ui/ModalPopupBase/index.ts new file mode 100644 index 0000000..8df0126 --- /dev/null +++ b/src/widgets/modals/ui/ModalPopupBase/index.ts @@ -0,0 +1,3 @@ +import ModalPopupBase, { type ModalPopupBaseProps } from './ModalPopupBase.vue' + +export { ModalPopupBase, type ModalPopupBaseProps } diff --git a/src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.scss b/src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.scss new file mode 100644 index 0000000..d59e840 --- /dev/null +++ b/src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.scss @@ -0,0 +1,72 @@ +.modal-view-questionnaire { + @include modalBaseStyles(); + + &__content { + width: toRem(600); + gap: toRem(24); + + .no-question { + color: var(--dark-64); + } + } + + &__list { + @include column(toRem(24)); + + &--item { + @include row(toRem(12)); + + &.icon { + display: flex; + align-items: center; + justify-content: center; + width: 30px; + height: 30px; + border-radius: $borderRadius8; + background-color: var(--blue-20); + } + } + } + + &__question { + &--title { + @include fontSize( + b-14, + ( + weight: 500, + line-height: toRem(21), + ) + ); + color: var(--text-primary); + } + + &--text { + @include fontSize( + s-12, + ( + line-height: toRem(16.5), + ) + ); + color: var(--dark-main); + margin: toRem(8) 0 toRem(4); + } + + &--options { + @include column(toRem(12)); + padding: toRem(8) 0; + + p { + padding-left: toRem(6); + } + + [class$='__label'] { + @include fontSize( + s-12, + ( + line-height: toRem(16.5), + ) + ); + } + } + } +} diff --git a/src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.vue b/src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.vue new file mode 100644 index 0000000..6cc73f5 --- /dev/null +++ b/src/widgets/modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire.vue @@ -0,0 +1,83 @@ + + diff --git a/src/widgets/modals/ui/ModalViewQuestionnaire/index.ts b/src/widgets/modals/ui/ModalViewQuestionnaire/index.ts new file mode 100644 index 0000000..13c61c5 --- /dev/null +++ b/src/widgets/modals/ui/ModalViewQuestionnaire/index.ts @@ -0,0 +1,5 @@ +import ModalViewQuestionnaire, { + type ModalViewQuestionnaireProps, +} from './ModalViewQuestionnaire.vue' + +export { ModalViewQuestionnaire, type ModalViewQuestionnaireProps } diff --git a/src/widgets/modals/ui/Modals/Modals.scss b/src/widgets/modals/ui/Modals/Modals.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/widgets/modals/ui/Modals/Modals.vue b/src/widgets/modals/ui/Modals/Modals.vue new file mode 100644 index 0000000..18b4fb7 --- /dev/null +++ b/src/widgets/modals/ui/Modals/Modals.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/widgets/modals/ui/Modals/index.ts b/src/widgets/modals/ui/Modals/index.ts new file mode 100644 index 0000000..fda77fd --- /dev/null +++ b/src/widgets/modals/ui/Modals/index.ts @@ -0,0 +1,3 @@ +import Modals, { type ModalsProps } from './Modals.vue' + +export { Modals, type ModalsProps } diff --git a/src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.scss b/src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.scss new file mode 100644 index 0000000..49ea335 --- /dev/null +++ b/src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.scss @@ -0,0 +1,14 @@ +.select-questionnaires { + @include modalBaseStyles(); + + &__content { + width: toRem(590); + } + + &__body { + margin-top: 24px; + overflow-y: scroll; + max-height: 60vh; + overflow-x: hidden; + } +} diff --git a/src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.vue b/src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.vue new file mode 100644 index 0000000..f4f2303 --- /dev/null +++ b/src/widgets/modals/ui/SelectQuestionnaires/SelectQuestionnaires.vue @@ -0,0 +1,54 @@ + + diff --git a/src/widgets/modals/ui/SelectQuestionnaires/index.ts b/src/widgets/modals/ui/SelectQuestionnaires/index.ts new file mode 100644 index 0000000..9b0a1a4 --- /dev/null +++ b/src/widgets/modals/ui/SelectQuestionnaires/index.ts @@ -0,0 +1,5 @@ +import SelectQuestionnaires, { + type SelectQuestionnairesProps, +} from './SelectQuestionnaires.vue' + +export { SelectQuestionnaires, type SelectQuestionnairesProps } diff --git a/src/widgets/modals/ui/ViewOptimums/ViewOptimums.scss b/src/widgets/modals/ui/ViewOptimums/ViewOptimums.scss new file mode 100644 index 0000000..1bb541d --- /dev/null +++ b/src/widgets/modals/ui/ViewOptimums/ViewOptimums.scss @@ -0,0 +1,140 @@ +.view-optimums { + &__content { + @include center(); + @include column(); + width: toRem(430); + background-color: var(--white); + border-radius: $borderRadius24; + padding: toRem(32); + } + + &__header { + margin: toRem(24) 0; + + a { + @include fontSize( + s-12, + ( + line-height: toRem(16.5), + ) + ); + color: var(--brand-main); + } + } + + &__title { + display: flex; + align-items: center; + gap: toRem(12); + + &--icon { + display: inline-flex; + background-color: var(--brand-8); + padding: toRem(5); + border-radius: $borderRadius6; + } + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &__description { + margin: toRem(16) 0 toRem(12); + @include fontSize(s-12); + } + + &__tab { + display: inline-flex; + align-items: center; + gap: toRem(12); + + &--item { + height: toRem(26.5); + border-radius: $borderRadius8; + border: 1px solid var(--day-Base-base-04); + padding: toRem(4) toRem(14); + cursor: pointer; + transition: all 0.2s ease-in-out; + + &.active { + padding: toRem(3) toRem(13); + border-width: 2px; + border-color: var(--brand-main); + } + + span { + @include fontSize( + s-12, + ( + line-height: toRem(16.5), + ) + ); + } + + &.disable { + pointer-events: none; + } + } + } + + &__options--list { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + gap: toRem(40); + + .col { + @include column(toRem(12)); + + h4 { + @include fontSize( + s-13, + ( + weight: 500, + ) + ); + } + + div { + padding: toRem(4.5) toRem(12); + border-radius: $borderRadius6; + background: var(--grey-main); + display: flex; + align-items: center; + justify-content: space-between; + gap: toRem(20); + border-radius: $borderRadius6; + border: 1.5px solid var(--grey-main); + transition: opacity 0.2s ease-in; + cursor: pointer; + + i { + opacity: 0; + transition: opacity 0.2s ease-in; + } + + &.active { + border-color: var(--brand-main); + + i { + opacity: 1; + } + } + + &.disable { + pointer-events: none; + } + } + } + } + + &__buttons { + display: flex; + justify-content: flex-end; + gap: toRem(12); + margin-top: toRem(24); + } +} diff --git a/src/widgets/modals/ui/ViewOptimums/ViewOptimums.vue b/src/widgets/modals/ui/ViewOptimums/ViewOptimums.vue new file mode 100644 index 0000000..553b44b --- /dev/null +++ b/src/widgets/modals/ui/ViewOptimums/ViewOptimums.vue @@ -0,0 +1,183 @@ + + diff --git a/src/widgets/modals/ui/ViewOptimums/index.ts b/src/widgets/modals/ui/ViewOptimums/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/widgets/modals/ui/index.ts b/src/widgets/modals/ui/index.ts new file mode 100644 index 0000000..c0635b8 --- /dev/null +++ b/src/widgets/modals/ui/index.ts @@ -0,0 +1,3 @@ +export * from './Modals' +export * from './EditPatient' +export * from './SelectQuestionnaires' diff --git a/src/widgets/navigation/index.ts b/src/widgets/navigation/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/widgets/navigation/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/widgets/navigation/ui/Sidebar/Sidebar.scss b/src/widgets/navigation/ui/Sidebar/Sidebar.scss new file mode 100644 index 0000000..7ac35f5 --- /dev/null +++ b/src/widgets/navigation/ui/Sidebar/Sidebar.scss @@ -0,0 +1,54 @@ +.sidebar { + position: fixed; + top: 0; + left: 0; + border-right: 1px solid var(--grey-border); + width: $widthSideBar; + height: 100%; + background-color: var(--white); + z-index: 2; + + @include column(); + + &__header, + &__content, + &__footer { + border-top: 1px solid var(--grey-border); + } + + &__content, + &__footer { + padding-left: toRem(14); + padding-right: toRem(32); + } + + &__header { + height: toRem(90); + display: flex; + align-items: center; + border: none; + padding: 0 toRem(32); + } + + &__content { + flex-grow: 1; + } + + &__content, + &__footer { + padding-top: toRem(12); + padding-bottom: toRem(24); + } + + &__links-header { + @include fontSize( + s-11, + ( + uppercase: true, + letter-spacing: 1, + ) + ); + + padding: toRem(12) 0 toRem(12) toRem(18); + } +} diff --git a/src/widgets/navigation/ui/Sidebar/Sidebar.vue b/src/widgets/navigation/ui/Sidebar/Sidebar.vue new file mode 100644 index 0000000..7a405c5 --- /dev/null +++ b/src/widgets/navigation/ui/Sidebar/Sidebar.vue @@ -0,0 +1,84 @@ + + + diff --git a/src/widgets/navigation/ui/Sidebar/index.ts b/src/widgets/navigation/ui/Sidebar/index.ts new file mode 100644 index 0000000..dd2dbb3 --- /dev/null +++ b/src/widgets/navigation/ui/Sidebar/index.ts @@ -0,0 +1,3 @@ +import Sidebar, { type SidebarProps } from './Sidebar.vue' + +export { Sidebar, type SidebarProps } diff --git a/src/widgets/navigation/ui/index.ts b/src/widgets/navigation/ui/index.ts new file mode 100644 index 0000000..9130e63 --- /dev/null +++ b/src/widgets/navigation/ui/index.ts @@ -0,0 +1 @@ +export * from './Sidebar' diff --git a/src/widgets/patient/index.ts b/src/widgets/patient/index.ts new file mode 100644 index 0000000..ed58495 --- /dev/null +++ b/src/widgets/patient/index.ts @@ -0,0 +1 @@ +export * from './ui' diff --git a/src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.scss b/src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.scss new file mode 100644 index 0000000..098377a --- /dev/null +++ b/src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.scss @@ -0,0 +1,106 @@ +.patient-analyze-card { + &__content { + display: flex; + gap: toRem(18); + padding-bottom: toRem(24); + + .view-optimums { + display: flex; + align-items: center; + color: var(--brand-main); + @include fontSize( + s-12, + ( + weight: 700, + ) + ); + + i { + margin-left: toRem(4); + } + } + + .table { + &-head { + color: var(--dark-main); + @include fontSize( + s-12, + ( + weight: 700, + ) + ); + } + + &-body { + display: flex; + flex-direction: column; + } + + &-tr { + display: flex; + gap: toRem(18); + } + + &-td { + text-align: center; + padding: toRem(12) 0; + display: flex; + align-items: center; + @include fontSize(s-12); + } + } + + .markers { + flex: 1 0 470px; + .table-tr { + display: flex; + gap: toRem(18); + + .table-td:nth-child(1) { + flex: 1 0 250px; + } + .table-td:nth-child(2) { + flex: 0 0 80px; + } + + div:nth-child(3), + .table-td:nth-child(3) { + flex: 0 0 100px; + } + + .table-td:not(:first-child) { + padding-right: toRem(16); + } + } + } + + .analysis { + overflow-x: scroll; + display: flex; + gap: toRem(20); + + .table-head { + .table-tr { + .table-td { + padding-right: toRem(12); + letter-spacing: -0.24px; + } + } + } + .table-body { + .table-td { + margin: 6px 0; + padding: 0; + } + } + + .table-td { + min-width: 80px; + } + } + + .actions { + flex: 0 0 32px; + } + } +} diff --git a/src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.vue b/src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.vue new file mode 100644 index 0000000..7b07d89 --- /dev/null +++ b/src/widgets/patient/ui/PatientAnalyzeCard/PatientAnalyzeCard.vue @@ -0,0 +1,205 @@ + + diff --git a/src/widgets/patient/ui/PatientAnalyzeCard/index.ts b/src/widgets/patient/ui/PatientAnalyzeCard/index.ts new file mode 100644 index 0000000..0a785a1 --- /dev/null +++ b/src/widgets/patient/ui/PatientAnalyzeCard/index.ts @@ -0,0 +1,5 @@ +import PatientAnalyzeCard, { + type PatientAnalyzeCardProps, +} from './PatientAnalyzeCard.vue' + +export { PatientAnalyzeCard, type PatientAnalyzeCardProps } diff --git a/src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.scss b/src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.scss new file mode 100644 index 0000000..c7cc545 --- /dev/null +++ b/src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.scss @@ -0,0 +1,27 @@ +.patient-analyzes-step { + &__title { + @include fontSize( + h3, + ( + weight: 700, + ) + ); + } + + &__content { + @include column(toRem(20)); + padding: toRem(20) 0; + } + + .row { + padding: toRem(13) 0; + } + + .column { + gap: toRem(8); + } + + .check-box { + padding-left: 0; + } +} diff --git a/src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.vue b/src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.vue new file mode 100644 index 0000000..80e5d50 --- /dev/null +++ b/src/widgets/patient/ui/PatientAnalyzesStep/PatientAnalyzesStep.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/widgets/patient/ui/PatientAnalyzesStep/index.ts b/src/widgets/patient/ui/PatientAnalyzesStep/index.ts new file mode 100644 index 0000000..467a87c --- /dev/null +++ b/src/widgets/patient/ui/PatientAnalyzesStep/index.ts @@ -0,0 +1,5 @@ +import PatientAnalyzesStep, { + type PatientAnalyzesStepProps, +} from './PatientAnalyzesStep.vue' + +export { PatientAnalyzesStep, type PatientAnalyzesStepProps } diff --git a/src/widgets/patient/ui/PatientAppointment/PatientAppointment.scss b/src/widgets/patient/ui/PatientAppointment/PatientAppointment.scss new file mode 100644 index 0000000..72cf309 --- /dev/null +++ b/src/widgets/patient/ui/PatientAppointment/PatientAppointment.scss @@ -0,0 +1,89 @@ +.patient-appointment { + margin-top: toRem(20); + &__title { + @include fontSize( + h3, + ( + weight: 700, + ) + ); + margin-bottom: toRem(13); + } + + &__list { + ul { + display: flex; + flex-direction: column; + gap: toRem(8); + } + + ul + button { + margin-top: toRem(20); + } + + &--item { + list-style: none; + display: flex; + justify-content: space-between; + align-items: center; + padding: toRem(4) toRem(12); + border-radius: $borderRadius6; + cursor: pointer; + + &:hover { + background-color: var(--grey-64); + } + + &-title { + display: flex; + align-items: center; + min-height: 28px; + line-height: 1; + flex: 1 1 auto; + } + } + } + + &__body { + padding: toRem(24) 0; + @include column(toRem(20)); + + .card { + gap: toRem(16); + } + } + + &__card--title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + } + + &__course { + display: flex; + flex-direction: column; + gap: toRem(16); + + &--item { + display: flex; + justify-content: space-between; + align-items: center; + background: var(--blue-20); + padding: toRem(14) toRem(16); + border-radius: $borderRadius12; + cursor: pointer; + + &-title { + @include fontSize(b-14); + color: var(--dark-main); + } + + &-actions { + @include row(toRem(8)); + } + } + } +} diff --git a/src/widgets/patient/ui/PatientAppointment/PatientAppointment.vue b/src/widgets/patient/ui/PatientAppointment/PatientAppointment.vue new file mode 100644 index 0000000..f45f381 --- /dev/null +++ b/src/widgets/patient/ui/PatientAppointment/PatientAppointment.vue @@ -0,0 +1,182 @@ + + diff --git a/src/widgets/patient/ui/PatientAppointment/index.ts b/src/widgets/patient/ui/PatientAppointment/index.ts new file mode 100644 index 0000000..4376944 --- /dev/null +++ b/src/widgets/patient/ui/PatientAppointment/index.ts @@ -0,0 +1,5 @@ +import PatientAppointment, { + type PatientAppointmentProps, +} from './PatientAppointment.vue' + +export { PatientAppointment, type PatientAppointmentProps } diff --git a/src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.scss b/src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.scss new file mode 100644 index 0000000..c49454d --- /dev/null +++ b/src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.scss @@ -0,0 +1,63 @@ +.patient-files-step { + padding-bottom: toRem(60); + + &__title { + letter-spacing: -0.4px; + color: var(--dark-main, #364153); + font-size: toRem(20); + font-weight: 700; + line-height: 1.5; + } + + &__description { + margin-top: toRem(4); + color: var(--dark-main, #364153); + font-size: toRem(14); + font-weight: 400; + line-height: 1.5; + } + + &__list { + @include column(toRem(7)); + + margin-top: toRem(13); + } + + &__item { + @include row(toRem(8)); + + max-width: toRem(474); + padding: toRem(4) 0; + } + + &__item-inner { + justify-content: flex-start; + width: 100%; + height: 100%; + padding: toRem(6) toRem(12); + } + + &__item-icon { + display: flex; + justify-content: center; + align-items: center; + flex-shrink: 0; + width: toRem(24); + height: toRem(24); + padding: toRem(6); + border-radius: $borderRadius6; + background: var(--blue-20, rgba(134, 200, 241, 0.2)); + } + + &__item-text { + overflow: hidden; + margin-right: auto; + white-space: nowrap; + letter-spacing: -0.14px; + text-overflow: ellipsis; + color: var(--dark-main, #364153); + font-size: toRem(14); + font-weight: 500; + line-height: 1.5; + } +} diff --git a/src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.vue b/src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.vue new file mode 100644 index 0000000..c2fbf05 --- /dev/null +++ b/src/widgets/patient/ui/PatientFilesStep/PatientFilesStep.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/widgets/patient/ui/PatientFilesStep/index.ts b/src/widgets/patient/ui/PatientFilesStep/index.ts new file mode 100644 index 0000000..7021b9c --- /dev/null +++ b/src/widgets/patient/ui/PatientFilesStep/index.ts @@ -0,0 +1,5 @@ +import PatientFilesStep, { + type PatientFilesStepProps, +} from './PatientFilesStep.vue' + +export { PatientFilesStep, type PatientFilesStepProps } diff --git a/src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.scss b/src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.scss new file mode 100644 index 0000000..ac028db --- /dev/null +++ b/src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.scss @@ -0,0 +1,179 @@ +.patient-health-matrix-step { + &__title { + padding: toRem(12) 0; + @include fontSize( + h3, + ( + weight: 700, + ) + ); + } + + &__list { + padding: toRem(16) 0 toRem(24); + + .dropdown__menu { + z-index: 2; + } + + ul { + display: flex; + flex-direction: column; + gap: toRem(8); + position: relative; + } + + ul + button { + margin-top: toRem(20); + } + + &--item { + list-style: none; + display: flex; + justify-content: space-between; + align-items: center; + padding: toRem(4) toRem(12); + border-radius: $borderRadius6; + cursor: pointer; + + &:hover { + background-color: var(--grey-64); + } + + &-title { + display: flex; + align-items: center; + min-height: 28px; + line-height: 1; + flex: 1 1 auto; + } + } + } + + &__content { + display: flex; + flex-direction: column; + + &--main { + display: grid; + grid-template-columns: repeat(4, 244px); + gap: toRem(16); + position: relative; + padding-bottom: toRem(28); + + &::before { + content: ''; + width: 2px; + height: 100%; + position: absolute; + left: 244px; + background-color: var(--grey-border); + } + + &-block { + &:nth-child(1), + &:nth-child(5), + &:nth-child(9) { + padding-right: toRem(15); + } + min-height: 126px; + } + } + + &--bottom { + &-title { + @include fontSize( + b-16, + ( + weight: 500, + ) + ); + padding: toRem(18) 0; + border-top: 2px solid var(--grey-border); + border-bottom: 2px solid var(--grey-border); + } + + &-content { + display: flex; + gap: toRem(16); + padding: toRem(18) 0; + + & > div { + height: inherit; + min-height: 126px; + } + } + } + } + + .dropdown__control, + .tooltip__parent { + i, + .state { + position: relative; + z-index: -1; + } + } + + .dropdown__menu { + z-index: 2; + } + + .state { + display: block; + padding: toRem(6); + border-radius: $borderRadius6; + + span { + display: block; + width: 8px; + height: 8px; + border-radius: $borderRadius2; + } + + &-good { + background-color: var(--green-14); + span { + background-color: var(--green-main); + } + } + &-normal { + background-color: var(--orange-20); + span { + background-color: var(--orange-main); + } + } + &-bad { + background-color: var(--berry-8); + span { + background-color: var(--berry-main); + } + } + + &--list { + display: flex; + flex-direction: column; + gap: toRem(6); + + &-item { + height: toRem(32); + display: flex; + align-items: center; + gap: toRem(12); + padding: 0 toRem(8); + cursor: pointer; + border-radius: $borderRadius6; + + &:hover { + background-color: var(--grey-64); + } + + @include fontSize(s-13); + + .state { + padding: 0; + } + } + } + } +} diff --git a/src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.vue b/src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.vue new file mode 100644 index 0000000..d594be8 --- /dev/null +++ b/src/widgets/patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep.vue @@ -0,0 +1,233 @@ + + + diff --git a/src/widgets/patient/ui/PatientHealthMatrixStep/index.ts b/src/widgets/patient/ui/PatientHealthMatrixStep/index.ts new file mode 100644 index 0000000..19c30da --- /dev/null +++ b/src/widgets/patient/ui/PatientHealthMatrixStep/index.ts @@ -0,0 +1,5 @@ +import PatientHealthMatrixStep, { + type PatientHealthMatrixStepProps, +} from './PatientHealthMatrixStep.vue' + +export { PatientHealthMatrixStep, type PatientHealthMatrixStepProps } diff --git a/src/widgets/patient/ui/PatientMainStep/PatientMainStep.scss b/src/widgets/patient/ui/PatientMainStep/PatientMainStep.scss new file mode 100644 index 0000000..f66c9f2 --- /dev/null +++ b/src/widgets/patient/ui/PatientMainStep/PatientMainStep.scss @@ -0,0 +1,43 @@ +.patient-card { + @include row(toRem(30)); + + @include responsive('lg') { + @include column(toRem(20)); + } + + &--aside { + flex: 0 0 293px; + @include column(toRem(12)); + &--block { + flex: 0 0 auto; + padding: toRem(24); + border-radius: toRem(20); + background: #f4f0ff; + } + } + + &--content { + flex: 1 1 auto; + display: flex; + flex-direction: column; + gap: toRem(20); + } + + .avatar { + width: 5.75rem; + height: 5.5rem; + border-radius: 3.75rem; + } + + a { + color: var(--purple-main); + display: flex; + align-items: flex-start; + span { + font-size: toRem(13); + line-height: toRem(16); + border-bottom: 1px solid var(--purple-main); + margin: 0 toRem(6) 0 0; + } + } +} diff --git a/src/widgets/patient/ui/PatientMainStep/PatientMainStep.vue b/src/widgets/patient/ui/PatientMainStep/PatientMainStep.vue new file mode 100644 index 0000000..cbdf580 --- /dev/null +++ b/src/widgets/patient/ui/PatientMainStep/PatientMainStep.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/widgets/patient/ui/PatientMainStep/index.ts b/src/widgets/patient/ui/PatientMainStep/index.ts new file mode 100644 index 0000000..167d7af --- /dev/null +++ b/src/widgets/patient/ui/PatientMainStep/index.ts @@ -0,0 +1,5 @@ +import PatientMainStep, { + type PatientMainStepProps, +} from './PatientMainStep.vue' + +export { PatientMainStep, type PatientMainStepProps } diff --git a/src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.scss b/src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.scss new file mode 100644 index 0000000..9d9ae2f --- /dev/null +++ b/src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.scss @@ -0,0 +1,11 @@ +.patient-purpose-content { + &__header { + display: flex; + align-items: center; + margin-bottom: toRem(20); + } + + &__content { + @include column(toRem(20)); + } +} diff --git a/src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.vue b/src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.vue new file mode 100644 index 0000000..5904bc5 --- /dev/null +++ b/src/widgets/patient/ui/PatientPurposeContent/PatientPurposeContent.vue @@ -0,0 +1,97 @@ + + diff --git a/src/widgets/patient/ui/PatientPurposeContent/index.ts b/src/widgets/patient/ui/PatientPurposeContent/index.ts new file mode 100644 index 0000000..779e8e8 --- /dev/null +++ b/src/widgets/patient/ui/PatientPurposeContent/index.ts @@ -0,0 +1,5 @@ +import PatientPurposeContent, { + type PatientPurposeContentProps, +} from './PatientPurposeContent.vue' + +export { PatientPurposeContent, type PatientPurposeContentProps } diff --git a/src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.scss b/src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.scss new file mode 100644 index 0000000..dc96cb0 --- /dev/null +++ b/src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.scss @@ -0,0 +1,65 @@ +.patient-purpose-step { + &__title { + @include fontSize( + h3, + ( + weight: 700, + ) + ); + } + &__list { + padding: toRem(16) 0 toRem(24); + + .dropdown__menu { + z-index: 3; + } + + ul { + display: flex; + flex-direction: column; + gap: toRem(8); + position: relative; + } + + ul + button { + margin-top: toRem(20); + } + + &--item { + list-style: none; + display: flex; + justify-content: space-between; + align-items: center; + padding: toRem(4) toRem(12); + border-radius: $borderRadius6; + cursor: pointer; + + &:hover { + background-color: var(--grey-64); + } + + &-title { + display: flex; + align-items: center; + min-height: 28px; + line-height: 1; + flex: 1 1 auto; + } + } + } + + &__add { + display: flex; + flex-direction: column; + gap: toRem(24); + + &--title { + @include fontSize( + b-16, + ( + weight: 700, + ) + ); + } + } +} diff --git a/src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.vue b/src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.vue new file mode 100644 index 0000000..421b0de --- /dev/null +++ b/src/widgets/patient/ui/PatientPurposeStep/PatientPurposeStep.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/widgets/patient/ui/PatientPurposeStep/index.ts b/src/widgets/patient/ui/PatientPurposeStep/index.ts new file mode 100644 index 0000000..c3a794e --- /dev/null +++ b/src/widgets/patient/ui/PatientPurposeStep/index.ts @@ -0,0 +1,5 @@ +import PatientPurposeStep, { + type PatientPurposeStepProps, +} from './PatientPurposeStep.vue' + +export { PatientPurposeStep, type PatientPurposeStepProps } diff --git a/src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.scss b/src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.scss new file mode 100644 index 0000000..c62f810 --- /dev/null +++ b/src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.scss @@ -0,0 +1,30 @@ +.patient-questionnaire-step { + @include row(toRem(32)); + + @include responsive('lg') { + @include column(toRem(20)); + } + + &__title { + @include fontSize( + h3, + ( + weight: 700, + ) + ); + } + + &__content { + flex: 1 1 auto; + display: flex; + flex-direction: column; + gap: toRem(20); + } + + &__aside { + flex: 0 0 312px; + display: flex; + flex-direction: column; + gap: toRem(20); + } +} diff --git a/src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.vue b/src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.vue new file mode 100644 index 0000000..f21f0db --- /dev/null +++ b/src/widgets/patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/widgets/patient/ui/PatientQuestionnaireStep/index.ts b/src/widgets/patient/ui/PatientQuestionnaireStep/index.ts new file mode 100644 index 0000000..0691f82 --- /dev/null +++ b/src/widgets/patient/ui/PatientQuestionnaireStep/index.ts @@ -0,0 +1,5 @@ +import PatientQuestionnaireStep, { + type PatientQuestionnaireStepProps, +} from './PatientQuestionnaireStep.vue' + +export { PatientQuestionnaireStep, type PatientQuestionnaireStepProps } diff --git a/src/widgets/patient/ui/PatientTable/PatientTable.scss b/src/widgets/patient/ui/PatientTable/PatientTable.scss new file mode 100644 index 0000000..9965ea6 --- /dev/null +++ b/src/widgets/patient/ui/PatientTable/PatientTable.scss @@ -0,0 +1,109 @@ +.patient-table { + $b: &; + + &__content { + @include column(toRem(8)); + margin-top: toRem(16); + } + + &__click-wrapper, + &__row, + &__header { + display: flex; + } + + &__click-wrapper { + width: 100%; + } + + &__row { + align-items: center; + transition: background-color 0.3s ease; + cursor: pointer; + border-radius: $borderRadius16; + height: toRem(60); + + &:hover { + background-color: var(--grey-64); + } + } + + &__row-actions { + display: flex; + justify-content: flex-end; + } + + &__header { + border-bottom: 1px solid var(--grey-border); + } + + &__column { + flex-grow: 1; + padding: toRem(12); + display: flex; + align-items: center; + + &:last-child { + justify-content: end; + } + } + + &__header-cell { + display: flex; + align-items: center; + color: var(--grey); + height: toRem(42); + padding: 0 toRem(12); + + @include fontSize( + s-12, + ( + weight: 500, + ) + ); + + &:last-child { + justify-content: end; + } + } + + &__cell { + display: flex; + gap: toRem(4); + + @include fontSize(s-12); + + span { + display: block; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + } + } + + &__search { + display: flex; + gap: toRem(4); + align-items: center; + height: 100%; + + input { + width: toRem(150); + } + + i { + font-size: toRem(12); + } + } + + &.is-deletable { + #{$b}__click-wrapper { + width: calc(100% - #{toRem(20)}); + } + + #{$b}__row { + padding-right: toRem(12); + } + } +} diff --git a/src/widgets/patient/ui/PatientTable/PatientTable.vue b/src/widgets/patient/ui/PatientTable/PatientTable.vue new file mode 100644 index 0000000..daa54aa --- /dev/null +++ b/src/widgets/patient/ui/PatientTable/PatientTable.vue @@ -0,0 +1,168 @@ + + + diff --git a/src/widgets/patient/ui/PatientTable/data.ts b/src/widgets/patient/ui/PatientTable/data.ts new file mode 100644 index 0000000..fd4d685 --- /dev/null +++ b/src/widgets/patient/ui/PatientTable/data.ts @@ -0,0 +1,104 @@ +import { declension, formattingDateForClient, getGender } from '@/shared' +import type { Columns } from './PatientTable.vue' + +export const columnsData: Record< + Columns, + { + name: string + order: number + width: number + view?: { + component?: { + name: string + propName?: string + bind?: any + } + formatting?: any + } + } +> = { + patient: { + name: 'ФИО', + order: 2, + width: 270, + view: { + component: { + name: 'user-base', + bind: { + size: 'xs', + }, + }, + }, + }, + age: { + name: 'Возраст', + order: 3, + width: 100, + view: { + formatting: (age: number) => + declension(age, ['год', 'года', 'лет']), + }, + }, + contact: { + name: 'Контактные данные', + order: 11, + width: 190, + view: { + component: { + name: 'link', + }, + }, + }, + gender: { + name: 'Пол', + order: 4, + width: 100, + view: { + formatting: getGender, + }, + }, + time: { + name: 'Время приема', + order: 1, + width: 100, + }, + actions: { + name: 'Действие', + order: 11, + width: 200, + }, + type: { + name: 'Тип', + order: 1, + width: 100, + }, + applicationDate: { + name: 'Дата заявки', + order: 5, + width: 125, + view: { + formatting: (date: string) => formattingDateForClient(date), + }, + }, + description: { + name: 'Описание', + order: 1, + width: 100, + }, + request: { + name: 'Запрос', + order: 5, + width: 160, + view: { + component: { + name: 'patient-request', + propName: 'request', + }, + }, + }, + reminder: { + name: 'Напоминание', + order: 6, + width: 120, + }, +} diff --git a/src/widgets/patient/ui/PatientTable/index.ts b/src/widgets/patient/ui/PatientTable/index.ts new file mode 100644 index 0000000..9050bd7 --- /dev/null +++ b/src/widgets/patient/ui/PatientTable/index.ts @@ -0,0 +1,3 @@ +import PatientTable, { type PatientTableProps } from './PatientTable.vue' + +export { PatientTable, type PatientTableProps } diff --git a/src/widgets/patient/ui/index.ts b/src/widgets/patient/ui/index.ts new file mode 100644 index 0000000..53659d7 --- /dev/null +++ b/src/widgets/patient/ui/index.ts @@ -0,0 +1,10 @@ +export * from './PatientTable' +export * from './PatientMainStep' +export * from './PatientQuestionnaireStep' +export * from './PatientAnalyzesStep' +export * from './PatientFilesStep' +export * from './PatientHealthMatrixStep' +export * from './PatientPurposeStep' +export * from './PatientAppointment' +export * from './PatientAnalyzeCard' +export * from './PatientPurposeContent' diff --git a/src/widgets/widgets.scss b/src/widgets/widgets.scss new file mode 100644 index 0000000..79712ff --- /dev/null +++ b/src/widgets/widgets.scss @@ -0,0 +1,28 @@ +/*------ Layout -------*/ +@import 'layouts/ui/PageLayout/PageLayout'; + +/*------ Modal -------*/ +@import 'modals/ui/ModalDialog/ModalDialog'; +@import 'modals/ui/ModalPopupBase/ModalPopupBase'; +@import 'modals/ui/EditPatient/EditPatient'; +@import 'modals/ui/ModalAddDestination/ModalAddDestination'; +@import 'modals/ui/SelectQuestionnaires/SelectQuestionnaires'; +@import 'modals/ui/ModalAddReminder/ModalAddReminder'; +@import 'modals/ui/ModalViewQuestionnaire/ModalViewQuestionnaire'; +@import 'modals/ui/AnalysisHints/AnalysisHints'; +@import 'modals/ui/ViewOptimums/ViewOptimums'; + +/*------ Other -------*/ +@import 'navigation/ui/Sidebar/Sidebar'; + +/*------ Patient -------*/ +@import 'patient/ui/PatientTable/PatientTable'; +@import 'patient/ui/PatientFilesStep/PatientFilesStep'; +@import 'patient/ui/PatientMainStep/PatientMainStep.scss'; +@import 'patient/ui/PatientAppointment/PatientAppointment'; +@import 'patient/ui/PatientQuestionnaireStep/PatientQuestionnaireStep'; +@import 'patient/ui/PatientAnalyzesStep/PatientAnalyzesStep'; +@import 'patient/ui/PatientAnalyzeCard/PatientAnalyzeCard'; +@import 'patient/ui/PatientHealthMatrixStep/PatientHealthMatrixStep'; +@import 'patient/ui/PatientPurposeStep/PatientPurposeStep'; +@import 'patient/ui/PatientPurposeContent/PatientPurposeContent'; diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..c30b8db --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,23 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": [ + "env.d.ts", + "src/**/*", + "src/**/*.vue" + ], + "exclude": [ + "src/**/__tests__/*" + ], + "compilerOptions": { + "composite": true, + "baseUrl": ".", + "typeRoots": [ + "./src" + ], + "paths": { + "@/*": [ + "./src/*" + ] + } + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..dee96be --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,16 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..882bd39 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,17 @@ +import { fileURLToPath, URL } from 'node:url' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import { defineConfig } from 'vite' +import ViteVue3Bem from 'vite-plugin-vue3-bem' + +// https://vitejs.dev/config/ +export default defineConfig({ + //@ts-ignore + plugins: [vue(), ViteVue3Bem(), vueJsx()], + + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, +})