From 84617fe4561d5dd656dbd3f8b0c17d1168506cc5 Mon Sep 17 00:00:00 2001 From: PatrykKuniczak <64608510+PatrykKuniczak@users.noreply.github.com> Date: Tue, 12 Dec 2023 17:57:03 +0100 Subject: [PATCH] v1.0.0 (#208) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create CSS.md create instuction for css * Create HOOKS.md create instuction for hooks * Create DIRS_STRUCTURE create DIRS_STRUCTURE file * Update DIRS_STRUCTURE * Create NAMING_CONVENTION.md * Update and rename DIRS_STRUCTURE to DIRS_STRUCTURE.md * Update NAMING_CONVENTION.md * Update NAMING_CONVENTION.md * Create CONTRIBUTION.md * Update DIRS_STRUCTURE.md * feature/pretter-and-eslint-configure (#16) * configure prettier * configure ts-eslint * update package.json * update instructions * update CSS.md * feature/configure-2-themes-#17 (#18) * configured sc + hooks-ts for theme providing * clean: global-styles structure * Merge pull request #20 * config: configure mui base with mui system * feature/videos-page-ui-#9 (#22) * chore:create search-bar * update CSS.md * chore: create title header * chore: separate search bar functions into hook * update HOOKS.md * chore: create thumbnail * chore: create avatar * chore: change naming(add "Styled" prefix for components) and change exporting approach * update docs * chore: create textMixin and extend theme * chore: shortify title-header.ts (With textMixin) * chore: Create author name * chore: Create video information * update DIRS_STRUCTURE.md * update CSS.md * chore: update video-information (create dot separator and text elipsis) and change name to '-info' and move to new dir * chore: add new font family and upgrade index.html performance * chore: expand font size and remove fontFamily from components * chore: move files to new dirs and rename text-mixin * chore: Create authorInfo component * chore: Create videoInfos component * chore: Create videoContent component * chore: Create mainContainer component * chore: Rename App -> app * chore: change StyledVideoContent html tag * chore: Create main-content component * chore: change file names and corresponded html tag, use flex gap over margin for mui components * clean: remove unnecessary 'return' statements and borderRadius from main-content * update CSS.md * chore: Create scroll-bar for videos-section * chore: Create several dummy articles * chore: Create default borderRadius size and update components * clean: create blank space, for good code structure * chore: Add search bar for main view * update DIRS_STRUCTURE.md * clean: fix typo in HOOKS.md * clean: shortify function * update CSS.md * clean: Create required structure for css * update DIRS_STRUCTURE.md * clean: shortify function * clean: remove unnecessary css prop * clean: create blank space * clean: fix typo in css prop * chore: restructure theme * update package-lock.json * chore: Create search-icon component * chore: Reformat useFocus hook * chore: update theme and reformat whole search-bar (split, redirect and recreate without mui base Input) * update DIRS_STRUCTURE.md * chore: Create cleaning search bar on 'esc' * update HOOKS.md * chore: Create scrollbar only on hover * chore: Update light theme and components * chore: Create dark theme * update DIRS_STRUCTURE.md * update CSS.md * clean: remove unnecessary prop in themes and restructure code * feature/create navbar and header (#27) * update CSS.md * update HOOKS.md * update NAMING_AND_RULES_CONVENTION.md * update themes * chore: Create theme switch * chore: Change theme-switch name for correct * chore: Create header container * chore: Create page wrapper and fit dependent components * update NAMING_AND_RULES_CONVENTION.md * chore: Create smooth transition between themes * chore: Move files to proper directory * update DIRS_STRUCTURE.md * fix typo * chore: Restructure styles approach and create common types * chore: Add basic routing * chore: Rename icon component * update DIRS_STRUCTURE.md * clean: restructure code * chore: Create button * chore: Create navbar * clean: Restructure theme switch * clean: Fix naming in theme switch * clean: clean code * clean: Rename router browser * Merge pull request #28 * chore: Fix videos section padding and scrollbar * Merge pull request #29 * update DIRS_STRUCTURE.md * chore: Update routing dir files * chore: Split videos route, create scrollbar as mixin and create title… * clean: Move search-bar-wrapper.ts to proper dir * clean: Group atomic components * Merge pull request #31 * chore: Update themes * chore: Add 'alt' for icons * chore: Restructure files(Create subdirectory) and move search bar * clean: Remove unnecessary prop * chore: Create store components * chore: Refactor videos-section.tsx (Use generic item component) * chore: Create store routing and navigation between pages * update DIRS_STRUCTURE.md and NAMING_AND_RULES_CONVENTION.md * chore: Rename files and restructure project * chore: Add new color for themes * chore: Create delete confirmation modal * chore: Fix delete-modal position * chore: Create editable input for store * chore: Change global font * chore: Create generic logic hook and fix store keyword overlapping * clean: Change delete-modal-button dir and clean code * clean: Clean delete-modal.tsx * clean: Delete unused hook * update CSS.md * clean: Restructure css * clean: Add 'Styled' prefix * update CSS.md * clean: Restructure CSS * Merge pull request #32 * chore: Fix dot separator and split components in videos article * chore: Create home page and create focus on navigation * clean: Restructure search-bar.tsx * Merge pull request #33 * chore: update packages * Merge pull request #34 * update DIRS_STRUCTURE.md * chore: Restructure components * RAW_feature/Create Auth Page UI (#37) * chore: Create page-mixin * clean: Change css props name * chore: Delete app component and refactor global routing * chore: Add sx prop to theme-switch * RAW_chore: Create Auth Page UI (Commented code for save) * Feature/Create fatal errors snackbar (#44) * Implement snackbar component * Simplify and reformat code * Add styling for error and use unstable_sx * Remove unused css property * feat: Refactor snackbar.tsx Split component for custom hook and tsx part and change component behavior(remove unnecessary props) --------- Co-authored-by: PatrykKuniczak <64608510+PatrykKuniczak@users.noreply.github.com> * Fix/theme switch (#43) * Fix bug with switching theme button * Fix theme flickering on page refresh * Improve hook structure * Improve code style * fix: Running animation on theme change on refresh or reload page. (#47) And i fix issue when default 'system' value is set in LS, cause on change from 'system' sometimes nothing happened --------- Co-authored-by: PatrykKuniczak <64608510+PatrykKuniczak@users.noreply.github.com> * Fix/focus state #24 (#46) * Fix search focus state and focus styling for button * Fix button shape changing when focused * Fix focus trap and make outline thinner on focus * Disable tab for modal * Add eslint plugin for react (#50) * Searching mechanism (#49) * Implement searching mechanism using dummy data * Fix showing wrong results while searching * Extract logic for search to separate hook * Move function for cleaning content to search hook * Change name * Make hook more generic * Add prop with search param key * reformat(search-mechanism): Remove 'key' props and change params handling approach from useSearch --------- Co-authored-by: PatrykKuniczak <64608510+patrykkuniczak@users.noreply.github.com> * Dropdown with sign out option (#48) * Update mui dependencies * Add profile dropdown with sign out option * Remove redundant properties * Use vars for props and adjust cursor and outline * Code formatting and add cursor pointer * Extract profile code to separated component * reformat(dropdown): add blank space --------- Co-authored-by: Patryk Kuniczak * Refactor editing hook and add creating option (#53) * Refactor editing hook and add creating option * Improve placeholders * Improve CSS properties order * test * improvement: create styles for error hint * refactor: clean code * improvement: rename basicLogic hook * improvement: new deps for package-lock.json --------- Co-authored-by: Bartosz Wysowski Co-authored-by: Patryk Kuniczak * Create google oauth and express session (#54) * feat(integrate-google-auth): Init project and integrate google passport * feat(google-oauth): Create session cookie name as const * feat(integrate-google-auth): Create session store and add guard for it * feat(integrate-google-auth): Create envs and configure * Update CONTRIBUTION.md * Remove unused value from env files * feat(google-oauth): Create google button * refactor: wrap project by template for react + ts + vite Chrome extension * fix(google-auth): fix issues with auth process * fix(google-auth): change status code from 403 to 401 in session guard * feat(google-oauth): handle refreshing access token when is expired * fix(google-oauth): fix delay on session checking * fix(google-oauth): remove unnecessary validation in session guard and improve who it's works * improvement: remove unnecessary import in typeOrm config * feat(google-oauth): create removing account, and refactor creating oauth instances Now only google credentials is created instead of oauth instance * improvement: simplify envs * fix(google-oauth): Change http method to correct for remove account endpoint * feat(google-oauth): configure and create swagger docs * fix(google-oauth): change script in package.json for production, for properly one * improvement(google-oauth): create docs for nest * improvement: move packages to proper place in package.json * refactor: move files from src to utils * refactor: update example env * improvement: improve comment in constants * improvement(google-oauth): add self-closing script for the static html on redirect * improvement: change type for withSuspence and create withErrorBoundary * refactor: restructure utils folder * improvement(readme): update readme and instructions * feat(google-oauth): create protector for pages * improvement: add development mode to watch scripts * improvement: move dev and firefox env from vite env config to proper type file * improvement: create wrapper for providers * fix: move swagger config to proper folder * fix: add forgotten prop in example.env file * fix: fix several issue after rebase Fix also bug with error message position on edit Next with navigation to videos page And add missing 'Styled' prefixes for some components * fix: spelling in README.md * fix: move mapped-types package to devDeps in package.json * fix: description on swagger decorator * fix: remove unique from avatar in user entity * fix: import of TVoid type (#97) * Feat/create navbar styles #91 (#99) * fix: import of TVoid type (#97) * Update button.ts * style: box shadow for currently used navbar option * style: restructure styles hierarchy --------- Co-authored-by: Bartosz Wysowski * feat: create configs (#100) * feat: create eslint, commitlint, prettier and husky configs for BE and FE * fix: change NODE_ENV type for start script on BE * fix: add missing providers in auth module * fix: add mistaken removed npm package (#101) * feat: use real avatar and fix overflowing content (#104) * feat: add missing accessibility attributes (#106) * feat: add sign out logic (#105) * feat: add logic for sign out * refactor: remove redundant memo * fix: logout and remove account (#110) * fix: destroy session on account remove remove session removing on logout (cause passport do it) and update passport to 0.6.0 * fix: spelling in swagger description * Fix/eslint prettier config (#107) * fix: fix eslint config and conflicts between prettier and eslint Also fix wrong import of useTernaryDarkMode * docs: create info about eslint and prettier in README.md on FE * docs: create info about CRLF in README.md on FE * docs: fix wrong info in README about git crlf * docs: add forgotten options about eslint and prettier to README.md * fix: remove useTabs from prettier on FE and reconfigure prettier on BE also currently resolve conflicts between eslint and prettier * fix: change order of lint-staged script * fix: resolve conflicts * style: remove blank space from IUser interface * docs: update CONTRIBUTION.md * docs: remove 1 config way of FE README.md * fix: add missing husky install script and update CONTRIBUTION.md * fix: resolve conflicts * fix: run prettier for both apps on new config * Feat/update backend packages (#112) * improvement: update packages on BE and use SWC for v10 nest also remove tests from tsconfig * improvement: remove "^" from package.json * refactor: run prettier * Feat/update frontent packages #111 (#113) * docs: update packages and get new changes from template repo * refactor: run prettier * fix: run prettier for both apps * fix: back DOCTYPE in upper case * docs: create new CONTRIBUTION from old README on both app (#114) * docs: connect both README.md into 1 CONTRIBUTION.md * docs: update CONTRIBUTION.md * fix(add-input.tsx): remove-StyleErrorMessage (#115) * fix: changed style of popup error to avoid bug (#116) * feat: implement removing account (#117) * feat: implement removing account * refactor: improve types and use render props for modal * Merge pull request #121 * fix: remove clearing cookie on failed logout * Improvement: removing onMouseOver focus from search bars (#120) * improvement: removing onMouseOver focus * fix: remove unused focus props from searchBar * Improvement: Add InputKeyboard validation as custom hook (#119) * feat: add validation to KeyboardInput * fix(eslintrc): add new rule * improvement: changing validation into custom hook * fix: mistake with max validationNumber * fix: add all requested changes * Update react-app/.eslintrc --------- Co-authored-by: PatrykKuniczak <64608510+PatrykKuniczak@users.noreply.github.com> * feat(keywords): create crud (#123) * Feat: add item to context menu #63 (#125) * feat: add option to context menu for adding new keyword * fix: type for create properties * feat: implement notifications for content (#118) * feat: implement notifications for content * refactor: separate notification components * improvement: naming and alt * fix: styling on different pages * style: simplify properties * improvement: move theme files to avoid duplication * fix: typo * fix: display properly close X button * improvement: add hover styling on close button * improvement: hover styling * style: change variable name * improvement: add active state and fix icons --------- Co-authored-by: Patryk Kuniczak * Merge pull request #127 * fix: keyword dir name and entity * fix: add readonly on user entity * Fix: Change focus on click edit button (#122) * fix: add autoFocus to remove bug * feat: implement crud * improvement: decouple modal component * improvement: simplify changing modal visibility * improvement: adding and editing input validation * fix: not updating list of keywords and button state * improvement: validation and remove console.log * fix: changing modal visibility * fix: add autoFocus to remove bug * improvement: closing one input when user try to open other one * fix: change position of line under edit icon * style: create blank space --------- Co-authored-by: masterHAWK99 Co-authored-by: Patryk Kuniczak Co-authored-by: PatrykKuniczak <64608510+PatrykKuniczak@users.noreply.github.com> * feat: add 'watch later' button link to playlist (#129) * feat: implement crud (#126) * fix: bug with edit input on click close input button * fix: validation state after keyword was added --------- Co-authored-by: Patryk Kuniczak * fix: type for focus in home page (#131) * Merge pull request #137 * fix: change full object over id from keyword POST * Merge pull request #142 * fix: change get to post on /auth/me and fix error for custom axios in… * chore: bump rollup version (#141) * chore: bump rollup version * fix: update package-lock.json --------- Co-authored-by: Patryk Kuniczak * Feat: Add react-toastify lib & logout toast when 401 error occurs (#124) * feat: add react-toastify lib * feat: add toast when logout through 401 error * feat: update toast features (autoclose, width to close) * feat: moving up error toast in execution chain * feat: add toasts for login, logout, delete, edit * fix: add all requested changes * feat: change notification into react toast * fix: moving config from toast to ToastContainer * refactor: removing notification component and use only ToastContainer * refactor: remove unnecesary 'await' for toasts * refactor: change toastId names * refactor: remove toast on success login * improvement: move injecting style outside component --------- Co-authored-by: masterHAWK99 * feat/create crud for yt (#136) * improvement: use userId decorator and oauthClient provider over credentials provider * feat: create fetching videos from keywords Handle quota limit and update CONTRIBUTION.md * improvement: handle refreshing access token in session guard * improvement: handle case when user deauthenticate manually permission for our app * improvement: create youtube client accessible in entire service also create lastFetch column as not selectable as default * fix: check if session exists before check oauth credentials * feat: rename user and session modules, and create relation between user, and yt videos and keywords * fix: relation between user and keywords * fix: adjust findAll from yt videos service for new relations * refactor: split canActive session guard func into smaller parts * improvement: create offset for refreshing access token * fix: adjust updating user playlist to new relations * fix: filter out empty results from keywords fetch * docs(keywords): create example data on return from find * refactor: rename playlist func * docs: fix link for YT API * feat: create caching data from yt * fix: change folder name to proper * fix: change response class name to proper * improvement(user-yt-videos): add example data for all props which don't have * refactor: simplify code * refactor: reverse if statement * Merge pull request #145 * refactor: remove unnecessary code for /auth/me * fix: handle quota limit error on all request inside update playlist e… * fix: change type from any * docs: remove unnecessary husky part in CONTRIBUTION (#146) * refactor: change params of auth popup (#147) * feat/Example data for user and keywords endpoints (#138) * feat(auth/key-words): create example data for swagger * feat: create object with info for errors * feat/Set on migrations (#148) * improvement: set on migrations * fix: remove unnecessary node var from build script * fix: enable auto running migration on start * Feat: create loadings and erorrs components (#144) * feat: add react-skeleton lib * feat: add react-skeleton for loading elements * improvement: renaming Skeleton components & using isLoading instead of || * refactor: change styled-skeleton file name * refactor: remove unnecessary console.log * refactor: set count of 4 for skeletons in keywords * Create LICENCE * improvement: add MIT licence to packages and add contributors (#151) * feat: add support for i18n (#130) * feat: add support for i18n * feat: use language from browser as default * style: separate translations and improve code style * improvement: add missing translations * fix: wrong language on auth page * improvement: add translations for toasts * improvement: add and rename types for errors * improvement: remove duplicated translation & group * fix: fix typo on keywords find 'cause' * Update react-app/public/locales/en/translation.json Co-authored-by: PatrykKuniczak <64608510+PatrykKuniczak@users.noreply.github.com> * improvement: correct key to keyword_not_found * Update react-app/public/locales/pl/translation.json --------- Co-authored-by: Patryk Kuniczak Co-authored-by: PatrykKuniczak <64608510+PatrykKuniczak@users.noreply.github.com> * fix: getting user yt data with the rest user credentials (#154) * Feat/deploy for dev #70 (#159) * improvement: create config for remote-dev * improvement: create hostname for listener * fix: change dev:remote script, from nest to file path with node * fix: remove ssl form typeorm config * fix: run 'npm i' for set new data on lock file * fix: enable requests from all hosts * improvement: restructure packages in each dir and update CONTRIBUTION.md * Merge pull request #160 * fix: change packageJson to proper one * feat/create logger for fatal errors (#164) * feat: create saving fatal errors on DB and create user resource global * fix: remove unnecessary import * fix: naming and structure of error object * fix: create migration * fix/using default fetch date properly (#167) * fix: use default fetch date properly (on fetch start) * fix: create migration * reafactor/rename keywords entity and restructure session dir (#166) * improvement: update CONTRIBUTION.md, add migration script * refactor: rename keywords entity and restructure session dir * fix: create migration * fix/adjust code for work on deploy (#163) * fix: change PORT env name * fix: use host in google callbackURL * fix: use expanding envs only for local dev * fix: create properly assigning cookie on redirect * improvement: update CONTRIBUTION.md * fix: change default PORT * fix: duplicated page title (#161) * fix: change pathname to /store * fix: reverse order of condition for setTitle * improvement: change playlist on 'watch later' btn on navbar (#162) * improvement: change playlist on watch later button * refactor: separate UserYtVideo interface * feat: add searching mechanism for videos (#153) * feat: add searching mechanism for videos * feat: add avatar property in videos array * refactor: add video interface * improvement: connecting videos with translation * refactor: create VideoArticleSkeleton component * refactor: remove unnecessary comparison * refactor: remove unnecessary const publishedDate * Merge pull request #169 * fix: create migration * improvement: rename app and all references to 'yt notifier' (#168) * improvement: save (#171) * Feat: error handlers components (#149) * feat: add ErrorBoundary prototype * refactor: change style of ErrorPage * refactor: lifting up ThemeProvider to index * refactor: remove unnecessary components in ErrorPage * refactor: change hasError to false * refactor: remove div and change p to span * refactor: change error text paragraph * refactor: wrap error title in

* improvement: add translation to ErrorPage * refactor: add aria-hidden to octagonError * fix: repair fallbackError translation * refactor: change name of heading prop * fix: errors from previous PR's and move internationalization to libs (#176) * config: change logo (#170) * improvement: change logo * refactor: change icon name to logo * improvement: add logo to toast outside popup * refactor: add translation to logo * fix: change approach to send videos amount between scripts * refactor: change colour of logo --------- Co-authored-by: Patryk Kuniczak * feat/Fetching user videos (#182) * chore: create displaying notification with real data * chore: add views to user video resource on BE * chore: create displaying videos and enable interactivity * chore: recreate playlist if user delete it manually from yt account * chore: create watch later button with functionality for videos * fix: displaying notification about new videos * chore: create closing all notification (on other pages) when user close on one * fix: exclude login redirect page for content script * chore: display abbreviations for video views * fix: return video views amount as a number instead of string * fix: simplify Video interfaces use cases * fix: recreate error toast for content script * fix: type in internationalization and improve naming * fix: translation files structure * fix: adjust toast for content script (#184) * Merge pull request #186 * fix: enable helmet for API * Merge pull request #185 * fix: checking if user playlist exists before open window in browser * fix/loading on changing user state (#189) * fix: create loading on startup and logout * refactor: improve structure of code for protected page change also type for components * fix/ delete account modal is broken (#181) * fix: change ModalContent height and add extra padding * refactor: remove paddingTop * feat/collecting and downloading errors data for user machine (#187) * feat: create downloading errors button * fix: refactor error logs * fix: add missing nullable for users and key-words entities * fix: handle issue when videos list is empty * fix: add missing create migration script for package.json * fix: add to eslint ignore migrations dir * fix: remove unnecessary table key-word * fix: keyboard focus on download errors btn * refactor: improve behaviour onclick download button from keyboard * Improvement/improve a11y #83 (#188) * feat: add query to override transitions when appropriate * feat: add proper lang and title for routes * improvement: disable auto focusing elements * improvement: add missing attributes for inputs * improvement: add proper tag for click events * improvement: add proper tag for click events * chore: update title for views * fix: style of bullet point and change outline * style: change border radius instead outline * fix: menu download button structure * fix: change languages menu html structure --------- Co-authored-by: Patryk Kuniczak * fix: flickering error while changing state of input (#194) * feat/contact with devs footer (#193) * feat: create footer in the left bottom corner with link for our GH issues * refactor: change a little description for bug issue * refactor(github-icon): remove unnecessary thing * fix: typo in bug issue template * refactor: change github icon -> link * refactor: change github link * improvement/display info about created keyword from contextMenu (#179) * improvement: add background toasts * feat: create toasts for success and error events for context menu * fix: creating context Menu on every browser start * fix: get host permission url from env * fix: catch errors when content script wasn't accepted * refactor: compress code, by create helpers func and refactor toast type * refactor: rename custom toasts --------- Co-authored-by: Patryk Kuniczak * feat: add i18n for manifest (#195) * feat: add i18n for manifest * style: add dots at end of sentences in description * Fix/Create notification the same on every page (#178) * fix: update package-lock.json * fix: catching error about tabs which don't accept content script * fix: resolve issue with different notification look on different pages * fix: shortify autoClose time for notification --------- Co-authored-by: Patryk Kuniczak * Merge pull request #199 * fix: don't display notification again after close * Merge pull request #200 * fix: context menu translation on changing language on browser * Merge pull request #202 * fix: use the same transition for auth and home page * fix: decrease opacity amount for videos section (#203) * Merge pull request #205 * fix: color of watch later button on videos section * fix/theme switch (#206) * fix: add transition to elements where it's missing * fix: set off autocomplete for search bar * fix: svg icons in theme switch * fix: add missing blank space * chore/Create README (#198) * chore: create RAW main README.md * fix: create RAW backend README.md * fix: fix description on backend * fix: set proper logo for BE * chore: add npm to BE * chore: add npm icon for main README.md * chore: create RAW frontend README.md * chore: create main README.md * fix: pronouns on BE README.md * fix: change structure of main README.md * fix: rename folder with screenshots * fix: change structure of BE README.md * fix: update main README.md * fix: restructure and edit all README.md * fix: fix spelling and change structure of frontend README.md --------- Co-authored-by: masterHAWK99 <60447475+masterHAWK99@users.noreply.github.com> Co-authored-by: Bartosz Wysowski Co-authored-by: Bartosz Wysowski <117449119+TheMadNerd@users.noreply.github.com> Co-authored-by: masterHAWK99 --- .gitignore | 3 +- .husky/commit-msg | 4 + .husky/pre-commit | 7 + CONTRIBUTION.md | 148 + LICENCE | 21 + README.md | 140 + commitlint.config.js | 4 + nest-app/.eslintignore | 3 + nest-app/.eslintrc.js | 43 + nest-app/.gitignore | 39 + nest-app/.prettierignore | 9 + nest-app/.prettierrc | 11 + nest-app/README.md | 77 + nest-app/envs/example.env | 15 + nest-app/index.d.ts | 13 + nest-app/nest-cli.json | 10 + nest-app/package-lock.json | 9018 +++++++++++++++++ nest-app/package.json | 68 + nest-app/src/app.module.ts | 36 + nest-app/src/auth/auth.controller.ts | 133 + nest-app/src/auth/auth.module.ts | 19 + nest-app/src/auth/googleAuth/google.guard.ts | 18 + .../src/auth/googleAuth/google.strategy.ts | 40 + nest-app/src/auth/oauth2.module.ts | 25 + .../auth/sessions/model/sessions.entity.ts | 18 + nest-app/src/auth/sessions/sessions.guard.ts | 65 + .../src/auth/sessions/sessions.serializer.ts | 23 + .../src/auth/sessions/sessions.service.ts | 16 + nest-app/src/constants.ts | 10 + nest-app/src/database/config/data-source.ts | 21 + .../src/database/config/typeorm.config.ts | 22 + .../1699394971038-afterDevelopment.ts | 37 + .../1700421492489-create-loggers.ts | 25 + .../1700425098398-rename-keywords-entity.ts | 25 + ...4479-remove-default-date-from-lastFetch.ts | 17 + ...1701807327989-change-error-message-type.ts | 17 + ...44010-remove-unnecessary-key-word-table.ts | 9 + .../src/error-logs/dto/create-key-word.dto.ts | 4 + .../src/error-logs/error-logs.controller.ts | 24 + nest-app/src/error-logs/error-logs.module.ts | 14 + nest-app/src/error-logs/error-logs.service.ts | 25 + .../src/error-logs/model/error-logs.entity.ts | 17 + .../src/key-words/dto/create-key-word.dto.ts | 11 + .../src/key-words/dto/update-key-word.dto.ts | 3 + .../src/key-words/key-words.controller.ts | 112 + nest-app/src/key-words/key-words.module.ts | 13 + nest-app/src/key-words/key-words.service.ts | 65 + .../src/key-words/model/key-words.entity.ts | 17 + nest-app/src/main.ts | 77 + .../response-examples/auth.response.ts | 31 + .../response-examples/error-logs.response.ts | 15 + .../response-examples/error.response.ts | 9 + .../response-examples/key-words.response.ts | 12 + .../user-yt-videos.response.ts | 43 + nest-app/src/swagger/swagger.config.ts | 29 + .../dto/update-user-yt-videos.dto.ts | 16 + .../model/user-yt-videos.entity.ts | 22 + .../user-yt-videos.controller.ts | 65 + .../user-yt-videos/user-yt-videos.module.ts | 14 + .../user-yt-videos/user-yt-videos.service.ts | 224 + .../src/users/decorators/user.decorator.ts | 7 + nest-app/src/users/model/users.entity.ts | 37 + nest-app/src/users/users.module.ts | 12 + nest-app/src/users/users.service.ts | 71 + nest-app/src/users/users.types.ts | 20 + nest-app/tsconfig.build.json | 4 + nest-app/tsconfig.json | 22 + package-lock.json | 3092 ++++++ package.json | 25 + react-app/.eslintignore | 2 + react-app/.eslintrc | 79 + .../.github/ISSUE_TEMPLATE/bug_report.md | 34 + .../.github/ISSUE_TEMPLATE/feature_request.md | 19 + react-app/.gitignore | 28 +- react-app/.prettierignore | 8 + react-app/.prettierrc | 9 + react-app/README.md | 80 + react-app/envs/.env.example | 1 + react-app/index.html | 13 - react-app/manifest.js | 49 + react-app/package-lock.json | 7695 +++++++++++--- react-app/package.json | 81 +- react-app/public/_locales/en/messages.json | 6 + react-app/public/_locales/pl/messages.json | 6 + react-app/public/locales/en/translation.json | 71 + react-app/public/locales/pl/translation.json | 71 + react-app/public/logo-128.png | Bin 0 -> 5209 bytes react-app/public/logo-32.png | Bin 0 -> 1432 bytes react-app/public/manifest.json | 10 - react-app/src/App.tsx | 8 - .../src/assets/img/chevron-down-icon.svg | 3 + react-app/src/assets/img/chevron-up-icon.svg | 3 + react-app/src/assets/img/edit-icon.svg | 6 + react-app/src/assets/img/english-flag.svg | 1 + .../assets/img/exclamation-octagon-icon.svg | 3 + react-app/src/assets/img/google-icon.svg | 52 + react-app/src/assets/img/plus-icon.svg | 1 + react-app/src/assets/img/polish-flag.svg | 1 + react-app/src/assets/img/saved-tags-icon.svg | 5 + react-app/src/assets/img/search-icon.svg | 3 + react-app/src/assets/img/thumbnail.png | Bin 0 -> 534985 bytes react-app/src/assets/img/trash-icon.svg | 3 + react-app/src/assets/img/watch-later-icon.svg | 4 + react-app/src/assets/img/x-icon.svg | 3 + react-app/src/environment.d.ts | 10 + react-app/src/global.d.ts | 45 + react-app/src/index.css | 9 - react-app/src/instructions/CSS.md | 73 + react-app/src/instructions/DIRS_STRUCTURE.md | 36 + react-app/src/main.tsx | 10 - react-app/src/pages/background/index.ts | 83 + .../pages/content/components/error-toast.tsx | 11 + .../src/pages/content/components/home/app.tsx | 83 + .../pages/content/components/home/index.tsx | 18 + .../content/components/toast-container.ts | 27 + react-app/src/pages/content/index.ts | 5 + react-app/src/pages/options/index.html | 11 + react-app/src/pages/popup/Popup.tsx | 68 + .../popup/components/auth/auth-wrapper.tsx | 11 + .../src/pages/popup/components/auth/google.ts | 55 + .../popup/components/language-selector.tsx | 68 + .../pages/popup/components/shared/avatar.ts | 9 + .../pages/popup/components/shared/button.ts | 28 + .../delete-modal/delete-modal-button.ts | 13 + .../shared/delete-modal/delete-modal.tsx | 54 + .../shared/delete-modal/modal-content.tsx | 48 + .../shared/delete-modal/use-delete-modal.ts | 11 + .../popup/components/shared/dropdown.tsx | 63 + .../pages/popup/components/shared/error.tsx | 34 + .../shared/errorSnackbar/error-snackbar.tsx | 31 + .../errorSnackbar/use-error-snackbar.tsx | 49 + .../popup/components/shared/github-link.tsx | 30 + .../src/pages/popup/components/shared/icon.ts | 10 + .../pages/popup/components/shared/input.tsx | 26 + .../components/shared/items-container.ts | 14 + .../pages/popup/components/shared/profile.tsx | 163 + .../shared/searchBar/search-bar-input.tsx | 29 + .../shared/searchBar/search-bar-wrapper.ts | 20 + .../shared/searchBar/search-bar.tsx | 40 + .../src/pages/popup/components/shared/seo.tsx | 15 + .../components/shared/styled-skeleton.ts | 13 + .../popup/components/shared/theme-switch.tsx | 118 + .../popup/components/shared/title-header.ts | 13 + .../list/item/addingKeyword/add-input.tsx | 118 + .../list/item/deleteButton/delete-button.tsx | 26 + .../list/item/editButton/edit-button.tsx | 59 + .../components/store/list/item/keyword.tsx | 107 + .../store/list/item/store-value.tsx | 64 + .../article/authorInfo/author-info.tsx | 18 + .../section/article/authorInfo/autor-name.ts | 12 + .../section/article/thumbnail/thumbnail.ts | 9 + .../video/section/article/video-article.tsx | 44 + .../video/section/article/video-button.tsx | 12 + .../section/article/videoInfo/video-info.ts | 32 + .../section/article/videoInfo/video-infos.tsx | 68 + .../section/article/videoInfo/video-title.ts | 21 + .../author-info-skeleton.tsx | 9 + .../skeleton/video-article-skeleton.tsx | 12 + .../video-infos-skeleton.tsx | 11 + .../video/section/videos-section.tsx | 8 + react-app/src/pages/popup/constant.ts | 11 + react-app/src/pages/popup/index.html | 12 + react-app/src/pages/popup/index.tsx | 47 + .../pages/popup/layouts/header-container.tsx | 27 + .../src/pages/popup/layouts/main-content.tsx | 17 + react-app/src/pages/popup/layouts/navbar.tsx | 96 + .../src/pages/popup/pages/auth/auth.page.tsx | 42 + .../src/pages/popup/pages/error/ErrorPage.tsx | 53 + .../pages/popup/pages/home/home-wrapper.tsx | 10 + .../src/pages/popup/pages/home/home.page.tsx | 38 + .../src/pages/popup/pages/home/use-home.ts | 20 + .../src/pages/popup/pages/protected.page.tsx | 26 + .../src/pages/popup/providers-wrapper.tsx | 27 + .../src/pages/popup/routes/store.route.tsx | 79 + .../src/pages/popup/routes/videos.route.tsx | 51 + react-app/src/vite-env.d.ts | 8 + react-app/tsconfig.json | 50 +- react-app/tsconfig.node.json | 10 - react-app/utils/core/log.ts | 52 + react-app/utils/core/manifest-parser/index.ts | 35 + react-app/utils/core/plugins/add-hmr.ts | 47 + .../core/plugins/custom-dynamic-import.ts | 19 + react-app/utils/core/plugins/make-manifest.ts | 49 + react-app/utils/core/plugins/watch-rebuild.ts | 18 + react-app/utils/core/reload/constant.ts | 2 + .../utils/core/reload/initReloadClient.ts | 56 + .../utils/core/reload/initReloadServer.ts | 55 + .../utils/core/reload/injections/script.ts | 13 + .../utils/core/reload/injections/view.ts | 29 + .../utils/core/reload/interpreter/index.ts | 13 + .../utils/core/reload/interpreter/types.ts | 18 + react-app/utils/core/reload/rollup.config.mjs | 28 + react-app/utils/core/reload/utils.ts | 9 + react-app/utils/data/global-styles.ts | 26 + react-app/utils/data/mixins/page-mixin.ts | 10 + .../utils/data/mixins/scrollbar-mixin.ts | 36 + react-app/utils/data/mixins/text-mixin.ts | 8 + react-app/utils/data/themes/dark-theme.ts | 47 + react-app/utils/data/themes/light-theme.ts | 49 + react-app/utils/endpoints/urls.ts | 17 + react-app/utils/hooks/use-focus.ts | 14 + .../utils/hooks/use-handle-key-events.ts | 15 + react-app/utils/hooks/use-language-switch.ts | 17 + react-app/utils/hooks/use-search.ts | 23 + react-app/utils/hooks/use-ternary-darkmode.ts | 43 + react-app/utils/hooks/use-validate.ts | 19 + react-app/utils/hooks/with-error-boundary.tsx | 41 + .../utils/instructions/DIRS_STRUCTURE.md | 16 + react-app/utils/interfaces/index.ts | 92 + react-app/utils/libs/authentication/index.ts | 9 + react-app/utils/libs/http-client/index.ts | 35 + .../utils/libs/internationalization/index.ts | 67 + react-app/utils/libs/query-client/index.ts | 8 + react-app/utils/types/index.ts | 7 + react-app/vite.config.ts | 85 +- screenshots/auth-page.png | Bin 0 -> 7417 bytes screenshots/keywords-dark.png | Bin 0 -> 15870 bytes screenshots/keywords-light.png | Bin 0 -> 15729 bytes screenshots/notification.png | Bin 0 -> 4985 bytes screenshots/videos-dark.png | Bin 0 -> 73135 bytes screenshots/videos-light.png | Bin 0 -> 73470 bytes 221 files changed, 24896 insertions(+), 1658 deletions(-) create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit create mode 100644 CONTRIBUTION.md create mode 100644 LICENCE create mode 100644 README.md create mode 100644 commitlint.config.js create mode 100644 nest-app/.eslintignore create mode 100644 nest-app/.eslintrc.js create mode 100644 nest-app/.gitignore create mode 100644 nest-app/.prettierignore create mode 100644 nest-app/.prettierrc create mode 100644 nest-app/README.md create mode 100644 nest-app/envs/example.env create mode 100644 nest-app/index.d.ts create mode 100644 nest-app/nest-cli.json create mode 100644 nest-app/package-lock.json create mode 100644 nest-app/package.json create mode 100644 nest-app/src/app.module.ts create mode 100644 nest-app/src/auth/auth.controller.ts create mode 100644 nest-app/src/auth/auth.module.ts create mode 100644 nest-app/src/auth/googleAuth/google.guard.ts create mode 100644 nest-app/src/auth/googleAuth/google.strategy.ts create mode 100644 nest-app/src/auth/oauth2.module.ts create mode 100644 nest-app/src/auth/sessions/model/sessions.entity.ts create mode 100644 nest-app/src/auth/sessions/sessions.guard.ts create mode 100644 nest-app/src/auth/sessions/sessions.serializer.ts create mode 100644 nest-app/src/auth/sessions/sessions.service.ts create mode 100644 nest-app/src/constants.ts create mode 100644 nest-app/src/database/config/data-source.ts create mode 100644 nest-app/src/database/config/typeorm.config.ts create mode 100644 nest-app/src/database/migrations/1699394971038-afterDevelopment.ts create mode 100644 nest-app/src/database/migrations/1700421492489-create-loggers.ts create mode 100644 nest-app/src/database/migrations/1700425098398-rename-keywords-entity.ts create mode 100644 nest-app/src/database/migrations/1700426454479-remove-default-date-from-lastFetch.ts create mode 100644 nest-app/src/database/migrations/1701807327989-change-error-message-type.ts create mode 100644 nest-app/src/database/migrations/1701808344010-remove-unnecessary-key-word-table.ts create mode 100644 nest-app/src/error-logs/dto/create-key-word.dto.ts create mode 100644 nest-app/src/error-logs/error-logs.controller.ts create mode 100644 nest-app/src/error-logs/error-logs.module.ts create mode 100644 nest-app/src/error-logs/error-logs.service.ts create mode 100644 nest-app/src/error-logs/model/error-logs.entity.ts create mode 100644 nest-app/src/key-words/dto/create-key-word.dto.ts create mode 100644 nest-app/src/key-words/dto/update-key-word.dto.ts create mode 100644 nest-app/src/key-words/key-words.controller.ts create mode 100644 nest-app/src/key-words/key-words.module.ts create mode 100644 nest-app/src/key-words/key-words.service.ts create mode 100644 nest-app/src/key-words/model/key-words.entity.ts create mode 100644 nest-app/src/main.ts create mode 100644 nest-app/src/swagger/response-examples/auth.response.ts create mode 100644 nest-app/src/swagger/response-examples/error-logs.response.ts create mode 100644 nest-app/src/swagger/response-examples/error.response.ts create mode 100644 nest-app/src/swagger/response-examples/key-words.response.ts create mode 100644 nest-app/src/swagger/response-examples/user-yt-videos.response.ts create mode 100644 nest-app/src/swagger/swagger.config.ts create mode 100644 nest-app/src/user-yt-videos/dto/update-user-yt-videos.dto.ts create mode 100644 nest-app/src/user-yt-videos/model/user-yt-videos.entity.ts create mode 100644 nest-app/src/user-yt-videos/user-yt-videos.controller.ts create mode 100644 nest-app/src/user-yt-videos/user-yt-videos.module.ts create mode 100644 nest-app/src/user-yt-videos/user-yt-videos.service.ts create mode 100644 nest-app/src/users/decorators/user.decorator.ts create mode 100644 nest-app/src/users/model/users.entity.ts create mode 100644 nest-app/src/users/users.module.ts create mode 100644 nest-app/src/users/users.service.ts create mode 100644 nest-app/src/users/users.types.ts create mode 100644 nest-app/tsconfig.build.json create mode 100644 nest-app/tsconfig.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 react-app/.eslintignore create mode 100644 react-app/.eslintrc create mode 100644 react-app/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 react-app/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 react-app/.prettierignore create mode 100644 react-app/.prettierrc create mode 100644 react-app/README.md create mode 100644 react-app/envs/.env.example delete mode 100644 react-app/index.html create mode 100644 react-app/manifest.js create mode 100644 react-app/public/_locales/en/messages.json create mode 100644 react-app/public/_locales/pl/messages.json create mode 100644 react-app/public/locales/en/translation.json create mode 100644 react-app/public/locales/pl/translation.json create mode 100644 react-app/public/logo-128.png create mode 100644 react-app/public/logo-32.png delete mode 100644 react-app/public/manifest.json delete mode 100644 react-app/src/App.tsx create mode 100644 react-app/src/assets/img/chevron-down-icon.svg create mode 100644 react-app/src/assets/img/chevron-up-icon.svg create mode 100644 react-app/src/assets/img/edit-icon.svg create mode 100644 react-app/src/assets/img/english-flag.svg create mode 100644 react-app/src/assets/img/exclamation-octagon-icon.svg create mode 100644 react-app/src/assets/img/google-icon.svg create mode 100644 react-app/src/assets/img/plus-icon.svg create mode 100644 react-app/src/assets/img/polish-flag.svg create mode 100644 react-app/src/assets/img/saved-tags-icon.svg create mode 100644 react-app/src/assets/img/search-icon.svg create mode 100644 react-app/src/assets/img/thumbnail.png create mode 100644 react-app/src/assets/img/trash-icon.svg create mode 100644 react-app/src/assets/img/watch-later-icon.svg create mode 100644 react-app/src/assets/img/x-icon.svg create mode 100644 react-app/src/environment.d.ts create mode 100644 react-app/src/global.d.ts delete mode 100644 react-app/src/index.css create mode 100644 react-app/src/instructions/CSS.md create mode 100644 react-app/src/instructions/DIRS_STRUCTURE.md delete mode 100644 react-app/src/main.tsx create mode 100644 react-app/src/pages/background/index.ts create mode 100644 react-app/src/pages/content/components/error-toast.tsx create mode 100644 react-app/src/pages/content/components/home/app.tsx create mode 100644 react-app/src/pages/content/components/home/index.tsx create mode 100644 react-app/src/pages/content/components/toast-container.ts create mode 100644 react-app/src/pages/content/index.ts create mode 100644 react-app/src/pages/options/index.html create mode 100644 react-app/src/pages/popup/Popup.tsx create mode 100644 react-app/src/pages/popup/components/auth/auth-wrapper.tsx create mode 100644 react-app/src/pages/popup/components/auth/google.ts create mode 100644 react-app/src/pages/popup/components/language-selector.tsx create mode 100644 react-app/src/pages/popup/components/shared/avatar.ts create mode 100644 react-app/src/pages/popup/components/shared/button.ts create mode 100644 react-app/src/pages/popup/components/shared/delete-modal/delete-modal-button.ts create mode 100644 react-app/src/pages/popup/components/shared/delete-modal/delete-modal.tsx create mode 100644 react-app/src/pages/popup/components/shared/delete-modal/modal-content.tsx create mode 100644 react-app/src/pages/popup/components/shared/delete-modal/use-delete-modal.ts create mode 100644 react-app/src/pages/popup/components/shared/dropdown.tsx create mode 100644 react-app/src/pages/popup/components/shared/error.tsx create mode 100644 react-app/src/pages/popup/components/shared/errorSnackbar/error-snackbar.tsx create mode 100644 react-app/src/pages/popup/components/shared/errorSnackbar/use-error-snackbar.tsx create mode 100644 react-app/src/pages/popup/components/shared/github-link.tsx create mode 100644 react-app/src/pages/popup/components/shared/icon.ts create mode 100644 react-app/src/pages/popup/components/shared/input.tsx create mode 100644 react-app/src/pages/popup/components/shared/items-container.ts create mode 100644 react-app/src/pages/popup/components/shared/profile.tsx create mode 100644 react-app/src/pages/popup/components/shared/searchBar/search-bar-input.tsx create mode 100644 react-app/src/pages/popup/components/shared/searchBar/search-bar-wrapper.ts create mode 100644 react-app/src/pages/popup/components/shared/searchBar/search-bar.tsx create mode 100644 react-app/src/pages/popup/components/shared/seo.tsx create mode 100644 react-app/src/pages/popup/components/shared/styled-skeleton.ts create mode 100644 react-app/src/pages/popup/components/shared/theme-switch.tsx create mode 100644 react-app/src/pages/popup/components/shared/title-header.ts create mode 100644 react-app/src/pages/popup/components/store/list/item/addingKeyword/add-input.tsx create mode 100644 react-app/src/pages/popup/components/store/list/item/deleteButton/delete-button.tsx create mode 100644 react-app/src/pages/popup/components/store/list/item/editButton/edit-button.tsx create mode 100644 react-app/src/pages/popup/components/store/list/item/keyword.tsx create mode 100644 react-app/src/pages/popup/components/store/list/item/store-value.tsx create mode 100644 react-app/src/pages/popup/components/video/section/article/authorInfo/author-info.tsx create mode 100644 react-app/src/pages/popup/components/video/section/article/authorInfo/autor-name.ts create mode 100644 react-app/src/pages/popup/components/video/section/article/thumbnail/thumbnail.ts create mode 100644 react-app/src/pages/popup/components/video/section/article/video-article.tsx create mode 100644 react-app/src/pages/popup/components/video/section/article/video-button.tsx create mode 100644 react-app/src/pages/popup/components/video/section/article/videoInfo/video-info.ts create mode 100644 react-app/src/pages/popup/components/video/section/article/videoInfo/video-infos.tsx create mode 100644 react-app/src/pages/popup/components/video/section/article/videoInfo/video-title.ts create mode 100644 react-app/src/pages/popup/components/video/section/skeleton/authorInfoSkeleton/author-info-skeleton.tsx create mode 100644 react-app/src/pages/popup/components/video/section/skeleton/video-article-skeleton.tsx create mode 100644 react-app/src/pages/popup/components/video/section/skeleton/videoInfoSkeleton/video-infos-skeleton.tsx create mode 100644 react-app/src/pages/popup/components/video/section/videos-section.tsx create mode 100644 react-app/src/pages/popup/constant.ts create mode 100644 react-app/src/pages/popup/index.html create mode 100644 react-app/src/pages/popup/index.tsx create mode 100644 react-app/src/pages/popup/layouts/header-container.tsx create mode 100644 react-app/src/pages/popup/layouts/main-content.tsx create mode 100644 react-app/src/pages/popup/layouts/navbar.tsx create mode 100644 react-app/src/pages/popup/pages/auth/auth.page.tsx create mode 100644 react-app/src/pages/popup/pages/error/ErrorPage.tsx create mode 100644 react-app/src/pages/popup/pages/home/home-wrapper.tsx create mode 100644 react-app/src/pages/popup/pages/home/home.page.tsx create mode 100644 react-app/src/pages/popup/pages/home/use-home.ts create mode 100644 react-app/src/pages/popup/pages/protected.page.tsx create mode 100644 react-app/src/pages/popup/providers-wrapper.tsx create mode 100644 react-app/src/pages/popup/routes/store.route.tsx create mode 100644 react-app/src/pages/popup/routes/videos.route.tsx delete mode 100644 react-app/tsconfig.node.json create mode 100644 react-app/utils/core/log.ts create mode 100644 react-app/utils/core/manifest-parser/index.ts create mode 100644 react-app/utils/core/plugins/add-hmr.ts create mode 100644 react-app/utils/core/plugins/custom-dynamic-import.ts create mode 100644 react-app/utils/core/plugins/make-manifest.ts create mode 100644 react-app/utils/core/plugins/watch-rebuild.ts create mode 100644 react-app/utils/core/reload/constant.ts create mode 100644 react-app/utils/core/reload/initReloadClient.ts create mode 100644 react-app/utils/core/reload/initReloadServer.ts create mode 100644 react-app/utils/core/reload/injections/script.ts create mode 100644 react-app/utils/core/reload/injections/view.ts create mode 100644 react-app/utils/core/reload/interpreter/index.ts create mode 100644 react-app/utils/core/reload/interpreter/types.ts create mode 100644 react-app/utils/core/reload/rollup.config.mjs create mode 100644 react-app/utils/core/reload/utils.ts create mode 100644 react-app/utils/data/global-styles.ts create mode 100644 react-app/utils/data/mixins/page-mixin.ts create mode 100644 react-app/utils/data/mixins/scrollbar-mixin.ts create mode 100644 react-app/utils/data/mixins/text-mixin.ts create mode 100644 react-app/utils/data/themes/dark-theme.ts create mode 100644 react-app/utils/data/themes/light-theme.ts create mode 100644 react-app/utils/endpoints/urls.ts create mode 100644 react-app/utils/hooks/use-focus.ts create mode 100644 react-app/utils/hooks/use-handle-key-events.ts create mode 100644 react-app/utils/hooks/use-language-switch.ts create mode 100644 react-app/utils/hooks/use-search.ts create mode 100644 react-app/utils/hooks/use-ternary-darkmode.ts create mode 100644 react-app/utils/hooks/use-validate.ts create mode 100644 react-app/utils/hooks/with-error-boundary.tsx create mode 100644 react-app/utils/instructions/DIRS_STRUCTURE.md create mode 100644 react-app/utils/interfaces/index.ts create mode 100644 react-app/utils/libs/authentication/index.ts create mode 100644 react-app/utils/libs/http-client/index.ts create mode 100644 react-app/utils/libs/internationalization/index.ts create mode 100644 react-app/utils/libs/query-client/index.ts create mode 100644 react-app/utils/types/index.ts create mode 100644 screenshots/auth-page.png create mode 100644 screenshots/keywords-dark.png create mode 100644 screenshots/keywords-light.png create mode 100644 screenshots/notification.png create mode 100644 screenshots/videos-dark.png create mode 100644 screenshots/videos-light.png diff --git a/.gitignore b/.gitignore index 723ef36f..2d2b47d1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.idea \ No newline at end of file +.idea +node_modules \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 00000000..482222a2 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm run commitlint ${1} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 00000000..2fb2f62a --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,7 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +cd react-app +npx lint-staged +cd ../nest-app +npx lint-staged diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md new file mode 100644 index 00000000..5f18b744 --- /dev/null +++ b/CONTRIBUTION.md @@ -0,0 +1,148 @@ +## Installation + 1. Clone this repository. + +## FOR ROOT(OVER APPS): + RUN 'npm i' + +## FOR REACT-APP(FRONTED): + +### Procedures + +1. Create `.env.local` in `envs` directory by copying `.env.example` and if necessary adjust to your needs. +2. Run `npm ci` + +## And next, depending on the needs: + +### For chrome: + +1. Run `npm run dev` +2. Open in browser - `chrome://extensions` +3. Check - `Developer mode` +4. Find and Click - `Load unpacked extension` +5. Select - `dist` folder (after dev or build) + +#### If you want to build for production, Just run `npm run build`. + +### For firefox: + +1. Run `npm run dev:firefox` +2. Open in browser - `about:debugging#/runtime/this-firefox` +3. Find and Click - `Load Temporary Add-on...` +4. Select - `manifest.json` file from `dist` folder (after dev or build) + +#### If you want to build for production, Just run `npm run build:firefox`. + +#### Remember in firefox you add plugin in temporary mode, that means it disappear after closing browser, on next launch you must do it again. + +#### When you end part of work before committing check folder in `src/instructions` and check if your code follow standards. + +#### If you want to create something in utils, follow the folder structure described in `utils/instructions`. + +## FOR NEST-APP(BACKEND): + +### Before Installation + + - Check postgresql v15 is installed on your machine, if not: + +[postgresql](https://www.postgresql.org/download/) + + - Check node v20 is installed on your machine, if not: + +[node](https://nodejs.org/en/download) + + - If you don't have google account (You're strange :)) go and create one, then: + +[set up google dev project](https://console.cloud.google.com/apis/credentials?hl=pl) + + - Set up project, name could be 'YT Notifier DEV' + + - Enable this api: + +[YT API](https://console.cloud.google.com/apis/api/youtube.googleapis.com) + + - Next follow this steps: + +[set up credentials](https://developers.google.com/identity/protocols/oauth2/web-server?hl=pl#creatingcred) + + - Name could be like project + - Authorize source JS is 'http://localhost:3001' (or other, if you change SERVER_PORT in env) + - Redirect url is 'http://localhost:3001/api/auth/redirect' (port like above) + + - Go to /envs folder and copy 'example.env' then paste it as 'local.env', + then paste your google credentials(clientId and secret) from google cloud console + or from secret.json(if you download file) to related env keys. + +## Installation + +```bash +$ npm ci +``` + +## Running the app + +```bash +# development(watch mode) +$ npm run start:dev + +# remote development +$ npm run start:dev:remote + +# production mode +$ npm run start:prod + +# generate migration +$ npm run migration:generate src/database/migrations/migration-name +``` + +## Getting started + +To run docs open in browser: https://localhost:3001/api/docs (or other port, if you change PORT in env) +And there you can find next steps to authorize yourself, to have permission to use endpoints. +Follow the instructions from swagger description (On the top of the page) + +## ON IDE FOR BOTH APPS(CONFIG ONLY FOR WEBSTORM) + +### CONFIGURE PRETTIER IN YOUR IDE: + + PRETTIER IS IN .\node_modules\prettier + +##### E.G. FOR WEBSTORM: + +[Prettier config](https://blog.jetbrains.com/webstorm/2020/07/webstorm-2020-2/) + +### CONFIGURE RELATIVE IMPORT PATHS IN YOUR IDE: + + IN WEBSTORM GO TO SETTING: + EDITOR/CODE STYLE/TYPESCRIPT + [X] USE PATHS RELATIVE TO TSCONFIG.JSON + + AND ALSO: + [X] SORT IMPORTED BY MEMBERS + [X] SORT IMPORTS BY MODULES + +### CONFIGURE RUNNING ESLINT AND PRETTIER TO RUN ON SAVE(MAKE SURE, YOU ALREADY HAVE AUTO-SAVE ENABLED): + + IN WEBSTORM GO TO SETTINGS: + LANGUAGES & FRAMEWORKS/JAVASCRIPT/CODE QUALITY TOOLS/ESLINT: + [X] AUTOMATIC ESLINT CONFIGURATION + [X] RUN ESLINT --FIX ON SAVE + + LANGUAGES & FRAMEWORKS/JAVASCRIPT/PRETTIER: + [X] AUTOMATIC PRETTIER CONFIGURATION + [X] RUN ON SAVE + +### CONFIGURE IF YOU'RE USING WINDOWS: + OPEN 'GIT BASH' ON YOUR MACHINE AS ADMINISTRATOR, AND PASTE IT: + git config --global core.autocrlf false - IF YOU WANT TO DISABLE IT FOR USER. (RECOMMENDED) + git config --local core.autocrlf false - IF YOU WANT TO DISABLE IT FOR THIS PROJECT ONLY. + +### CONFIGURE DEFAULT BRANCH UPDATE SETTINGS: + + IN WEBSTORM GO TO SETTING: + GIT/PUSH: + PROTECTED BRANCH: 'master;main" + /UPDATE: + UPDATE METHOD: 'rebase' + CLEAN WORKING TREE USING: 'shelve' + +###### ENJOY YOUR TASKS \ No newline at end of file diff --git a/LICENCE b/LICENCE new file mode 100644 index 00000000..b43e8ea9 --- /dev/null +++ b/LICENCE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 PatrykKuniczak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..039e4d86 --- /dev/null +++ b/README.md @@ -0,0 +1,140 @@ +[![MIT License][license-shield]][license-url] +[![LinkedIn][linkedin-shield]][linkedin-url] + + +
+
+

+ Logo +

+ +

YT Notifier

+ +

+ Chrome extension which inform you about recently uploaded videos to youtube, + only from keywords/titles which you want to. +
+
+ You can 'subscribe' a word, and get videos which title contain that word. +

+
+ +
+ +

Table of Contents

+
    +
  1. + About The Project + +
  2. +
  3. Contributing
  4. +
  5. Contact
  6. +
+ +## About The Project + +## Built With + +* [![NPM][npm-shield]][npm-url] +* [![Typescript][typescript-shield]][typescript-url] +* [![NestJS][nestjs-shield]][nestjs-url] + [Backend README](https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/nest-app/README.md) +* [![React][react-shield]][react-url] + [Frontend README](https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/react-app/README.md) + +### Features: + +#### Auth: + +- Login with google account +
+ ![Auth Page Screen Shot][auth-page-screenshot] +
+
+ +#### Videos: + +- Adding, Editing, Deleting and Searching keywords/titles (from which videos was found) +- Videos are interactive, you can easly add it to your watch later or open in new tab. +- To open your watch later playlist, click the same icon on navbar +
+ ![Videos Dark Mode Screen Shot][videos-dark-screenshot] + ![Videos Light Mode Screen Shot][videos-light-screenshot] +
+
+ ![Keywords Dark Mode Screen Shot][keywords-dark-screenshot] + ![Keywords Light Mode Screen Shot][keywords-light-screenshot] +
+
+ + - Once per day you will receive a notification about found videos, if something new was released. +
+ ![Notification Screen Shot][notification-screenshot] +
+
+ +#### Rest Features: + +- Theme switching (light/dark) +- Changing language +- Link (icon) on left bottom corner redirecting to github issues, where you can contact with us +- You have option to collect info about errors, when you want to submit bug issue, you can download and attach this + data, which help us to solve issue quickly +- Loadings make waiting more pleasant and error notification inform you what's going wrong + +## Contributing + +For contribute, visit: [CONTRIBUTION](https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/CONTRIBUTION.md) + +## License + +Distributed under the MIT License. +
+See [LICENSE](https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/LICENCE) for more information. + +## Contact + +Feel free to open [Issue](https://github.com/PatrykKuniczak/YT_Search_Plugin/issues) + + + +[npm-shield]: https://img.shields.io/badge/NPM-%23CB3837.svg?style=for-the-badge&logo=npm&logoColor=white + +[npm-url]: https://www.npmjs.com/ + +[typescript-shield]: https://img.shields.io/badge/Typescript-3178C6?style=flat-square&logo=typescript&logoColor=white + +[typescript-url]: https://www.typescriptlang.org/ + +[license-shield]: https://img.shields.io/github/license/othneildrew/Best-README-Template.svg + +[license-url]: https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/LICENCE + +[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 + +[linkedin-url]: https://www.linkedin.com/in/patryk-kuniczak-61b416238 + +[react-shield]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB + +[react-url]: https://react.dev/ + +[nestjs-shield]: https://img.shields.io/badge/nestjs-%23E0234E.svg?style=for-the-badge&logo=nestjs&logoColor=white + +[nestjs-url]: https://nestjs.com + +[auth-page-screenshot]: screenshots/auth-page.png + +[keywords-screenshot]: screenshots/keywords.png + +[videos-dark-screenshot]: screenshots/videos-dark.png + +[videos-light-screenshot]: screenshots/videos-light.png + +[keywords-dark-screenshot]: screenshots/keywords-dark.png + +[keywords-light-screenshot]: screenshots/keywords-light.png + +[notification-screenshot]: screenshots/notification.png diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 00000000..cf5fab62 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,4 @@ +export default { extends: ['@commitlint/config-conventional'] , +rules: { + 'type-enum': [2, 'always', ['chore', 'docs', 'feat', 'fix', 'refactor', 'revert', 'style', 'improvement']] +}}; diff --git a/nest-app/.eslintignore b/nest-app/.eslintignore new file mode 100644 index 00000000..782cd069 --- /dev/null +++ b/nest-app/.eslintignore @@ -0,0 +1,3 @@ +dist +node_modules +src/database/migrations diff --git a/nest-app/.eslintrc.js b/nest-app/.eslintrc.js new file mode 100644 index 00000000..e406a29f --- /dev/null +++ b/nest-app/.eslintrc.js @@ -0,0 +1,43 @@ +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + // PRETTIER MUST BE LAST + plugins: ['@typescript-eslint/eslint-plugin', '@darraghor/nestjs-typed', 'prettier'], + // PRETTIER MUST BE LAST + extends: ['plugin:@typescript-eslint/recommended', 'plugin:@darraghor/nestjs-typed/recommended', 'prettier'], + root: true, + env: { + node: true, + jest: true, + }, + ignorePatterns: ['.eslintrc.js'], + rules: { + 'no-restricted-imports': [ + 'error', + { + paths: [ + { + name: 'google-auth-library/build/src/auth/oauth2client', + message: + "Please import 'OAuth2GoogleClientCredentials' from 'oauth2.module.ts', and use it as provider in your service instead", + }, + ], + }, + ], + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + }, + overrides: [ + { + files: 'src/auth/oauth2.module.ts', + rules: { + 'no-restricted-imports': 'off', + }, + }, + ], +}; diff --git a/nest-app/.gitignore b/nest-app/.gitignore new file mode 100644 index 00000000..cc91b84d --- /dev/null +++ b/nest-app/.gitignore @@ -0,0 +1,39 @@ +# compiled output +/dist +/node_modules +src/metadata.ts + +envs +!envs/example.env + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json \ No newline at end of file diff --git a/nest-app/.prettierignore b/nest-app/.prettierignore new file mode 100644 index 00000000..520573a9 --- /dev/null +++ b/nest-app/.prettierignore @@ -0,0 +1,9 @@ +dist +node_modules +.gitignore +.eslintignore +.nvmrc +.prettierignore +*.md +package-lock.json +nest-cli.json diff --git a/nest-app/.prettierrc b/nest-app/.prettierrc new file mode 100644 index 00000000..ba2f8341 --- /dev/null +++ b/nest-app/.prettierrc @@ -0,0 +1,11 @@ +{ + "semi": true, + "singleQuote": true, + "quoteProps": "as-needed", + "bracketSameLine": true, + "bracketSpacing": true, + "arrowParens": "avoid", + "trailingComma": "all", + "printWidth": 120, + "htmlWhitespaceSensitivity": "strict" +} diff --git a/nest-app/README.md b/nest-app/README.md new file mode 100644 index 00000000..638174f4 --- /dev/null +++ b/nest-app/README.md @@ -0,0 +1,77 @@ +
+ +
+

+ Logo +

+ +

YT Notifier

+
+ +
+ +

Table of Contents

+
    +
  1. Built With
  2. +
  3. How it works
  4. +
  5. Licence
  6. +
+ +## Built With + +* [![NPM][npm-shield]][npm-url] +* [![Typescript][typescript-shield]][typescript-url] +* [![NestJS][nestjs-shield]][nestjs-url] +* [Express Session](https://github.com/expressjs/session) + with [Connect TypeORM](https://www.npmjs.com/package/connect-typeorm) +* [![Postgreqsql][postgresql-shield]][postgresql-url] v15, as ORM [TypeORM](https://typeorm.io/) +* [![Google][google-shield]][google-url] with oAuth2 +* [![Swagger][swagger-shield]][swagger-url] +* [![Eslint][eslint-shield]][eslint-url] +* [Prettier](https://prettier.io) +* [Husky](https://typicode.github.io/husky) + +## How it works + +- Call google api via oAuth2 protocol and authorize user +- Set user session to expire after 7 days of inactivity +- Then user can manage theirs keywords (CRUD) +- Fetching videos (once per day), if user want to have data in the same day again, it's goes from cache +- If any fatal error(500) occurs then logs of this error are collecting in database, user can download it and attach to + bug issue + +## License + +Distributed under the MIT License. +
+See [LICENSE](https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/LICENCE) for more information. + + + +[npm-shield]: https://img.shields.io/badge/NPM-%23CB3837.svg?style=for-the-badge&logo=npm&logoColor=white + +[npm-url]: https://www.npmjs.com/ + +[typescript-shield]: https://img.shields.io/badge/Typescript-3178C6?style=flat-square&logo=typescript&logoColor=white + +[typescript-url]: https://www.typescriptlang.org/ + +[postgresql-shield]:https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white + +[postgresql-url]: https://www.postgresql.org/about/news/postgresql-15-released-2526/ + +[nestjs-shield]: https://img.shields.io/badge/nestjs-%23E0234E.svg?style=for-the-badge&logo=nestjs&logoColor=white + +[nestjs-url]: https://nestjs.com + +[google-shield]: https://img.shields.io/badge/google-4285F4?style=for-the-badge&logo=google&logoColor=white + +[google-url]: https://developers.google.com/identity/protocols/oauth2 + +[swagger-shield]: https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge&logo=swagger&logoColor=white + +[swagger-url]: https://swagger.io/ + +[eslint-url]: https://eslint.org/ + +[eslint-shield]: https://img.shields.io/badge/ESLint-4B3263?style=for-the-badge&logo=eslint&logoColor=white diff --git a/nest-app/envs/example.env b/nest-app/envs/example.env new file mode 100644 index 00000000..ea4ef774 --- /dev/null +++ b/nest-app/envs/example.env @@ -0,0 +1,15 @@ +DB_HOST=localhost +DB_PORT=5432 +DB_USERNAME=postgres +DB_PASSWORD=postgres +DB_DATABASE=postgres + +PORT=3001 +HOST=http://localhost:${PORT} + +SESSION_SECRET=AY@9304HVZUSBZ:KVQ>w.Mj,Or~!~Zt}7zs8cLPc^+rL^aznm(uP,?TDK_8"D+^ +# DON'T USE, IT'S ONLY FOR REMOTE SERVER, REMOVE OR LEAVE EMPTY +COOKIE_SECURE= + +GOOGLE_CLIENT_ID=YOUR_ID_FROM_GOOGLE_CONSOLE +GOOGLE_CLIENT_SECRET=YOUR_SECRET_FROM_GOOGLE_CONSOLE \ No newline at end of file diff --git a/nest-app/index.d.ts b/nest-app/index.d.ts new file mode 100644 index 00000000..1d54e6ac --- /dev/null +++ b/nest-app/index.d.ts @@ -0,0 +1,13 @@ +import 'express-session'; + +declare module 'express-session' { + interface SessionData { + id: string; + passport: { + user: { + id: number; + accessToken: string; + }; + }; + } +} diff --git a/nest-app/nest-cli.json b/nest-app/nest-cli.json new file mode 100644 index 00000000..579ca354 --- /dev/null +++ b/nest-app/nest-cli.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true, + "builder": "swc", + "typeCheck": true + } +} diff --git a/nest-app/package-lock.json b/nest-app/package-lock.json new file mode 100644 index 00000000..28fbb160 --- /dev/null +++ b/nest-app/package-lock.json @@ -0,0 +1,9018 @@ +{ + "name": "yt-notifier-backend", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "yt-notifier-backend", + "dependencies": { + "@googleapis/youtube": "13.0.0", + "@nestjs/cache-manager": "2.1.0", + "@nestjs/common": "10.2.7", + "@nestjs/config": "3.1.1", + "@nestjs/core": "10.2.7", + "@nestjs/passport": "10.0.2", + "@nestjs/platform-express": "10.2.7", + "@nestjs/typeorm": "10.0.0", + "cache-manager": "5.2.4", + "class-transformer": "0.5.1", + "class-validator": "0.14.0", + "connect-typeorm": "2.0.0", + "cookie-parser": "1.4.6", + "express-session": "1.17.3", + "google-auth-library": "9.1.0", + "helmet": "7.1.0", + "passport": "0.6.0", + "passport-google-oauth20": "2.0.0", + "pg": "8.11.3", + "reflect-metadata": "0.1.13", + "typeorm": "0.3.17" + }, + "devDependencies": { + "@darraghor/eslint-plugin-nestjs-typed": "4.2.1", + "@nestjs/cli": "10.1.18", + "@nestjs/mapped-types": "2.0.2", + "@nestjs/schematics": "10.0.2", + "@nestjs/swagger": "7.1.13", + "@swc/cli": "0.1.62", + "@swc/core": "1.3.93", + "@types/cookie-parser": "1.4.4", + "@types/express": "4.17.19", + "@types/express-session": "1.17.8", + "@types/node": "20.8.6", + "@types/passport-google-oauth20": "2.0.12", + "@typescript-eslint/eslint-plugin": "6.7.5", + "@typescript-eslint/parser": "6.7.5", + "cross-env": "7.0.3", + "eslint": "8.51.0", + "eslint-config-prettier": "9.0.0", + "eslint-plugin-prettier": "5.0.1", + "prettier": "3.0.3", + "source-map-support": "0.5.21", + "ts-loader": "9.5.0", + "ts-node": "10.9.1", + "tsconfig-paths": "4.2.0", + "typescript": "5.2.2" + } + }, + "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/@angular-devkit/core": { + "version": "16.2.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.3.tgz", + "integrity": "sha512-oZLdg2XTx7likYAXRj1CU0XmrsCfe5f2grj3iwuI3OB1LXwwpdbHBztruj03y3yHES+TnO+dIbkvRnvMXs7uAA==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.2.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.3.tgz", + "integrity": "sha512-+lBiHxi/C9HCfiCbtW25DldwvJDXXXv5oWw+Tg4s18BO/lYZLveGUEaZWu9ZJ5VIJ8GliUi2LohxhDxBkh4Oxg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.3", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.1", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli": { + "version": "16.2.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-16.2.3.tgz", + "integrity": "sha512-5YQCbQmY9Kc03a9Io4XHOrxGXjnzcVveUuUO64R1m5x2aA5I+mVR8NVvxuoGRAeoI1FWusAKRe9hH8nRCLrelA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.3", + "@angular-devkit/schematics": "16.2.3", + "ansi-colors": "4.1.3", + "inquirer": "8.2.4", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "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/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/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "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/runtime": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "devOptional": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@darraghor/eslint-plugin-nestjs-typed": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@darraghor/eslint-plugin-nestjs-typed/-/eslint-plugin-nestjs-typed-4.2.1.tgz", + "integrity": "sha512-mdFkb94Cb3ro3DI3g7BA13lEsMx6s3kFlZyu7yeaE5fHtUUCumAHIZ06B/9lj+6isp4BT6LQWNGEnlYbkiFYCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.4", + "@typescript-eslint/utils": "6.7.4", + "eslint-module-utils": "2.8.0", + "reflect-metadata": "0.1.13" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0", + "class-validator": "*", + "eslint": "^8.0.1" + } + }, + "node_modules/@darraghor/eslint-plugin-nestjs-typed/node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz", + "integrity": "sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.4", + "@typescript-eslint/visitor-keys": "6.7.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@darraghor/eslint-plugin-nestjs-typed/node_modules/@typescript-eslint/types": { + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.4.tgz", + "integrity": "sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@darraghor/eslint-plugin-nestjs-typed/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz", + "integrity": "sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.4", + "@typescript-eslint/visitor-keys": "6.7.4", + "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/@darraghor/eslint-plugin-nestjs-typed/node_modules/@typescript-eslint/utils": { + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.4.tgz", + "integrity": "sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==", + "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.7.4", + "@typescript-eslint/types": "6.7.4", + "@typescript-eslint/typescript-estree": "6.7.4", + "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/@darraghor/eslint-plugin-nestjs-typed/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz", + "integrity": "sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.4", + "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/@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.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "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/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "node_modules/@googleapis/youtube": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@googleapis/youtube/-/youtube-13.0.0.tgz", + "integrity": "sha512-txgO03TGMXLEcNEt7wE/kMzskoTbGp8P1wAR70B0VPTs0aTKh1povl2o8Ut4p2fCx14ITC6MWIgl05J4+btAJg==", + "dependencies": { + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.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": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "devOptional": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.4.tgz", + "integrity": "sha512-KE/SxsDqNs3rrWwFHcRh15ZLVFrI0YoZtgAdIyIq9k5hUNmiWRXXThPomIxHuL20sLdgzbDFyvkUMna14bvtrw==", + "dev": true + }, + "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==", + "devOptional": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "optional": true, + "peer": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mole-inc/bin-wrapper": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", + "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", + "dev": true, + "dependencies": { + "bin-check": "^4.1.0", + "bin-version-check": "^5.0.0", + "content-disposition": "^0.5.4", + "ext-name": "^5.0.0", + "file-type": "^17.1.6", + "filenamify": "^5.0.2", + "got": "^11.8.5", + "os-filter-obj": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@nestjs/cache-manager": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-2.1.0.tgz", + "integrity": "sha512-9kep3a8Mq5cMuXN/anGhSYc0P48CRBXk5wyJJRBFxhNkCH8AIzZF4CASGVDIEMmm3OjVcEUHojjyJwCODS17Qw==", + "peerDependencies": { + "@nestjs/common": "^9.0.0 || ^10.0.0", + "@nestjs/core": "^9.0.0 || ^10.0.0", + "cache-manager": "<=5", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.0.0" + } + }, + "node_modules/@nestjs/cli": { + "version": "10.1.18", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.1.18.tgz", + "integrity": "sha512-jQtG47keLsACt7b4YwJbTBYRm90n82gJpMaiR1HGAyQ9pccbctjSYu592eT4bxqkUWxPgBE3mpNynXj7dWAfrw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.3", + "@angular-devkit/schematics": "16.2.3", + "@angular-devkit/schematics-cli": "16.2.3", + "@nestjs/schematics": "^10.0.1", + "chalk": "4.1.2", + "chokidar": "3.5.3", + "cli-table3": "0.6.3", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "8.0.0", + "inquirer": "8.2.6", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "os-name": "4.0.1", + "rimraf": "4.4.1", + "shelljs": "0.8.5", + "source-map-support": "0.5.21", + "tree-kill": "1.2.2", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.1.0", + "typescript": "5.2.2", + "webpack": "5.88.2", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nestjs/cli/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/@nestjs/cli/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/cli/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/cli/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nestjs/cli/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/common": { + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.2.7.tgz", + "integrity": "sha512-cUtCRXiUstDmh4bSBhVbq4cI439Gngp4LgLGLBmd5dqFQodfXKnSD441ldYfFiLz4rbUsnoMJz/8ZjuIEI+B7A==", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.6.2", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/config": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.1.1.tgz", + "integrity": "sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==", + "dependencies": { + "dotenv": "16.3.1", + "dotenv-expand": "10.0.0", + "lodash": "4.17.21", + "uuid": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@nestjs/core": { + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.2.7.tgz", + "integrity": "sha512-5GSu53QUUcwX17sNmlJPa1I0wIeAZOKbedyVuQx0ZAwWVa9g0wJBbsNP+R4EJ+j5Dkdzt/8xkiZvnKt8RFRR8g==", + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.2.0", + "tslib": "2.6.2", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0", + "@nestjs/websockets": "^10.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/mapped-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.2.tgz", + "integrity": "sha512-V0izw6tWs6fTp9+KiiPUbGHWALy563Frn8X6Bm87ANLRuE46iuBMD5acKBDP5lKL/75QFvrzSJT7HkCbB0jTpg==", + "dev": true, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "class-transformer": "^0.4.0 || ^0.5.0", + "class-validator": "^0.13.0 || ^0.14.0", + "reflect-metadata": "^0.1.12" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/passport": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-10.0.2.tgz", + "integrity": "sha512-od31vfB2z3y05IDB5dWSbCGE2+pAf2k2WCBinNuTTOxN0O0+wtO1L3kawj/aCW3YR9uxsTOVbTDwtwgpNNsnjQ==", + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "passport": "^0.4.0 || ^0.5.0 || ^0.6.0" + } + }, + "node_modules/@nestjs/platform-express": { + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.2.7.tgz", + "integrity": "sha512-p+kp6aJtkgAdVpUrCVmM6MKtOvjsbt7QofBiZMidjYesZkMeG5gZ1D2SK8XzvQ8VXHJfFgEdY2xcKGB+wJLOYQ==", + "dependencies": { + "body-parser": "1.20.2", + "cors": "2.8.5", + "express": "4.18.2", + "multer": "1.4.4-lts.1", + "tslib": "2.6.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/core": "^10.0.0" + } + }, + "node_modules/@nestjs/schematics": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.2.tgz", + "integrity": "sha512-DaZZjymYoIfRqC5W62lnYXIIods1PDY6CGc8+IpRwyinzffjKxZ3DF3exu+mdyvllzkXo9DTXkoX4zOPSJHCkw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.1.8", + "@angular-devkit/schematics": "16.1.8", + "comment-json": "4.2.3", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", + "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.8.tgz", + "integrity": "sha512-6LyzMdFJs337RTxxkI2U1Ndw0CW5mMX/aXWl8d7cW2odiSrAg8IdlMqpc+AM8+CPfsB0FtS1aWkEZqJLT0jHOg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.1.8", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nestjs/swagger": { + "version": "7.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.1.13.tgz", + "integrity": "sha512-aHfW0rDZZKTuPVSkxutBCB16lBy5vrsHVoRF5RvPtH7U2cm4Vf+OnfhxKKuG2g2Xocn9sDL+JAyVlY2VN3ytTw==", + "dev": true, + "dependencies": { + "@nestjs/mapped-types": "2.0.2", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "path-to-regexp": "3.2.0", + "swagger-ui-dist": "5.9.0" + }, + "peerDependencies": { + "@fastify/static": "^6.0.0", + "@nestjs/common": "^9.0.0 || ^10.0.0", + "@nestjs/core": "^9.0.0 || ^10.0.0", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12" + }, + "peerDependenciesMeta": { + "@fastify/static": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/typeorm": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-10.0.0.tgz", + "integrity": "sha512-WQU4HCDTz4UavsFzvGUKDHqi0MO5K47yFoPXdmh+Z/hCNO7SHCMmV9jLiLukM8n5nKUqJ3jDqiljkWBcZPdCtA==", + "dependencies": { + "uuid": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.2.0", + "typeorm": "^0.3.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "peer": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "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", + "optional": true, + "peer": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.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/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==" + }, + "node_modules/@swc/cli": { + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.62.tgz", + "integrity": "sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==", + "dev": true, + "dependencies": { + "@mole-inc/bin-wrapper": "^8.0.1", + "commander": "^7.1.0", + "fast-glob": "^3.2.5", + "semver": "^7.3.8", + "slash": "3.0.0", + "source-map": "^0.7.3" + }, + "bin": { + "spack": "bin/spack.js", + "swc": "bin/swc.js", + "swcx": "bin/swcx.js" + }, + "engines": { + "node": ">= 12.13" + }, + "peerDependencies": { + "@swc/core": "^1.2.66", + "chokidar": "^3.5.1" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@swc/cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@swc/core": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", + "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.93", + "@swc/core-darwin-x64": "1.3.93", + "@swc/core-linux-arm-gnueabihf": "1.3.93", + "@swc/core-linux-arm64-gnu": "1.3.93", + "@swc/core-linux-arm64-musl": "1.3.93", + "@swc/core-linux-x64-gnu": "1.3.93", + "@swc/core-linux-x64-musl": "1.3.93", + "@swc/core-win32-arm64-msvc": "1.3.93", + "@swc/core-win32-ia32-msvc": "1.3.93", + "@swc/core-win32-x64-msvc": "1.3.93" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", + "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz", + "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz", + "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz", + "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz", + "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", + "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", + "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz", + "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz", + "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz", + "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true + }, + "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==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "devOptional": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "devOptional": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookie-parser": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.4.tgz", + "integrity": "sha512-Var+aj5I6ZgIqsQ05N2V8q5OBrFfZXtIGWWDSrEYLIbMw758obagSwdGcLCjwh1Ga7M7+wj0SDIAaAC/WT7aaA==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/debug": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.31.tgz", + "integrity": "sha512-LS1MCPaQKqspg7FvexuhmDbWUhE2yIJ+4AgVIyObfc06/UKZ8REgxGNjZc82wPLWmbeOm7S+gSsLgo75TanG4A==" + }, + "node_modules/@types/eslint": { + "version": "8.40.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", + "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz", + "integrity": "sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express-session": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.8.tgz", + "integrity": "sha512-bFF7/3wOldMn+56XyFRGY9ZzCr3JWhNSP2ajMPgTlbZR6BQOCHdAbNA9W5dMBPgMywpIP4zkmhxP6Opm/NRYMQ==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", + "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/node": { + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/@types/oauth": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.1.tgz", + "integrity": "sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/passport": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.12.tgz", + "integrity": "sha512-QFdJ2TiAEoXfEQSNDISJR1Tm51I78CymqcBa8imbjo6dNNu+l2huDxxbDEIoFIwOSKMkOfHEikyDuZ38WwWsmw==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/passport-google-oauth20": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/passport-google-oauth20/-/passport-google-oauth20-2.0.12.tgz", + "integrity": "sha512-+MBVB8uYd8mMZYvTwYChCa2LBGVK9FMwdK5TtcNHMeTL6qBZ3QW0HeUtZiAlwgkw2LYM0Btlzyb19EA8ysm13g==", + "dev": true, + "dependencies": { + "@types/express": "*", + "@types/passport": "*", + "@types/passport-oauth2": "*" + } + }, + "node_modules/@types/passport-oauth2": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.12.tgz", + "integrity": "sha512-RZg6cYTyEGinrZn/7REYQds6zrTxoBorX1/fdaz5UHzkG8xdFE7QQxkJagCr2ETzGII58FAFDmnmbTUVMrltNA==", + "dev": true, + "dependencies": { + "@types/express": "*", + "@types/oauth": "*", + "@types/passport": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/responselike": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", + "integrity": "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/validator": { + "version": "13.11.2", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.2.tgz", + "integrity": "sha512-nIKVVQKT6kGKysnNt+xLobr+pFJNssJRi2s034wgWeFBUx01fI8BeHTW2TcRp7VcFu9QCYG8IlChTuovcm0oKQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", + "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/type-utils": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", + "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", + "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5" + }, + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", + "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", + "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", + "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", + "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "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.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", + "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "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/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true, + "peer": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "devOptional": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "devOptional": true, + "engines": { + "node": ">=0.4.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==", + "optional": true, + "peer": true, + "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==", + "optional": true, + "peer": true, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "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/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "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==", + "optional": true, + "peer": true + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "optional": true, + "peer": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/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==", + "optional": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true + }, + "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==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true + }, + "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/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/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "engines": { + "node": ">=6.0.0" + } + }, + "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/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/bin-check": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "dev": true, + "dependencies": { + "execa": "^0.7.0", + "executable": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/bin-check/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/bin-check/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bin-check/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/bin-version": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", + "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "find-versions": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version-check": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz", + "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==", + "dev": true, + "dependencies": { + "bin-version": "^6.0.0", + "semver": "^7.5.3", + "semver-truncate": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version/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/bin-version/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/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==", + "devOptional": true, + "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==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "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.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "engines": { + "node": ">=4" + } + }, + "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/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "peer": 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/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cache-manager": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-5.2.4.tgz", + "integrity": "sha512-gkuCjug16NdGvKm/sydxGVx17uffrSWcEe2xraBtwRCgdYcFxwJAla4OYpASAZT2yhSoxgDiWL9XH6IAChcZJA==", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "^10.0.1" + } + }, + "node_modules/cache-manager/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==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001509", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz", + "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==", + "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/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + }, + "node_modules/class-validator": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + "dependencies": { + "@types/validator": "^13.7.10", + "libphonenumber-js": "^1.10.14", + "validator": "^13.7.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/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/cli-highlight/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/cli-highlight/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/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "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==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "optional": true, + "peer": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/connect-typeorm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-typeorm/-/connect-typeorm-2.0.0.tgz", + "integrity": "sha512-0OcbHJkNMTJjSrbcKGljr4PKgRq13Dds7zQq3+8oaf4syQTgGvGv9OgnXo2qg+Bljkh4aJNzIvW74QOVLn8zrw==", + "dependencies": { + "@types/debug": "0.0.31", + "@types/express-session": "^1.15.5", + "debug": "^4.1.1", + "express-session": "^1.15.6" + }, + "peerDependencies": { + "typeorm": "^0.3.0" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "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==", + "optional": true, + "peer": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "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==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "devOptional": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "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/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/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/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "optional": true, + "peer": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "devOptional": true, + "engines": { + "node": ">=0.3.1" + } + }, + "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/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.447", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.447.tgz", + "integrity": "sha512-sxX0LXh+uL41hSJsujAN86PjhrV/6c79XmpY0TvjZStV6VxIgarf8SRkUoUTuYmFcZQTemsoqo8qXOGw5npWfw==", + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true, + "peer": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true + }, + "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-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "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": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "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-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/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/eslint/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/eslint/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/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/eslint/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/eslint/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/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/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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/esquery/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/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "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/execa/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/execa/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/execa/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/execa/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/execa/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/execa/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/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-session": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "dependencies": { + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express-session/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express-session/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express-session/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-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.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/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/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "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==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/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/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": "17.1.6", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", + "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", + "dev": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0-alpha.9", + "token-types": "^5.0.0-alpha.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/filename-reserved-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/filenamify": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", + "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^3.0.0", + "strip-outer": "^2.0.0", + "trim-repeated": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "dev": true, + "dependencies": { + "semver-regex": "^4.0.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "optional": true, + "peer": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gaxios": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.1.tgz", + "integrity": "sha512-bw8smrX+XlAoo9o1JAksBwX+hi/RG15J+NTSxmNPIclKC3ZVK6C2afwY8OSdRvOK0+ZLecUJYtj2MmjOt3Dm0w==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gcp-metadata": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.0.0.tgz", + "integrity": "sha512-Ozxyi23/1Ar51wjUT2RDklK+3HxqDr8TLBNK8rBBFQ7T85iIGnXnVusauj06QyqCXRFZig8LZC+TUddWbndlpQ==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "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-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "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/google-auth-library": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.1.0.tgz", + "integrity": "sha512-1M9HdOcQNPV5BwSXqwwT238MTKodJFBxZ/V2JP397ieOLv4FjQdfYb9SooR7Mb+oUT2IJ92mLJQf804dyx0MJA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.0.0", + "gcp-metadata": "^6.0.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis-common": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.0.0.tgz", + "integrity": "sha512-58iSybJPQZ8XZNMpjrklICefuOuyJ0lMxfKmBqmaC0/xGT4SiOs4BE60LAOOGtBURy1n8fHa2X2YUNFEWWbXyQ==", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.0.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "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==", + "devOptional": true + }, + "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/gtoken": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.0.1.tgz", + "integrity": "sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "optional": true, + "peer": true + }, + "node_modules/helmet": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz", + "integrity": "sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "engines": { + "node": "*" + } + }, + "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==", + "devOptional": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-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==", + "optional": true, + "peer": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "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==", + "optional": true, + "peer": true, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "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/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==", + "devOptional": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true, + "peer": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "optional": true, + "peer": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "optional": true, + "peer": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-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-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-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==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "engines": { + "node": ">=6" + } + }, + "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/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "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": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/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/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/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "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/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/libphonenumber-js": { + "version": "1.10.47", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.47.tgz", + "integrity": "sha512-b4t7VQDV29xx/ni+58yl9KWPGjnDLDXCeCTLrD4V8vDpObXZRZBrg7uX/HWZ7YXiJKqdBDGgc+barUUTNB6Slw==" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/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.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "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/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/macos-release": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", + "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/magic-string": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "optional": true, + "peer": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "devOptional": true + }, + "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==", + "optional": true, + "peer": 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/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "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": "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/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "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==", + "devOptional": true, + "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/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "optional": true, + "peer": 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/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==", + "optional": true, + "peer": true, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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/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/multer": { + "version": "1.4.4-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", + "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "optional": true, + "peer": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "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==", + "optional": true, + "peer": 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/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==", + "optional": true, + "peer": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "peer": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/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==", + "optional": true, + "peer": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/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==", + "optional": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, + "peer": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "optional": true, + "peer": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "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/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-filter-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "dev": true, + "dependencies": { + "arch": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-name": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", + "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", + "dev": true, + "dependencies": { + "macos-release": "^2.5.0", + "windows-release": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/passport": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz", + "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==", + "dependencies": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-google-oauth20": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz", + "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==", + "dependencies": { + "passport-oauth2": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/passport-oauth2": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.7.0.tgz", + "integrity": "sha512-j2gf34szdTF2Onw3+76alNnaAExlUmHvkc7cL+cmaS5NzHzDP/BvFHJruueQ9XAeNOdpI+CH+PWid8RA7KCwAQ==", + "dependencies": { + "base64url": "3.x.x", + "oauth": "0.9.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/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/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "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/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, + "node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/pg": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", + "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.6.2", + "pg-pool": "^3.6.1", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", + "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-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==" + }, + "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==", + "optional": true, + "peer": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "peer": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "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/readable-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==" + }, + "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==", + "dev": true, + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readable-web-to-node-stream/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "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/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "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/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.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-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "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/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "devOptional": true, + "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-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "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==" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/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==", + "devOptional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-truncate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz", + "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "optional": true, + "peer": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "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/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true + }, + "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/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "optional": true, + "peer": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "optional": true, + "peer": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dev": true, + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sqlite3": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", + "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", + "hasInstallScript": true, + "optional": true, + "peer": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/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==" + }, + "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-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/strip-outer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", + "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "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==", + "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/swagger-ui-dist": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.9.0.tgz", + "integrity": "sha512-NUHSYoe5XRTk/Are8jPJ6phzBh3l9l33nEyXosM17QInoV95/jng8+PuSGtbD407QoPf93MH3Bkh773OgesJpA==", + "dev": true + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/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/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "optional": true, + "peer": true, + "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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", + "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/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/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/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/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-repeated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", + "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/ts-loader": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", + "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "devOptional": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/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/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/typeorm": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.17.tgz", + "integrity": "sha512-UDjUEwIQalO9tWw9O2A4GU+sT3oyoUXheHJy4ft+RFdnRdQctdQ34L9SqE2p7LdwzafHx1maxT+bqXON+Qnmig==", + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "chalk": "^4.1.2", + "cli-highlight": "^2.1.11", + "date-fns": "^2.29.3", + "debug": "^4.3.4", + "dotenv": "^16.0.3", + "glob": "^8.1.0", + "mkdirp": "^2.1.3", + "reflect-metadata": "^0.1.13", + "sha.js": "^2.4.11", + "tslib": "^2.5.0", + "uuid": "^9.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">= 12.9.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0", + "@sap/hana-client": "^2.12.25", + "better-sqlite3": "^7.1.2 || ^8.0.0", + "hdb-pool": "^0.1.6", + "ioredis": "^5.0.4", + "mongodb": "^5.2.0", + "mssql": "^9.1.1", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^5.1.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "hdb-pool": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/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/typeorm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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.2.1" + } + }, + "node_modules/typeorm/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/typeorm/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/typeorm/node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + }, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "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/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/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "devOptional": true + }, + "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/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/windows-release": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", + "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", + "dev": true, + "dependencies": { + "execa": "^4.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/windows-release/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "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/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/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "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": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "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/nest-app/package.json b/nest-app/package.json new file mode 100644 index 00000000..1ebba486 --- /dev/null +++ b/nest-app/package.json @@ -0,0 +1,68 @@ +{ + "name": "yt-notifier-backend", + "main": "dist/main", + "scripts": { + "start:dev": "cross-env NODE_ENV=development nest start --watch", + "start:debug": "cross-env NODE_ENV=development nest start --debug --watch", + "start:dev:remote": "cross-env NODE_ENV=remote-development nest start", + "start:prod": "cross-env NODE_ENV=production nest start", + "build": "nest build", + "lint": "eslint src --ext .ts", + "lint:fix": "npm run lint -- --fix", + "prettier": "prettier . --write", + "typeorm": "npm run build && npx typeorm -d dist/database/config/data-source.js", + "migration:generate": "npm run typeorm migration:generate", + "migration:create": "npx typeorm migration:create", + "migration:run": "npm run typeorm migration:run", + "migration:revert": "npm run typeorm migration:revert" + }, + "dependencies": { + "@googleapis/youtube": "13.0.0", + "@nestjs/cache-manager": "2.1.0", + "@nestjs/common": "10.2.7", + "@nestjs/config": "3.1.1", + "@nestjs/core": "10.2.7", + "@nestjs/passport": "10.0.2", + "@nestjs/platform-express": "10.2.7", + "@nestjs/typeorm": "10.0.0", + "cache-manager": "5.2.4", + "class-transformer": "0.5.1", + "class-validator": "0.14.0", + "connect-typeorm": "2.0.0", + "cookie-parser": "1.4.6", + "express-session": "1.17.3", + "google-auth-library": "9.1.0", + "helmet": "7.1.0", + "passport": "0.6.0", + "passport-google-oauth20": "2.0.0", + "pg": "8.11.3", + "reflect-metadata": "0.1.13", + "typeorm": "0.3.17" + }, + "devDependencies": { + "@darraghor/eslint-plugin-nestjs-typed": "4.2.1", + "@nestjs/cli": "10.1.18", + "@nestjs/mapped-types": "2.0.2", + "@nestjs/schematics": "10.0.2", + "@nestjs/swagger": "7.1.13", + "@swc/cli": "0.1.62", + "@swc/core": "1.3.93", + "@types/cookie-parser": "1.4.4", + "@types/express": "4.17.19", + "@types/express-session": "1.17.8", + "@types/node": "20.8.6", + "@types/passport-google-oauth20": "2.0.12", + "@typescript-eslint/eslint-plugin": "6.7.5", + "@typescript-eslint/parser": "6.7.5", + "cross-env": "7.0.3", + "eslint": "8.51.0", + "eslint-config-prettier": "9.0.0", + "eslint-plugin-prettier": "5.0.1", + "prettier": "3.0.3", + "source-map-support": "0.5.21", + "ts-loader": "9.5.0", + "ts-node": "10.9.1", + "tsconfig-paths": "4.2.0", + "typescript": "5.2.2" + } +} diff --git a/nest-app/src/app.module.ts b/nest-app/src/app.module.ts new file mode 100644 index 00000000..b767a0fd --- /dev/null +++ b/nest-app/src/app.module.ts @@ -0,0 +1,36 @@ +import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { AuthModule } from './auth/auth.module'; +import { OAuth2Module } from './auth/oauth2.module'; +import { typeOrmFactory } from './database/config/typeorm.config'; +import { KeyWordsModule } from './key-words/key-words.module'; +import { UserYtVideosModule } from './user-yt-videos/user-yt-videos.module'; +import { UsersModule } from './users/users.module'; +import { ErrorLogsModule } from './error-logs/error-logs.module'; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + expandVariables: process.env.NODE_ENV === 'development', + envFilePath: [ + `${process.cwd()}${ + process.env.NODE_ENV === 'production' + ? '\\envs\\prod.env' + : process.env.NODE_ENV === 'development' + ? '\\envs\\local.env' + : '\\envs\\dev-remote.env' + }`, + ], + }), + TypeOrmModule.forRootAsync(typeOrmFactory), + UsersModule, + AuthModule, + OAuth2Module, + KeyWordsModule, + UserYtVideosModule, + ErrorLogsModule, + ], +}) +export class AppModule {} diff --git a/nest-app/src/auth/auth.controller.ts b/nest-app/src/auth/auth.controller.ts new file mode 100644 index 00000000..4f28ce58 --- /dev/null +++ b/nest-app/src/auth/auth.controller.ts @@ -0,0 +1,133 @@ +import { + Controller, + Delete, + Get, + HttpException, + Inject, + InternalServerErrorException, + Post, + Req, + Res, + Session, + UseGuards, +} from '@nestjs/common'; +import { + ApiExcludeEndpoint, + ApiInternalServerErrorResponse, + ApiOAuth2, + ApiOkResponse, + ApiOperation, + ApiTags, + ApiUnauthorizedResponse, +} from '@nestjs/swagger'; +import { Request, Response } from 'express'; +import { SessionData } from 'express-session'; +import { OAuth2Client } from 'google-auth-library'; +import { SESSION_COOKIE_NAME } from '../constants'; +import { AuthResponse } from '../swagger/response-examples/auth.response'; +import { ErrorResponse } from '../swagger/response-examples/error.response'; +import { ReqUserId } from '../users/decorators/user.decorator'; +import { UsersService } from '../users/users.service'; +import { GoogleAuthGuard } from './googleAuth/google.guard'; +import { OAUTH2_GOOGLE_CLIENT } from './oauth2.module'; +import { SessionsGuard } from './sessions/sessions.guard'; + +@ApiTags('auth') +@Controller('auth') +export class AuthController { + constructor( + private readonly usersService: UsersService, + @Inject(OAUTH2_GOOGLE_CLIENT) + private readonly oAuth2GoogleClient: OAuth2Client, + ) {} + + @ApiOperation({ + summary: "Works only when it's opened as window/chrome tab, don't work with postman/axios or etc.", + }) + @ApiOkResponse() + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: + "Could have message: 'No verified email returned from Google Authorization!', then cause: unconfirmed_email, normally cause: unauthorized", + }) + @ApiInternalServerErrorResponse({ + description: "Error could occur when server can't update refresh token: 'Error on updating user'", + }) + @Get('login') + @UseGuards(GoogleAuthGuard) + async login() {} + + @ApiExcludeEndpoint() + @ApiOkResponse() + @Get('redirect') + @UseGuards(GoogleAuthGuard) + async handleRedirect( + @Res({ passthrough: true }) res: Response, + @Session() + session: Omit & { cookie: { secure: boolean } }, + ) { + const htmlContent = + 'Redirect'; + + res.cookie(SESSION_COOKIE_NAME, session.id, session.cookie); + res.status(200).send(htmlContent); + } + + @ApiOAuth2([]) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @ApiInternalServerErrorResponse({ + description: 'Error on destroying session: {Error message}', + }) + @ApiOkResponse() + @Post('logout') + @UseGuards(SessionsGuard) + async logout(@Req() req: Request, @Res() res: Response) { + req.logout((err: HttpException) => err && res.status(500).send('Error on destroying session: ' + err.message)); + + return res.clearCookie(SESSION_COOKIE_NAME).sendStatus(200); + } + + @ApiOAuth2([]) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @ApiOkResponse({ type: AuthResponse }) + @Get('me') + @UseGuards(SessionsGuard) + async getCurrentUser(@ReqUserId() userId: number) { + return this.usersService.findOneById(userId); + } + + @ApiOAuth2([]) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @ApiInternalServerErrorResponse({ + description: 'Error on deleting user profile {error message}, but the message is optional', + }) + @ApiOkResponse() + @Delete('remove-account') + @UseGuards(SessionsGuard) + async removeAccount(@ReqUserId() userId: number, @Req() req: Request, @Res() res: Response) { + const { refreshToken } = await this.usersService.getRefreshTokenById(userId); + + const revokeResult = await this.oAuth2GoogleClient.revokeToken(refreshToken); + + if (revokeResult.status === 200) { + const deleteResult = await this.usersService.delete(userId); + + if (!deleteResult.affected) { + throw new InternalServerErrorException('Error on deleting user profile'); + } + } else { + throw new InternalServerErrorException('Error on deleting user profile'); + } + + return this.logout(req, res); + } +} diff --git a/nest-app/src/auth/auth.module.ts b/nest-app/src/auth/auth.module.ts new file mode 100644 index 00000000..d70cba61 --- /dev/null +++ b/nest-app/src/auth/auth.module.ts @@ -0,0 +1,19 @@ +import { Global, Module } from '@nestjs/common'; +import { PassportModule } from '@nestjs/passport'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { AuthController } from './auth.controller'; +import { GoogleAuthGuard } from './googleAuth/google.guard'; +import { GoogleStrategy } from './googleAuth/google.strategy'; +import { SessionsEntity } from './sessions/model/sessions.entity'; +import { SessionsGuard } from './sessions/sessions.guard'; +import { SessionsSerializer } from './sessions/sessions.serializer'; +import { SessionsService } from './sessions/sessions.service'; + +@Global() +@Module({ + imports: [PassportModule, TypeOrmModule.forFeature([SessionsEntity])], + providers: [GoogleStrategy, GoogleAuthGuard, SessionsSerializer, SessionsService, SessionsGuard], + controllers: [AuthController], + exports: [SessionsService], +}) +export class AuthModule {} diff --git a/nest-app/src/auth/googleAuth/google.guard.ts b/nest-app/src/auth/googleAuth/google.guard.ts new file mode 100644 index 00000000..59a19d20 --- /dev/null +++ b/nest-app/src/auth/googleAuth/google.guard.ts @@ -0,0 +1,18 @@ +import { ExecutionContext, Injectable } from '@nestjs/common'; +import { AuthGuard } from '@nestjs/passport'; + +@Injectable() +export class GoogleAuthGuard extends AuthGuard('google') { + constructor() { + super({ + accessType: 'offline', + }); + } + + async canActivate(context: ExecutionContext) { + const activate = (await super.canActivate(context)) as boolean; + const request = context.switchToHttp().getRequest(); + await super.logIn(request); + return activate; + } +} diff --git a/nest-app/src/auth/googleAuth/google.strategy.ts b/nest-app/src/auth/googleAuth/google.strategy.ts new file mode 100644 index 00000000..073d4563 --- /dev/null +++ b/nest-app/src/auth/googleAuth/google.strategy.ts @@ -0,0 +1,40 @@ +import { Injectable, UnauthorizedException } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { PassportStrategy } from '@nestjs/passport'; +import { Strategy, VerifyCallback } from 'passport-google-oauth20'; +import { GOOGLE_REDIRECT_URL } from '../../constants'; +import { UsersService } from '../../users/users.service'; +import { IProfile } from '../../users/users.types'; + +@Injectable() +export class GoogleStrategy extends PassportStrategy(Strategy, 'google') { + constructor( + private readonly configService: ConfigService, + private readonly userService: UsersService, + ) { + super({ + clientID: configService.get('GOOGLE_CLIENT_ID'), + clientSecret: configService.get('GOOGLE_CLIENT_SECRET'), + callbackURL: `${configService.get('HOST')}${GOOGLE_REDIRECT_URL}`, + scope: ['email', 'profile', 'https://www.googleapis.com/auth/youtube'], + }); + } + + async validate(accessToken: string, refreshToken: string | undefined, profile: IProfile, done: VerifyCallback) { + const email = profile.emails.find(email => email.verified); + + if (!email) { + done( + new UnauthorizedException({ + reason: 'No verified email returned from Google Authorization!', + cause: 'unconfirmed_email', + }), + null, + ); + } + + const { id } = await this.userService.findOrCreate(refreshToken, profile); + + done(null, { id, accessToken }); + } +} diff --git a/nest-app/src/auth/oauth2.module.ts b/nest-app/src/auth/oauth2.module.ts new file mode 100644 index 00000000..e94c87fb --- /dev/null +++ b/nest-app/src/auth/oauth2.module.ts @@ -0,0 +1,25 @@ +import { Global, Module } from '@nestjs/common'; +import { FactoryProvider } from '@nestjs/common/interfaces/modules/provider.interface'; +import { ConfigService } from '@nestjs/config'; +import { OAuth2Client } from 'google-auth-library'; +import { GOOGLE_REDIRECT_URL } from '../constants'; + +export const OAUTH2_GOOGLE_CLIENT = 'OAUTH2_GOOGLE_CLIENT'; + +const oAuth2GoogleClientProvider: FactoryProvider = { + provide: OAUTH2_GOOGLE_CLIENT, + inject: [ConfigService], + useFactory: async (configService: ConfigService) => + new OAuth2Client({ + clientId: configService.get('GOOGLE_CLIENT_ID'), + clientSecret: configService.get('GOOGLE_CLIENT_SECRET'), + redirectUri: GOOGLE_REDIRECT_URL, + }), +}; + +@Global() +@Module({ + providers: [oAuth2GoogleClientProvider], + exports: [oAuth2GoogleClientProvider], +}) +export class OAuth2Module {} diff --git a/nest-app/src/auth/sessions/model/sessions.entity.ts b/nest-app/src/auth/sessions/model/sessions.entity.ts new file mode 100644 index 00000000..936b80fe --- /dev/null +++ b/nest-app/src/auth/sessions/model/sessions.entity.ts @@ -0,0 +1,18 @@ +import { ISession } from 'connect-typeorm'; +import { Column, DeleteDateColumn, Entity, Index, PrimaryColumn } from 'typeorm'; + +@Entity('sessions') +export class SessionsEntity implements ISession { + @Index() + @Column('bigint') + public expiredAt = Date.now(); + + @PrimaryColumn('varchar', { length: 255 }) + public id = ''; + + @Column('text') + public json = ''; + + @DeleteDateColumn() + public destroyedAt?: Date = null; +} diff --git a/nest-app/src/auth/sessions/sessions.guard.ts b/nest-app/src/auth/sessions/sessions.guard.ts new file mode 100644 index 00000000..fcacd6a5 --- /dev/null +++ b/nest-app/src/auth/sessions/sessions.guard.ts @@ -0,0 +1,65 @@ +import { CanActivate, ExecutionContext, Inject, Injectable, UnauthorizedException } from '@nestjs/common'; +import { Request } from 'express'; +import { OAuth2Client } from 'google-auth-library'; +import { EAGER_TIME_TO_REFRESH_ACCESS_TOKEN } from '../../constants'; +import { UsersService } from '../../users/users.service'; +import { OAUTH2_GOOGLE_CLIENT } from '../oauth2.module'; +import { SessionsService } from './sessions.service'; + +@Injectable() +export class SessionsGuard implements CanActivate { + constructor( + private readonly sessionService: SessionsService, + @Inject(OAUTH2_GOOGLE_CLIENT) private readonly oAuth2GoogleClient: OAuth2Client, + private readonly usersService: UsersService, + ) {} + + async canActivate(context: ExecutionContext) { + const request = context.switchToHttp().getRequest(); + + const sessionExists = !!(await this.sessionService.findById(request.session.id)); + + if (!sessionExists) { + throw new UnauthorizedException({ reason: 'Unauthorized', cause: 'unauthorized' }); + } + + const { refreshToken } = await this.usersService.getRefreshTokenById(request.session.passport.user.id); + + await this.assignCurrentUserToOAuth2Client(request, refreshToken); + + return sessionExists; + } + + private async assignCurrentUserToOAuth2Client(request: Request, refreshToken: string) { + await this.oAuth2GoogleClient + .getTokenInfo(request.session.passport.user.accessToken) + .then(async tokenInfo => { + if (new Date(tokenInfo.expiry_date - EAGER_TIME_TO_REFRESH_ACCESS_TOKEN) < new Date()) { + await this.refreshAccessToken(request, refreshToken); + } + }) + .catch(async err => { + if (err.response.data.error === 'invalid_token') { + await this.refreshAccessToken(request, refreshToken); + } + }); + + this.oAuth2GoogleClient.setCredentials({ + refresh_token: refreshToken, + access_token: request.session.passport.user.accessToken, + }); + } + + private async refreshAccessToken(request: Request, refreshToken: string) { + this.oAuth2GoogleClient.setCredentials({ refresh_token: refreshToken }); + + try { + const { credentials } = await this.oAuth2GoogleClient.refreshAccessToken(); + request.session.passport.user.accessToken = credentials.access_token; + } catch (err) { + if (err.response.data.error === 'invalid_grant') { + throw new UnauthorizedException({ reason: 'Unauthorized', cause: 'unauthorized' }); + } + } + } +} diff --git a/nest-app/src/auth/sessions/sessions.serializer.ts b/nest-app/src/auth/sessions/sessions.serializer.ts new file mode 100644 index 00000000..f6ebcd7e --- /dev/null +++ b/nest-app/src/auth/sessions/sessions.serializer.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@nestjs/common'; +import { PassportSerializer } from '@nestjs/passport'; +import { UsersService } from '../../users/users.service'; +import { IUser } from '../../users/users.types'; + +@Injectable() +export class SessionsSerializer extends PassportSerializer { + constructor(private readonly userService: UsersService) { + super(); + } + + // eslint-disable-next-line @typescript-eslint/ban-types + serializeUser(user: IUser, done: Function) { + done(null, user); + } + + // eslint-disable-next-line @typescript-eslint/ban-types + async deserializeUser(payload: IUser, done: Function) { + const user = await this.userService.findOneById(payload.id); + + return user ? done(null, user) : done(null, null); + } +} diff --git a/nest-app/src/auth/sessions/sessions.service.ts b/nest-app/src/auth/sessions/sessions.service.ts new file mode 100644 index 00000000..185ec45a --- /dev/null +++ b/nest-app/src/auth/sessions/sessions.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { SessionsEntity } from './model/sessions.entity'; + +@Injectable() +export class SessionsService { + constructor( + @InjectRepository(SessionsEntity) + private readonly sessionRepository: Repository, + ) {} + + async findById(id: string) { + return this.sessionRepository.findOneBy({ id }); + } +} diff --git a/nest-app/src/constants.ts b/nest-app/src/constants.ts new file mode 100644 index 00000000..351d907d --- /dev/null +++ b/nest-app/src/constants.ts @@ -0,0 +1,10 @@ +// THIS NAME MUST BE THE SAME AS IN FRONTEND CONSTANS, DON'T CHANGE IT, OR IF YOU NEED TO CHANGE, DO IT ALSO IN THE FRONTEND. +export const SESSION_COOKIE_NAME = 'NESTJS_SESSION_COOKIE'; +export const SESSION_TTL = 604800; +export const COOKIE_MAX_AGE = 3600000; + +export const DEFAULT_FETCH_DATE = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); // 7 DAYS FROM FIRST LOG IN + +export const GOOGLE_REDIRECT_URL = '/api/auth/redirect'; + +export const EAGER_TIME_TO_REFRESH_ACCESS_TOKEN = 10000; // In milliseconds diff --git a/nest-app/src/database/config/data-source.ts b/nest-app/src/database/config/data-source.ts new file mode 100644 index 00000000..1925ac9b --- /dev/null +++ b/nest-app/src/database/config/data-source.ts @@ -0,0 +1,21 @@ +import * as dotenv from 'dotenv'; +import * as dotenvExpand from 'dotenv-expand'; +import { DataSource } from 'typeorm'; + +dotenvExpand.expand( + dotenv.config({ + path: `${process.cwd()}${process.env.NODE_ENV === 'production' ? '\\envs\\prod.env' : '\\envs\\local.env'}`, + }), +); + +export default new DataSource({ + type: 'postgres', + host: process.env.DB_HOST, + port: +process.env.DB_PORT, + username: process.env.DB_USERNAME, + password: process.env.DB_PASSWORD, + database: process.env.DB_DATABASE, + extra: { charset: 'utf8mb4_unicode_ci' }, + entities: ['dist/**/*.entity.js'], + migrations: ['dist/database/migrations/*.js'], +}); diff --git a/nest-app/src/database/config/typeorm.config.ts b/nest-app/src/database/config/typeorm.config.ts new file mode 100644 index 00000000..712b79af --- /dev/null +++ b/nest-app/src/database/config/typeorm.config.ts @@ -0,0 +1,22 @@ +import { ConfigService } from '@nestjs/config'; +import { TypeOrmModuleAsyncOptions } from '@nestjs/typeorm/dist/interfaces/typeorm-options.interface'; +import { DataSource } from 'typeorm'; +import { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions'; + +export const typeOrmFactory: TypeOrmModuleAsyncOptions = { + inject: [ConfigService], + useFactory: async (configService: ConfigService): Promise => ({ + type: 'postgres', + host: configService.get('DB_HOST'), + port: +configService.get('DB_PORT'), + username: configService.get('DB_USERNAME'), + password: configService.get('DB_PASSWORD'), + database: configService.get('DB_DATABASE'), + extra: { charset: 'utf8mb4_unicode_ci' }, + entities: ['dist/**/*.entity.js'], + migrations: ['dist/database/migrations/*.js'], + migrationsRun: process.env.NODE_ENV !== 'development', + synchronize: process.env.NODE_ENV === 'development', + }), + dataSourceFactory: async options => new DataSource(options).initialize(), +}; diff --git a/nest-app/src/database/migrations/1699394971038-afterDevelopment.ts b/nest-app/src/database/migrations/1699394971038-afterDevelopment.ts new file mode 100644 index 00000000..16b4037e --- /dev/null +++ b/nest-app/src/database/migrations/1699394971038-afterDevelopment.ts @@ -0,0 +1,37 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AfterDevelopment1699394971038 implements MigrationInterface { + name = 'AfterDevelopment1699394971038'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "sessions" ("expiredAt" bigint NOT NULL, "id" character varying(255) NOT NULL, "json" text NOT NULL, "destroyedAt" TIMESTAMP, CONSTRAINT "PK_3238ef96f18b355b671619111bc" PRIMARY KEY ("id"))`, + ); + await queryRunner.query(`CREATE INDEX "IDX_4c1989542e47d9e3b98fe32c67" ON "sessions" ("expiredAt") `); + await queryRunner.query( + `CREATE TABLE "user-yt-videos" ("id" SERIAL NOT NULL, "lastFetch" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT '"2023-10-31T22:09:31.596Z"', "playlistId" character varying, "userId" integer NOT NULL, CONSTRAINT "UQ_c55078fb686ab12973857ed9260" UNIQUE ("playlistId"), CONSTRAINT "REL_ee680dd5cc516620c38f321572" UNIQUE ("userId"), CONSTRAINT "PK_8b143cef766eb653d5849e7cf01" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `CREATE TABLE "users" ("id" SERIAL NOT NULL, "displayName" character varying NOT NULL, "email" character varying NOT NULL, "avatar" character varying NOT NULL, "refreshToken" character varying NOT NULL, CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3" UNIQUE ("email"), CONSTRAINT "PK_a3ffb1c0c8416b9fc6f907b7433" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `CREATE TABLE "key-word" ("id" SERIAL NOT NULL, "content" character varying(255) NOT NULL, "userId" integer NOT NULL, CONSTRAINT "PK_e6600151d3680783e0d4b796e98" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `ALTER TABLE "user-yt-videos" ADD CONSTRAINT "FK_ee680dd5cc516620c38f3215729" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + await queryRunner.query( + `ALTER TABLE "key-word" ADD CONSTRAINT "FK_312c69579de5359eb3bd18e4732" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "key-word" DROP CONSTRAINT "FK_312c69579de5359eb3bd18e4732"`); + await queryRunner.query(`ALTER TABLE "user-yt-videos" DROP CONSTRAINT "FK_ee680dd5cc516620c38f3215729"`); + await queryRunner.query(`DROP TABLE "key-word"`); + await queryRunner.query(`DROP TABLE "users"`); + await queryRunner.query(`DROP TABLE "user-yt-videos"`); + await queryRunner.query(`DROP INDEX "public"."IDX_4c1989542e47d9e3b98fe32c67"`); + await queryRunner.query(`DROP TABLE "sessions"`); + } +} diff --git a/nest-app/src/database/migrations/1700421492489-create-loggers.ts b/nest-app/src/database/migrations/1700421492489-create-loggers.ts new file mode 100644 index 00000000..3c657893 --- /dev/null +++ b/nest-app/src/database/migrations/1700421492489-create-loggers.ts @@ -0,0 +1,25 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class CreateLoggers1700421492489 implements MigrationInterface { + name = 'CreateLoggers1700421492489'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "error-logs" ("id" SERIAL NOT NULL, "errorValues" json NOT NULL, "userId" integer NOT NULL, CONSTRAINT "PK_1a764472db9b0c9fd9c227c56b9" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" SET DEFAULT '"2023-11-12T19:18:13.045Z"'`, + ); + await queryRunner.query( + `ALTER TABLE "error-logs" ADD CONSTRAINT "FK_134fc7e109049d179dfd37059ef" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "error-logs" DROP CONSTRAINT "FK_134fc7e109049d179dfd37059ef"`); + await queryRunner.query( + `ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" SET DEFAULT '2023-11-12 20:13:18.563+01'`, + ); + await queryRunner.query(`DROP TABLE "error-logs"`); + } +} diff --git a/nest-app/src/database/migrations/1700425098398-rename-keywords-entity.ts b/nest-app/src/database/migrations/1700425098398-rename-keywords-entity.ts new file mode 100644 index 00000000..02f6d7e7 --- /dev/null +++ b/nest-app/src/database/migrations/1700425098398-rename-keywords-entity.ts @@ -0,0 +1,25 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class RenameKeywordsEntity1700425098398 implements MigrationInterface { + name = 'RenameKeywordsEntity1700425098398'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "key-words" ("id" SERIAL NOT NULL, "content" character varying(255) NOT NULL, "userId" integer NOT NULL, CONSTRAINT "PK_cce2c650266c3adf3f08724a6b0" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" SET DEFAULT '"2023-11-12T20:18:18.949Z"'`, + ); + await queryRunner.query( + `ALTER TABLE "key-words" ADD CONSTRAINT "FK_3a45d0189d0eaacb1d025386899" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "key-words" DROP CONSTRAINT "FK_3a45d0189d0eaacb1d025386899"`); + await queryRunner.query( + `ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" SET DEFAULT '2023-10-31 23:09:31.596+01'`, + ); + await queryRunner.query(`DROP TABLE "key-words"`); + } +} diff --git a/nest-app/src/database/migrations/1700426454479-remove-default-date-from-lastFetch.ts b/nest-app/src/database/migrations/1700426454479-remove-default-date-from-lastFetch.ts new file mode 100644 index 00000000..aef91185 --- /dev/null +++ b/nest-app/src/database/migrations/1700426454479-remove-default-date-from-lastFetch.ts @@ -0,0 +1,17 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class RemoveDefaultDateFromLastFetch1700426454479 implements MigrationInterface { + name = 'RemoveDefaultDateFromLastFetch1700426454479'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" DROP NOT NULL`); + await queryRunner.query(`ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" DROP DEFAULT`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" SET DEFAULT '2023-10-31 23:09:31.596+01'`, + ); + await queryRunner.query(`ALTER TABLE "user-yt-videos" ALTER COLUMN "lastFetch" SET NOT NULL`); + } +} diff --git a/nest-app/src/database/migrations/1701807327989-change-error-message-type.ts b/nest-app/src/database/migrations/1701807327989-change-error-message-type.ts new file mode 100644 index 00000000..753d3ac9 --- /dev/null +++ b/nest-app/src/database/migrations/1701807327989-change-error-message-type.ts @@ -0,0 +1,17 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class ChangeErrorMessageType1701807327989 implements MigrationInterface { + name = 'ChangeErrorMessageType1701807327989'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "error-logs" RENAME COLUMN "errorValues" TO "message"`); + await queryRunner.query(`ALTER TABLE "error-logs" DROP COLUMN "message"`); + await queryRunner.query(`ALTER TABLE "error-logs" ADD "message" text NOT NULL`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "error-logs" DROP COLUMN "message"`); + await queryRunner.query(`ALTER TABLE "error-logs" ADD "message" json NOT NULL`); + await queryRunner.query(`ALTER TABLE "error-logs" RENAME COLUMN "message" TO "errorValues"`); + } +} diff --git a/nest-app/src/database/migrations/1701808344010-remove-unnecessary-key-word-table.ts b/nest-app/src/database/migrations/1701808344010-remove-unnecessary-key-word-table.ts new file mode 100644 index 00000000..1075e5d7 --- /dev/null +++ b/nest-app/src/database/migrations/1701808344010-remove-unnecessary-key-word-table.ts @@ -0,0 +1,9 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class RemoveUnnecessaryKeyWordTable1701808344010 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE "key-word"`); + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/nest-app/src/error-logs/dto/create-key-word.dto.ts b/nest-app/src/error-logs/dto/create-key-word.dto.ts new file mode 100644 index 00000000..758e4510 --- /dev/null +++ b/nest-app/src/error-logs/dto/create-key-word.dto.ts @@ -0,0 +1,4 @@ +export class CreateErrorLogDto { + message: string; + userId: number; +} diff --git a/nest-app/src/error-logs/error-logs.controller.ts b/nest-app/src/error-logs/error-logs.controller.ts new file mode 100644 index 00000000..f9462647 --- /dev/null +++ b/nest-app/src/error-logs/error-logs.controller.ts @@ -0,0 +1,24 @@ +import { Controller, Get, UseGuards } from '@nestjs/common'; +import { ApiOkResponse, ApiTags, ApiUnauthorizedResponse } from '@nestjs/swagger'; +import { SessionsGuard } from '../auth/sessions/sessions.guard'; +import { ErrorLogsResponse } from '../swagger/response-examples/error-logs.response'; +import { ErrorResponse } from '../swagger/response-examples/error.response'; +import { ReqUserId } from '../users/decorators/user.decorator'; +import { ErrorLogsService } from './error-logs.service'; + +@Controller('error-logs') +@ApiTags('error-logs') +export class ErrorLogsController { + constructor(private readonly errorLogsService: ErrorLogsService) {} + + @ApiOkResponse({ type: ErrorLogsResponse, isArray: true }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @Get() + @UseGuards(SessionsGuard) + async findAll(@ReqUserId() userId: number) { + return this.errorLogsService.findAll(userId); + } +} diff --git a/nest-app/src/error-logs/error-logs.module.ts b/nest-app/src/error-logs/error-logs.module.ts new file mode 100644 index 00000000..6f199dd6 --- /dev/null +++ b/nest-app/src/error-logs/error-logs.module.ts @@ -0,0 +1,14 @@ +import { Global, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { ErrorLogsController } from './error-logs.controller'; +import { ErrorLogsService } from './error-logs.service'; +import { ErrorLogsEntity } from './model/error-logs.entity'; + +@Global() +@Module({ + imports: [TypeOrmModule.forFeature([ErrorLogsEntity])], + controllers: [ErrorLogsController], + providers: [ErrorLogsService], + exports: [ErrorLogsService], +}) +export class ErrorLogsModule {} diff --git a/nest-app/src/error-logs/error-logs.service.ts b/nest-app/src/error-logs/error-logs.service.ts new file mode 100644 index 00000000..a318b93a --- /dev/null +++ b/nest-app/src/error-logs/error-logs.service.ts @@ -0,0 +1,25 @@ +import { Injectable, InternalServerErrorException } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { CreateErrorLogDto } from './dto/create-key-word.dto'; +import { ErrorLogsEntity } from './model/error-logs.entity'; + +@Injectable() +export class ErrorLogsService { + constructor( + @InjectRepository(ErrorLogsEntity) + private readonly errorLogsRepository: Repository, + ) {} + + async findAll(userId: number) { + return this.errorLogsRepository.findBy({ user: { id: userId } }); + } + + async create({ message, userId }: CreateErrorLogDto) { + const errorLogEntity = this.errorLogsRepository.create({ message, user: { id: userId } }); + + return this.errorLogsRepository.save(errorLogEntity).catch(err => { + throw new InternalServerErrorException(`Error on saving error message: ${err.message}`); + }); + } +} diff --git a/nest-app/src/error-logs/model/error-logs.entity.ts b/nest-app/src/error-logs/model/error-logs.entity.ts new file mode 100644 index 00000000..6c975c66 --- /dev/null +++ b/nest-app/src/error-logs/model/error-logs.entity.ts @@ -0,0 +1,17 @@ +import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, Relation } from 'typeorm'; +import { UsersEntity } from '../../users/model/users.entity'; + +@Entity('error-logs') +export class ErrorLogsEntity { + @PrimaryGeneratedColumn() + readonly id: number; + + @Column('text') + readonly message: string; + + @ManyToOne(() => UsersEntity, user => user.errorLogs, { + nullable: false, + onDelete: 'CASCADE', + }) + readonly user: Relation; +} diff --git a/nest-app/src/key-words/dto/create-key-word.dto.ts b/nest-app/src/key-words/dto/create-key-word.dto.ts new file mode 100644 index 00000000..4ca340ae --- /dev/null +++ b/nest-app/src/key-words/dto/create-key-word.dto.ts @@ -0,0 +1,11 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { Transform } from 'class-transformer'; +import { IsString, Length } from 'class-validator'; + +export class CreateKeyWordDto { + @ApiProperty() + @Length(3, 255) + @IsString() + @Transform(({ value }) => value.toLowerCase()) + content: string; +} diff --git a/nest-app/src/key-words/dto/update-key-word.dto.ts b/nest-app/src/key-words/dto/update-key-word.dto.ts new file mode 100644 index 00000000..0853ff9e --- /dev/null +++ b/nest-app/src/key-words/dto/update-key-word.dto.ts @@ -0,0 +1,3 @@ +import { CreateKeyWordDto } from './create-key-word.dto'; + +export class UpdateKeyWordDto extends CreateKeyWordDto {} diff --git a/nest-app/src/key-words/key-words.controller.ts b/nest-app/src/key-words/key-words.controller.ts new file mode 100644 index 00000000..32b3da7c --- /dev/null +++ b/nest-app/src/key-words/key-words.controller.ts @@ -0,0 +1,112 @@ +import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post, UseGuards } from '@nestjs/common'; +import { + ApiBadRequestResponse, + ApiConflictResponse, + ApiCreatedResponse, + ApiInternalServerErrorResponse, + ApiNotFoundResponse, + ApiOAuth2, + ApiOkResponse, + ApiTags, + ApiUnauthorizedResponse, +} from '@nestjs/swagger'; +import { SessionsGuard } from '../auth/sessions/sessions.guard'; +import { ErrorResponse } from '../swagger/response-examples/error.response'; +import { KeyWordsResponse } from '../swagger/response-examples/key-words.response'; +import { ReqUserId } from '../users/decorators/user.decorator'; +import { UsersService } from '../users/users.service'; +import { CreateKeyWordDto } from './dto/create-key-word.dto'; +import { UpdateKeyWordDto } from './dto/update-key-word.dto'; +import { KeyWordsService } from './key-words.service'; + +@ApiOAuth2([]) +@ApiTags('key-words') +@Controller('key-words') +export class KeyWordsController { + constructor( + private readonly keyWordsService: KeyWordsService, + private readonly userService: UsersService, + ) {} + + @ApiOkResponse({ type: KeyWordsResponse, isArray: true }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @Get() + @UseGuards(SessionsGuard) + async findAll(@ReqUserId() userId: number) { + return this.keyWordsService.findAll(userId); + } + + @ApiOkResponse({ type: KeyWordsResponse }) + @ApiNotFoundResponse({ + description: 'Keywords not found, cause: keyword_not_found', + }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @ApiBadRequestResponse({ description: 'Validation failed (numeric string is expected)' }) + @Get(':id') + @UseGuards(SessionsGuard) + async findOne(@ReqUserId() userId: number, @Param('id', ParseIntPipe) id: number) { + return this.keyWordsService.findOne(userId, id); + } + + @ApiCreatedResponse({ type: KeyWordsResponse }) + @ApiConflictResponse({ description: 'This keyword already exists, cause: duplicated_keyword' }) + @ApiInternalServerErrorResponse({ description: 'Error on creating user: ${error message}' }) + @ApiBadRequestResponse({ description: 'Validation failed (numeric string is expected)' }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @Post() + @UseGuards(SessionsGuard) + async create(@ReqUserId() userId: number, @Body() createKeyWordDto: CreateKeyWordDto) { + const user = await this.userService.findOneById(userId); + + return this.keyWordsService.create(createKeyWordDto, user); + } + + @ApiOkResponse() + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @ApiNotFoundResponse({ + description: 'Keywords not found, cause: keyword_not_found', + }) + @ApiConflictResponse({ description: 'This keyword already exists, cause: duplicated_keyword' }) + @ApiInternalServerErrorResponse({ description: 'Error on updating user: ${error message}' }) + @ApiBadRequestResponse({ description: 'Validation failed (numeric string is expected)' }) + @Patch(':id') + @UseGuards(SessionsGuard) + async update( + @ReqUserId() userId: number, + @Param('id', ParseIntPipe) id: number, + @Body() updateKeyWordDto: UpdateKeyWordDto, + ) { + await this.keyWordsService.findOne(userId, id); + + return this.keyWordsService.update(id, updateKeyWordDto); + } + + @ApiOkResponse() + @ApiBadRequestResponse({ description: 'Validation failed (numeric string is expected)' }) + @ApiNotFoundResponse({ + description: 'Keywords not found, cause: keyword_not_found', + }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @Delete(':id') + @UseGuards(SessionsGuard) + async delete(@ReqUserId() userId: number, @Param('id', ParseIntPipe) id: number) { + await this.keyWordsService.findOne(userId, id); + + return this.keyWordsService.delete(id); + } +} diff --git a/nest-app/src/key-words/key-words.module.ts b/nest-app/src/key-words/key-words.module.ts new file mode 100644 index 00000000..2a78a882 --- /dev/null +++ b/nest-app/src/key-words/key-words.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { KeyWordsController } from './key-words.controller'; +import { KeyWordsService } from './key-words.service'; +import { KeyWordsEntity } from './model/key-words.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([KeyWordsEntity])], + controllers: [KeyWordsController], + providers: [KeyWordsService], + exports: [KeyWordsService], +}) +export class KeyWordsModule {} diff --git a/nest-app/src/key-words/key-words.service.ts b/nest-app/src/key-words/key-words.service.ts new file mode 100644 index 00000000..c9a3769a --- /dev/null +++ b/nest-app/src/key-words/key-words.service.ts @@ -0,0 +1,65 @@ +import { ConflictException, Injectable, InternalServerErrorException, NotFoundException } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { ErrorLogsService } from '../error-logs/error-logs.service'; +import { IUser } from '../users/users.types'; +import { CreateKeyWordDto } from './dto/create-key-word.dto'; +import { UpdateKeyWordDto } from './dto/update-key-word.dto'; +import { KeyWordsEntity } from './model/key-words.entity'; + +@Injectable() +export class KeyWordsService { + constructor( + @InjectRepository(KeyWordsEntity) + private readonly keyWordRepository: Repository, + private readonly errorLogsService: ErrorLogsService, + ) {} + + async findAll(userId: number) { + return this.keyWordRepository.findBy({ user: { id: userId } }); + } + + async findOne(userId: number, id: number) { + return this.keyWordRepository.findOneByOrFail({ user: { id: userId }, id }).catch(() => { + throw new NotFoundException({ reason: 'Keyword not found', cause: 'keyword_not_found' }); + }); + } + + async create({ content }: CreateKeyWordDto, { id }: IUser) { + const keyWord = await this.keyWordRepository.findOneBy({ content, user: { id } }); + + if (!keyWord) { + const keyWordEntity = this.keyWordRepository.create({ content, user: { id } }); + + return this.keyWordRepository.save(keyWordEntity).catch(async err => { + await this.errorLogsService.create({ + message: err.driverError, + userId: id, + }); + throw new InternalServerErrorException(`Error on creating user: ${err.message}`); + }); + } + + throw new ConflictException({ reason: 'This keyword already exists', cause: 'duplicated_keyword' }); + } + + async update(id: number, { content }: UpdateKeyWordDto) { + const keyWord = await this.keyWordRepository.findOneBy({ content }); + + if (keyWord && keyWord.id !== id) { + throw new ConflictException({ reason: 'This keyword already exists', cause: 'duplicated_keyword' }); + } + + this.keyWordRepository.update(id, { content }).catch(async err => { + await this.errorLogsService.create({ + message: err.driverError, + userId: id, + }); + throw new InternalServerErrorException(`Error on updating user: ${err.message}`); + }); + } + + async delete(id: number) { + await this.keyWordRepository.delete(id); + } +} diff --git a/nest-app/src/key-words/model/key-words.entity.ts b/nest-app/src/key-words/model/key-words.entity.ts new file mode 100644 index 00000000..46905301 --- /dev/null +++ b/nest-app/src/key-words/model/key-words.entity.ts @@ -0,0 +1,17 @@ +import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, Relation } from 'typeorm'; +import { UsersEntity } from '../../users/model/users.entity'; + +@Entity('key-words') +export class KeyWordsEntity { + @PrimaryGeneratedColumn() + readonly id: number; + + @Column({ length: 255, nullable: false }) + readonly content: string; + + @ManyToOne(() => UsersEntity, user => user.keywords, { + nullable: false, + onDelete: 'CASCADE', + }) + readonly user: Relation; +} diff --git a/nest-app/src/main.ts b/nest-app/src/main.ts new file mode 100644 index 00000000..396e0619 --- /dev/null +++ b/nest-app/src/main.ts @@ -0,0 +1,77 @@ +import { ValidationPipe } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { NestFactory } from '@nestjs/core'; +import { SwaggerModule } from '@nestjs/swagger'; +import { TypeormStore } from 'connect-typeorm'; +import cookieParser from 'cookie-parser'; +import session from 'express-session'; +import helmet from 'helmet'; +import passport from 'passport'; +import { DataSource } from 'typeorm'; +import { AppModule } from './app.module'; +import { SessionsEntity } from './auth/sessions/model/sessions.entity'; +import { COOKIE_MAX_AGE, SESSION_COOKIE_NAME, SESSION_TTL } from './constants'; +import swaggerConfig from './swagger/swagger.config'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + const IS_DEVELOPMENT = process.env.NODE_ENV === 'development'; + + const configService = app.get(ConfigService); + const sessionRepository = app.get(DataSource).getRepository(SessionsEntity); + + app.use( + helmet({ + contentSecurityPolicy: { + directives: { + scriptSrc: ["'self'", "'unsafe-inline'"], + }, + }, + }), + ); + + app.enableCors({ + origin: '*', + credentials: true, + }); + + app.setGlobalPrefix('api'); + + app.use( + session({ + name: SESSION_COOKIE_NAME, + secret: configService.get('SESSION_SECRET'), + resave: false, + saveUninitialized: false, + cookie: { + maxAge: COOKIE_MAX_AGE, + sameSite: 'lax', + httpOnly: true, + signed: true, + secure: configService.get('COOKIE_SECURE') === 'true', + }, + store: new TypeormStore({ + ttl: SESSION_TTL, + }).connect(sessionRepository), + }), + ); + + app.use(cookieParser(configService.get('SESSION_SECRET'))); + app.use(passport.initialize()); + app.use(passport.session()); + + app.useGlobalPipes( + new ValidationPipe({ + transform: true, + whitelist: true, + forbidNonWhitelisted: true, + forbidUnknownValues: true, + }), + ); + + IS_DEVELOPMENT && SwaggerModule.setup('api/docs', app, SwaggerModule.createDocument(app, swaggerConfig)); + + await app.listen(configService.get('PORT') || 3000, '0.0.0.0'); +} + +bootstrap(); diff --git a/nest-app/src/swagger/response-examples/auth.response.ts b/nest-app/src/swagger/response-examples/auth.response.ts new file mode 100644 index 00000000..135ccf76 --- /dev/null +++ b/nest-app/src/swagger/response-examples/auth.response.ts @@ -0,0 +1,31 @@ +import { ApiProperty } from '@nestjs/swagger'; + +class AuthUserYtVideosResponse { + @ApiProperty({ example: 1 }) + id: number; + + @ApiProperty({ example: '2023-11-06T20:12:07.661Z' }) + lastFetch: string; + + @ApiProperty({ example: 'a231acasr21' }) + playlistId: string | null; +} + +export class AuthResponse { + @ApiProperty({ example: 1 }) + id: number; + + @ApiProperty({ example: 'Papryk Detox' }) + displayName: string; + + @ApiProperty({ example: 'tomek.atomek@gmail.com' }) + email: string; + + @ApiProperty({ + example: 'https://lh3.googleusercontent.com/a/ACg8ocJaCDsG_wwXRN59xRK4Arqopj0P12ieAyiqpgv82oeC=s96-c', + }) + avatar: string; + + @ApiProperty() + userYtVideos: AuthUserYtVideosResponse; +} diff --git a/nest-app/src/swagger/response-examples/error-logs.response.ts b/nest-app/src/swagger/response-examples/error-logs.response.ts new file mode 100644 index 00000000..56942d32 --- /dev/null +++ b/nest-app/src/swagger/response-examples/error-logs.response.ts @@ -0,0 +1,15 @@ +import { ApiProperty } from '@nestjs/swagger'; + +export class ErrorLogsResponse { + @ApiProperty({ example: 1 }) + id: number; + + @ApiProperty({ + example: + '{"query":"INSERT INTO "key-word"("content", "userId") VALUES (DEFAULT, DEFAULT) RETURNING "id"","parameters":[]}', + }) + message: string; + + @ApiProperty({ example: 1 }) + userId: number; +} diff --git a/nest-app/src/swagger/response-examples/error.response.ts b/nest-app/src/swagger/response-examples/error.response.ts new file mode 100644 index 00000000..e690b12b --- /dev/null +++ b/nest-app/src/swagger/response-examples/error.response.ts @@ -0,0 +1,9 @@ +import { ApiProperty } from '@nestjs/swagger'; + +export class ErrorResponse { + @ApiProperty({ example: 'Not Found' }) + reason: string; + + @ApiProperty({ example: 'keyword_not_found' }) + cause: string; +} diff --git a/nest-app/src/swagger/response-examples/key-words.response.ts b/nest-app/src/swagger/response-examples/key-words.response.ts new file mode 100644 index 00000000..e148584d --- /dev/null +++ b/nest-app/src/swagger/response-examples/key-words.response.ts @@ -0,0 +1,12 @@ +import { ApiProperty } from '@nestjs/swagger'; + +export class KeyWordsResponse { + @ApiProperty({ example: 1 }) + id: number; + + @ApiProperty({ example: 'amazing word' }) + content: string; + + @ApiProperty({ example: 1 }) + userId: number; +} diff --git a/nest-app/src/swagger/response-examples/user-yt-videos.response.ts b/nest-app/src/swagger/response-examples/user-yt-videos.response.ts new file mode 100644 index 00000000..ba2d68fd --- /dev/null +++ b/nest-app/src/swagger/response-examples/user-yt-videos.response.ts @@ -0,0 +1,43 @@ +import { ApiProperty } from '@nestjs/swagger'; + +class VideoResponse { + @ApiProperty({ example: 1 }) + id: number; + + @ApiProperty({ example: 'Pool party with Anne' }) + title: string; + + @ApiProperty({ example: 'description from video' }) + description: string; + + @ApiProperty({ example: '2023-10-30T19:21:20Z' }) + publishedAt: Date; + + @ApiProperty({ example: 'https://i.ytimg.com/vi/no8pm-VM2h4/mqdefault.jpg' }) + thumbnail: string; + + @ApiProperty({ example: 4000 }) + views: number; +} + +class ChannelResponse { + @ApiProperty({ example: 'UCVxkdxpvBaXPgBquxO_YRew' }) + id: string; + + @ApiProperty({ example: 'awkward title' }) + title: string; + + @ApiProperty({ + example: + 'https://yt3.ggpht.com/ytc/APkrFKZe9AatvAP7M4WMdSYLq_925LmKy0zCZLbUdnmYaDf3fjtwMUzWhqIPISnK2j01=s88-c-k-c0x00ffffff-no-rj', + }) + thumbnail: string; +} + +export class UserYtVideosResponse { + @ApiProperty() + video: VideoResponse; + + @ApiProperty() + channel: ChannelResponse; +} diff --git a/nest-app/src/swagger/swagger.config.ts b/nest-app/src/swagger/swagger.config.ts new file mode 100644 index 00000000..4dc91e09 --- /dev/null +++ b/nest-app/src/swagger/swagger.config.ts @@ -0,0 +1,29 @@ +import { DocumentBuilder } from '@nestjs/swagger'; + +const swaggerConfig = new DocumentBuilder() + .setTitle('YT Notifier') + .setVersion('0.0.1') + .setDescription( + `If you want to authenticate click 'Authorize' button and the same inside modal (*ignore client_id input*), + then you're redirected to auth page, after successful authentication process you can use all endpoints.\n + For implementing on frontend: When authentication is failed 401 status code is returned \n \n + If you want to use postman, use this plugin: \n + https://learning.postman.com/docs/sending-requests/capturing-request-data/interceptor/ \n + this plugin create a bridge between browser and postman for handle cookies, \n + cause you're able to log in only via browser.`, + ) + .addOAuth2( + { + type: 'oauth2', + flows: { + implicit: { + authorizationUrl: `/api/auth/login`, + scopes: {}, + }, + }, + }, + 'Auth0', + ) + .build(); + +export default swaggerConfig; diff --git a/nest-app/src/user-yt-videos/dto/update-user-yt-videos.dto.ts b/nest-app/src/user-yt-videos/dto/update-user-yt-videos.dto.ts new file mode 100644 index 00000000..7961b88a --- /dev/null +++ b/nest-app/src/user-yt-videos/dto/update-user-yt-videos.dto.ts @@ -0,0 +1,16 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsString } from 'class-validator'; + +export class UpdateUserYtVideosDto { + @ApiProperty() + @IsString() + videoId: string; + + @ApiProperty() + @IsString() + title: string; + + @ApiProperty() + @IsString() + description: string; +} diff --git a/nest-app/src/user-yt-videos/model/user-yt-videos.entity.ts b/nest-app/src/user-yt-videos/model/user-yt-videos.entity.ts new file mode 100644 index 00000000..61d05ff6 --- /dev/null +++ b/nest-app/src/user-yt-videos/model/user-yt-videos.entity.ts @@ -0,0 +1,22 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryGeneratedColumn, Relation } from 'typeorm'; +import { UsersEntity } from '../../users/model/users.entity'; + +@Entity('user-yt-videos') +export class UserYtVideosEntity { + @PrimaryGeneratedColumn() + readonly id: number; + + @Column('timestamptz', { nullable: true }) + readonly lastFetch: Date; + + @Column({ nullable: true, unique: true }) + readonly playlistId: string; + + @OneToOne(() => UsersEntity, user => user.userYtVideos, { + cascade: true, + nullable: false, + onDelete: 'CASCADE', + }) + @JoinColumn() + readonly user: Relation; +} diff --git a/nest-app/src/user-yt-videos/user-yt-videos.controller.ts b/nest-app/src/user-yt-videos/user-yt-videos.controller.ts new file mode 100644 index 00000000..95767c5b --- /dev/null +++ b/nest-app/src/user-yt-videos/user-yt-videos.controller.ts @@ -0,0 +1,65 @@ +import { Body, Controller, Get, Patch, UseGuards } from '@nestjs/common'; +import { + ApiBadRequestResponse, + ApiConflictResponse, + ApiForbiddenResponse, + ApiInternalServerErrorResponse, + ApiNotFoundResponse, + ApiOAuth2, + ApiOkResponse, + ApiTags, + ApiUnauthorizedResponse, +} from '@nestjs/swagger'; +import { SessionsGuard } from '../auth/sessions/sessions.guard'; +import { ErrorResponse } from '../swagger/response-examples/error.response'; +import { UserYtVideosResponse } from '../swagger/response-examples/user-yt-videos.response'; +import { ReqUserId } from '../users/decorators/user.decorator'; +import { UpdateUserYtVideosDto } from './dto/update-user-yt-videos.dto'; +import { UserYtVideosService } from './user-yt-videos.service'; + +@ApiOAuth2([]) +@ApiTags('user-yt-videos') +@Controller('user-yt-videos') +export class UserYtVideosController { + constructor(private readonly ytVideosService: UserYtVideosService) {} + + @ApiOkResponse({ type: UserYtVideosResponse, isArray: true }) + @ApiForbiddenResponse({ description: 'You reach the requests limit for youtube, cause: quota_limit' }) + @ApiInternalServerErrorResponse({ description: 'Error on updating fetch date of user: {error message}' }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @Get() + @UseGuards(SessionsGuard) + async findAll(@ReqUserId() userId: number) { + return this.ytVideosService.findAll(userId); + } + + @ApiOkResponse() + @ApiForbiddenResponse({ description: 'You reach the requests limit for youtube, cause: quota_limit' }) + @ApiConflictResponse({ description: 'Video already exists in playlist, cause: duplicated_video_for_playlist' }) + @ApiNotFoundResponse({ description: 'Video not found, cause: video_for_playlist_not_found' }) + @ApiBadRequestResponse({ description: 'title/description must be a string' }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @Patch('update-playlist') + @UseGuards(SessionsGuard) + async updatePlaylist(@ReqUserId() userId: number, @Body() updateUserYtVideosDto: UpdateUserYtVideosDto) { + return this.ytVideosService.updatePlaylist(userId, updateUserYtVideosDto); + } + + @ApiOkResponse() + @ApiNotFoundResponse({ description: 'Playlist not found, cause: playlist_not_found' }) + @ApiUnauthorizedResponse({ + type: ErrorResponse, + description: 'cause: unauthorized', + }) + @Get('check-playlist') + @UseGuards(SessionsGuard) + async checkPlaylist(@ReqUserId() userId: number) { + return this.ytVideosService.checkPlaylist(userId); + } +} diff --git a/nest-app/src/user-yt-videos/user-yt-videos.module.ts b/nest-app/src/user-yt-videos/user-yt-videos.module.ts new file mode 100644 index 00000000..70aa0bce --- /dev/null +++ b/nest-app/src/user-yt-videos/user-yt-videos.module.ts @@ -0,0 +1,14 @@ +import { CacheModule } from '@nestjs/cache-manager'; +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { UserYtVideosEntity } from './model/user-yt-videos.entity'; +import { UserYtVideosController } from './user-yt-videos.controller'; +import { UserYtVideosService } from './user-yt-videos.service'; + +@Module({ + imports: [CacheModule.register(), TypeOrmModule.forFeature([UserYtVideosEntity])], + controllers: [UserYtVideosController], + providers: [UserYtVideosService], + exports: [UserYtVideosService], +}) +export class UserYtVideosModule {} diff --git a/nest-app/src/user-yt-videos/user-yt-videos.service.ts b/nest-app/src/user-yt-videos/user-yt-videos.service.ts new file mode 100644 index 00000000..f88227c3 --- /dev/null +++ b/nest-app/src/user-yt-videos/user-yt-videos.service.ts @@ -0,0 +1,224 @@ +import { youtube, youtube_v3 } from '@googleapis/youtube'; +import { CACHE_MANAGER } from '@nestjs/cache-manager'; +import { + ConflictException, + ForbiddenException, + Inject, + Injectable, + InternalServerErrorException, + NotFoundException, +} from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Cache } from 'cache-manager'; +import { OAuth2Client } from 'google-auth-library'; +import { Repository } from 'typeorm'; +import { OAUTH2_GOOGLE_CLIENT } from '../auth/oauth2.module'; +import { DEFAULT_FETCH_DATE } from '../constants'; +import { ErrorLogsService } from '../error-logs/error-logs.service'; +import { UpdateUserYtVideosDto } from './dto/update-user-yt-videos.dto'; +import { UserYtVideosEntity } from './model/user-yt-videos.entity'; + +@Injectable() +export class UserYtVideosService { + youtubeClient: youtube_v3.Youtube; + + constructor( + @Inject(OAUTH2_GOOGLE_CLIENT) private readonly oAuth2GoogleClient: OAuth2Client, + @InjectRepository(UserYtVideosEntity) + private readonly userYtVideosRepository: Repository, + @Inject(CACHE_MANAGER) private cacheManager: Cache, + private readonly errorLogsService: ErrorLogsService, + ) { + this.youtubeClient = youtube({ version: 'v3', auth: this.oAuth2GoogleClient }); + } + + async findAll(userId: number) { + const dataFromCache = await this.cacheManager.get(userId.toString()); + + if (dataFromCache) { + return dataFromCache; + } + + const { + user: { + keywords, + userYtVideos: { lastFetch }, + }, + } = await this.findOneByUserId(userId); + + if (keywords.length) { + try { + const keywordsQueryResult = await Promise.all( + keywords.map(({ content }) => + this.youtubeClient.search.list({ + part: ['snippet'], + maxResults: 10, + order: 'date', + publishedAfter: (lastFetch || DEFAULT_FETCH_DATE).toISOString(), + q: content, + type: ['video'], + }), + ), + ); + + const rawResponseData = await Promise.all( + keywordsQueryResult.map(async ({ data: videoData }, index) => { + if (videoData.items.length && videoData.items[index]) { + const channelId = videoData.items[index].snippet.channelId; + const { data: channelData } = await this.youtubeClient.channels.list({ + id: [channelId], + part: ['snippet'], + }); + + const { data: videoStatisticsData } = await this.youtubeClient.videos.list({ + id: [videoData.items[index].id.videoId], + part: ['statistics'], + }); + + return { + video: { + id: videoData.items[index].id.videoId, + title: videoData.items[index].snippet.title, + description: videoData.items[index].snippet.description, + publishedAt: videoData.items[index].snippet.publishedAt, + thumbnail: videoData.items[index].snippet.thumbnails.medium.url, + views: +videoStatisticsData.items[0].statistics.viewCount, + }, + channel: { + id: channelId, + title: channelData.items[0].snippet.title, + thumbnail: channelData.items[0].snippet.thumbnails.default.url, + }, + }; + } + }), + ); + + await this.updateLastFetchDate(userId); + + const filteredResponseData = rawResponseData.filter(Boolean); + + const midnightTimestamp = +new Date().setHours(24, 0, 0, 0); + const timeToMidnightInMilliseconds = midnightTimestamp - Date.now(); + + await this.cacheManager.set(userId.toString(), filteredResponseData, timeToMidnightInMilliseconds); + + return filteredResponseData; + } catch (err) { + await this.handleQuotaLimitFromError(err, userId); + } + } + } + + async findOneByUserId(userId: number) { + return this.userYtVideosRepository.findOne({ + relations: { user: { keywords: true, userYtVideos: true } }, + where: { user: { id: userId } }, + }); + } + + async updatePlaylist(userId: number, { videoId, title, description }: UpdateUserYtVideosDto) { + let playlistId: string; + let playlistData: youtube_v3.Schema$PlaylistItemListResponse; + + const userPlaylistResult = await this.userYtVideosRepository.findOneBy({ user: { id: userId } }); + + try { + if (userPlaylistResult.playlistId) { + playlistId = userPlaylistResult.playlistId; + } else { + const result = await this.youtubeClient.playlists.insert({ + part: ['snippet'], + requestBody: { snippet: { title, description } }, + }); + + playlistId = result.data.id; + await this.userYtVideosRepository.update({ user: { id: userId } }, { playlistId }); + } + + await this.youtubeClient.playlistItems + .list({ + part: ['snippet'], + playlistId, + }) + .then(res => (playlistData = res.data)); + } catch (err) { + if (err.status === 404 && err.errors[0].reason === 'playlistNotFound') { + await this.userYtVideosRepository.update({ user: { id: userId } }, { playlistId: null }); + return this.updatePlaylist(userId, { videoId, title, description }); + } + await this.handleQuotaLimitFromError(err, userId); + } + + const videoExistsInPlaylist = playlistData.items.some(({ snippet }) => snippet.resourceId.videoId === videoId); + + if (videoExistsInPlaylist) { + throw new ConflictException({ + reason: 'Video already exists in playlist', + cause: 'duplicated_video_for_playlist', + }); + } + + await this.youtubeClient.playlistItems + .insert({ + part: ['snippet'], + requestBody: { + snippet: { + playlistId, + resourceId: { kind: 'youtube#video', videoId }, + }, + }, + }) + .catch(async err => { + if (err.status === 404) { + throw new NotFoundException({ reason: 'Video not found', cause: 'video_for_playlist_not_found' }); + } + + await this.handleQuotaLimitFromError(err, userId); + }); + } + + async checkPlaylist(userId: number) { + const { playlistId } = await this.userYtVideosRepository.findOneBy({ user: { id: userId } }); + + if (playlistId) { + const { + data: { + pageInfo: { totalResults }, + }, + } = await this.youtubeClient.playlists.list({ + part: ['snippet'], + id: [playlistId], + }); + + if (!totalResults) { + await this.userYtVideosRepository.update({ user: { id: userId } }, { playlistId: null }); + throw new NotFoundException({ reason: 'Playlist not found', cause: 'playlist_not_found' }); + } + + return; + } + + throw new NotFoundException({ reason: 'Playlist not found', cause: 'playlist_not_found' }); + } + + private async updateLastFetchDate(userId: number) { + return this.userYtVideosRepository.update({ user: { id: userId } }, { lastFetch: new Date() }).catch(err => { + throw new InternalServerErrorException('Error on updating fetch date of user: ' + err.message); + }); + } + + //eslint-disable-next-line @typescript-eslint/no-explicit-any + private async handleQuotaLimitFromError(err: { [key: string]: any }, userId: number) { + if ((err.status === 403 && err.errors[0].domain === 'youtube.quota') || err.status === 429) { + throw new ForbiddenException({ reason: 'You reach the requests limit for youtube', cause: 'quota_limit' }); + } + + await this.errorLogsService.create({ + message: err.response.data.error.errors[0], + userId, + }); + + throw err; + } +} diff --git a/nest-app/src/users/decorators/user.decorator.ts b/nest-app/src/users/decorators/user.decorator.ts new file mode 100644 index 00000000..3d0a9bd9 --- /dev/null +++ b/nest-app/src/users/decorators/user.decorator.ts @@ -0,0 +1,7 @@ +import { createParamDecorator, ExecutionContext } from '@nestjs/common'; + +export const ReqUserId = createParamDecorator((_, ctx: ExecutionContext) => { + const request = ctx.switchToHttp().getRequest(); + + return +request.session.passport.user.id; +}); diff --git a/nest-app/src/users/model/users.entity.ts b/nest-app/src/users/model/users.entity.ts new file mode 100644 index 00000000..00895cb3 --- /dev/null +++ b/nest-app/src/users/model/users.entity.ts @@ -0,0 +1,37 @@ +import { Column, Entity, OneToMany, OneToOne, PrimaryGeneratedColumn, Relation } from 'typeorm'; +import { ErrorLogsEntity } from '../../error-logs/model/error-logs.entity'; +import { KeyWordsEntity } from '../../key-words/model/key-words.entity'; +import { UserYtVideosEntity } from '../../user-yt-videos/model/user-yt-videos.entity'; + +@Entity('users') +export class UsersEntity { + @PrimaryGeneratedColumn() + readonly id: number; + + @Column({ nullable: false }) + readonly displayName: string; + + @Column({ unique: true, nullable: false }) + readonly email: string; + + @Column() + readonly avatar: string; + + @Column({ select: false, nullable: false }) + readonly refreshToken: string; + + @OneToOne(() => UserYtVideosEntity, userYtVideos => userYtVideos.user, { + onDelete: 'CASCADE', + }) + readonly userYtVideos: Relation; + + @OneToMany(() => KeyWordsEntity, keyword => keyword.user, { + cascade: true, + }) + readonly keywords: Relation; + + @OneToMany(() => ErrorLogsEntity, errorLogs => errorLogs.user, { + cascade: true, + }) + readonly errorLogs: Relation; +} diff --git a/nest-app/src/users/users.module.ts b/nest-app/src/users/users.module.ts new file mode 100644 index 00000000..d38bf13c --- /dev/null +++ b/nest-app/src/users/users.module.ts @@ -0,0 +1,12 @@ +import { Global, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { UsersEntity } from './model/users.entity'; +import { UsersService } from './users.service'; + +@Global() +@Module({ + imports: [TypeOrmModule.forFeature([UsersEntity])], + providers: [UsersService], + exports: [UsersService], +}) +export class UsersModule {} diff --git a/nest-app/src/users/users.service.ts b/nest-app/src/users/users.service.ts new file mode 100644 index 00000000..b39f62d1 --- /dev/null +++ b/nest-app/src/users/users.service.ts @@ -0,0 +1,71 @@ +import { Injectable, InternalServerErrorException } from '@nestjs/common'; +import { InjectDataSource, InjectRepository } from '@nestjs/typeorm'; +import { DataSource, Repository } from 'typeorm'; +import { ErrorLogsService } from '../error-logs/error-logs.service'; +import { UserYtVideosEntity } from '../user-yt-videos/model/user-yt-videos.entity'; +import { UsersEntity } from './model/users.entity'; +import { IProfile } from './users.types'; + +@Injectable() +export class UsersService { + constructor( + @InjectRepository(UsersEntity) + private readonly userRepository: Repository, + @InjectDataSource() private readonly dataSource: DataSource, + private readonly errorLogsService: ErrorLogsService, + ) {} + + async findOrCreate(refreshToken: string | undefined, profile: IProfile): Promise { + const email = profile.emails[0].value; + const user = await this.userRepository.findOneBy({ email }); + + if (!user) { + return this.dataSource.transaction(async transactionalEntityManager => { + const userEntity = this.userRepository.create({ + displayName: profile.displayName, + email, + avatar: profile.photos[0].value, + refreshToken, + }); + + const userYtVideos = transactionalEntityManager.create(UserYtVideosEntity, { user: userEntity }); + + return (await transactionalEntityManager.save(userYtVideos)).user; + }); + } else if (user && refreshToken) { + await this.updateRefreshToken(user.id, refreshToken); + + return this.userRepository.findOneBy({ email }); + } + + return user; + } + + async findOneById(id: number) { + return this.userRepository.findOne({ where: { id }, relations: { userYtVideos: true } }); + } + + async getRefreshTokenById(id: number) { + return this.userRepository.findOne({ + where: { id }, + select: { refreshToken: true }, + }); + } + + async updateRefreshToken(id: number, refreshToken: string) { + const { affected } = await this.userRepository.update({ id }, { refreshToken }).catch(async err => { + await this.errorLogsService.create({ + message: err.driverError, + userId: id, + }); + + throw new InternalServerErrorException('Error on updating user'); + }); + + return !!affected; + } + + async delete(id: number) { + return this.userRepository.delete({ id }); + } +} diff --git a/nest-app/src/users/users.types.ts b/nest-app/src/users/users.types.ts new file mode 100644 index 00000000..501ce8c9 --- /dev/null +++ b/nest-app/src/users/users.types.ts @@ -0,0 +1,20 @@ +import { UserYtVideosEntity } from '../user-yt-videos/model/user-yt-videos.entity'; + +export interface IUser { + id: number; + + displayName: string; + + email: string; + + avatar: string; + + refreshToken: string; + + userYtVideos: UserYtVideosEntity; +} + +export interface IProfile extends Pick { + emails: { value: string; verified: boolean }[]; + photos: { value: string }[]; +} diff --git a/nest-app/tsconfig.build.json b/nest-app/tsconfig.build.json new file mode 100644 index 00000000..a8a05124 --- /dev/null +++ b/nest-app/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"] +} diff --git a/nest-app/tsconfig.json b/nest-app/tsconfig.json new file mode 100644 index 00000000..61bfe71f --- /dev/null +++ b/nest-app/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "es2017", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": false, + "noImplicitAny": false, + "strictBindCallApply": false, + "forceConsistentCasingInFileNames": false, + "noFallthroughCasesInSwitch": false, + "typeRoots": ["./index.d.ts", "./node_modules/@types"] + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..997eb4ac --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3092 @@ +{ + "name": "yt-notifier", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "yt-notifier", + "version": "0.0.1", + "license": "MIT", + "devDependencies": { + "@commitlint/cli": "17.7.2", + "@commitlint/config-conventional": "17.7.0", + "husky": "8.0.3", + "lint-staged": "14.0.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "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/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/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "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/@commitlint/cli": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.7.2.tgz", + "integrity": "sha512-t3N7TZq7lOeqTOyEgfGcaltHqEJf7YDlPg75MldeVPPyz14jZq/+mbGF9tueDLFX8R6RwdymrN6D+U5XwZ8Iwg==", + "dev": true, + "dependencies": { + "@commitlint/format": "^17.4.4", + "@commitlint/lint": "^17.7.0", + "@commitlint/load": "^17.7.2", + "@commitlint/read": "^17.5.1", + "@commitlint/types": "^17.4.4", + "execa": "^5.0.0", + "lodash.isfunction": "^3.0.9", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/cli/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/@commitlint/cli/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/@commitlint/cli/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/@commitlint/cli/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/@commitlint/cli/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/@commitlint/cli/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/@commitlint/cli/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/@commitlint/config-conventional": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.7.0.tgz", + "integrity": "sha512-iicqh2o6et+9kWaqsQiEYZzfLbtoWv9uZl8kbI8EGfnc0HeGafQBF7AJ0ylN9D/2kj6txltsdyQs8+2fTMwWEw==", + "dev": true, + "dependencies": { + "conventional-changelog-conventionalcommits": "^6.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz", + "integrity": "sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==", + "dev": true, + "dependencies": { + "@commitlint/types": "^17.4.4", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/ensure": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.6.7.tgz", + "integrity": "sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==", + "dev": true, + "dependencies": { + "@commitlint/types": "^17.4.4", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", + "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", + "dev": true, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/format": { + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz", + "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==", + "dev": true, + "dependencies": { + "@commitlint/types": "^17.4.4", + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@commitlint/format/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/@commitlint/format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@commitlint/format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@commitlint/format/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/@commitlint/format/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/@commitlint/is-ignored": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.7.0.tgz", + "integrity": "sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==", + "dev": true, + "dependencies": { + "@commitlint/types": "^17.4.4", + "semver": "7.5.4" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/lint": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.7.0.tgz", + "integrity": "sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==", + "dev": true, + "dependencies": { + "@commitlint/is-ignored": "^17.7.0", + "@commitlint/parse": "^17.7.0", + "@commitlint/rules": "^17.7.0", + "@commitlint/types": "^17.4.4" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/load": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.7.2.tgz", + "integrity": "sha512-XA7WTnsjHZ4YH6ZYsrnxgLdXzriwMMq+utZUET6spbOEEIPBCDLdOQXS26P+v3TTO4hUHOEhzUquaBv3jbBixw==", + "dev": true, + "dependencies": { + "@commitlint/config-validator": "^17.6.7", + "@commitlint/execute-rule": "^17.4.0", + "@commitlint/resolve-extends": "^17.6.7", + "@commitlint/types": "^17.4.4", + "@types/node": "20.5.1", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0", + "resolve-from": "^5.0.0", + "ts-node": "^10.8.1", + "typescript": "^4.6.4 || ^5.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/load/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@commitlint/load/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/@commitlint/load/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@commitlint/load/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@commitlint/load/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/@commitlint/load/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/@commitlint/message": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz", + "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==", + "dev": true, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/parse": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.7.0.tgz", + "integrity": "sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==", + "dev": true, + "dependencies": { + "@commitlint/types": "^17.4.4", + "conventional-changelog-angular": "^6.0.0", + "conventional-commits-parser": "^4.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/read": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz", + "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==", + "dev": true, + "dependencies": { + "@commitlint/top-level": "^17.4.0", + "@commitlint/types": "^17.4.4", + "fs-extra": "^11.0.0", + "git-raw-commits": "^2.0.11", + "minimist": "^1.2.6" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz", + "integrity": "sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==", + "dev": true, + "dependencies": { + "@commitlint/config-validator": "^17.6.7", + "@commitlint/types": "^17.4.4", + "import-fresh": "^3.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/rules": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.7.0.tgz", + "integrity": "sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==", + "dev": true, + "dependencies": { + "@commitlint/ensure": "^17.6.7", + "@commitlint/message": "^17.4.2", + "@commitlint/to-lines": "^17.4.0", + "@commitlint/types": "^17.4.4", + "execa": "^5.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/rules/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/@commitlint/rules/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/@commitlint/rules/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/@commitlint/rules/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/@commitlint/rules/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/@commitlint/rules/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/@commitlint/rules/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/@commitlint/to-lines": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz", + "integrity": "sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==", + "dev": true, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/top-level": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz", + "integrity": "sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/types": { + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", + "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@commitlint/types/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/@commitlint/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@commitlint/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@commitlint/types/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/@commitlint/types/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/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "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/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.3.tgz", + "integrity": "sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", + "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz", + "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "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/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", + "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz", + "integrity": "sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-commits-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", + "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz", + "integrity": "sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==", + "dev": true, + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=4" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "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/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/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/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "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/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-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/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "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/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/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-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/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true + }, + "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": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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/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/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "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-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "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-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-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/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/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "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/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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/lint-staged": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz", + "integrity": "sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==", + "dev": true, + "dependencies": { + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/listr2": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "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==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "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/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true + }, + "node_modules/log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "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/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "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/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/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/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-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/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "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/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/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/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/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/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-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/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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-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/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/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/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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": "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": { + "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/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/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/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/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/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/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/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/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/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/restore-cursor/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/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "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/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/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/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "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/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "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/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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 00000000..5eab457a --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "yt-notifier", + "description": "Get all of yours, the most important notification in one place, and get new info on every browser start", + "version": "0.0.1", + "type": "module", + "license": "MIT", + "author": "Patryk Kuniczak", + "contributors": ["Maciej Pochroń", "Bartosz Wysowski"], + "scripts": { + "commitlint": "commitlint --edit", + "prepare": "husky install" + }, + "devDependencies": { + "@commitlint/cli": "17.7.2", + "@commitlint/config-conventional": "17.7.0", + "husky": "8.0.3", + "lint-staged": "14.0.1" + }, + "lint-staged": { + "*.{js,jsx,ts,tsx}": [ + "prettier --write", + "eslint --fix" + ] + } +} diff --git a/react-app/.eslintignore b/react-app/.eslintignore new file mode 100644 index 00000000..de4d1f00 --- /dev/null +++ b/react-app/.eslintignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/react-app/.eslintrc b/react-app/.eslintrc new file mode 100644 index 00000000..7c62c18f --- /dev/null +++ b/react-app/.eslintrc @@ -0,0 +1,79 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + // PRETTIER MUST BE LAST + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended", + "plugin:import/recommended", + "plugin:jsx-a11y/recommended", + "plugin:@tanstack/eslint-plugin-query/recommended", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": "latest", + "sourceType": "module" + }, + // PRETTIER MUST BE LAST + "plugins": ["react", "@typescript-eslint", "react-hooks", "import", "jsx-a11y", "@tanstack/query", "prettier"], + "settings": { + "react": { + "version": "detect" + } + }, + "rules": { + "no-restricted-imports": [ + "error", + { + "paths": [ + { + "name": "axios", + "message": "Please import from '@http-client' instead" + }, + { + "name": "@tanstack/react-query", + "message": "Please import from '@query-client' instead" + }, + { + "name": "usehooks-ts", + "importNames": ["useTernaryDarkMode"], + "message": "Please import from '@hooks/use-ternary-darkmode.ts' instead" + }, + { + "name": "react-i18next", + "message": "Please import from '@internationalization' instead" + }, + { + "name": "i18next", + "message": "Please import from '@internationalization' instead" + } + ] + } + ], + "react/react-in-jsx-scope": "off", + "import/no-unresolved": "off", + "react/display-name": "off", + "import/named": "off" + }, + "overrides": [ + { + "files": "utils/libs/*/**", + "rules": { + "no-restricted-imports": "off" + } + } + ], + "globals": { + "chrome": "readonly" + }, + "ignorePatterns": ["watch.js", "dist/**"] +} diff --git a/react-app/.github/ISSUE_TEMPLATE/bug_report.md b/react-app/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..c397b603 --- /dev/null +++ b/react-app/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. Mac, Window, Linux] + - Browser [e.g. chrome, firefox] + - Node Version [e.g. 18.12.0] + +**Additional context** +Add any other context about the problem here. + +You can also attach logs. To do that, open the menu (click on your avatar) +and then select 'Collect and Download Errors Data'. And let's attach the logs here. diff --git a/react-app/.github/ISSUE_TEMPLATE/feature_request.md b/react-app/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..97b760bb --- /dev/null +++ b/react-app/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,19 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/react-app/.gitignore b/react-app/.gitignore index a547bf36..b6d3e9f6 100644 --- a/react-app/.gitignore +++ b/react-app/.gitignore @@ -1,24 +1,18 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - +# dependencies node_modules dist dist-ssr -*.local -# Editor directories and files +# envs +.env.* +!envs/.env.example + +# other .vscode/* !.vscode/extensions.json -.idea .DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? +.idea + +# compiled +utils/core/**/*.js +public/manifest.json diff --git a/react-app/.prettierignore b/react-app/.prettierignore new file mode 100644 index 00000000..9b96af15 --- /dev/null +++ b/react-app/.prettierignore @@ -0,0 +1,8 @@ +dist +node_modules +.gitignore +.eslintignore +.nvmrc +.prettierignore +*.md +package-lock.json diff --git a/react-app/.prettierrc b/react-app/.prettierrc new file mode 100644 index 00000000..0196fc41 --- /dev/null +++ b/react-app/.prettierrc @@ -0,0 +1,9 @@ +{ + "trailingComma": "all", + "semi": true, + "singleQuote": true, + "arrowParens": "avoid", + "printWidth": 120, + "bracketSameLine": true, + "htmlWhitespaceSensitivity": "strict" +} diff --git a/react-app/README.md b/react-app/README.md new file mode 100644 index 00000000..061dc388 --- /dev/null +++ b/react-app/README.md @@ -0,0 +1,80 @@ +
+ +
+

+ Logo +

+ +

YT Notifier

+
+ +
+ +

Table of Contents

+
    +
  1. Built With
  2. +
  3. How it works
  4. +
  5. Licence
  6. +
+ +## Built With + +* [![NPM][npm-shield]][npm-url] +* [![Typescript][typescript-shield]][typescript-url] +* [![React][react-shield]][react-url] +* [![React-Query][react-query-shield]][react-query-url] +* [![MUI][mui-shield]][mui-url] with [![Styled components][styled-components-shield]][styled-components-url] +* [i18n](https://www.i18next.com/) +* [Axios](https://axios-http.com/) +* [Prettier](https://prettier.io) +* [Husky](https://typicode.github.io/husky) + +- Loadings components are created with [React Loading Skeleton](https://www.npmjs.com/package/react-loading-skeleton), + except main spinner, that was created with [React Spinners](https://www.davidhu.io/react-spinners/) + +## How it works + +- Authentication is completely handled on the backend. + Here only a cookie is grabbed and a request is sent for user data. + For more information on authentication, please visit + the [Backend README](https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/nest-app/README.md). +- Auth credentials are available via react context api +- Users are redirected to the home page using [React Router Dom](https://reactrouter.com/en/main) +- Can manage keywords and interact with fetched videos +- Once per day have custom toast notification, it was built on react-toastify + +## License + +Distributed under the MIT License. +
+See [LICENSE](https://github.com/PatrykKuniczak/YT_Search_Plugin/blob/main/LICENCE) for more information. + + + +[npm-shield]: https://img.shields.io/badge/NPM-%23CB3837.svg?style=for-the-badge&logo=npm&logoColor=white + +[npm-url]: https://www.npmjs.com/ + +[typescript-shield]: https://img.shields.io/badge/Typescript-3178C6?style=flat-square&logo=typescript&logoColor=white + +[typescript-url]: https://www.typescriptlang.org/ + +[react-shield]: https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB + +[react-url]: https://react.dev/ + +[react-query-shield]: https://img.shields.io/badge/-React%20Query-FF4154?style=for-the-badge&logo=react%20query&logoColor=white + +[react-query-url]: https://tanstack.com/query/v3/ + +[mui-shield]: https://img.shields.io/badge/MUI-%230081CB.svg?style=for-the-badge&logo=mui&logoColor=white + +[mui-url]: https://mui.com/ + +[styled-components-shield]: https://img.shields.io/badge/styled--components-DB7093?style=for-the-badge&logo=styled-components&logoColor=white + +[styled-components-url]: https://styled-components.com/docs/basics + +[eslint-url]: https://eslint.org/ + +[eslint-shield]: https://img.shields.io/badge/ESLint-4B3263?style=for-the-badge&logo=eslint&logoColor=white diff --git a/react-app/envs/.env.example b/react-app/envs/.env.example new file mode 100644 index 00000000..30b724dd --- /dev/null +++ b/react-app/envs/.env.example @@ -0,0 +1 @@ +VITE_API_URL=http://localhost:3001/api/ diff --git a/react-app/index.html b/react-app/index.html deleted file mode 100644 index b0286362..00000000 --- a/react-app/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Vite + React + TS - - -
- - - diff --git a/react-app/manifest.js b/react-app/manifest.js new file mode 100644 index 00000000..8b47fd59 --- /dev/null +++ b/react-app/manifest.js @@ -0,0 +1,49 @@ +import { config } from 'dotenv'; +import packageJson from '../package.json' assert { type: 'json' }; + +config({ path: 'envs/.env.local' }); + +/** + * After changing, please reload the extension at `chrome://extensions` + */ +const manifest = { + manifest_version: 3, + default_locale: 'en', + /** + * if you want to support multiple languages, you can use the following reference + * https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization + */ + name: 'yt-notifier', + version: packageJson.version, + description: '__MSG_extensionDescription__', + permissions: ['cookies', 'contextMenus'], + host_permissions: [`${process.env.VITE_API_URL}*`], + options_page: 'src/pages/options/index.html', + background: { + service_worker: 'src/pages/background/index.js', + type: 'module', + }, + action: { + default_popup: 'src/pages/popup/index.html', + default_title: 'YT Plugin', + default_icon: 'logo-32.png', + }, + icons: { + 128: 'logo-128.png', + }, + content_scripts: [ + { + matches: [''], + exclude_matches: ['https://accounts.google.com/*'], + js: ['src/pages/content/index.js'], + }, + ], + web_accessible_resources: [ + { + resources: ['assets/js/*.js', 'assets/css/*.css', 'logo-128.png', 'logo-32.png'], + matches: ['*://*/*'], + }, + ], +}; + +export default manifest; diff --git a/react-app/package-lock.json b/react-app/package-lock.json index a15cbc3e..77039101 100644 --- a/react-app/package-lock.json +++ b/react-app/package-lock.json @@ -1,34 +1,79 @@ { - "name": "react-app", - "version": "0.0.0", + "name": "yt-notifier-frontend", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "react-app", - "version": "0.0.0", + "name": "yt-notifier-frontend", "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" + "@emotion/react": "11.11.1", + "@emotion/styled": "11.11.0", + "@mui/base": "5.0.0-beta.19", + "@mui/styled-engine-sc": "5.14.12", + "@mui/system": "5.14.13", + "@tanstack/react-query": "4.36.1", + "axios": "1.5.1", + "date-fns": "2.30.0", + "dotenv": "16.3.1", + "i18next": "23.6.0", + "i18next-http-backend": "2.3.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-helmet": "6.1.0", + "react-i18next": "13.3.1", + "react-loading-skeleton": "3.3.1", + "react-router-dom": "6.16.0", + "react-spinners": "^0.13.8", + "react-toastify": "9.1.3", + "styled-components": "5.3.11", + "usehooks-ts": "2.9.1" }, "devDependencies": { - "@types/react": "^18.0.28", - "@types/react-dom": "^18.0.11", - "@typescript-eslint/eslint-plugin": "^5.57.1", - "@typescript-eslint/parser": "^5.57.1", - "@vitejs/plugin-react": "^4.0.0", - "eslint": "^8.38.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.3.4", - "typescript": "^5.0.2", - "vite": "^4.3.2" + "@rollup/plugin-typescript": "11.1.5", + "@tanstack/eslint-plugin-query": "4.36.1", + "@types/chrome": "0.0.246", + "@types/node": "20.8.6", + "@types/react": "18.2.28", + "@types/react-dom": "18.2.13", + "@types/styled-components": "5.1.28", + "@types/ws": "8.5.7", + "@typescript-eslint/eslint-plugin": "6.7.5", + "@typescript-eslint/parser": "6.7.5", + "@vitejs/plugin-react": "4.2.0", + "chokidar": "3.5.3", + "cross-env": "7.0.3", + "eslint": "8.51.0", + "eslint-config-airbnb-typescript": "17.1.0", + "eslint-config-prettier": "9.0.0", + "eslint-plugin-import": "2.28.1", + "eslint-plugin-jsx-a11y": "6.7.1", + "eslint-plugin-prettier": "5.0.1", + "eslint-plugin-react": "7.33.2", + "eslint-plugin-react-hooks": "4.6.0", + "fs-extra": "11.1.1", + "npm-run-all": "4.1.5", + "prettier": "3.0.3", + "rollup": "4.3.0", + "ts-loader": "9.5.0", + "typescript": "5.2.2", + "vite": "5.0.2", + "ws": "8.14.2" + } + }, + "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" @@ -38,47 +83,45 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", - "dev": true, + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.21.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz", - "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==", - "dev": true, + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", - "dev": true, + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.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.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -88,22 +131,25 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/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==" + }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", - "dev": true, + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", + "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", "dependencies": { - "@babel/types": "^7.21.5", + "@babel/types": "^7.23.4", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -112,181 +158,174 @@ "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==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", - "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", - "dev": true, + "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==", "dependencies": { - "@babel/compat-data": "^7.21.5", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "@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.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", - "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", - "dev": true, + "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==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, + "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==", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", - "dev": true, + "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==", "dependencies": { - "@babel/types": "^7.21.4" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", - "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", - "dev": true, + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@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-plugin-utils": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", - "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", - "dev": true, + "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==", "dependencies": { - "@babel/types": "^7.21.5" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, + "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==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", - "dev": true, + "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==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, + "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==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, + "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==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", - "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", - "dev": true, + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -294,10 +333,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", - "dev": true, + "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" }, @@ -305,13 +343,27 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "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-react-jsx-self": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", - "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -321,12 +373,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -335,34 +387,43 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@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.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", + "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "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" }, @@ -371,23 +432,179 @@ } }, "node_modules/@babel/types": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", - "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", - "dev": true, + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", + "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", "dependencies": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@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/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.7.tgz", + "integrity": "sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==", "cpu": [ "arm" ], @@ -401,9 +618,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz", + "integrity": "sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==", "cpu": [ "arm64" ], @@ -417,9 +634,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.7.tgz", + "integrity": "sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==", "cpu": [ "x64" ], @@ -433,9 +650,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz", + "integrity": "sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==", "cpu": [ "arm64" ], @@ -449,9 +666,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz", + "integrity": "sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==", "cpu": [ "x64" ], @@ -465,9 +682,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz", + "integrity": "sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==", "cpu": [ "arm64" ], @@ -481,9 +698,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz", + "integrity": "sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==", "cpu": [ "x64" ], @@ -497,9 +714,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz", + "integrity": "sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==", "cpu": [ "arm" ], @@ -513,9 +730,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz", + "integrity": "sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==", "cpu": [ "arm64" ], @@ -529,9 +746,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz", + "integrity": "sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==", "cpu": [ "ia32" ], @@ -545,9 +762,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz", + "integrity": "sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==", "cpu": [ "loong64" ], @@ -561,9 +778,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz", + "integrity": "sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==", "cpu": [ "mips64el" ], @@ -577,9 +794,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz", + "integrity": "sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==", "cpu": [ "ppc64" ], @@ -593,9 +810,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz", + "integrity": "sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==", "cpu": [ "riscv64" ], @@ -609,9 +826,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz", + "integrity": "sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==", "cpu": [ "s390x" ], @@ -625,9 +842,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz", + "integrity": "sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==", "cpu": [ "x64" ], @@ -641,9 +858,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz", + "integrity": "sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==", "cpu": [ "x64" ], @@ -657,9 +874,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz", + "integrity": "sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==", "cpu": [ "x64" ], @@ -673,9 +890,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz", + "integrity": "sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==", "cpu": [ "x64" ], @@ -689,9 +906,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz", + "integrity": "sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==", "cpu": [ "arm64" ], @@ -705,9 +922,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz", + "integrity": "sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==", "cpu": [ "ia32" ], @@ -721,9 +938,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz", + "integrity": "sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==", "cpu": [ "x64" ], @@ -752,23 +969,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -784,9 +1001,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -799,18 +1016,52 @@ } }, "node_modules/@eslint/js": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", - "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -844,7 +1095,6 @@ "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", @@ -855,10 +1105,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, + "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==", "engines": { "node": ">=6.0.0" } @@ -867,802 +1116,4563 @@ "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==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, + "peer": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.6.tgz", - "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } + "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/@types/react-dom": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", - "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", - "dev": true, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dependencies": { - "@types/react": "*" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz", - "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==", - "dev": true, + "node_modules/@mui/base": { + "version": "5.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.19.tgz", + "integrity": "sha512-maNBgAscddyPNzFZQUJDF/puxM27Li+NqSBsr/lAP8TLns2VvWS2SoL3OKFOIoRnAMKGY/Ic6Aot6gCYeQnssA==", "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/type-utils": "5.59.6", - "@typescript-eslint/utils": "5.59.6", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@babel/runtime": "^7.23.1", + "@floating-ui/react-dom": "^2.0.2", + "@mui/types": "^7.2.6", + "@mui/utils": "^5.14.13", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/mui" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "typescript": { + "@types/react": { "optional": true } } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz", - "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==", - "dev": true, + "node_modules/@mui/private-theming": { + "version": "5.14.13", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.13.tgz", + "integrity": "sha512-5EFqk4tqiSwPguj4NW/6bUf4u1qoUWXy9lrKfNh9H6oAohM+Ijv/7qSxFjnxPGBctj469/Sc5aKAR35ILBKZLQ==", "dependencies": { - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/typescript-estree": "5.59.6", - "debug": "^4.3.4" + "@babel/runtime": "^7.23.1", + "@mui/utils": "^5.14.13", + "prop-types": "^15.8.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/mui" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "typescript": { + "@types/react": { "optional": true } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz", - "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==", - "dev": true, + "node_modules/@mui/styled-engine": { + "version": "5.14.13", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.13.tgz", + "integrity": "sha512-1ff/egFQl26hiwcUtCMKAkp4Sgqpm3qIewmXq+GN27fb44lDIACquehMFBuadOjceOFmbIXbayzbA46ZyqFYzA==", "dependencies": { - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/visitor-keys": "5.59.6" + "@babel/runtime": "^7.23.1", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz", - "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==", - "dev": true, + "node_modules/@mui/styled-engine-sc": { + "version": "5.14.12", + "resolved": "https://registry.npmjs.org/@mui/styled-engine-sc/-/styled-engine-sc-5.14.12.tgz", + "integrity": "sha512-FQ5KDd17OkRurE0ljR4Pddekv1uPSoJxcBqXa9tdoOETGULVCefM5Gd9CRGzT+alNPDyHBoUeEYKulIkDN9ytA==", "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.6", - "@typescript-eslint/utils": "5.59.6", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "@babel/runtime": "^7.23.1", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/mui" }, "peerDependencies": { - "eslint": "*" + "@types/styled-components": "^5.1.14", + "styled-components": "^5.3.1" }, "peerDependenciesMeta": { - "typescript": { + "@types/styled-components": { "optional": true } } }, - "node_modules/@typescript-eslint/types": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz", - "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==", - "dev": true, + "node_modules/@mui/system": { + "version": "5.14.13", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.13.tgz", + "integrity": "sha512-+5+Dx50lG4csbx2sGjrKLozXQJeCpJ4dIBZolyFLkZ+XphD1keQWouLUvJkPQ3MSglLLKuD37pp52YjMncZMEQ==", + "dependencies": { + "@babel/runtime": "^7.23.1", + "@mui/private-theming": "^5.14.13", + "@mui/styled-engine": "^5.14.13", + "@mui/types": "^7.2.6", + "@mui/utils": "^5.14.13", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz", - "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==", + "node_modules/@mui/types": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.6.tgz", + "integrity": "sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.13", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.13.tgz", + "integrity": "sha512-2AFpyXWw7uDCIqRu7eU2i/EplZtks5LAMzQvIhC79sPV9IhOZU2qwOWVnPtdctRXiQJOAaXulg+A37pfhEueQw==", + "dependencies": { + "@babel/runtime": "^7.23.1", + "@types/prop-types": "^15.7.7", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/visitor-keys": "5.59.6", - "debug": "^4.3.4", - "globby": "^11.1.0", + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@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", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz", + "integrity": "sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" }, "peerDependenciesMeta": { - "typescript": { + "rollup": { + "optional": true + }, + "tslib": { "optional": true } } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz", - "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==", + "node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/typescript-estree": "5.59.6", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.3.0.tgz", + "integrity": "sha512-/4pns6BYi8MXdwnXM44yoGAcFYVHL/BYlB2q1HXZ6AzH++LaiEVWFpBWQ/glXhbMbv3E3o09igrHFbP/snhAvA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.3.0.tgz", + "integrity": "sha512-nLO/JsL9idr416vzi3lHm3Xm+QZh4qHij8k3Er13kZr5YhL7/+kBAx84kDmPc7HMexLmwisjDCeDIKNFp8mDlQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-dGhVBlllt4iHwTGy21IEoMOTN5wZoid19zEIxsdY29xcEiOEHqzDa7Sqrkh5OE7LKCowL61eFJXxYe/+pYa7ZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.3.0.tgz", + "integrity": "sha512-h8wRfHeLEbU3NzaP1Oku7BYXCJQiTRr+8U0lklyOQXxXiEpHLL8tk1hFl+tezoRKLcPJD7joKaK74ASsqt3Ekg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-wP4VgR/gfV18sylTuym3sxRTkAgUR2vh6YLeX/GEznk5jCYcYSlx585XlcUcl0c8UffIZlRJ09raWSX3JDb4GA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-v/14JCYVkqRSJeQbxFx4oUkwVQQw6lFMN7bd4vuARBc3X2lmomkxBsc+BFiIDL/BK+CTx5AOh/k9XmqDnKWRVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-tNhfYqFH5OxtRzfkTOKdgFYlPSZnlDLNW4+leNEvQZhwTJxoTwsZAAhR97l3qVry/kkLyJPBK+Q8EAJLPinDIg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-pw77m8QywdsoFdFOgmc8roF1inBI0rciqzO8ffRUgLoq7+ee9o5eFqtEcS6hHOOplgifAUUisP8cAnwl9nUYPw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-tJs7v2MnV2F8w6X1UpPHl/43OfxjUy9SuJ2ZPoxn79v9vYteChVYO/ueLHCpRMmyTUIVML3N9z4azl9ENH8Xxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-OKGxp6kATQdTyI2DF+e9s+hB3/QZB45b6e+dzcfW1SUqiF6CviWyevhmT4USsMEdP3mlpC9zxLz3Oh+WaTMOSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.3.0.tgz", + "integrity": "sha512-DDZ5AH68JJ2ClQFEA1aNnfA7Ybqyeh0644rGbrLOdNehTmzfICHiWSn0OprzYi9HAshTPQvlwrM+bi2kuaIOjQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-dMvGV8p92GQ8jhNlGIKpyhVZPzJlT258pPrM5q2F8lKcc9Iv9BbfdnhX1OfinYWnb9ms5zLw6MlaMnqLfUkKnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tanstack/eslint-plugin-query": { + "version": "4.36.1", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-4.36.1.tgz", + "integrity": "sha512-qFIYV/BuwWzg0t5mSRMcb+rzrOVtCO9EizYxeClFxuFq/c54cNhAQCnDrA3iCxFz/fqRv7I9rxxnR/ZWkX15cQ==", + "dev": true, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz", - "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==", + "node_modules/@tanstack/query-core": { + "version": "4.36.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", + "integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "4.36.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz", + "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", + "dependencies": { + "@tanstack/query-core": "4.36.1", + "use-sync-external-store": "^1.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/chrome": { + "version": "0.0.246", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.246.tgz", + "integrity": "sha512-MxGxEomGxsJiL9xe/7ZwVgwdn8XVKWbPvxpVQl3nWOjrS0Ce63JsfzxUc4aU3GvRcUPYsfufHmJ17BFyKxeA4g==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/filesystem": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.33.tgz", + "integrity": "sha512-2KedRPzwu2K528vFkoXnnWdsG0MtUwPjuA7pRy4vKxlxHEe8qUDZibYHXJKZZr2Cl/ELdCWYqyb/MKwsUuzBWw==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.30.tgz", + "integrity": "sha512-lB98tui0uxc7erbj0serZfJlHKLNJHwBltPnbmO1WRpL5T325GOHRiQfr2E29V2q+S1brDO63Fpdt6vb3bES9Q==", + "dev": true + }, + "node_modules/@types/har-format": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.13.tgz", + "integrity": "sha512-PwBsCBD3lDODn4xpje3Y1di0aDJp4Ww7aSfMRVw6ysnxD4I7Wmq2mBkSKaDtN403hqH5sp6c9xQUvFYY3+lkBg==", + "dev": true + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw==", + "devOptional": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" + }, + "node_modules/@types/react": { + "version": "18.2.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", + "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.13", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz", + "integrity": "sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, + "node_modules/@types/styled-components": { + "version": "5.1.28", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.28.tgz", + "integrity": "sha512-nu0VKNybkjvUqJAXWtRqKd7j3iRUl8GbYSTvZNuIBJcw/HUp1Y4QUXNLlj7gcnRV/t784JnHAlvRnSnE3nPbJA==", + "devOptional": true, + "dependencies": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/ws": { + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.7.tgz", + "integrity": "sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", + "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/type-utils": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", + "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", + "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5" + }, + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", + "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", + "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", + "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", + "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "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.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "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.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", + "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "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/@vitejs/plugin-react": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.0.tgz", + "integrity": "sha512-+MHTH/e6H12kRp5HUkzOGqPMksezRMmW+TNzlh/QXfI8rRf6l2Z2yH/v12no1UvTwhZgEDMuQ7g7rrfMseU6FQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.4", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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/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/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "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/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", + "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-styled-components": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", + "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "lodash": "^4.17.21", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/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/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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "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.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "peer": true + }, + "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/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001534", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz", + "integrity": "sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==", + "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/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/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==", + "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/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "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/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "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/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "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/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/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-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.523", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", + "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true, + "peer": true + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.7.tgz", + "integrity": "sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.7", + "@esbuild/android-arm64": "0.19.7", + "@esbuild/android-x64": "0.19.7", + "@esbuild/darwin-arm64": "0.19.7", + "@esbuild/darwin-x64": "0.19.7", + "@esbuild/freebsd-arm64": "0.19.7", + "@esbuild/freebsd-x64": "0.19.7", + "@esbuild/linux-arm": "0.19.7", + "@esbuild/linux-arm64": "0.19.7", + "@esbuild/linux-ia32": "0.19.7", + "@esbuild/linux-loong64": "0.19.7", + "@esbuild/linux-mips64el": "0.19.7", + "@esbuild/linux-ppc64": "0.19.7", + "@esbuild/linux-riscv64": "0.19.7", + "@esbuild/linux-s390x": "0.19.7", + "@esbuild/linux-x64": "0.19.7", + "@esbuild/netbsd-x64": "0.19.7", + "@esbuild/openbsd-x64": "0.19.7", + "@esbuild/sunos-x64": "0.19.7", + "@esbuild/win32-arm64": "0.19.7", + "@esbuild/win32-ia32": "0.19.7", + "@esbuild/win32-x64": "0.19.7" + } + }, + "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": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "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-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/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/eslint-config-airbnb-typescript": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/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/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/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/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-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "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/eslint-plugin-react/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/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "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/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/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/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/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/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/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/eslint/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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/eslint/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/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==", + "dev": true + }, + "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/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "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/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.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "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/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "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.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "dev": true, + "dependencies": { + "flatted": "^3.2.7", + "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.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "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-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.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.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true + }, + "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/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "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/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "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/i18next": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.6.0.tgz", + "integrity": "sha512-z0Cxr0MGkt+kli306WS4nNNM++9cgt2b2VCMprY92j+AIab/oclgPxdwtTZVLP1zn5t5uo8M6uLsZmYrcjr3HA==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.22.5" + } + }, + "node_modules/i18next-http-backend": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.3.0.tgz", + "integrity": "sha512-9m34IcWdS3r43cgq/7O5IsDxTvSQ7pePwk2eQIH5q6Em6OjDCsSjboRWg2jqVdeIoCtHwzTN/byDHPStMsKsPQ==", + "dependencies": { + "cross-fetch": "4.0.0" + } + }, + "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/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "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==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "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==", + "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-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "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==" + }, + "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/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "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": { - "@typescript-eslint/types": "5.59.6", - "eslint-visitor-keys": "^3.3.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 0.8.0" } }, - "node_modules/@vitejs/plugin-react": { + "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==" + }, + "node_modules/load-json-file": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz", - "integrity": "sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "dependencies": { - "@babel/core": "^7.21.4", - "@babel/plugin-transform-react-jsx-self": "^7.21.0", - "@babel/plugin-transform-react-jsx-source": "^7.19.6", - "react-refresh": "^0.14.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0" + "node": ">=4" } }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, + "peer": true, "engines": { - "node": ">=0.4.0" + "node": ">=6.11.5" } }, - "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==", + "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, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "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/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "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" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/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==", + "dependencies": { + "yallist": "^3.0.2" } }, - "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==", + "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, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": ">= 0.10.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/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/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==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "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": { - "fill-range": "^7.0.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "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, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "engines": { + "node": ">=12" }, - "bin": { - "browserslist": "cli.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "*" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001488", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001488.tgz", - "integrity": "sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ==", + "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/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "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" } - ] + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "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==", + "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/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, + "peer": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=4" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "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==", + "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==" + }, + "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": { - "color-name": "1.1.3" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "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/normalize-package-data/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/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/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/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } }, - "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==", + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">= 8" + "node": ">=4.8" } }, - "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==", - "dev": true + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/npm-run-all/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/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { - "ms": "2.1.2" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "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/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "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==", + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "which": "bin/which" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "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": { - "esutils": "^2.0.2" + "path-key": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.397", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.397.tgz", - "integrity": "sha512-jwnPxhh350Q/aMatQia31KAIQdhEsYS0fFZ0BQQlN9tfvOEwShu6ZNwI4kL/xBabjcB/nTy6lSt17kNIluJZ8Q==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "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, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { "node": ">=12" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "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==", + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">= 0.4" } }, - "node_modules/eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.40.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "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.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "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", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "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.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz", - "integrity": "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==", + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dev": true, - "peerDependencies": { - "eslint": ">=7" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=8.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/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==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "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": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/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==", + "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": { - "color-name": "~1.1.4" + "@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": ">=7.0.0" + "node": ">= 0.8.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/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==", + "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" }, @@ -1670,1108 +5680,1395 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "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": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "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": ">=4.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/eslint/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==", + "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/eslint/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" - }, + "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==" + }, + "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==", "engines": { "node": ">=8" } }, - "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "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": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8.6" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true, - "dependencies": { - "estraverse": "^5.1.0" + "bin": { + "pidtree": "bin/pidtree.js" }, "engines": { "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, + "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": { - "estraverse": "^5.2.0" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=4.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "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": ">=4.0" + "node": ">= 0.8.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "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": ">=4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "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": ">=0.10.0" + "node": ">=6.0.0" } }, - "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/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "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.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, "engines": { - "node": ">=8.6.0" + "node": ">=6" } }, - "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==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "peer": true, "dependencies": { - "is-glob": "^4.0.1" + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } }, - "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/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, - "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==", - "dev": true, + "node_modules/react-helmet": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", + "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", "dependencies": { - "reusify": "^1.0.4" + "object-assign": "^4.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.1.1", + "react-side-effect": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.3.0" } }, - "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, + "node_modules/react-i18next": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-13.3.1.tgz", + "integrity": "sha512-JAtYREK879JXaN9GdzfBI4yJeo/XyLeXWUsRABvYXiFUakhZJ40l+kaTo+i+A/3cKIED41kS/HAbZ5BzFtq/Og==", "dependencies": { - "flat-cache": "^3.0.4" + "@babel/runtime": "^7.22.5", + "html-parse-stringify": "^3.0.1" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "peerDependencies": { + "i18next": ">= 23.2.3", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "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==", + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-loading-skeleton": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", + "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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, + "node_modules/react-router": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", + "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@remix-run/router": "1.9.0" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "react": ">=16.8" } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, + }, + "node_modules/react-router-dom": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", + "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "node_modules/react-side-effect": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz", + "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==", + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0 || ^18.0.0" + } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "node_modules/react-spinners": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz", + "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/react-toastify": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz", + "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==", + "dependencies": { + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-toastify/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=6" } }, - "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==", + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=4" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "pify": "^3.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, - "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==", + "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": { - "is-glob": "^4.0.3" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=8.10.0" } }, - "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==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "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" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "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/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, + "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==", "engines": { "node": ">=4" } }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "engines": { - "node": ">= 4" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "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==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "glob": "^7.1.3" }, - "engines": { - "node": ">=6" + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/rollup": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.3.0.tgz", + "integrity": "sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==", "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, "engines": { - "node": ">=0.8.19" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.3.0", + "@rollup/rollup-android-arm64": "4.3.0", + "@rollup/rollup-darwin-arm64": "4.3.0", + "@rollup/rollup-darwin-x64": "4.3.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.3.0", + "@rollup/rollup-linux-arm64-gnu": "4.3.0", + "@rollup/rollup-linux-arm64-musl": "4.3.0", + "@rollup/rollup-linux-x64-gnu": "4.3.0", + "@rollup/rollup-linux-x64-musl": "4.3.0", + "@rollup/rollup-win32-arm64-msvc": "4.3.0", + "@rollup/rollup-win32-ia32-msvc": "4.3.0", + "@rollup/rollup-win32-x64-msvc": "4.3.0", + "fsevents": "~2.3.2" } }, - "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==", + "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": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "execa": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "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": { - "is-extglob": "^2.1.1" + "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": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "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==", + "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": ">=0.12.0" + "node": ">=10.17.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==", + "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/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "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, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "engines": { + "node": ">=6" } }, - "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==" - }, - "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==", + "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": { - "argparse": "^2.0.1" + "path-key": "^3.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "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, - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/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" - }, + "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/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "queue-microtask": "^1.2.2" } }, - "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==", + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "node": ">=10" + "node": ">=0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" }, - "bin": { - "loose-envify": "cli.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" + "loose-envify": "^1.1.0" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "peer": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=8.6" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=10" } }, - "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/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, + "peer": true, "dependencies": { - "wrappy": "1" + "randombytes": "^2.1.0" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" } }, - "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==", + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "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": { - "yocto-queue": "^0.1.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "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==", + "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, - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" - }, + "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/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "callsites": "^3.0.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "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/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==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "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==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "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/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/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "node_modules/string.prototype.padend": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", "dev": true, - "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" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dependencies": { - "loose-envify": "^1.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "ansi-regex": "^5.0.1" }, - "peerDependencies": { - "react": "^18.2.0" + "engines": { + "node": ">=8" } }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "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==", + "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": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, + "node_modules/styled-components": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", + "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", "dependencies": { - "glob": "^7.1.3" + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" } }, - "node_modules/rollup": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.22.0.tgz", - "integrity": "sha512-imsigcWor5Y/dC0rz2q0bBt9PabcL3TORry2hAa6O6BuMvY71bqHyfReAz5qyAqiQATD1m70qdntqBfBQjVWpQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "node_modules/styled-components/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "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==", + "dependencies": { + "has-flag": "^3.0.0" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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, - "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" + "@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/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "node_modules/terser": { + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", "dev": true, + "peer": true, "dependencies": { - "lru-cache": "^6.0.0" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" }, "bin": { - "semver": "bin/semver.js" + "terser": "bin/terser" }, "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==", + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, + "peer": true, "dependencies": { - "yallist": "^4.0.0" + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/semver/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/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/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==", + "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, - "dependencies": { - "shebang-regex": "^3.0.0" + "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==", "engines": { - "node": ">=8" + "node": ">=4" } }, - "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==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=8.0" } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "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": ">=8" + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "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==", + "node_modules/ts-loader": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", + "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" } }, - "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==", + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/ts-loader/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": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "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==", + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/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==", + "node_modules/ts-loader/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": ">=4" + "node": ">=8" } }, - "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==", + "node_modules/ts-loader/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/ts-loader/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": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=8" } }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" + "minimist": "^1.2.0" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "bin": { + "json5": "lib/cli.js" } }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2796,24 +7093,127 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "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": ">=12.20" + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.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.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -2848,28 +7248,63 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/usehooks-ts": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-2.9.1.tgz", + "integrity": "sha512-2FAuSIGHlY+apM9FVlj8/oNhd+1y+Uwv5QNkMQz1oSfdHk4PXo1qoCw9I5M7j0vpH8CSWFJwXbVPeYDjLCx9PA==", + "engines": { + "node": ">=16.15.0", + "npm": ">=8" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "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/vite": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.7.tgz", - "integrity": "sha512-MTIFpbIm9v7Hh5b0wSBgkcWzSBz7SAa6K/cBTwS4kUiQJfQLFlZZRJRQgqunCVzhTPCk674tW+0Qaqh3Q00dBg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.2.tgz", + "integrity": "sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==", "dev": true, "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.23", - "rollup": "^3.21.0" + "esbuild": "^0.19.3", + "postcss": "^8.4.31", + "rollup": "^4.2.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", + "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", @@ -2882,6 +7317,9 @@ "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, @@ -2896,6 +7334,100 @@ } } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2911,13 +7443,80 @@ "node": ">= 8" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/wrappy": { @@ -2926,11 +7525,39 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } }, "node_modules/yocto-queue": { "version": "0.1.0", diff --git a/react-app/package.json b/react-app/package.json index 0f20b3bd..057782db 100644 --- a/react-app/package.json +++ b/react-app/package.json @@ -1,28 +1,71 @@ { - "name": "react-app", - "private": true, - "version": "0.0.0", + "name": "yt-notifier-frontend", "type": "module", "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "build": "tsc --noEmit && vite build", + "build:firefox": "tsc --noEmit && cross-env __FIREFOX__=true vite build", + "build:watch": "cross-env __DEV__=true vite build -w --mode development", + "build:firefox:watch": "cross-env __DEV__=true __FIREFOX__=true vite build -w --mode development", + "build:hmr": "rollup --config utils/core/reload/rollup.config.mjs", + "wss": "node utils/core/reload/initReloadServer.js", + "dev": "npm run build:hmr && (run-p wss build:watch)", + "dev:firefox": "npm run build:hmr && (run-p wss build:firefox:watch)", + "lint": "eslint src --ext .ts", + "lint:fix": "npm run lint -- --fix", + "prettier": "prettier . --write" }, "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" + "@emotion/react": "11.11.1", + "@emotion/styled": "11.11.0", + "@mui/base": "5.0.0-beta.19", + "@mui/styled-engine-sc": "5.14.12", + "@mui/system": "5.14.13", + "@tanstack/react-query": "4.36.1", + "axios": "1.5.1", + "date-fns": "2.30.0", + "dotenv": "16.3.1", + "i18next": "23.6.0", + "i18next-http-backend": "2.3.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-helmet": "6.1.0", + "react-i18next": "13.3.1", + "react-loading-skeleton": "3.3.1", + "react-router-dom": "6.16.0", + "react-spinners": "^0.13.8", + "react-toastify": "9.1.3", + "styled-components": "5.3.11", + "usehooks-ts": "2.9.1" }, "devDependencies": { - "@types/react": "^18.0.28", - "@types/react-dom": "^18.0.11", - "@typescript-eslint/eslint-plugin": "^5.57.1", - "@typescript-eslint/parser": "^5.57.1", - "@vitejs/plugin-react": "^4.0.0", - "eslint": "^8.38.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.3.4", - "typescript": "^5.0.2", - "vite": "^4.3.2" + "@rollup/plugin-typescript": "11.1.5", + "@tanstack/eslint-plugin-query": "4.36.1", + "@types/chrome": "0.0.246", + "@types/node": "20.8.6", + "@types/react": "18.2.28", + "@types/react-dom": "18.2.13", + "@types/styled-components": "5.1.28", + "@types/ws": "8.5.7", + "@typescript-eslint/eslint-plugin": "6.7.5", + "@typescript-eslint/parser": "6.7.5", + "@vitejs/plugin-react": "4.2.0", + "chokidar": "3.5.3", + "cross-env": "7.0.3", + "eslint": "8.51.0", + "eslint-config-airbnb-typescript": "17.1.0", + "eslint-config-prettier": "9.0.0", + "eslint-plugin-import": "2.28.1", + "eslint-plugin-jsx-a11y": "6.7.1", + "eslint-plugin-prettier": "5.0.1", + "eslint-plugin-react": "7.33.2", + "eslint-plugin-react-hooks": "4.6.0", + "fs-extra": "11.1.1", + "npm-run-all": "4.1.5", + "prettier": "3.0.3", + "rollup": "4.3.0", + "ts-loader": "9.5.0", + "typescript": "5.2.2", + "vite": "5.0.2", + "ws": "8.14.2" } } diff --git a/react-app/public/_locales/en/messages.json b/react-app/public/_locales/en/messages.json new file mode 100644 index 00000000..267f8a30 --- /dev/null +++ b/react-app/public/_locales/en/messages.json @@ -0,0 +1,6 @@ +{ + "extensionDescription": { + "description": "Get all of yours, the most important notification in one place, and get new info on every browser start.", + "message": "Get all of yours, the most important notification in one place, and get new info on every browser start." + } +} \ No newline at end of file diff --git a/react-app/public/_locales/pl/messages.json b/react-app/public/_locales/pl/messages.json new file mode 100644 index 00000000..559c82ba --- /dev/null +++ b/react-app/public/_locales/pl/messages.json @@ -0,0 +1,6 @@ +{ + "extensionDescription": { + "description": "Zbierz wszystkie najważniejsze powiadomienia w jednym miejscu i otrzymuj nowe informacje przy każdym uruchomieniu przeglądarki.", + "message": "Zbierz wszystkie najważniejsze powiadomienia w jednym miejscu i otrzymuj nowe informacje przy każdym uruchomieniu przeglądarki." + } +} \ No newline at end of file diff --git a/react-app/public/locales/en/translation.json b/react-app/public/locales/en/translation.json new file mode 100644 index 00000000..2bda216f --- /dev/null +++ b/react-app/public/locales/en/translation.json @@ -0,0 +1,71 @@ +{ + "welcome": "Welcome to YT Plugin", + "loginByGoogle": "Login by Google", + "savedKeywords": "Saved Keywords", + "foundVideos": "Found Videos", + "search": "Search", + "addKeyword": "Add keyword", + "createdKeyword": "Successfully created keyword", + "keywordErrors": { + "duplicated_keyword": "This keyword already exists", + "keyword_not_found": "Keyword not found" + }, + "views": "{{ amount, abbreviations }} views", + "menu": { + "logout": "Logout", + "deleteAccount": "Delete account", + "collectErrors": "Collect and download errors data" + }, + "unauthorized": "You were logged out, your session has expired, please login again", + "loggingInFailed": "Logging in failed", + "languages": { + "pl": "Polish", + "en": "English" + }, + "timeAgo": "{{ date, ago }}", + "validation": "Provide from 3 to 255 characters!", + "provideKeyword": "Provide keyword", + "deleteModal": { + "confirm": "Yes, delete", + "cancel": "Cancel" + }, + "deleteAccountModal": { + "content1": "Are you sure, you want to delete your account?", + "content2": "Your data will be lost. This action is irreversible." + }, + "deleteModalContent": "Are you sure, you want to delete this?", + "nav": { + "foundVideo": "Found video", + "savedKeywords": "Saved keywords", + "watchLater": "Watch later" + }, + "aria-labels": { + "deleteButton": "Delete", + "editButton": "Edit", + "addKeywordButton": "Add keyword", + "openProfileMenuButton": "Open profile menu", + "openLanguageMenuButton": "Open language menu", + "themeSwitch": "Change theme" + }, + "alts": { + "exclamationOctagon": "Exclamation octagon" + }, + "successfulLogout": "Successfully logged out", + "successfulDeleteAccount": "Successfully deleted account", + "videosLoaded": "From under provided keywords, {{loadedVideosAmount}} videos were fetched, check them out in extension", + "fallbackError": "Unexpected error occurred, please contact with developer!", + "fatalErrorHeading": "ERROR", + "playlist": { + "title": "Watch Later - YT Notifier", + "description": "Your saved videos via YT Notifier plugin", + "updated": "Successfully updated your playlist" + }, + "playlistErrors": { + "quota_limit": "Requests limit was reached, you must wait for next day, to fetch more videos", + "video_for_playlist_not_found": "Video was not found", + "duplicated_video_for_playlist": "That video is already on your playlist", + "playlist_not_found": "Your playlist doesn't exist yet, add something from your list of videos to create it" + }, + "pluginLogo": "Logo", + "subscribe": "Subscribe" +} diff --git a/react-app/public/locales/pl/translation.json b/react-app/public/locales/pl/translation.json new file mode 100644 index 00000000..b1f7d641 --- /dev/null +++ b/react-app/public/locales/pl/translation.json @@ -0,0 +1,71 @@ +{ + "welcome": "Witaj w YT Plugin", + "loginByGoogle": "Zaloguj się przez Google", + "savedKeywords": "Zapisane Frazy", + "foundVideos": "Znalezione Wideo", + "search": "Szukaj", + "addKeyword": "Dodaj słowo kluczowe", + "createdKeyword": "Pomyślnie dodano słowo kluczowe", + "keywordErrors": { + "duplicated_keyword": "To słowo kluczowe już istnieje", + "keyword_not_found": "Nie znaleziono tego słowa kluczowego" + }, + "views": "{{ amount, abbreviations }} wyświetleń", + "menu":{ + "logout": "Wyloguj się", + "deleteAccount": "Usuń konto", + "collectErrors": "Zbierz dane o błędach i pobierz je" + }, + "unauthorized": "Zostałeś wylogowany, Twoja sesja wygasła, zaloguj się ponownie", + "loggingInFailed": "Logowanie nie powiodło się", + "languages": { + "pl": "Polski", + "en": "Angielski" + }, + "timeAgo": "{{ date, ago }}", + "validation": "Podaj od 3 do 255 znaków!", + "provideKeyword": "Podaj słowo kluczowe!", + "deleteModal": { + "confirm": "Tak, usuń", + "cancel": "Anuluj" + }, + "deleteAccountModal": { + "content1": "Czy jesteś pewien, że chcesz usunąć konto?", + "content2": "Twoje dane zostaną trwale usunięte." + }, + "deleteModalContent": "Czy jesteś pewien, że chcesz to usunąć?", + "nav": { + "foundVideo": "Znalezione Wideo", + "savedKeywords": "Zapisane słowa kluczowe", + "watchLater": "Obejrzyj później" + }, + "aria-labels": { + "deleteButton": "Usuń", + "editButton": "Edytuj", + "addKeywordButton": "Dodaj słowo kluczowe", + "openProfileMenuButton": "Otwórz menu profilu", + "openLanguageMenuButton": "Otwórz menu języka", + "themeSwitch": "Przełącz motyw" + }, + "alts": { + "exclamationOctagon": "Ikona ostrzeżenia" + }, + "successfulLogout": "Pomyślnie wylogowano", + "successfulDeleteAccount": "Pomyślnie usunięto konto", + "videosLoaded": "Znaleziono {{loadedVideosAmount}} wideo podczas przeszukiwania podanych słów kluczowych. Proszę sprawdzić we wtyczce.", + "fallbackError": "Wystąpił niespodziewany błąd, skontaktuj sie z developerem!", + "fatalErrorHeading": "BŁĄD", + "playlist": { + "title": "Do Obejrzenia - YT Notifier", + "description": "Twoje zapisane wideo poprzez wtyczkę YT Notifier", + "updated": "Pomyślnie zaktualizowano twoją playlistę" +}, + "playlistErrors": { + "quota_limit": "Osiągnięto limit zapytań o wideo, musisz poczekać do jutra aby pobrać nowe", + "video_for_playlist_not_found": "Nie znaleziono video", + "duplicated_video_for_playlist": "To wideo jest już na twojej playliście", + "playlist_not_found": "Twoja playlista jeszcze nie istnieje, dodaj coś z listy wideo, aby ją stworzyć" + }, + "pluginLogo": "Logo", + "subscribe": "Zasubskrybuj" +} diff --git a/react-app/public/logo-128.png b/react-app/public/logo-128.png new file mode 100644 index 0000000000000000000000000000000000000000..86866814c05b5ee5d6d9cc06ef7c966ecd225587 GIT binary patch literal 5209 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 T!q&bn00000NkvXXu0mjfG2^sg literal 0 HcmV?d00001 diff --git a/react-app/public/logo-32.png b/react-app/public/logo-32.png new file mode 100644 index 0000000000000000000000000000000000000000..5447b08595df6aba9ab0b7a71b96793856567da7 GIT binary patch literal 1432 zcmV;J1!ww+P)V%O^|XxE3dWi4&e+~fD1+jDnwb8eQZKM2V^_vHM3 z=lj0%ecxeF0R|3cV_ego*MP@N0G$CWrAETL#Jl(s=lHAv7@V;QFwL>`JX}j>B1@I5 z&B_wTm(OwF37iymy)v8v)GM<~uwf3SG7$sHKvNCA-kEK|h35cxQbi7&W#q%c$}ezx zF$1d`i^a1z?}I8fN1K2$D6zoV_)4z{X1a)&Lk1TdT;GHVr)l+294*9>^7*M~4>U)Q zsdx;?@eY+Wn46q~dC5(j`X-W5t=bSe#Dmp4k@y%)&wnng(DU>~2>5p>MHD#ies?r7 z;T*JGFc8b?PIAuq2dU9;hZngXKCII>325B8A0j)%BjgIJ-~rvo*q6lP9JDQ9`5d-h z;;u&`N!2RR+JiBT`Fa_Hn4BN*2O+R zM52#B44-}d4qPAq2oh&cKxHD-R=|ygYXWdo<5oZsjG`oiyT>Ea=loMsb0f@5-G(FW zuR+i8PWa^NIU%YX?xF>}tN@y}U!%f8}f;+e~aJqcNWkR{g4oQz8e@#i0T{FM~y5H*! zRTa(ocJ zAD=9lFWo_6$UQ5|_fv9xs0j`g5?3j&w&4oT5JLN%{6Q=#*_l+2ue^w zBI0=0GlGzahpvt&EflO#3!oOxFKRx6UO9MU>a;Rwq**Be#k-yrf`+b)2!E?$!in1I zdi4wJAN|xoR#(CM)B(+BfAox4A|Y}LvY{)Zp1V~cyrV%mPTb<4VL49Y!9PX49aXab z8_HIV3g2+u%T_t|Sp_E=X)PBp{~A=3N-WFFL5mtO{`=cY?Tu$5K3`Q^^r2QulNP}C zYRzso{wu=421k>E9oKL~q)j{5QE9BHVn2c1mRX=vaW8ilrvDrQijiH||Iu#br&2t( z??Y)_!|ViTi5xbaH!(fauE`3NUWw?pzpjh1HWWqUPS7|ts#|Tk zp - - ) -} - -export default App diff --git a/react-app/src/assets/img/chevron-down-icon.svg b/react-app/src/assets/img/chevron-down-icon.svg new file mode 100644 index 00000000..f3d44879 --- /dev/null +++ b/react-app/src/assets/img/chevron-down-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/react-app/src/assets/img/chevron-up-icon.svg b/react-app/src/assets/img/chevron-up-icon.svg new file mode 100644 index 00000000..292aa3f1 --- /dev/null +++ b/react-app/src/assets/img/chevron-up-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/react-app/src/assets/img/edit-icon.svg b/react-app/src/assets/img/edit-icon.svg new file mode 100644 index 00000000..6c9ebe45 --- /dev/null +++ b/react-app/src/assets/img/edit-icon.svg @@ -0,0 +1,6 @@ + + + + diff --git a/react-app/src/assets/img/english-flag.svg b/react-app/src/assets/img/english-flag.svg new file mode 100644 index 00000000..dc324d76 --- /dev/null +++ b/react-app/src/assets/img/english-flag.svg @@ -0,0 +1 @@ +Union Jack (1707-1800) \ No newline at end of file diff --git a/react-app/src/assets/img/exclamation-octagon-icon.svg b/react-app/src/assets/img/exclamation-octagon-icon.svg new file mode 100644 index 00000000..96c492e6 --- /dev/null +++ b/react-app/src/assets/img/exclamation-octagon-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/react-app/src/assets/img/google-icon.svg b/react-app/src/assets/img/google-icon.svg new file mode 100644 index 00000000..704e1cfd --- /dev/null +++ b/react-app/src/assets/img/google-icon.svg @@ -0,0 +1,52 @@ + + + + + + \ No newline at end of file diff --git a/react-app/src/assets/img/plus-icon.svg b/react-app/src/assets/img/plus-icon.svg new file mode 100644 index 00000000..003766b6 --- /dev/null +++ b/react-app/src/assets/img/plus-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/react-app/src/assets/img/polish-flag.svg b/react-app/src/assets/img/polish-flag.svg new file mode 100644 index 00000000..b08d0251 --- /dev/null +++ b/react-app/src/assets/img/polish-flag.svg @@ -0,0 +1 @@ + diff --git a/react-app/src/assets/img/saved-tags-icon.svg b/react-app/src/assets/img/saved-tags-icon.svg new file mode 100644 index 00000000..8aab4cf0 --- /dev/null +++ b/react-app/src/assets/img/saved-tags-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/react-app/src/assets/img/search-icon.svg b/react-app/src/assets/img/search-icon.svg new file mode 100644 index 00000000..4e2ea412 --- /dev/null +++ b/react-app/src/assets/img/search-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/react-app/src/assets/img/thumbnail.png b/react-app/src/assets/img/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd33509b3324ba108feeb07be1f7d94b566d3ec GIT binary patch literal 534985 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

nNo?xHN4HS6V6slcT6}I%uNK8t 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≫0d0GH#|>2%{|5LSd~UnQ%$UHGo@@lr9!K( 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

C7xSR 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 z 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%0D)HIxOBC%z8@}8tji3i1 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⪻hb@YFdTjs77Oy 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

j{3}4xY>85N3|JW!eCmO7L8uryviwWBL9e_C35 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ð}xi!gBziD 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 uCJ=qNWS|Oi^EdobK`@N+$M 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 literal 0 HcmV?d00001 diff --git a/react-app/src/assets/img/trash-icon.svg b/react-app/src/assets/img/trash-icon.svg new file mode 100644 index 00000000..d9bbf629 --- /dev/null +++ b/react-app/src/assets/img/trash-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/react-app/src/assets/img/watch-later-icon.svg b/react-app/src/assets/img/watch-later-icon.svg new file mode 100644 index 00000000..5df74a8c --- /dev/null +++ b/react-app/src/assets/img/watch-later-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/react-app/src/assets/img/x-icon.svg b/react-app/src/assets/img/x-icon.svg new file mode 100644 index 00000000..4efa01d6 --- /dev/null +++ b/react-app/src/assets/img/x-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/react-app/src/environment.d.ts b/react-app/src/environment.d.ts new file mode 100644 index 00000000..bedafd85 --- /dev/null +++ b/react-app/src/environment.d.ts @@ -0,0 +1,10 @@ +declare global { + namespace NodeJS { + interface ProcessEnv { + __DEV__: string; + __FIREFOX__: string; + } + } +} + +export {}; diff --git a/react-app/src/global.d.ts b/react-app/src/global.d.ts new file mode 100644 index 00000000..b9a3f691 --- /dev/null +++ b/react-app/src/global.d.ts @@ -0,0 +1,45 @@ +import { resources } from '@internationalization'; +import Chrome from 'chrome'; + +declare namespace chrome { + export default Chrome; +} + +declare module 'virtual:reload-on-update-in-background-script' { + export const reloadOnUpdate: (watchPath: string) => void; + export default reloadOnUpdate; +} + +declare module 'virtual:reload-on-update-in-view' { + const refreshOnUpdate: (watchPath: string) => void; + export default refreshOnUpdate; +} + +declare module '*.svg' { + import React = require('react'); + export const ReactComponent: React.SFC>; + const src: string; + export default src; +} + +declare module '*.jpg' { + const content: string; + export default content; +} + +declare module '*.png' { + const content: string; + export default content; +} + +declare module '*.json' { + const content: string; + export default content; +} + +declare module 'i18next' { + interface CustomTypeOptions { + defaultNS: 'translation'; + resources: (typeof resources)['en'] | (typeof resources)['en'][]; + } +} diff --git a/react-app/src/index.css b/react-app/src/index.css deleted file mode 100644 index 82554fd2..00000000 --- a/react-app/src/index.css +++ /dev/null @@ -1,9 +0,0 @@ -*, -*::before, -*::after { - box-sizing: border-box; - width: 0; - margin: 0; - padding: 0; - border: none; -} diff --git a/react-app/src/instructions/CSS.md b/react-app/src/instructions/CSS.md new file mode 100644 index 00000000..659e3383 --- /dev/null +++ b/react-app/src/instructions/CSS.md @@ -0,0 +1,73 @@ +Sections: + +```css +{ + /* Mixins */ + ...myMixin; + + /* Positioning, start of this section should looks like in this example below */ + content: ''; + position: absolute; + z-index: 10; + + top: 0; + bottom: 0; + left: 0; + right: 0; + + /* Displaying */ + display: inline-block; + align-items: center; + gap: 1rem; /* In the end */ + + /* Box Model */ + box-sizing: border-box; + width: 100px; /* On first width and height */ + height: 100px; + + /* Margins and etc. */ + margin: 10px; + padding: 10px; + border: 10px solid #333; + + /* Colors */ + background: #000; + color: #fff; + + /* Text */ + text-align: right; + font-family: sans-serif; + font-weight: bold; + font-size: 16px; + font-style: normal; + line-height: 1.4; + + /* Others */ + overflow: hidden; + cursor: pointer; + + /* Pseudo classes */ + :hover { + + } + + /* Pseudo elements */ + ::after { + + } + + /* Webkit */ + ::-webkit-*{ + } + + /* Media Queries USE NEW SYNTAX 'width > value' */ + @media(width > 100px) { + } + + /* Keyframes */ + @keyframes animationName { + } +} +``` + +https://css-tricks.com/poll-results-how-do-you-order-your-css-properties/ diff --git a/react-app/src/instructions/DIRS_STRUCTURE.md b/react-app/src/instructions/DIRS_STRUCTURE.md new file mode 100644 index 00000000..b68c181c --- /dev/null +++ b/react-app/src/instructions/DIRS_STRUCTURE.md @@ -0,0 +1,36 @@ +`data:` - Save here global styles and themes + + themes: + *-theme.[js/ts] + + mixins: + *-mixin.[js/ts] + + global-styles.[js/ts] + +`pages-` + `*.page.[jsx/tsx]` + +`layouts-` - `Save here a part of page e.g navbar` + +`components` - `Save here the smaller part or page, e.g buttons with they logic hooks:` + + shared - Save here components which can be used in many different components: + *.[js/jsx/ts/tsx] + component-name - should have subdirectories with smaller parts of this component: + *.[js/jsx/ts/tsx] + +`routes-` + `*.route.[jsx/tsx]` + +`consts-` - `Save in constant.[js/ts]` + +`hooks` + +`interfaces-` + `*.interface.[js/ts]` + +`types:` + + common.types.[js/ts] - For common/ungrouped types, + *.type.[js/ts], diff --git a/react-app/src/main.tsx b/react-app/src/main.tsx deleted file mode 100644 index 91c03f3f..00000000 --- a/react-app/src/main.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.tsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( - - - , -) diff --git a/react-app/src/pages/background/index.ts b/react-app/src/pages/background/index.ts new file mode 100644 index 00000000..d465d464 --- /dev/null +++ b/react-app/src/pages/background/index.ts @@ -0,0 +1,83 @@ +import { IErrorWithCause } from '@interfaces'; +import { i18n, t } from '@internationalization'; +import urls from '@utils/endpoints/urls'; +import reloadOnUpdate from 'virtual:reload-on-update-in-background-script'; +import CreateProperties = chrome.contextMenus.CreateProperties; + +reloadOnUpdate('pages/background'); + +i18n.changeLanguage(navigator.language); + +const sendQueryToActiveTab = (message: { [key: string]: unknown }) => { + chrome.tabs.query({ currentWindow: true, active: true }, tabs => { + const activeTab = tabs[0]; + chrome.tabs.sendMessage(activeTab.id!, message).catch(() => { + // THIS IS BECAUSE SOME PAGES DON'T ALLOW CONTENT SCRIPT OR IF ISN'T LOADED YET, THEN ERROR HAPPENED + }); + }); +}; + +chrome.contextMenus.removeAll(() => { + const createProperties: CreateProperties = { + id: 'acae3286', + title: `${t('subscribe')} '%s'`, + contexts: ['selection'], + }; + + chrome.contextMenus.create(createProperties); +}); + +chrome.contextMenus.onClicked.addListener(({ selectionText }) => { + if ((selectionText ?? '').length >= 3 && (selectionText ?? '').length <= 255) { + fetch(`${import.meta.env.VITE_API_URL}${urls.keyWords}`, { + method: 'POST', + credentials: 'include', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ content: selectionText }), + }) + .then(async res => { + if (res.status !== 201) { + const jsonRes = await res.json(); + + sendQueryToActiveTab({ contentMenuErrorCause: jsonRes.cause }); + } else { + sendQueryToActiveTab({ contentMenuSuccess: true }); + } + }) + .catch((err: IErrorWithCause) => { + sendQueryToActiveTab({ contentMenuErrorCause: err.response.data.cause }); + }); + } else { + sendQueryToActiveTab({ contentMenuValidationError: true }); + } +}); + +let stopFetching = false; + +chrome.runtime.onMessage.addListener(({ shouldFetch }) => { + if (!shouldFetch) { + stopFetching = true; + chrome.tabs.query({}, tabs => { + tabs.forEach(tab => { + chrome.tabs.sendMessage(tab.id!, { closeNotification: true }).catch(() => { + // THIS IS BECAUSE SOME PAGES DON'T ALLOW CONTENT SCRIPT OR IF ISN'T LOADED YET, THEN ERROR HAPPENED + }); + }); + }); + } + + if (shouldFetch && !stopFetching) { + fetch(`${import.meta.env.VITE_API_URL}${urls.ytVideos.getVideos}`, { + credentials: 'include', + }) + .then(res => res.json()) + .then(res => { + sendQueryToActiveTab({ + loadedVideosAmount: res.cause ? 0 : res.length, + videosFetchingError: res.cause, + }); + }); + } +}); diff --git a/react-app/src/pages/content/components/error-toast.tsx b/react-app/src/pages/content/components/error-toast.tsx new file mode 100644 index 00000000..5040a243 --- /dev/null +++ b/react-app/src/pages/content/components/error-toast.tsx @@ -0,0 +1,11 @@ +import { TFunction } from '@internationalization'; +import { toast, ToastOptions } from 'react-toastify'; + +export const customToast = (t: TFunction, message: string, restProps: ToastOptions) => + toast(

{message}

, { + icon: {t('pluginLogo')}, + ...restProps, + }); + +export const errorToast = (t: TFunction, message: string, restProps?: ToastOptions) => + customToast(t, message, { ...restProps, style: { backgroundColor: '#f60633' } }); diff --git a/react-app/src/pages/content/components/home/app.tsx b/react-app/src/pages/content/components/home/app.tsx new file mode 100644 index 00000000..77d4d654 --- /dev/null +++ b/react-app/src/pages/content/components/home/app.tsx @@ -0,0 +1,83 @@ +import { i18n, useTranslation } from '@internationalization'; +import { Portal } from '@mui/base'; +import { ThemeProvider } from '@mui/system'; +import { customToast, errorToast } from '@pages/content/components/error-toast'; +import { StyledToastContainer } from '@pages/content/components/toast-container'; +import GlobalStyles from '@utils/data/global-styles'; +import theme from '@utils/data/themes/dark-theme'; +import { useEffect, useState } from 'react'; +import { toast } from 'react-toastify'; +import { injectStyle } from 'react-toastify/dist/inject-style'; + +injectStyle(); + +function App() { + const { t } = useTranslation(); + const [shouldFetch, setShouldFetch] = useState(true); + + chrome.runtime.onMessage.addListener( + ({ + loadedVideosAmount, + videosFetchingError, + closeNotification, + contentMenuValidationError, + contentMenuErrorCause, + contentMenuSuccess, + }) => { + i18n.changeLanguage(navigator.language); + if (loadedVideosAmount) { + customToast(t, t('videosLoaded', { loadedVideosAmount }), { + toastId: 'notification', + onClose: () => setShouldFetch(false), + autoClose: 5000, + }); + } else if (videosFetchingError) { + const message = t([ + videosFetchingError === 'unauthorized' ? videosFetchingError : `playlistErrors.${videosFetchingError}`, + 'fallbackError', + ]); + + errorToast(t, message, { + toastId: 'notificationError', + onClose: () => setShouldFetch(false), + autoClose: 5000, + }); + } else if (closeNotification) { + toast.dismiss('notification'); + toast.dismiss('notificationError'); + } else if (contentMenuValidationError) { + errorToast(t, t('validation'), { toastId: 'validation' }); + } else if (contentMenuErrorCause) { + const message = t([ + contentMenuErrorCause === 'unauthorized' ? contentMenuErrorCause : `keywordErrors.${contentMenuErrorCause}`, + 'fallbackError', + ]); + errorToast(t, message, { toastId: 'loginError' }); + } else if (contentMenuSuccess) { + customToast(t, t('createdKeyword'), { toastId: 'createdKeyword' }); + } + }, + ); + + useEffect(() => { + chrome.runtime.sendMessage({ shouldFetch }); + }, [shouldFetch]); + + return ( + + + + + + + + ); +} + +export default App; diff --git a/react-app/src/pages/content/components/home/index.tsx b/react-app/src/pages/content/components/home/index.tsx new file mode 100644 index 00000000..73812287 --- /dev/null +++ b/react-app/src/pages/content/components/home/index.tsx @@ -0,0 +1,18 @@ +import { createRoot } from 'react-dom/client'; +import App from '@pages/content/components/home/app'; +import refreshOnUpdate from 'virtual:reload-on-update-in-view'; + +refreshOnUpdate('pages/content'); + +const root = document.createElement('div'); +root.id = 'chrome-extension-boilerplate-react-vite-content-view-root'; + +document.body.append(root); + +const rootIntoShadow = document.createElement('div'); +rootIntoShadow.id = 'shadow-root'; + +const shadowRoot = root.attachShadow({ mode: 'open' }); +shadowRoot.appendChild(rootIntoShadow); + +createRoot(rootIntoShadow).render(); diff --git a/react-app/src/pages/content/components/toast-container.ts b/react-app/src/pages/content/components/toast-container.ts new file mode 100644 index 00000000..187c1311 --- /dev/null +++ b/react-app/src/pages/content/components/toast-container.ts @@ -0,0 +1,27 @@ +import { ToastContainer } from 'react-toastify'; +import styled from 'styled-components'; + +export const StyledToastContainer = styled(ToastContainer)` + width: 350px !important; + + .Toastify__toast { + height: 120px !important; + + padding: 10px !important; + } + + .Toastify__toast-body { + all: unset; + + display: flex !important; + align-items: center !important; + gap: 1.5rem !important; + + text-wrap: balance !important; + } + + .Toastify__close-button svg { + width: 25px !important; + height: 25px !important; + } +`; diff --git a/react-app/src/pages/content/index.ts b/react-app/src/pages/content/index.ts new file mode 100644 index 00000000..ce2cc33f --- /dev/null +++ b/react-app/src/pages/content/index.ts @@ -0,0 +1,5 @@ +/** + * @description + * Chrome extensions don't support modules in content scripts. + */ +import('./components/home'); diff --git a/react-app/src/pages/options/index.html b/react-app/src/pages/options/index.html new file mode 100644 index 00000000..cd44e0a8 --- /dev/null +++ b/react-app/src/pages/options/index.html @@ -0,0 +1,11 @@ + + + + + Options + + + +
+ + diff --git a/react-app/src/pages/popup/Popup.tsx b/react-app/src/pages/popup/Popup.tsx new file mode 100644 index 00000000..8b42f815 --- /dev/null +++ b/react-app/src/pages/popup/Popup.tsx @@ -0,0 +1,68 @@ +import withErrorBoundary from '@hooks/with-error-boundary'; +import httpClient, { AxiosError } from '@http-client'; +import { IProvidedAuthValues, IUser } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import AuthPage from '@pages/popup/pages/auth/auth.page'; +import { ErrorPage } from '@pages/popup/pages/error/ErrorPage'; +import HomePage from '@pages/popup/pages/home/home.page'; +import { ProtectedPage } from '@pages/popup/pages/protected.page'; +import ProvidersWrapper from '@pages/popup/providers-wrapper'; +import { StoreRoute } from '@pages/popup/routes/store.route'; +import { VideosRoute } from '@pages/popup/routes/videos.route'; +import { useQuery } from '@query-client'; +import urls from '@utils/endpoints/urls'; +import { createHashRouter } from 'react-router-dom'; +import { toast } from 'react-toastify'; + +const hashRouting = (authValues: IProvidedAuthValues) => + createHashRouter([ + { + path: '/', + element: ( + + + + ), + children: [ + { + index: true, + element: , + }, + + { + path: 'store', + element: , + }, + ], + }, + { + path: '/auth/login', + element: , + }, + ]); + +const Popup = () => { + const { + data: user, + error, + isLoading: userIsLoading, + } = useQuery({ + queryKey: [urls.auth.me], + queryFn: () => httpClient.get(urls.auth.me).then(user => user.data), + retry: false, + }); + + const { t } = useTranslation(); + + if (error && error.response?.status !== 401) { + toast.error(t('loggingInFailed'), { + toastId: `${urls.auth.me}-error`, + }); + } + + const authProviderValues: IProvidedAuthValues = { user, userIsLoading }; + + return ; +}; + +export default withErrorBoundary(Popup, ); diff --git a/react-app/src/pages/popup/components/auth/auth-wrapper.tsx b/react-app/src/pages/popup/components/auth/auth-wrapper.tsx new file mode 100644 index 00000000..bc45c171 --- /dev/null +++ b/react-app/src/pages/popup/components/auth/auth-wrapper.tsx @@ -0,0 +1,11 @@ +import { Stack, styled } from '@mui/system'; +import { pageMixin } from '@utils/data/mixins/page-mixin'; + +export const StyledAuthWrapper = styled(Stack)(({ theme }) => + theme.unstable_sx({ + ...pageMixin, + + p: 1, + pt: 2.25, + }), +); diff --git a/react-app/src/pages/popup/components/auth/google.ts b/react-app/src/pages/popup/components/auth/google.ts new file mode 100644 index 00000000..061ee31c --- /dev/null +++ b/react-app/src/pages/popup/components/auth/google.ts @@ -0,0 +1,55 @@ +import { Button } from '@mui/base/Button'; +import { styled } from '@mui/system'; + +export const StyledGoogleButton = styled(Button)(({ theme }) => + theme.unstable_sx({ + display: 'flex', + alignItems: 'center', + + width: '228px', + height: '40px', + + borderRadius: 10, + pl: '2px', + + backgroundColor: '#1a73e8', + + transition: 'background-color ease-in 0.15s', + + '&:hover': { + cursor: 'pointer', + backgroundColor: '#307aff', + }, + + '&:active': { + backgroundColor: '#4285F4', + }, + }), +); + +export const StyledGoogleIconWrapper = styled('span')(({ theme }) => + theme.unstable_sx({ + display: 'grid', + placeItems: 'center', + + width: '35px', + height: '35px', + + mr: '10px', + borderRadius: 10, + + backgroundColor: '#fff', + }), +); + +export const StyledGoogleText = styled('p')(({ theme }) => + theme.unstable_sx({ + color: '#fff', + + fontSize: '14px', + fontWeight: '500', + fontFamily: 'Roboto, sans-serif', + + letterSpacing: '0.3px', + }), +); diff --git a/react-app/src/pages/popup/components/language-selector.tsx b/react-app/src/pages/popup/components/language-selector.tsx new file mode 100644 index 00000000..364f9dca --- /dev/null +++ b/react-app/src/pages/popup/components/language-selector.tsx @@ -0,0 +1,68 @@ +import chevronDownIcon from '@assets/img/chevron-down-icon.svg'; +import chevronUpIcon from '@assets/img/chevron-up-icon.svg'; +import englishFlag from '@assets/img/english-flag.svg'; +import polishFlag from '@assets/img/polish-flag.svg'; +import useLanguageSwitch from '@hooks/use-language-switch'; +import { changeLanguage, i18n, useTranslation } from '@internationalization'; +import { Dropdown, Menu } from '@mui/base'; +import { useTheme } from '@mui/system'; +import { StyledListbox, StyledMenuButton, StyledMenuItem } from '@pages/popup/components/shared/dropdown'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import { GLOBAL_TRANSITION_DURATION } from '@pages/popup/constant'; +import { useState } from 'react'; + +const languages = { + en: { icon: englishFlag, nativeName: 'English' }, + pl: { icon: polishFlag, nativeName: 'Polish' }, +}; + +const LanguageSelector = () => { + const [collapsed, setCollapsed] = useState(false); + + const handleOpenChange = (_: unknown, open: boolean) => { + setCollapsed(open); + }; + + const theme = useTheme(); + + const { t } = useTranslation(); + + const setLanguage = useLanguageSwitch(); + + const handleChangeLanguage = (language: string) => { + changeLanguage(language); + setLanguage(language); + }; + + return ( + + + + + + + {Object.keys(languages).map(language => ( + handleChangeLanguage(language)} + aria-label={languages[language].nativeName}> + + {t(`languages.${language}`)} + + ))} + + + ); +}; + +export default LanguageSelector; diff --git a/react-app/src/pages/popup/components/shared/avatar.ts b/react-app/src/pages/popup/components/shared/avatar.ts new file mode 100644 index 00000000..03701e88 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/avatar.ts @@ -0,0 +1,9 @@ +import { styled } from '@mui/system'; + +export const StyledAvatar = styled('img')(({ theme, width, height }) => + theme.unstable_sx({ + size: { width, height }, + + borderRadius: '50%', + }), +); diff --git a/react-app/src/pages/popup/components/shared/button.ts b/react-app/src/pages/popup/components/shared/button.ts new file mode 100644 index 00000000..8e8ca03b --- /dev/null +++ b/react-app/src/pages/popup/components/shared/button.ts @@ -0,0 +1,28 @@ +import { Button } from '@mui/base/Button'; +import { styled } from '@mui/system'; + +export const StyledButton = styled(Button)(({ theme }) => + theme.unstable_sx({ + height: 20, + color: 'color.primary', + background: 'none', + + '&:hover': { + opacity: 0.9, + filter: 'blur(0.3px)', + cursor: 'pointer', + }, + + '&.Mui-focusVisible': { + outline: `2px solid ${theme.palette.background.focusOutline}`, + }, + + '&.active': { + borderRadius: '60px', + + boxShadow: 'inset 0px 0px 4px 10px #6238c7, 0px 0px 4px 10px #6238c7;', + + transition: 'linear 0.15s', + }, + }), +); diff --git a/react-app/src/pages/popup/components/shared/delete-modal/delete-modal-button.ts b/react-app/src/pages/popup/components/shared/delete-modal/delete-modal-button.ts new file mode 100644 index 00000000..d65853c6 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/delete-modal/delete-modal-button.ts @@ -0,0 +1,13 @@ +import { styled } from '@mui/system'; +import { StyledButton } from '@pages/popup/components/shared/button'; + +export const StyledModalButton = styled(StyledButton)(({ theme }) => + theme.unstable_sx({ + width: 100, + height: 32, + + borderRadius: 10, + + backgroundColor: '#EF5D5D', + }), +); diff --git a/react-app/src/pages/popup/components/shared/delete-modal/delete-modal.tsx b/react-app/src/pages/popup/components/shared/delete-modal/delete-modal.tsx new file mode 100644 index 00000000..3bfcac88 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/delete-modal/delete-modal.tsx @@ -0,0 +1,54 @@ +import { Modal } from '@mui/base'; +import { Box, styled } from '@mui/system'; +import { StyledModalContent } from '@pages/popup/components/shared/delete-modal/modal-content'; +import { TVoid } from '@types'; +import clsx from 'clsx'; +import { forwardRef, ReactNode } from 'react'; + +const StyledMUIBackdrop = forwardRef((props, ref) => { + const { open, className, ...other } = props; + + return
; +}); + +const StyledBackdrop = styled(StyledMUIBackdrop)(({ theme }) => + theme.unstable_sx({ + position: 'fixed', + zIndex: -1, + + inset: 0, + + backgroundColor: '#0000007F', + }), +); + +const StyledModal = styled(Modal)(({ theme }) => + theme.unstable_sx({ + position: 'fixed', + zIndex: 1, + + inset: 0, + + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + }), +); + +export const StyledDeleteModal = ({ + open, + content, + onConfirm, + changeModalVisibility, +}: { + open: boolean; + content: ReactNode; + onConfirm: TVoid; + changeModalVisibility: TVoid; +}) => ( + + + + + +); diff --git a/react-app/src/pages/popup/components/shared/delete-modal/modal-content.tsx b/react-app/src/pages/popup/components/shared/delete-modal/modal-content.tsx new file mode 100644 index 00000000..4b2e3b6c --- /dev/null +++ b/react-app/src/pages/popup/components/shared/delete-modal/modal-content.tsx @@ -0,0 +1,48 @@ +import { useTranslation } from '@internationalization'; +import { Stack, styled } from '@mui/system'; +import { StyledModalButton } from '@pages/popup/components/shared/delete-modal/delete-modal-button'; +import { StyledTitle } from '@pages/popup/components/shared/title-header'; +import { TVoid } from '@types'; +import { ReactNode } from 'react'; + +const ModalContentStyles = styled(Stack)(({ theme }) => + theme.unstable_sx({ + width: 220, + height: 'auto', + + paddingBottom: 2, + borderRadius: 1, + + backgroundColor: 'background.primary', + }), +); + +export const StyledModalContent = ({ + content, + onConfirm, + changeModalVisibility, +}: { + content: ReactNode; + onConfirm: TVoid; + changeModalVisibility: TVoid; +}) => { + const { t } = useTranslation(); + + return ( + + {content} + + { + onConfirm(); + changeModalVisibility(); + }}> + {t('deleteModal.confirm')} + + + + {t('deleteModal.cancel')} + + + ); +}; diff --git a/react-app/src/pages/popup/components/shared/delete-modal/use-delete-modal.ts b/react-app/src/pages/popup/components/shared/delete-modal/use-delete-modal.ts new file mode 100644 index 00000000..4908d3a4 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/delete-modal/use-delete-modal.ts @@ -0,0 +1,11 @@ +import { useState } from 'react'; + +export const useDeleteModal = () => { + const [open, setOpen] = useState(false); + + const changeModalVisibility = () => { + setOpen(prevState => !prevState); + }; + + return { open, changeModalVisibility }; +}; diff --git a/react-app/src/pages/popup/components/shared/dropdown.tsx b/react-app/src/pages/popup/components/shared/dropdown.tsx new file mode 100644 index 00000000..5ded0884 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/dropdown.tsx @@ -0,0 +1,63 @@ +import { MenuButton, MenuItem } from '@mui/base'; +import { styled } from '@mui/system'; + +const StyledListbox = styled('ul')(({ theme }) => + theme.unstable_sx({ + position: 'absolute', + + right: '-30px', + + minWidth: '100px', + + margin: '12px 0', + padding: '6px', + border: `1px solid ${theme.palette.background.secondary}`, + borderRadius: '12px', + outline: 'transparent', + + backgroundColor: 'background.primary', + color: 'color.primary', + + fontSize: 'fontSize.sm', + + boxShadow: `0px 4px 30px ${theme.palette.background.secondary}`, + }), +); + +const StyledMenuItem = styled(MenuItem)(({ theme }) => + theme.unstable_sx({ + padding: '8px', + borderRadius: '8px', + + userSelect: 'none', + cursor: 'pointer', + listStyle: 'none', + + '&:hover:not(.Mui-disabled)': { + backgroundColor: 'background.secondary', + }, + + '&.Mui-focusVisible': { + outline: `1px solid #fff`, + backgroundColor: 'background.secondary', + }, + }), +); + +const StyledMenuButton = styled(MenuButton)(({ theme }) => + theme.unstable_sx({ + display: 'flex', + alignItems: 'center', + gap: '.5rem', + + minHeight: 'calc(1.5em + 22px)', + + borderRadius: '12px', + + backgroundColor: 'transparent', + + cursor: 'pointer', + }), +); + +export { StyledListbox, StyledMenuItem, StyledMenuButton }; diff --git a/react-app/src/pages/popup/components/shared/error.tsx b/react-app/src/pages/popup/components/shared/error.tsx new file mode 100644 index 00000000..569e220f --- /dev/null +++ b/react-app/src/pages/popup/components/shared/error.tsx @@ -0,0 +1,34 @@ +import useValidate from '@hooks/use-validate'; +import { useTranslation } from '@internationalization'; +import { useFormControlContext } from '@mui/base'; +import { styled } from '@mui/system'; +import { useEffect } from 'react'; + +export const StyledErrorMessage = styled(({ isDirty, ...props }: { isDirty: boolean }) => { + const formControlContext = useFormControlContext(); + const { isValid, handleValidation } = useValidate(); + const { t } = useTranslation(); + + if (!formControlContext) { + return null; + } + + const { value } = formControlContext; + + useEffect(() => { + if (typeof value !== 'string') { + throw new Error('Value is not a string'); + } + handleValidation(value); + }, [formControlContext, handleValidation, value]); + + return !isValid && isDirty ?

{t('validation')}

: null; +})(({ theme }) => + theme.unstable_sx({ + p: 1, + + color: 'color.danger', + + fontWeight: 'bold', + }), +); diff --git a/react-app/src/pages/popup/components/shared/errorSnackbar/error-snackbar.tsx b/react-app/src/pages/popup/components/shared/errorSnackbar/error-snackbar.tsx new file mode 100644 index 00000000..b9ba79a2 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/errorSnackbar/error-snackbar.tsx @@ -0,0 +1,31 @@ +import { styled } from '@mui/system'; + +export const StyledSnackbar = styled('div')(({ theme }) => + theme.unstable_sx({ + position: 'absolute', + zIndex: 5500, + + bottom: 16, + left: 'auto', + right: 16, + + display: 'flex', + alignItems: 'center', + justifyContent: 'start', + gap: '0.5rem', + + width: 256, + + padding: '0.75rem', + + backgroundColor: theme.palette.background.snackbarBackground, + color: theme.palette.color.snackbarContent, + + fontSize: '0.875rem', + wordBreak: 'break-word', + + transition: 'transform 0.2s ease-out', + + borderRadius: 2, + }), +); diff --git a/react-app/src/pages/popup/components/shared/errorSnackbar/use-error-snackbar.tsx b/react-app/src/pages/popup/components/shared/errorSnackbar/use-error-snackbar.tsx new file mode 100644 index 00000000..674944a6 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/errorSnackbar/use-error-snackbar.tsx @@ -0,0 +1,49 @@ +import exclamationOctagonIcon from '@assets/img/exclamation-octagon-icon.svg'; +import { useTranslation } from '@internationalization'; +import { useSnackbar } from '@mui/base/useSnackbar'; +import { StyledSnackbar } from '@pages/popup/components/shared/errorSnackbar/error-snackbar'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import { useCallback, useState } from 'react'; +import { useUpdateEffect } from 'usehooks-ts'; + +const useErrorSnackbar = () => { + const [open, setOpen] = useState(false); + const [errorMessage, setErrorMessage] = useState(''); + + const handleClose = useCallback(() => { + setOpen(false); + setErrorMessage(''); + }, []); + + const { getRootProps } = useSnackbar({ + onClose: handleClose, + open, + autoHideDuration: 4000, + }); + + const { t } = useTranslation(); + + const handleErrorMessage = (message: string) => { + setErrorMessage(message); + }; + + useUpdateEffect(() => { + errorMessage && setOpen(true); + }, [errorMessage]); + + return { + StyledErrorSnackbar: ( + <> + {open && ( + + + {errorMessage} + + )} + + ), + handleErrorMessage, + }; +}; + +export default useErrorSnackbar; diff --git a/react-app/src/pages/popup/components/shared/github-link.tsx b/react-app/src/pages/popup/components/shared/github-link.tsx new file mode 100644 index 00000000..a379b6d1 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/github-link.tsx @@ -0,0 +1,30 @@ +import { styled } from '@mui/system'; +import { GITHUB_ISSUE_LINK } from '@pages/popup/constant'; + +const StyledGitHubLinkStyles = styled('a')(({ theme }) => + theme.unstable_sx({ + position: 'fixed', + bottom: 0, + left: 0, + + width: 70, + height: 70, + + cursor: 'pointer', + }), +); + +const StyledGitHubLinkBackground = styled('path')(({ theme }) => + theme.unstable_sx({ + filter: `${theme.palette.background.gitHubIconBackgroundFilter}`, + }), +); + +export const StyledGitHubLink = () => ( + + + + + + +); diff --git a/react-app/src/pages/popup/components/shared/icon.ts b/react-app/src/pages/popup/components/shared/icon.ts new file mode 100644 index 00000000..f7e0d8c9 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/icon.ts @@ -0,0 +1,10 @@ +import { styled } from '@mui/system'; + +export const StyledIcon = styled('img')(({ theme, width, height }) => + theme.unstable_sx({ + display: 'block', + + width: width, + height: height, + }), +); diff --git a/react-app/src/pages/popup/components/shared/input.tsx b/react-app/src/pages/popup/components/shared/input.tsx new file mode 100644 index 00000000..e0f48398 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/input.tsx @@ -0,0 +1,26 @@ +import { useFormControlContext } from '@mui/base'; +import { InputHTMLAttributes } from 'react'; + +const StyledInput = (props: InputHTMLAttributes) => { + const formControlContext = useFormControlContext(); + + if (!formControlContext) { + return null; + } + + const { value, required, onChange, disabled, onFocus, onBlur } = formControlContext; + + return ( + + ); +}; + +export default StyledInput; diff --git a/react-app/src/pages/popup/components/shared/items-container.ts b/react-app/src/pages/popup/components/shared/items-container.ts new file mode 100644 index 00000000..c4e3bc8c --- /dev/null +++ b/react-app/src/pages/popup/components/shared/items-container.ts @@ -0,0 +1,14 @@ +import { Stack, styled } from '@mui/system'; +import { scrollbarMixin } from '@utils/data/mixins/scrollbar-mixin'; +import { TComponentTag } from '@types'; + +export const StyledItemsContainer = styled(Stack)(({ theme }) => + theme.unstable_sx({ + ...scrollbarMixin, + + gap: 1, + + mb: 1, + borderRadius: 1, + }), +); diff --git a/react-app/src/pages/popup/components/shared/profile.tsx b/react-app/src/pages/popup/components/shared/profile.tsx new file mode 100644 index 00000000..0962066b --- /dev/null +++ b/react-app/src/pages/popup/components/shared/profile.tsx @@ -0,0 +1,163 @@ +import chevronDownIcon from '@assets/img/chevron-down-icon.svg'; +import chevronUpIcon from '@assets/img/chevron-up-icon.svg'; +import { AuthContext } from '@authentication'; +import httpClient from '@http-client'; +import { useTranslation } from '@internationalization'; +import { Dropdown, Menu, MenuButton, MenuItem } from '@mui/base'; +import { styled, useTheme } from '@mui/system'; +import { StyledAvatar } from '@pages/popup/components/shared/avatar'; +import { StyledDeleteModal } from '@pages/popup/components/shared/delete-modal/delete-modal'; +import { useDeleteModal } from '@pages/popup/components/shared/delete-modal/use-delete-modal'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import { StyledSkeleton } from '@pages/popup/components/shared/styled-skeleton'; +import { GLOBAL_TRANSITION_DURATION } from '@pages/popup/constant'; +import queryClient, { useMutation } from '@query-client'; +import urls from '@utils/endpoints/urls'; +import { useContext, useState } from 'react'; +import { toast } from 'react-toastify'; + +const StyledListbox = styled('ul')(({ theme }) => + theme.unstable_sx({ + position: 'absolute', + + right: '-30px', + + minWidth: '220px', + + margin: '12px 0', + padding: '6px', + border: `1px solid ${theme.palette.background.secondary}`, + borderRadius: '12px', + outline: 'transparent', + + background: theme.palette.background.primary, + color: theme.palette.color.primary, + + fontSize: 'fontSize.sm', + + boxShadow: `0px 4px 30px ${theme.palette.background.secondary}`, + }), +); + +const StyledMenuItem = styled(MenuItem)(({ theme }) => + theme.unstable_sx({ + padding: '8px', + borderRadius: '8px', + + userSelect: 'none', + cursor: 'pointer', + listStyle: 'none', + + '&:hover:not(.Mui-disabled)': { + backgroundColor: theme.palette.background.secondary, + }, + + '&.Mui-focusVisible': { + outline: `1px solid #fff`, + backgroundColor: theme.palette.background.secondary, + }, + }), +); + +const StyledMenuButton = styled(MenuButton)(({ theme }) => + theme.unstable_sx({ + display: 'flex', + alignItems: 'center', + gap: '.5rem', + + minHeight: 'calc(1.5em + 22px)', + + borderRadius: '12px', + + backgroundColor: 'transparent', + + cursor: 'pointer', + }), +); + +const StyledSeparatorLine = styled('hr')(({ theme }) => + theme.unstable_sx({ height: '2px', backgroundColor: 'background.purple' }), +); + +const StyledProfile = () => { + const [collapsed, setCollapsed] = useState(false); + const { user, userIsLoading } = useContext(AuthContext); + + const theme = useTheme(); + + const handleOpenChange = (_: unknown, open: boolean) => { + setCollapsed(open); + }; + + const { open, changeModalVisibility } = useDeleteModal(); + + const { t } = useTranslation(); + + const { mutate: signOut } = useMutation({ + mutationFn: () => httpClient.post(urls.auth.logout), + onSuccess: async () => { + await queryClient.resetQueries({ queryKey: [urls.auth.me] }); + toast.success(t('successfulLogout')); + }, + }); + + const { mutate: removeAccount } = useMutation({ + mutationFn: () => httpClient.delete(urls.auth.removeAccount), + onSuccess: async () => { + await queryClient.resetQueries({ queryKey: [urls.auth.me] }); + toast.success(t('successfulDeleteAccount')); + }, + }); + + const handleDownload = () => { + const link = document.createElement('a'); + link.download = ''; + + link.href = `${import.meta.env.VITE_API_URL}${urls.getErrors}`; + + link.click(); + }; + + return ( + + + {userIsLoading ? ( + + ) : ( + + )} + + + + signOut()}>{t('menu.logout')} + {t('menu.deleteAccount')} + + handleDownload()}>{t('menu.collectErrors')} + + + {t('deleteAccountModal.content1')} +
+ {t('deleteAccountModal.content2')} + + } + onConfirm={() => removeAccount()} + changeModalVisibility={changeModalVisibility} + /> +
+ ); +}; + +export default StyledProfile; diff --git a/react-app/src/pages/popup/components/shared/searchBar/search-bar-input.tsx b/react-app/src/pages/popup/components/shared/searchBar/search-bar-input.tsx new file mode 100644 index 00000000..7f1fb03e --- /dev/null +++ b/react-app/src/pages/popup/components/shared/searchBar/search-bar-input.tsx @@ -0,0 +1,29 @@ +import { styled } from '@mui/system'; +import { ForwardedRef, forwardRef, InputHTMLAttributes } from 'react'; + +const SearchBarInputStyles = styled('input')(({ theme }) => + theme.unstable_sx({ + width: '100%', + + px: 1, + borderRadius: 10, + + color: 'color.primary', + background: 'transparent', + + '&:focus': { + outline: `1.5px solid ${theme.palette.background.searchBarFocusOutline}`, + outlineOffset: 1, + }, + + '&::placeholder': { + color: 'color.placeholder', + }, + }), +); + +export const StyledSearchBarInput = forwardRef( + (props: InputHTMLAttributes, ref: ForwardedRef) => { + return ; + }, +); diff --git a/react-app/src/pages/popup/components/shared/searchBar/search-bar-wrapper.ts b/react-app/src/pages/popup/components/shared/searchBar/search-bar-wrapper.ts new file mode 100644 index 00000000..d8a59653 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/searchBar/search-bar-wrapper.ts @@ -0,0 +1,20 @@ +import { styled } from '@mui/system'; +import { GLOBAL_TRANSITION_DURATION } from '@pages/popup/constant'; + +export const StyledSearchBarWrapper = styled('form')(({ theme }) => + theme.unstable_sx({ + display: 'flex', + alignItems: 'center', + gap: 1, + + width: '100%', + + p: 0.5, + + borderRadius: 10, + + backgroundColor: 'background.searchBar', + + transition: `all ${GLOBAL_TRANSITION_DURATION} ease`, + }), +); diff --git a/react-app/src/pages/popup/components/shared/searchBar/search-bar.tsx b/react-app/src/pages/popup/components/shared/searchBar/search-bar.tsx new file mode 100644 index 00000000..dec404fc --- /dev/null +++ b/react-app/src/pages/popup/components/shared/searchBar/search-bar.tsx @@ -0,0 +1,40 @@ +import searchIcon from '@assets/img/search-icon.svg'; +import useHandleKeyEvents from '@hooks/use-handle-key-events'; +import useSearch from '@hooks/use-search'; +import { useTranslation } from '@internationalization'; +import { useTheme } from '@mui/system'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import { StyledSearchBarInput } from '@pages/popup/components/shared/searchBar/search-bar-input'; +import { StyledSearchBarWrapper } from '@pages/popup/components/shared/searchBar/search-bar-wrapper'; + +export const StyledSearchBar = () => { + const theme = useTheme(); + + const { handleKeyEvent } = useHandleKeyEvents(); + const { clearSearchParamValue, searchParamValue, handleSearchParamsChange } = useSearch(); + + const { t } = useTranslation(); + + return ( + event.preventDefault()} autoComplete={'off'}> + + + handleSearchParamsChange(event.target.value)} + onKeyDown={event => handleKeyEvent(event, clearSearchParamValue)} + /> + + ); +}; diff --git a/react-app/src/pages/popup/components/shared/seo.tsx b/react-app/src/pages/popup/components/shared/seo.tsx new file mode 100644 index 00000000..a4e34be6 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/seo.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { useLocalStorage } from 'usehooks-ts'; +import { Helmet } from 'react-helmet'; + +const Seo = ({ title }: { title: string }) => { + const [lang] = useLocalStorage('language', 'en'); + + return ( + + {title} + + ); +}; + +export default Seo; diff --git a/react-app/src/pages/popup/components/shared/styled-skeleton.ts b/react-app/src/pages/popup/components/shared/styled-skeleton.ts new file mode 100644 index 00000000..ce0eb585 --- /dev/null +++ b/react-app/src/pages/popup/components/shared/styled-skeleton.ts @@ -0,0 +1,13 @@ +import Skeleton from 'react-loading-skeleton'; +import 'react-loading-skeleton/dist/skeleton.css'; +import { styled } from '@mui/system'; + +export const StyledSkeleton = styled(Skeleton)(({ theme }) => + theme.unstable_sx({ + '--base-color': `${theme.palette.background.loadingBase}`, + + '--highlight-color': `${theme.palette.background.loadingHighlight}`, + + zIndex: 0, + }), +); diff --git a/react-app/src/pages/popup/components/shared/theme-switch.tsx b/react-app/src/pages/popup/components/shared/theme-switch.tsx new file mode 100644 index 00000000..7a611c8a --- /dev/null +++ b/react-app/src/pages/popup/components/shared/theme-switch.tsx @@ -0,0 +1,118 @@ +import useTernaryDarkMode from '@hooks/use-ternary-darkmode'; +import { useTranslation } from '@internationalization'; +import { useSwitch, UseSwitchParameters } from '@mui/base/useSwitch'; +import { styled, SxProps } from '@mui/system'; +import clsx from 'clsx'; + +export const StyledThemeSwitch = (props: UseSwitchParameters & { sx?: SxProps }) => { + const { changeTheme, isDarkMode } = useTernaryDarkMode(); + const { getInputProps, checked, disabled, focusVisible } = useSwitch({ + ...props, + checked: isDarkMode, + }); + const { t } = useTranslation(); + + const stateClasses = { + checked, + disabled, + focusVisible, + }; + + return ( + + + + + + + ); +}; + +const StyledSwitchRoot = styled('span')(({ theme }) => + theme.unstable_sx({ + position: 'relative', + + display: 'inline-block', + + width: 36, + height: 20, + }), +); + +const StyledSwitchTrack = styled('div')(({ theme }) => + theme.unstable_sx({ + width: 36, + height: 20, + + borderRadius: 10, + + backgroundColor: 'background.purple', + }), +); + +const StyledSwitchThumb = styled('span')(({ theme }) => + theme.unstable_sx({ + position: 'absolute', + + inset: 1, + + display: 'grid', + placeItems: 'center', + + width: 18, + height: 18, + + p: 0.2, + borderRadius: '50%', + + backgroundColor: '#fff', + + transform: 'translateX(0px)', + transition: 'transform .5s ease-in-out', + + '&.focusVisible': { + backgroundColor: '#dcc8ff', + }, + + '&.checked': { + transform: 'translateX(16px)', + + '&::before': { + backgroundImage: + "url(\"data:image/svg+xml,%3Csvg width='16' height='15' viewBox='0 0 16 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.03096 3.69895C4.29318 3.43858 4.29333 3.01453 4.03131 2.75397L3.77728 2.50134C3.51713 2.24264 3.0967 2.24323 2.83728 2.50265V2.50265C2.57735 2.76258 2.57735 3.18402 2.83728 3.44396L3.09061 3.69729C3.35009 3.95677 3.77056 3.95751 4.03096 3.69895V3.69895ZM2.66663 7.66664C2.66663 7.29845 2.36815 6.99997 1.99996 6.99997H1.33329C0.965103 6.99997 0.666626 7.29845 0.666626 7.66664V7.66664C0.666626 8.03483 0.965103 8.3333 1.33329 8.3333H1.99996C2.36815 8.3333 2.66663 8.03483 2.66663 7.66664V7.66664ZM8.66663 1.0333C8.66663 0.665115 8.36815 0.366638 7.99996 0.366638V0.366638C7.63177 0.366638 7.33329 0.665115 7.33329 1.0333V1.66664C7.33329 2.03483 7.63177 2.3333 7.99996 2.3333V2.3333C8.36815 2.3333 8.66663 2.03483 8.66663 1.66664V1.0333ZM13.1633 3.4433C13.4229 3.18373 13.4229 2.76288 13.1633 2.5033V2.5033C12.9037 2.24373 12.4829 2.24373 12.2233 2.5033L11.97 2.75664C11.7104 3.01621 11.7104 3.43706 11.97 3.69664V3.69664C12.2295 3.95621 12.6504 3.95621 12.91 3.69664L13.1633 3.4433ZM11.96 11.64C11.702 11.8979 11.7014 12.3159 11.9587 12.5746L12.2179 12.8353C12.4766 13.0954 12.8973 13.096 13.1566 12.8366V12.8366C13.416 12.5773 13.4154 12.1566 13.1553 11.8979L12.8946 11.6387C12.6359 11.3814 12.2179 11.382 11.96 11.64V11.64ZM14 6.99997C13.6318 6.99997 13.3333 7.29845 13.3333 7.66664V7.66664C13.3333 8.03483 13.6318 8.3333 14 8.3333H14.6666C15.0348 8.3333 15.3333 8.03483 15.3333 7.66664V7.66664C15.3333 7.29845 15.0348 6.99997 14.6666 6.99997H14ZM7.99996 3.66664C5.79329 3.66664 3.99996 5.45997 3.99996 7.66664C3.99996 9.8733 5.79329 11.6666 7.99996 11.6666C10.2066 11.6666 12 9.8733 12 7.66664C12 5.45997 10.2066 3.66664 7.99996 3.66664ZM7.33329 14.3C7.33329 14.6682 7.63177 14.9666 7.99996 14.9666V14.9666C8.36815 14.9666 8.66663 14.6682 8.66663 14.3V13.6666C8.66663 13.2984 8.36815 13 7.99996 13V13C7.63177 13 7.33329 13.2984 7.33329 13.6666V14.3ZM2.83401 11.89C2.57567 12.1498 2.57625 12.5696 2.83532 12.8287V12.8287C3.0954 13.0887 3.51726 13.0882 3.77662 12.8273L4.03258 12.57C4.29091 12.3102 4.29033 11.8903 4.03127 11.6313V11.6313C3.77118 11.3712 3.34932 11.3718 3.08996 11.6326L2.83401 11.89Z' fill='%237846F0'/%3E%3C/svg%3E%0A\")", + }, + }, + + '&::before': { + content: '""', + + display: 'block', + + width: '100%', + height: '100%', + + backgroundImage: + "url(\"data:image/svg+xml,%3Csvg width='12' height='14' viewBox='0 0 12 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.00578 7.99668C3.81578 5.93553 4.06929 3.44128 5.44818 1.68293C5.84202 1.17842 5.31786 0.457208 4.70515 0.649298C3.99006 0.8774 3.29456 1.23276 2.6493 1.72847C0.245456 3.57821 -0.602111 6.92351 0.633202 9.6898C2.27858 13.3663 6.67635 14.7302 10.0712 12.7702C10.4926 12.5268 10.8701 12.2473 11.2185 11.9307C11.697 11.4928 11.3436 10.6807 10.7006 10.7671C8.41155 11.0956 6.15334 9.99764 5.00578 7.99668Z' fill='%237846F0'/%3E%3C/svg%3E\")", + backgroundRepeat: 'no-repeat', + backgroundSize: 'contain', + backgroundPosition: 'center', + + transition: 'background-image .5s ease-in-out', + }, + }), +); + +const StyledSwitchInput = styled('input')(({ theme }) => + theme.unstable_sx({ + position: 'absolute', + zIndex: 1, + + inset: 1, + + width: '100%', + height: '100%', + + opacity: 0, + cursor: 'pointer', + }), +); diff --git a/react-app/src/pages/popup/components/shared/title-header.ts b/react-app/src/pages/popup/components/shared/title-header.ts new file mode 100644 index 00000000..7cfdf2eb --- /dev/null +++ b/react-app/src/pages/popup/components/shared/title-header.ts @@ -0,0 +1,13 @@ +import { styled } from '@mui/system'; +import { textMixin } from '@utils/data/mixins/text-mixin'; + +export const StyledTitle = styled('h1')(({ theme }) => + theme.unstable_sx({ + ...textMixin, + + p: 2, + + fontSize: 'fontSize.xl', + fontWeight: 'fontWeight.bold', + }), +); diff --git a/react-app/src/pages/popup/components/store/list/item/addingKeyword/add-input.tsx b/react-app/src/pages/popup/components/store/list/item/addingKeyword/add-input.tsx new file mode 100644 index 00000000..132f08d4 --- /dev/null +++ b/react-app/src/pages/popup/components/store/list/item/addingKeyword/add-input.tsx @@ -0,0 +1,118 @@ +import plusIcon from '@assets/img/plus-icon.svg'; +import useValidate from '@hooks/use-validate'; +import httpClient from '@http-client'; +import { IErrorWithCause } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import { FormControl } from '@mui/base'; +import { styled } from '@mui/system'; +import { StyledButton } from '@pages/popup/components/shared/button'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import StyledInput from '@pages/popup/components/shared/input'; +import { GLOBAL_TRANSITION_DURATION } from '@pages/popup/constant'; +import queryClient, { useMutation } from '@query-client'; +import urls from '@utils/endpoints/urls'; +import { ChangeEvent, FormEvent, useState } from 'react'; +import { toast } from 'react-toastify'; + +const StyledForm = styled('form')(({ theme }) => + theme.unstable_sx({ + display: 'flex', + alignItems: 'start', + gap: 1, + + width: '100%', + }), +); + +const StyledSubmitButton = styled(StyledButton)(({ theme }) => + theme.unstable_sx({ + display: 'grid', + placeItems: 'center', + + height: 'auto', + + p: 0.75, + + backgroundColor: 'background.purple', + + borderRadius: 1, + + transition: '0.3s', + + '&:disabled': { + filter: 'brightness(50%)', + pointerEvents: 'none', + }, + }), +); + +const StyledKeywordInput = styled(StyledInput)(({ theme }) => + theme.unstable_sx({ + display: 'flex', + alignItems: 'center', + gap: 1, + + width: '100%', + + px: 1.5, + py: 1, + + backgroundColor: 'background.searchBar', + color: 'color.primary', + + textAlign: 'left', + + borderRadius: 10, + + '&::placeholder': { + color: 'color.placeholder', + }, + }), +); + +const StyledAddInput = () => { + const [keyword, setKeyword] = useState(''); + + const { isValid, handleValidation } = useValidate(); + + const { t } = useTranslation(); + + const { mutate: addKeyword } = useMutation({ + mutationFn: (content: { content: string }) => httpClient.post(urls.keyWords, content), + onSuccess: async () => { + setKeyword(''); + queryClient.invalidateQueries([urls.keyWords]); + }, + onError: (error: IErrorWithCause) => + toast.error(t([`keywordErrors.${error.response.data.cause}`, 'fallbackError'])), + }); + + const handleSubmit = (event: FormEvent) => { + event.preventDefault(); + addKeyword({ content: keyword }); + handleValidation(''); + }; + + const handleChange = (event: ChangeEvent) => { + handleValidation(event.target.value); + setKeyword(event.target.value); + }; + + return ( + + + + + + + + + ); +}; + +export default StyledAddInput; diff --git a/react-app/src/pages/popup/components/store/list/item/deleteButton/delete-button.tsx b/react-app/src/pages/popup/components/store/list/item/deleteButton/delete-button.tsx new file mode 100644 index 00000000..9429763e --- /dev/null +++ b/react-app/src/pages/popup/components/store/list/item/deleteButton/delete-button.tsx @@ -0,0 +1,26 @@ +import trashIcon from '@assets/img/trash-icon.svg'; +import { useTranslation } from '@internationalization'; +import { StyledButton } from '@pages/popup/components/shared/button'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import { TVoid } from '@types'; + +export const StyledDeleteButton = ({ + setKeywordToRemove, + changeModalVisibility, +}: { + setKeywordToRemove: TVoid; + changeModalVisibility: TVoid; +}) => { + const handleClick = () => { + setKeywordToRemove(); + changeModalVisibility(); + }; + + const { t } = useTranslation(); + + return ( + + + + ); +}; diff --git a/react-app/src/pages/popup/components/store/list/item/editButton/edit-button.tsx b/react-app/src/pages/popup/components/store/list/item/editButton/edit-button.tsx new file mode 100644 index 00000000..75d25a87 --- /dev/null +++ b/react-app/src/pages/popup/components/store/list/item/editButton/edit-button.tsx @@ -0,0 +1,59 @@ +import editIcon from '@assets/img/edit-icon.svg'; +import { IStyledEditButton } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import { styled } from '@mui/system'; +import { StyledButton } from '@pages/popup/components/shared/button'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import clsx from 'clsx'; + +const EditButtonStyles = styled(StyledButton)(({ theme }) => + theme.unstable_sx({ + position: 'relative', + + height: 18, + + '&::before': { + content: '""', + position: 'absolute', + + bottom: 0, + + width: 0, + height: 3, + + mt: 1, + borderRadius: 10, + + backgroundColor: '#7846F0', + + transition: 'width 0.3s ease-in-out', + }, + + '&.openedInput': { + display: 'block', + + '&::before': { + width: 14, + }, + }, + }), +); + +const EditStyledIcon = styled(StyledIcon)(({ theme }) => + theme.unstable_sx({ + display: 'inline', + }), +); + +export const StyledEditButton = ({ id, changeOpenedInputId, openedInputId }: IStyledEditButton) => { + const { t } = useTranslation(); + + return ( + + + + ); +}; diff --git a/react-app/src/pages/popup/components/store/list/item/keyword.tsx b/react-app/src/pages/popup/components/store/list/item/keyword.tsx new file mode 100644 index 00000000..92fe4952 --- /dev/null +++ b/react-app/src/pages/popup/components/store/list/item/keyword.tsx @@ -0,0 +1,107 @@ +import useHandleKeyEvents from '@hooks/use-handle-key-events'; +import useValidate from '@hooks/use-validate'; +import httpClient from '@http-client'; +import { IEditKeywordRef, IErrorWithCause, IStyledKeyword } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import { FormControl } from '@mui/base'; +import { styled } from '@mui/system'; +import { StyledErrorMessage } from '@pages/popup/components/shared/error'; +import StyledInput from '@pages/popup/components/shared/input'; +import queryClient from '@query-client'; +import { useMutation } from '@root/utils/libs/query-client'; +import { textMixin } from '@utils/data/mixins/text-mixin'; +import urls from '@utils/endpoints/urls'; +import { forwardRef, useCallback, useImperativeHandle, useState } from 'react'; +import { toast } from 'react-toastify'; + +const keywordStyles = { + ...textMixin, + + px: 0.75, + py: 0.25, +}; + +const StyledKeywordSpan = styled('span')(({ theme }) => + theme.unstable_sx({ + ...keywordStyles, + + whiteSpace: 'nowrap', + textOverflow: 'ellipsis', + + overflow: 'hidden', + }), +); + +const StyledKeywordInput = styled(StyledInput)(({ theme }) => + theme.unstable_sx({ + ...keywordStyles, + + width: '100%', + + borderRadius: 1, + + backgroundColor: 'background.secondary', + + textAlign: 'start', + }), +); + +export const StyledKeyword = forwardRef( + ({ id, openedInputId, content, changeOpenedInputId }, inputRef) => { + const { handleKeyEvent } = useHandleKeyEvents(); + const [inputValue, setInputValue] = useState(content); + + const isDirty = inputValue !== content; + + const handleStateChange = useCallback((content: string) => { + setInputValue(content); + }, []); + + const { t } = useTranslation(); + + const { mutate: editKeyword } = useMutation({ + mutationFn: (content: { content: string }) => httpClient.patch(`${urls.keyWords}/${id}`, content), + onSuccess: () => queryClient.invalidateQueries([urls.keyWords]), + onError: (error: IErrorWithCause) => + toast.error(t([`keywordErrors.${error.response.data.cause}`, 'fallbackError'])), + }); + + const { isValid, handleValidation } = useValidate(); + + const handleApplyingChanges = useCallback(() => { + if (isValid && isDirty) { + editKeyword({ content: inputValue }); + } + + if (id === openedInputId) { + changeOpenedInputId(0); + return; + } + changeOpenedInputId(id); + }, [isValid, isDirty, openedInputId, changeOpenedInputId, editKeyword, inputValue, id]); + + useImperativeHandle(inputRef, () => { + return { handleApplyingChanges }; + }); + + return id === openedInputId ? ( + { + handleStateChange(event.target.value); + handleValidation(event.target.value); + }} + value={inputValue} + style={{ width: '100%', position: 'relative' }}> + handleKeyEvent(event, handleApplyingChanges, handleApplyingChanges)} + /> + + + ) : ( + {inputValue} + ); + }, +); diff --git a/react-app/src/pages/popup/components/store/list/item/store-value.tsx b/react-app/src/pages/popup/components/store/list/item/store-value.tsx new file mode 100644 index 00000000..93cc80e8 --- /dev/null +++ b/react-app/src/pages/popup/components/store/list/item/store-value.tsx @@ -0,0 +1,64 @@ +import { IEditKeywordRef, IStyledStoreItem } from '@interfaces'; +import { Stack, styled } from '@mui/system'; +import { StyledDeleteButton } from '@pages/popup/components/store/list/item/deleteButton/delete-button'; +import { StyledEditButton } from '@pages/popup/components/store/list/item/editButton/edit-button'; +import { StyledKeyword } from '@pages/popup/components/store/list/item/keyword'; +import { TComponentTag } from '@types'; +import { useRef } from 'react'; + +const StyledStoreItemWrapper = styled(Stack)(({ theme }) => + theme.unstable_sx({ + alignItems: 'baseline', + gap: 1, + + width: '100%', + + px: 1, + py: 0.5, + + borderRadius: 1, + + backgroundColor: 'background.secondary', + + cursor: 'pointer', + + '&:hover': { + opacity: 0.85, + }, + }), +); + +export const StyledStoreItem = ({ + id, + content, + setKeywordToRemove, + changeModalVisibility, + openedInputId, + changeOpenedInputId, +}: IStyledStoreItem) => { + const ref = useRef(null); + + return ( + + + + + ref.current?.handleApplyingChanges()} + /> + setKeywordToRemove(id)} + changeModalVisibility={changeModalVisibility} + /> + + + ); +}; diff --git a/react-app/src/pages/popup/components/video/section/article/authorInfo/author-info.tsx b/react-app/src/pages/popup/components/video/section/article/authorInfo/author-info.tsx new file mode 100644 index 00000000..cc45b114 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/authorInfo/author-info.tsx @@ -0,0 +1,18 @@ +import { IVideo } from '@interfaces'; +import { Stack } from '@mui/system'; +import { StyledAvatar } from '@pages/popup/components/shared/avatar'; +import { StyledAuthorName } from '@pages/popup/components/video/section/article/authorInfo/autor-name'; +import { StyledVideoButton } from '@pages/popup/components/video/section/article/video-button'; + +export const StyledAuthorInfo = ({ + thumbnail: avatar, + title: authorName, + channelUrl, +}: Pick & { channelUrl: string }) => ( + window.open(channelUrl)}> + + + {authorName} + + +); diff --git a/react-app/src/pages/popup/components/video/section/article/authorInfo/autor-name.ts b/react-app/src/pages/popup/components/video/section/article/authorInfo/autor-name.ts new file mode 100644 index 00000000..2e750034 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/authorInfo/autor-name.ts @@ -0,0 +1,12 @@ +import { styled } from '@mui/system'; +import { textMixin } from '@utils/data/mixins/text-mixin'; + +export const StyledAuthorName = styled('p')(({ theme }) => + theme.unstable_sx({ + ...textMixin, + + width: 'fit-content', + + fontSize: 'fontSize.md', + }), +); diff --git a/react-app/src/pages/popup/components/video/section/article/thumbnail/thumbnail.ts b/react-app/src/pages/popup/components/video/section/article/thumbnail/thumbnail.ts new file mode 100644 index 00000000..8d08d6b3 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/thumbnail/thumbnail.ts @@ -0,0 +1,9 @@ +import { styled } from '@mui/system'; + +export const StyledThumbnail = styled('img')(({ theme }) => + theme.unstable_sx({ + width: '100%', + + borderRadius: 1, + }), +); diff --git a/react-app/src/pages/popup/components/video/section/article/video-article.tsx b/react-app/src/pages/popup/components/video/section/article/video-article.tsx new file mode 100644 index 00000000..14b8817b --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/video-article.tsx @@ -0,0 +1,44 @@ +import { IUserVideo } from '@interfaces'; +import { Stack, styled } from '@mui/system'; +import { StyledAuthorInfo } from '@pages/popup/components/video/section/article/authorInfo/author-info'; +import { StyledThumbnail } from '@pages/popup/components/video/section/article/thumbnail/thumbnail'; +import { StyledVideoButton } from '@pages/popup/components/video/section/article/video-button'; +import { StyledVideoInfos } from '@pages/popup/components/video/section/article/videoInfo/video-infos'; +import { TComponentTag } from '@types'; + +export const VideoArticleStyles = styled(Stack)(({ theme }) => + theme.unstable_sx({ + justifyContent: 'center', + gap: 1, + + p: 1, + + borderRadius: 1, + + backgroundColor: 'background.secondary', + + cursor: 'pointer', + + ':hover': { + opacity: 0.95, + }, + }), +); + +export const StyledVideoArticle = ({ video, channel }: IUserVideo) => { + const { thumbnail, publishedAt, title, views, id: videoId } = video; + const { thumbnail: avatar, title: authorName, id: channelId } = channel; + + const videoUrl = `https://www.youtube.com/watch?v=${videoId}`; + const channelUrl = `https://www.youtube.com/channel/${channelId}`; + + return ( + + window.open(videoUrl)}> + + + + + + ); +}; diff --git a/react-app/src/pages/popup/components/video/section/article/video-button.tsx b/react-app/src/pages/popup/components/video/section/article/video-button.tsx new file mode 100644 index 00000000..8e093ea9 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/video-button.tsx @@ -0,0 +1,12 @@ +import { styled } from '@mui/system'; +import { StyledButton } from '@pages/popup/components/shared/button'; + +export const StyledVideoButton = styled(StyledButton)(({ theme }) => + theme.unstable_sx({ + height: 'auto', + + '&.Mui-focusVisible': { + borderRadius: '8px', + }, + }), +); diff --git a/react-app/src/pages/popup/components/video/section/article/videoInfo/video-info.ts b/react-app/src/pages/popup/components/video/section/article/videoInfo/video-info.ts new file mode 100644 index 00000000..672160d7 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/videoInfo/video-info.ts @@ -0,0 +1,32 @@ +import { styled } from '@mui/system'; +import { textMixin } from '@utils/data/mixins/text-mixin'; + +export const StyledVideoInfo = styled('span')(({ theme }) => + theme.unstable_sx({ + ...textMixin, + + fontWeight: 'fontWeight.normal', + fontSize: 'fontSize.sm', + + '&:nth-child(2)': { + position: 'relative', + }, + + '&:nth-child(2)::before': { + content: '""', + position: 'absolute', + + display: 'inline-block', + + bottom: 'calc(50% - 2px)', + left: -10, + + width: 4, + height: 4, + + borderRadius: '50%', + + background: '#bdbdbd', + }, + }), +); diff --git a/react-app/src/pages/popup/components/video/section/article/videoInfo/video-infos.tsx b/react-app/src/pages/popup/components/video/section/article/videoInfo/video-infos.tsx new file mode 100644 index 00000000..f3b6e755 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/videoInfo/video-infos.tsx @@ -0,0 +1,68 @@ +import watchLaterIcon from '@assets/img/watch-later-icon.svg'; +import httpClient from '@http-client'; +import { IErrorWithCause, IVideo } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import { Stack, useTheme } from '@mui/system'; +import { StyledButton } from '@pages/popup/components/shared/button'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import { StyledVideoButton } from '@pages/popup/components/video/section/article/video-button'; +import { StyledVideoInfo } from '@pages/popup/components/video/section/article/videoInfo/video-info'; +import { StyledVideoTitle } from '@pages/popup/components/video/section/article/videoInfo/video-title'; +import queryClient, { useMutation } from '@query-client'; +import urls from '@utils/endpoints/urls'; +import { toast } from 'react-toastify'; + +export const StyledVideoInfos = ({ + publishedAt, + views, + title, + id: videoId, + videoUrl, +}: Pick & { videoUrl: string }) => { + const { t } = useTranslation(); + const { + palette: { color }, + } = useTheme(); + + const { mutate: updatePlaylist } = useMutation({ + mutationFn: () => + httpClient.patch(urls.ytVideos.updatePlaylist, { + videoId, + title: t('playlist.title'), + description: t('playlist.description'), + }), + onSuccess: () => { + toast.success(t('playlist.updated')); + queryClient.invalidateQueries([urls.auth.me]); + }, + onError: (error: IErrorWithCause) => + toast.error(t([`playlistErrors.${error.response.data.cause}`, 'fallbackError']), { + toastId: 'playlist_updating_error', + }), + }); + + return ( + + + window.open(videoUrl)}> + {t('timeAgo', { date: new Date(publishedAt) })} + {t('views', { amount: views })} + + updatePlaylist()}> + + + + window.open(videoUrl)}> + {title} + + + ); +}; diff --git a/react-app/src/pages/popup/components/video/section/article/videoInfo/video-title.ts b/react-app/src/pages/popup/components/video/section/article/videoInfo/video-title.ts new file mode 100644 index 00000000..28b560c9 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/article/videoInfo/video-title.ts @@ -0,0 +1,21 @@ +import { styled } from '@mui/system'; +import { textMixin } from '@utils/data/mixins/text-mixin'; + +export const StyledVideoTitle = styled('span')(({ theme }) => + theme.unstable_sx({ + ...textMixin, + + alignSelf: 'start', + + maxWidth: 242, + maxHeight: '3.2rem', + lineHeight: '1.6rem', + + fontWeight: 'fontWeight.normal', + fontSize: 'fontSize.md', + textOverflow: 'ellipsis', + wordWrap: 'break-all', + + overflow: 'hidden', + }), +); diff --git a/react-app/src/pages/popup/components/video/section/skeleton/authorInfoSkeleton/author-info-skeleton.tsx b/react-app/src/pages/popup/components/video/section/skeleton/authorInfoSkeleton/author-info-skeleton.tsx new file mode 100644 index 00000000..e2489433 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/skeleton/authorInfoSkeleton/author-info-skeleton.tsx @@ -0,0 +1,9 @@ +import { Stack } from '@mui/system'; +import { StyledSkeleton } from '@pages/popup/components/shared/styled-skeleton'; + +export const StyledAuthorInfoSkeleton = () => ( + + + + +); diff --git a/react-app/src/pages/popup/components/video/section/skeleton/video-article-skeleton.tsx b/react-app/src/pages/popup/components/video/section/skeleton/video-article-skeleton.tsx new file mode 100644 index 00000000..3e7d72ec --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/skeleton/video-article-skeleton.tsx @@ -0,0 +1,12 @@ +import { StyledSkeleton } from '@pages/popup/components/shared/styled-skeleton'; +import { VideoArticleStyles } from '@pages/popup/components/video/section/article/video-article'; +import { StyledAuthorInfoSkeleton } from '@pages/popup/components/video/section/skeleton/authorInfoSkeleton/author-info-skeleton'; +import { StyledVideoInfosSkeleton } from '@pages/popup/components/video/section/skeleton/videoInfoSkeleton/video-infos-skeleton'; + +export const StyledVideoArticleSkeleton = () => ( + + + + + +); diff --git a/react-app/src/pages/popup/components/video/section/skeleton/videoInfoSkeleton/video-infos-skeleton.tsx b/react-app/src/pages/popup/components/video/section/skeleton/videoInfoSkeleton/video-infos-skeleton.tsx new file mode 100644 index 00000000..26a31871 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/skeleton/videoInfoSkeleton/video-infos-skeleton.tsx @@ -0,0 +1,11 @@ +import { Stack } from '@mui/system'; +import { StyledSkeleton } from '@pages/popup/components/shared/styled-skeleton'; + +export const StyledVideoInfosSkeleton = () => { + return ( + + + + + ); +}; diff --git a/react-app/src/pages/popup/components/video/section/videos-section.tsx b/react-app/src/pages/popup/components/video/section/videos-section.tsx new file mode 100644 index 00000000..34b8d403 --- /dev/null +++ b/react-app/src/pages/popup/components/video/section/videos-section.tsx @@ -0,0 +1,8 @@ +import { StyledItemsContainer } from '@pages/popup/components/shared/items-container'; +import { TChildren } from '@types'; + +export const StyledVideosSection = ({ children }: TChildren) => ( + + {children} + +); diff --git a/react-app/src/pages/popup/constant.ts b/react-app/src/pages/popup/constant.ts new file mode 100644 index 00000000..380b69cc --- /dev/null +++ b/react-app/src/pages/popup/constant.ts @@ -0,0 +1,11 @@ +export const POPUP_WIDTH = 600; +export const POPUP_HEIGHT = 1000; + +export const GLOBAL_TRANSITION_DURATION = '0.5s'; + +export const POPUP_POSITION_LEFT = (screen.width - POPUP_WIDTH) / 2; +export const POPUP_POSITION_TOP = (screen.height - POPUP_HEIGHT) / 2; + +export const SESSION_COOKIE_NAME = 'NESTJS_SESSION_COOKIE'; + +export const GITHUB_ISSUE_LINK = 'https://github.com/PatrykKuniczak/YT_Notifier/issues'; diff --git a/react-app/src/pages/popup/index.html b/react-app/src/pages/popup/index.html new file mode 100644 index 00000000..7760fa45 --- /dev/null +++ b/react-app/src/pages/popup/index.html @@ -0,0 +1,12 @@ + + + + + YT Plugin + + + +
+ + + diff --git a/react-app/src/pages/popup/index.tsx b/react-app/src/pages/popup/index.tsx new file mode 100644 index 00000000..b749473e --- /dev/null +++ b/react-app/src/pages/popup/index.tsx @@ -0,0 +1,47 @@ +import useLanguageSwitch from '@hooks/use-language-switch'; +import useTernaryDarkMode from '@hooks/use-ternary-darkmode'; +import '@internationalization'; +import { ThemeProvider } from '@mui/system'; +import Popup from '@pages/popup/Popup'; +import queryClient, { QueryClientProvider } from '@query-client'; +import darkTheme from '@utils/data/themes/dark-theme'; +import lightTheme from '@utils/data/themes/light-theme'; +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import { ToastContainer } from 'react-toastify'; +import 'react-toastify/dist/ReactToastify.css'; +import refreshOnUpdate from 'virtual:reload-on-update-in-view'; + +refreshOnUpdate('pages/popup'); + +const App = () => { + const { isDarkMode } = useTernaryDarkMode(); + + useLanguageSwitch(); + + return ( + + + + + + + ); +}; + +function init() { + const appContainer = document.querySelector('#app-container'); + if (!appContainer) { + throw new Error('Can not find #app-container'); + } + + const root = createRoot(appContainer); + root.render(); +} + +init(); diff --git a/react-app/src/pages/popup/layouts/header-container.tsx b/react-app/src/pages/popup/layouts/header-container.tsx new file mode 100644 index 00000000..47121495 --- /dev/null +++ b/react-app/src/pages/popup/layouts/header-container.tsx @@ -0,0 +1,27 @@ +import { Stack, styled } from '@mui/system'; +import LanguageSelector from '@pages/popup/components/language-selector'; +import StyledProfile from '@pages/popup/components/shared/profile'; +import { StyledThemeSwitch } from '@pages/popup/components/shared/theme-switch'; + +const HeaderContainerStyles = styled(Stack)(({ theme }) => + theme.unstable_sx({ + justifyContent: 'space-between', + alignItems: 'center', + + px: 1, + pt: 1, + }), +); + +export const StyledHeaderContainer = () => { + return ( + + + + + + + + + ); +}; diff --git a/react-app/src/pages/popup/layouts/main-content.tsx b/react-app/src/pages/popup/layouts/main-content.tsx new file mode 100644 index 00000000..74dcabfc --- /dev/null +++ b/react-app/src/pages/popup/layouts/main-content.tsx @@ -0,0 +1,17 @@ +import { Stack, styled } from '@mui/system'; +import { TChildren, TComponentTag } from '@types'; + +const MainContentStyles = styled(Stack)(({ theme }) => + theme.unstable_sx({ + gap: 1, + + height: 'calc(100% - 56px)', + + px: 2, + pb: 1, + }), +); + +export const StyledMainContent = ({ children }: TChildren) => ( + {children} +); diff --git a/react-app/src/pages/popup/layouts/navbar.tsx b/react-app/src/pages/popup/layouts/navbar.tsx new file mode 100644 index 00000000..79876cc8 --- /dev/null +++ b/react-app/src/pages/popup/layouts/navbar.tsx @@ -0,0 +1,96 @@ +import savedTagsIcon from '@assets/img/saved-tags-icon.svg'; +import searchIcon from '@assets/img/search-icon.svg'; +import watchLaterIcon from '@assets/img/watch-later-icon.svg'; +import httpClient from '@http-client'; +import { IUserYtVideos } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import { Stack, styled } from '@mui/system'; +import { StyledButton } from '@pages/popup/components/shared/button'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import queryClient from '@query-client'; +import { TComponentTag, TVoid } from '@types'; +import urls from '@utils/endpoints/urls'; +import { useLocation, useNavigate } from 'react-router-dom'; +import { toast } from 'react-toastify'; + +const NavbarStyles = styled(Stack)(({ theme }) => + theme.unstable_sx({ + position: 'absolute', + + bottom: 54, + + justifyContent: 'space-between', + alignItems: 'center', + gap: 1, + + width: 240, + height: 60, + + p: 2, + borderRadius: 10, + + backgroundColor: 'background.purple', + + transform: `translateX(${(300 - 240) / 2}px)`, + }), +); + +export const StyledNavbar = ({ playlistId, focus }: Pick & { focus: TVoid }) => { + const navigate = useNavigate(); + + const { pathname } = useLocation(); + + const { t } = useTranslation(); + + return ( + + { + navigate(''); + focus(); + }}> + + + + { + navigate('/store'); + focus(); + }}> + + + + { + if (!playlistId) { + toast.info(t('playlistErrors.playlist_not_found'), { + toastId: 'playlist_notFound', + }); + } else { + httpClient + .get(urls.ytVideos.checkPlaylist) + .then(() => { + chrome.tabs.create({ url: `https://www.youtube.com/playlist?list=${playlistId}` }); + }) + .catch(err => { + toast.info(t([`playlistErrors.${err.response.data.cause}`, 'fallbackError']), { + toastId: 'playlist_notFound', + }); + + queryClient.invalidateQueries([urls.auth.me]); + }); + } + }}> + + + + ); +}; diff --git a/react-app/src/pages/popup/pages/auth/auth.page.tsx b/react-app/src/pages/popup/pages/auth/auth.page.tsx new file mode 100644 index 00000000..59a34ebb --- /dev/null +++ b/react-app/src/pages/popup/pages/auth/auth.page.tsx @@ -0,0 +1,42 @@ +import googleLogo from '@assets/img/google-icon.svg'; +import { useTranslation } from '@internationalization'; +import { StyledAuthWrapper } from '@pages/popup/components/auth/auth-wrapper'; +import { StyledGoogleButton, StyledGoogleIconWrapper, StyledGoogleText } from '@pages/popup/components/auth/google'; +import { StyledGitHubLink } from '@pages/popup/components/shared/github-link'; +import { StyledThemeSwitch } from '@pages/popup/components/shared/theme-switch'; +import { StyledTitle } from '@pages/popup/components/shared/title-header'; +import { POPUP_HEIGHT, POPUP_POSITION_LEFT, POPUP_POSITION_TOP, POPUP_WIDTH } from '@pages/popup/constant'; + +const googleLogin = () => + chrome.windows.create({ + url: import.meta.env.VITE_API_URL + 'auth/login', + type: 'popup', + setSelfAsOpener: true, + width: POPUP_WIDTH, + height: POPUP_HEIGHT, + top: POPUP_POSITION_TOP, + left: POPUP_POSITION_LEFT, + }); + +const AuthPage = () => { + const { t } = useTranslation(); + + return ( + + + + {t('welcome')} + + + + {''} + + + {t('loginByGoogle')} + + + + + ); +}; +export default AuthPage; diff --git a/react-app/src/pages/popup/pages/error/ErrorPage.tsx b/react-app/src/pages/popup/pages/error/ErrorPage.tsx new file mode 100644 index 00000000..981e43b1 --- /dev/null +++ b/react-app/src/pages/popup/pages/error/ErrorPage.tsx @@ -0,0 +1,53 @@ +import octagonError from '@assets/img/exclamation-octagon-icon.svg'; +import { useTranslation } from '@internationalization'; +import { Stack, styled } from '@mui/system'; +import { StyledIcon } from '@pages/popup/components/shared/icon'; +import { StyledHomePageWrapper } from '@pages/popup/pages/home/home-wrapper'; +import GlobalStyles from '@utils/data/global-styles'; +import { textMixin } from '@utils/data/mixins/text-mixin'; +import React from 'react'; + +const StyledErrorContainer = styled(Stack)(({ theme }) => + theme.unstable_sx({ + ...textMixin, + + alignSelf: 'center', + alignItems: 'center', + gap: 2, + + margin: `auto`, + + lineHeight: '1.6rem', + + fontWeight: 'fontWeight.normal', + fontSize: 'fontSize.l', + textOverflow: 'ellipsis', + wordWrap: 'break-all', + + overflow: 'hidden', + }), +); + +export const ErrorPage = () => { + const { t } = useTranslation(); + + return ( + <> + + + + +

{t('fatalErrorHeading')}

+

{t('fallbackError')}

+
+
+ + ); +}; diff --git a/react-app/src/pages/popup/pages/home/home-wrapper.tsx b/react-app/src/pages/popup/pages/home/home-wrapper.tsx new file mode 100644 index 00000000..adf49295 --- /dev/null +++ b/react-app/src/pages/popup/pages/home/home-wrapper.tsx @@ -0,0 +1,10 @@ +import { Stack, styled } from '@mui/system'; +import { pageMixin } from '@utils/data/mixins/page-mixin'; + +export const StyledHomePageWrapper = styled(Stack)(({ theme }) => + theme.unstable_sx({ + ...pageMixin, + + position: 'relative', + }), +); diff --git a/react-app/src/pages/popup/pages/home/home.page.tsx b/react-app/src/pages/popup/pages/home/home.page.tsx new file mode 100644 index 00000000..29acda3f --- /dev/null +++ b/react-app/src/pages/popup/pages/home/home.page.tsx @@ -0,0 +1,38 @@ +import { AuthContext } from '@authentication'; +import { StyledGitHubLink } from '@pages/popup/components/shared/github-link'; +import { StyledSearchBar } from '@pages/popup/components/shared/searchBar/search-bar'; +import Seo from '@pages/popup/components/shared/seo'; +import { StyledTitle } from '@pages/popup/components/shared/title-header'; +import { StyledHeaderContainer } from '@pages/popup/layouts/header-container'; +import { StyledMainContent } from '@pages/popup/layouts/main-content'; +import { StyledNavbar } from '@pages/popup/layouts/navbar'; +import { StyledHomePageWrapper } from '@pages/popup/pages/home/home-wrapper'; +import { useHome } from '@pages/popup/pages/home/use-home'; +import React, { useContext } from 'react'; +import { Outlet } from 'react-router-dom'; + +const HomePage = () => { + const { user } = useContext(AuthContext); + const { title, focus } = useHome(); + + const playlistId = user?.userYtVideos.playlistId ?? null; + + return ( + + + + + + {title} + + + + + + + + + ); +}; + +export default HomePage; diff --git a/react-app/src/pages/popup/pages/home/use-home.ts b/react-app/src/pages/popup/pages/home/use-home.ts new file mode 100644 index 00000000..6635c16c --- /dev/null +++ b/react-app/src/pages/popup/pages/home/use-home.ts @@ -0,0 +1,20 @@ +import useFocus from '@hooks/use-focus'; +import { useTranslation } from '@internationalization'; +import { useEffect, useState } from 'react'; +import { useLocation } from 'react-router-dom'; + +export const useHome = () => { + const [title, setTitle] = useState(''); + + const { pathname } = useLocation(); + + const { ref, focus } = useFocus(); + + const { t } = useTranslation(); + + useEffect(() => { + setTitle(pathname === '/store' ? t('savedKeywords') : t('foundVideos')); + }, [pathname, t]); + + return { title, location, ref, focus }; +}; diff --git a/react-app/src/pages/popup/pages/protected.page.tsx b/react-app/src/pages/popup/pages/protected.page.tsx new file mode 100644 index 00000000..c4297259 --- /dev/null +++ b/react-app/src/pages/popup/pages/protected.page.tsx @@ -0,0 +1,26 @@ +import { IProvidedAuthValues } from '@interfaces'; +import { Stack, useTheme } from '@mui/system'; +import AuthPage from '@pages/popup/pages/auth/auth.page'; +import { pageMixin } from '@utils/data/mixins/page-mixin'; +import { ReactNode } from 'react'; +import { MoonLoader } from 'react-spinners'; + +export const ProtectedPage = ({ authValues, children }: { authValues: IProvidedAuthValues; children: ReactNode }) => { + const { + palette: { background }, + } = useTheme(); + + if (authValues.userIsLoading) { + return ( + + + + ); + } + + if (!authValues.user) { + return ; + } + + return children; +}; diff --git a/react-app/src/pages/popup/providers-wrapper.tsx b/react-app/src/pages/popup/providers-wrapper.tsx new file mode 100644 index 00000000..63d47c2b --- /dev/null +++ b/react-app/src/pages/popup/providers-wrapper.tsx @@ -0,0 +1,27 @@ +import { AuthContext } from '@authentication'; +import { IProvidedAuthValues } from '@interfaces'; +import { Router as RemixRouter } from '@remix-run/router/dist/router'; +import GlobalStyles from '@utils/data/global-styles'; +import React from 'react'; +import { RouterProvider } from 'react-router-dom'; +import 'react-toastify/dist/ReactToastify.css'; + +const ProvidersWrapper = ({ + authProviderValues, + hashRouting, +}: { + authProviderValues: IProvidedAuthValues; + hashRouting: RemixRouter; +}) => { + return ( + + + + + + + + ); +}; + +export default ProvidersWrapper; diff --git a/react-app/src/pages/popup/routes/store.route.tsx b/react-app/src/pages/popup/routes/store.route.tsx new file mode 100644 index 00000000..bf479894 --- /dev/null +++ b/react-app/src/pages/popup/routes/store.route.tsx @@ -0,0 +1,79 @@ +import useSearch from '@hooks/use-search'; +import httpClient from '@http-client'; +import { IErrorWithCause, IKeyword } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import { StyledDeleteModal } from '@pages/popup/components/shared/delete-modal/delete-modal'; +import { useDeleteModal } from '@pages/popup/components/shared/delete-modal/use-delete-modal'; +import { StyledItemsContainer } from '@pages/popup/components/shared/items-container'; +import { StyledSkeleton } from '@pages/popup/components/shared/styled-skeleton'; +import StyledAddInput from '@pages/popup/components/store/list/item/addingKeyword/add-input'; +import { StyledStoreItem } from '@pages/popup/components/store/list/item/store-value'; +import queryClient, { useMutation, useQuery } from '@query-client'; +import urls from '@utils/endpoints/urls'; +import { useDeferredValue, useMemo, useState } from 'react'; +import { toast } from 'react-toastify'; + +export const StoreRoute = () => { + const [keywordToRemove, setKeywordToRemove] = useState(0); + + const [openedInputId, setOpenedInputId] = useState(0); + + const { searchParamValue } = useSearch(); + + const { open, changeModalVisibility } = useDeleteModal(); + + const { t } = useTranslation(); + + const { data: keywords, isLoading: keywordsIsLoading } = useQuery({ + queryKey: [urls.keyWords], + queryFn: () => httpClient.get(urls.keyWords).then(({ data }) => data), + }); + + const { mutate: removeKeyword } = useMutation({ + mutationFn: ({ id }: { id: number }) => httpClient.delete(`${urls.keyWords}/${id}`), + onSuccess: async () => queryClient.invalidateQueries([urls.keyWords]), + onError: (error: IErrorWithCause) => + toast.error(t([`keywordErrors.${error.response.data.cause}`, 'fallbackError'])), + }); + + const deferredSearchParam = useDeferredValue(searchParamValue); + + const filteredKeywords = useMemo( + () => keywords?.filter(({ content }) => content.includes(deferredSearchParam)), + [deferredSearchParam, keywords], + ); + + const handleOpenedInputIdChange = (id: number) => { + setOpenedInputId(id); + }; + + return ( + <> + + + {keywordsIsLoading ? ( + + ) : ( + filteredKeywords?.map(({ id, content }) => ( + + )) + )} + + + {t('deleteModalContent')}} + onConfirm={() => removeKeyword({ id: keywordToRemove })} + changeModalVisibility={changeModalVisibility} + /> + + ); +}; diff --git a/react-app/src/pages/popup/routes/videos.route.tsx b/react-app/src/pages/popup/routes/videos.route.tsx new file mode 100644 index 00000000..3d8de422 --- /dev/null +++ b/react-app/src/pages/popup/routes/videos.route.tsx @@ -0,0 +1,51 @@ +import useSearch from '@hooks/use-search'; +import httpClient from '@http-client'; +import { IErrorWithCause, IUserVideo } from '@interfaces'; +import { useTranslation } from '@internationalization'; +import { StyledVideoArticle } from '@pages/popup/components/video/section/article/video-article'; +import { StyledVideoArticleSkeleton } from '@pages/popup/components/video/section/skeleton/video-article-skeleton'; +import { StyledVideosSection } from '@pages/popup/components/video/section/videos-section'; +import { useQuery } from '@query-client'; +import urls from '@utils/endpoints/urls'; +import { useDeferredValue, useMemo } from 'react'; +import { toast } from 'react-toastify'; + +export const VideosRoute = () => { + const { + data: videos, + isLoading: videosIsLoading, + error: videosError, + } = useQuery({ + queryKey: [urls.ytVideos.getVideos], + queryFn: () => httpClient.get(urls.ytVideos.getVideos).then(({ data }) => data), + }); + + const { t } = useTranslation(); + const { searchParamValue } = useSearch(); + + const deferredSearchParam = useDeferredValue(searchParamValue); + + const filteredVideos = useMemo( + () => (videos || []).filter(({ video: { title } }) => title.includes(deferredSearchParam)), + [deferredSearchParam, videos], + ); + + if (videosError) { + toast.error(t([`playlistErrors.${videosError.response.data.cause}`, 'fallbackError']), { + toastId: 'playlist_updating_error', + }); + } else if (videosIsLoading) { + return ( + + + + + ); + } else { + return ( + + {filteredVideos?.map(userVideo => )} + + ); + } +}; diff --git a/react-app/src/vite-env.d.ts b/react-app/src/vite-env.d.ts index 11f02fe2..29c29a18 100644 --- a/react-app/src/vite-env.d.ts +++ b/react-app/src/vite-env.d.ts @@ -1 +1,9 @@ /// + +interface ImportMetaEnv { + readonly VITE_API_URL: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/react-app/tsconfig.json b/react-app/tsconfig.json index c81ef9f3..ee871d46 100644 --- a/react-app/tsconfig.json +++ b/react-app/tsconfig.json @@ -1,24 +1,38 @@ { "compilerOptions": { - "target": "ESNext", - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, "noEmit": true, + "baseUrl": ".", + "allowJs": false, + "target": "esnext", + "module": "esnext", "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "skipLibCheck": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "types": ["vite/client", "node"], + "noFallthroughCasesInSwitch": true, + "allowSyntheticDefaultImports": true, + "lib": ["dom", "dom.iterable", "esnext"], + "forceConsistentCasingInFileNames": true, + "typeRoots": ["./src/global.d.ts", "node_modules/@types"], + "strictNullChecks": true, + "paths": { + "@root/*": ["./*"], + "@src/*": ["src/*"], + "@assets/*": ["src/assets/*"], + "@pages/*": ["src/pages/*"], + "@utils/*": ["utils/*"], + "@hooks/*": ["utils/hooks/*"], + "@types": ["utils/types/index.ts"], + "@interfaces": ["utils/interfaces/index.ts"], + "@authentication": ["utils/libs/authentication/index.ts"], + "@http-client": ["utils/libs/http-client/index.ts"], + "@query-client": ["utils/libs/query-client/index.ts"], + "@internationalization": ["utils/libs/internationalization/index.ts"], + "virtual:reload-on-update-in-background-script": ["./src/global.d.ts"], + "virtual:reload-on-update-in-view": ["./src/global.d.ts"] + } }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] + "include": ["src", "utils", "vite.config.ts", "node_modules/@types"] } diff --git a/react-app/tsconfig.node.json b/react-app/tsconfig.node.json deleted file mode 100644 index 42872c59..00000000 --- a/react-app/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/react-app/utils/core/log.ts b/react-app/utils/core/log.ts new file mode 100644 index 00000000..b945e02f --- /dev/null +++ b/react-app/utils/core/log.ts @@ -0,0 +1,52 @@ +type ColorType = 'success' | 'info' | 'error' | 'warning' | keyof typeof COLORS; +type ValueOf = T[keyof T]; + +export default function colorLog(message: string, type: ColorType) { + let color: ValueOf; + + switch (type) { + case 'success': + color = COLORS.FgGreen; + break; + case 'info': + color = COLORS.FgBlue; + break; + case 'error': + color = COLORS.FgRed; + break; + case 'warning': + color = COLORS.FgYellow; + break; + default: + color = COLORS[type]; + break; + } + + console.log(color, message); +} + +const COLORS = { + Reset: '\x1b[0m', + Bright: '\x1b[1m', + Dim: '\x1b[2m', + Underscore: '\x1b[4m', + Blink: '\x1b[5m', + Reverse: '\x1b[7m', + Hidden: '\x1b[8m', + FgBlack: '\x1b[30m', + FgRed: '\x1b[31m', + FgGreen: '\x1b[32m', + FgYellow: '\x1b[33m', + FgBlue: '\x1b[34m', + FgMagenta: '\x1b[35m', + FgCyan: '\x1b[36m', + FgWhite: '\x1b[37m', + BgBlack: '\x1b[40m', + BgRed: '\x1b[41m', + BgGreen: '\x1b[42m', + BgYellow: '\x1b[43m', + BgBlue: '\x1b[44m', + BgMagenta: '\x1b[45m', + BgCyan: '\x1b[46m', + BgWhite: '\x1b[47m', +} as const; diff --git a/react-app/utils/core/manifest-parser/index.ts b/react-app/utils/core/manifest-parser/index.ts new file mode 100644 index 00000000..cd7594d4 --- /dev/null +++ b/react-app/utils/core/manifest-parser/index.ts @@ -0,0 +1,35 @@ +type Manifest = chrome.runtime.ManifestV3; + +class ManifestParser { + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + static convertManifestToString(manifest: Manifest): string { + if (process.env.__FIREFOX__) { + manifest = this.convertToFirefoxCompatibleManifest(manifest); + } + return JSON.stringify(manifest, null, 2); + } + + static convertToFirefoxCompatibleManifest(manifest: Manifest) { + const manifestCopy = { + ...manifest, + } as { [key: string]: unknown }; + + manifestCopy.background = { + scripts: [manifest.background?.service_worker], + type: 'module', + }; + manifestCopy.options_ui = { + page: manifest.options_page, + browser_style: false, + }; + manifestCopy.content_security_policy = { + extension_pages: "script-src 'self'; object-src 'self'", + }; + delete manifestCopy.options_page; + return manifestCopy as Manifest; + } +} + +export default ManifestParser; diff --git a/react-app/utils/core/plugins/add-hmr.ts b/react-app/utils/core/plugins/add-hmr.ts new file mode 100644 index 00000000..4de4d3d2 --- /dev/null +++ b/react-app/utils/core/plugins/add-hmr.ts @@ -0,0 +1,47 @@ +import { readFileSync } from 'fs'; +import * as path from 'path'; +import type { PluginOption } from 'vite'; + +const isDev = process.env.__DEV__ === 'true'; + +const DUMMY_CODE = `export default function(){};`; + +function getInjectionCode(fileName: string): string { + return readFileSync(path.resolve(__dirname, '..', 'reload', 'injections', fileName), { encoding: 'utf8' }); +} + +type Config = { + background?: boolean; + view?: boolean; +}; + +export default function addHmr(config?: Config): PluginOption { + const { background = false, view = true } = config || {}; + const idInBackgroundScript = 'virtual:reload-on-update-in-background-script'; + const idInView = 'virtual:reload-on-update-in-view'; + + const scriptHmrCode = isDev ? getInjectionCode('script.js') : DUMMY_CODE; + const viewHmrCode = isDev ? getInjectionCode('view.js') : DUMMY_CODE; + + return { + name: 'add-hmr', + resolveId(id) { + if (id === idInBackgroundScript || id === idInView) { + return getResolvedId(id); + } + }, + load(id) { + if (id === getResolvedId(idInBackgroundScript)) { + return background ? scriptHmrCode : DUMMY_CODE; + } + + if (id === getResolvedId(idInView)) { + return view ? viewHmrCode : DUMMY_CODE; + } + }, + }; +} + +function getResolvedId(id: string) { + return '\0' + id; +} diff --git a/react-app/utils/core/plugins/custom-dynamic-import.ts b/react-app/utils/core/plugins/custom-dynamic-import.ts new file mode 100644 index 00000000..6717fd1a --- /dev/null +++ b/react-app/utils/core/plugins/custom-dynamic-import.ts @@ -0,0 +1,19 @@ +import type { PluginOption } from 'vite'; + +export default function customDynamicImport(): PluginOption { + return { + name: 'custom-dynamic-import', + renderDynamicImport({ moduleId }) { + if (!moduleId.includes('node_modules') && process.env.__FIREFOX__) { + return { + left: `import(browser.runtime.getURL('./') + `, + right: ".split('../').join(''));", + }; + } + return { + left: 'import(', + right: ')', + }; + }, + }; +} diff --git a/react-app/utils/core/plugins/make-manifest.ts b/react-app/utils/core/plugins/make-manifest.ts new file mode 100644 index 00000000..9e4184f5 --- /dev/null +++ b/react-app/utils/core/plugins/make-manifest.ts @@ -0,0 +1,49 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as process from 'process'; +import url from 'url'; +import type { PluginOption } from 'vite'; +import colorLog from '../log'; +import ManifestParser from '../manifest-parser'; + +const { resolve } = path; + +const rootDir = resolve(__dirname, '../../..'); +const distDir = resolve(rootDir, 'dist'); +const manifestFile = resolve(rootDir, 'manifest.js'); + +const getManifestWithCacheBurst = (): Promise<{ default: chrome.runtime.ManifestV3 }> => { + const withCacheBurst = (path: string) => `${path}?${Date.now().toString()}`; + /** + * In Windows, import() doesn't work without file:// protocol. + * So, we need to convert path to file:// protocol. (url.pathToFileURL) + */ + if (process.platform === 'win32') { + return import(withCacheBurst(url.pathToFileURL(manifestFile).href)); + } + return import(withCacheBurst(manifestFile)); +}; + +export default function makeManifest(): PluginOption { + function makeManifest(manifest: chrome.runtime.ManifestV3, to: string) { + if (!fs.existsSync(to)) { + fs.mkdirSync(to); + } + const manifestPath = resolve(to, 'manifest.json'); + + fs.writeFileSync(manifestPath, ManifestParser.convertManifestToString(manifest)); + + colorLog(`Manifest file copy complete: ${manifestPath}`, 'success'); + } + + return { + name: 'make-manifest', + buildStart() { + this.addWatchFile(manifestFile); + }, + async writeBundle() { + const manifest = await getManifestWithCacheBurst(); + makeManifest(manifest.default, distDir); + }, + }; +} diff --git a/react-app/utils/core/plugins/watch-rebuild.ts b/react-app/utils/core/plugins/watch-rebuild.ts new file mode 100644 index 00000000..0ea06a74 --- /dev/null +++ b/react-app/utils/core/plugins/watch-rebuild.ts @@ -0,0 +1,18 @@ +import type { PluginOption } from 'vite'; +import { WebSocket } from 'ws'; +import { LOCAL_RELOAD_SOCKET_URL } from '../reload/constant'; +import MessageInterpreter from '../reload/interpreter'; + +export default function watchRebuild(): PluginOption { + const ws = new WebSocket(LOCAL_RELOAD_SOCKET_URL); + return { + name: 'watch-rebuild', + writeBundle() { + /** + * When the build is complete, send a message to the reload server. + * The reload server will send a message to the client to reload or refresh the extension. + */ + ws.send(MessageInterpreter.send({ type: 'build_complete' })); + }, + }; +} diff --git a/react-app/utils/core/reload/constant.ts b/react-app/utils/core/reload/constant.ts new file mode 100644 index 00000000..de2d84fb --- /dev/null +++ b/react-app/utils/core/reload/constant.ts @@ -0,0 +1,2 @@ +export const LOCAL_RELOAD_SOCKET_PORT = 8081; +export const LOCAL_RELOAD_SOCKET_URL = `ws://localhost:${LOCAL_RELOAD_SOCKET_PORT}`; diff --git a/react-app/utils/core/reload/initReloadClient.ts b/react-app/utils/core/reload/initReloadClient.ts new file mode 100644 index 00000000..1cd3fb04 --- /dev/null +++ b/react-app/utils/core/reload/initReloadClient.ts @@ -0,0 +1,56 @@ +import { LOCAL_RELOAD_SOCKET_URL } from './constant'; +import MessageInterpreter from './interpreter'; + +let needToUpdate = false; + +export default function initReloadClient({ + watchPath, + onUpdate, + onForceReload, +}: { + watchPath: string; + onUpdate: () => void; + onForceReload?: () => void; +}): WebSocket { + const socket = new WebSocket(LOCAL_RELOAD_SOCKET_URL); + + function sendUpdateCompleteMessage() { + socket.send(MessageInterpreter.send({ type: 'done_update' })); + } + + socket.addEventListener('message', event => { + const message = MessageInterpreter.receive(String(event.data)); + + switch (message.type) { + case 'do_update': { + if (needToUpdate) { + sendUpdateCompleteMessage(); + needToUpdate = false; + onUpdate(); + } + return; + } + case 'wait_update': { + if (!needToUpdate) { + needToUpdate = message.path.includes(watchPath); + } + return; + } + case 'force_reload': { + onForceReload?.(); + return; + } + } + }); + + socket.onclose = () => { + console.log( + `Reload server disconnected.\nPlease check if the WebSocket server is running properly on ${LOCAL_RELOAD_SOCKET_URL}. This feature detects changes in the code and helps the browser to reload the extension or refresh the current tab.`, + ); + setTimeout(() => { + initReloadClient({ watchPath, onUpdate }); + }, 1000); + }; + + return socket; +} diff --git a/react-app/utils/core/reload/initReloadServer.ts b/react-app/utils/core/reload/initReloadServer.ts new file mode 100644 index 00000000..a9c7871b --- /dev/null +++ b/react-app/utils/core/reload/initReloadServer.ts @@ -0,0 +1,55 @@ +import chokidar from 'chokidar'; +import { WebSocket, WebSocketServer } from 'ws'; +import { LOCAL_RELOAD_SOCKET_PORT, LOCAL_RELOAD_SOCKET_URL } from '../reload/constant'; +import MessageInterpreter from './interpreter'; +import { debounce } from './utils'; + +const clientsThatNeedToUpdate: Set = new Set(); +let needToForceReload = false; + +function initReloadServer() { + const wss = new WebSocketServer({ port: LOCAL_RELOAD_SOCKET_PORT }); + + wss.on('listening', () => console.log(`[HRS] Server listening at ${LOCAL_RELOAD_SOCKET_URL}`)); + + wss.on('connection', ws => { + clientsThatNeedToUpdate.add(ws); + + ws.addEventListener('close', () => clientsThatNeedToUpdate.delete(ws)); + ws.addEventListener('message', event => { + if (typeof event.data !== 'string') return; + + const message = MessageInterpreter.receive(event.data); + + if (message.type === 'done_update') { + ws.close(); + } + if (message.type === 'build_complete') { + clientsThatNeedToUpdate.forEach((ws: WebSocket) => ws.send(MessageInterpreter.send({ type: 'do_update' }))); + if (needToForceReload) { + needToForceReload = false; + clientsThatNeedToUpdate.forEach((ws: WebSocket) => + ws.send(MessageInterpreter.send({ type: 'force_reload' })), + ); + } + } + }); + }); +} + +/** CHECK:: src file was updated **/ +const debounceSrc = debounce(function (path: string) { + // Normalize path on Windows + const pathConverted = path.replace(/\\/g, '/'); + clientsThatNeedToUpdate.forEach((ws: WebSocket) => + ws.send(MessageInterpreter.send({ type: 'wait_update', path: pathConverted })), + ); +}, 100); +chokidar.watch('src', { ignorePermissionErrors: true }).on('all', (_, path) => debounceSrc(path)); + +/** CHECK:: manifest.js was updated **/ +chokidar.watch('manifest.js', { ignorePermissionErrors: true }).on('all', () => { + needToForceReload = true; +}); + +initReloadServer(); diff --git a/react-app/utils/core/reload/injections/script.ts b/react-app/utils/core/reload/injections/script.ts new file mode 100644 index 00000000..01dee569 --- /dev/null +++ b/react-app/utils/core/reload/injections/script.ts @@ -0,0 +1,13 @@ +import initReloadClient from '../initReloadClient'; + +export default function addHmrIntoScript(watchPath: string) { + const reload = () => { + chrome.runtime.reload(); + }; + + initReloadClient({ + watchPath, + onUpdate: reload, + onForceReload: reload, + }); +} diff --git a/react-app/utils/core/reload/injections/view.ts b/react-app/utils/core/reload/injections/view.ts new file mode 100644 index 00000000..f6735622 --- /dev/null +++ b/react-app/utils/core/reload/injections/view.ts @@ -0,0 +1,29 @@ +import initReloadClient from '../initReloadClient'; + +export default function addHmrIntoView(watchPath: string) { + let pendingReload = false; + + initReloadClient({ + watchPath, + onUpdate: () => { + // disable reload when tab is hidden + if (document.hidden) { + pendingReload = true; + return; + } + reload(); + }, + }); + + // reload + function reload(): void { + pendingReload = false; + window.location.reload(); + } + + // reload when tab is visible + function reloadWhenTabIsVisible(): void { + !document.hidden && pendingReload && reload(); + } + document.addEventListener('visibilitychange', reloadWhenTabIsVisible); +} diff --git a/react-app/utils/core/reload/interpreter/index.ts b/react-app/utils/core/reload/interpreter/index.ts new file mode 100644 index 00000000..57ceaeca --- /dev/null +++ b/react-app/utils/core/reload/interpreter/index.ts @@ -0,0 +1,13 @@ +import type { SerializedMessage, WebSocketMessage } from '../interpreter/types'; + +export default class MessageInterpreter { + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + static send(message: WebSocketMessage): SerializedMessage { + return JSON.stringify(message); + } + static receive(serializedMessage: SerializedMessage): WebSocketMessage { + return JSON.parse(serializedMessage); + } +} diff --git a/react-app/utils/core/reload/interpreter/types.ts b/react-app/utils/core/reload/interpreter/types.ts new file mode 100644 index 00000000..b73762c4 --- /dev/null +++ b/react-app/utils/core/reload/interpreter/types.ts @@ -0,0 +1,18 @@ +type UpdatePendingMessage = { + type: 'wait_update'; + path: string; +}; +type UpdateRequestMessage = { + type: 'do_update'; +}; +type UpdateCompleteMessage = { type: 'done_update' }; +type BuildCompletionMessage = { type: 'build_complete' }; +type ForceReloadMessage = { type: 'force_reload' }; + +export type SerializedMessage = string; +export type WebSocketMessage = + | UpdateCompleteMessage + | UpdateRequestMessage + | UpdatePendingMessage + | BuildCompletionMessage + | ForceReloadMessage; diff --git a/react-app/utils/core/reload/rollup.config.mjs b/react-app/utils/core/reload/rollup.config.mjs new file mode 100644 index 00000000..8153884b --- /dev/null +++ b/react-app/utils/core/reload/rollup.config.mjs @@ -0,0 +1,28 @@ +import typescript from "@rollup/plugin-typescript"; + +const plugins = [typescript()]; + +export default [ + { + plugins, + input: 'utils/core/reload/initReloadServer.ts', + output: { + file: 'utils/core/reload/initReloadServer.js', + }, + external: ['ws', 'chokidar', 'timers'], + }, + { + plugins, + input: 'utils/core/reload/injections/script.ts', + output: { + file: 'utils/core/reload/injections/script.js', + }, + }, + { + plugins, + input: 'utils/core/reload/injections/view.ts', + output: { + file: 'utils/core/reload/injections/view.js', + }, + }, +]; diff --git a/react-app/utils/core/reload/utils.ts b/react-app/utils/core/reload/utils.ts new file mode 100644 index 00000000..3bcf12fd --- /dev/null +++ b/react-app/utils/core/reload/utils.ts @@ -0,0 +1,9 @@ +import { clearTimeout } from 'timers'; + +export function debounce
(callback: (...args: A) => void, delay: number) { + let timer: NodeJS.Timeout; + return function (...args: A) { + clearTimeout(timer); + timer = setTimeout(() => callback(...args), delay); + }; +} diff --git a/react-app/utils/data/global-styles.ts b/react-app/utils/data/global-styles.ts new file mode 100644 index 00000000..18744c11 --- /dev/null +++ b/react-app/utils/data/global-styles.ts @@ -0,0 +1,26 @@ +import { createGlobalStyle } from 'styled-components'; + +const GlobalStyles = createGlobalStyle` + *, + *::before, + *::after { + box-sizing: border-box; + + margin: 0; + padding: 0; + border: transparent; + + font-family: 'DM Sans', sans-serif; + } + + @media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } + } +`; + +export default GlobalStyles; diff --git a/react-app/utils/data/mixins/page-mixin.ts b/react-app/utils/data/mixins/page-mixin.ts new file mode 100644 index 00000000..6d0a0a8d --- /dev/null +++ b/react-app/utils/data/mixins/page-mixin.ts @@ -0,0 +1,10 @@ +import { GLOBAL_TRANSITION_DURATION } from '@pages/popup/constant'; + +export const pageMixin = { + width: 300, + height: 600, + + backgroundColor: 'background.primary', + + transitionDuration: `${GLOBAL_TRANSITION_DURATION}`, +}; diff --git a/react-app/utils/data/mixins/scrollbar-mixin.ts b/react-app/utils/data/mixins/scrollbar-mixin.ts new file mode 100644 index 00000000..4eb6e575 --- /dev/null +++ b/react-app/utils/data/mixins/scrollbar-mixin.ts @@ -0,0 +1,36 @@ +export const scrollbarMixin = { + pb: 12, + + overflowY: 'scroll', + overflowX: 'hidden', + + '&:hover': { + '&::-webkit-scrollbar-thumb': { + backgroundColor: '#7846F0', + }, + + '&::-webkit-scrollbar-thumb:active': { + backgroundColor: '#581fe1', + }, + }, + + '&::-webkit-scrollbar': { + width: 12, + }, + + '&::-webkit-scrollbar-track': { + mb: 12, + }, + + '&::-webkit-scrollbar-thumb': { + border: '2px solid transparent', + borderRadius: 10, + + backgroundColor: 'transparent', + backgroundClip: 'padding-box', + }, + + '&::-webkit-scrollbar-corner': { + background: 'none', + }, +}; diff --git a/react-app/utils/data/mixins/text-mixin.ts b/react-app/utils/data/mixins/text-mixin.ts new file mode 100644 index 00000000..cbd4eff6 --- /dev/null +++ b/react-app/utils/data/mixins/text-mixin.ts @@ -0,0 +1,8 @@ +export const textMixin = { + color: 'color.primary', + + textAlign: 'center', + fontSize: 'fontSize.md', + fontWeight: 'fontWeight.normal', + fontStyle: 'normal', +}; diff --git a/react-app/utils/data/themes/dark-theme.ts b/react-app/utils/data/themes/dark-theme.ts new file mode 100644 index 00000000..f2f625fa --- /dev/null +++ b/react-app/utils/data/themes/dark-theme.ts @@ -0,0 +1,47 @@ +import { createTheme } from '@mui/system'; + +const THEME = createTheme({ + palette: { + background: { + primary: '#16121E', + secondary: '#FFFFFF0C', + loadingBase: '#242626', + loadingHighlight: '#3a3a3a', + purple: '#7846F0', + grey: '#5b5b5e', + searchBar: '#26203B', + searchBarFocusOutline: '#5215e3', + snackbarBackground: '#ffbbbb', + focusOutline: '#fff', + closeButtonHover: '#876aea', + closeButtonActive: '#7c62d7', + gitHubIconBackgroundFilter: + 'brightness(0) saturate(100%) invert(25%) sepia(50%) saturate(4034%) hue-rotate(248deg) brightness(98%) contrast(92%)', + }, + color: { + primary: '#E6E6E6', + placeholder: '#D3D3D3', + snackbarContent: '#1f1f1f', + danger: '#fa2525', + watchLaterIconFilter: + 'brightness(0) saturate(100%) invert(100%) sepia(51%) saturate(1127%) hue-rotate(187deg) brightness(119%) contrast(80%)', + }, + }, + typography: { + fontWeight: { + normal: '400', + bold: '700', + }, + fontSize: { + sm: 12, + md: 18, + l: 20, + xl: 24, + }, + }, + shape: { + borderRadius: 6, + }, +}); + +export default THEME; diff --git a/react-app/utils/data/themes/light-theme.ts b/react-app/utils/data/themes/light-theme.ts new file mode 100644 index 00000000..7956e340 --- /dev/null +++ b/react-app/utils/data/themes/light-theme.ts @@ -0,0 +1,49 @@ +import { createTheme } from '@mui/system'; + +const THEME = createTheme({ + palette: { + background: { + primary: '#fff', + secondary: '#eeecec', + loadingBase: '#dbd9d9', + loadingHighlight: '#c5c5c5', + danger: '#fa2525', + purple: '#7846F0', + grey: '#5b5b5e', + searchBar: '#eeebeb', + searchBarFocusOutline: '#7846F0', + searchIconFilter: 'invert(94%) sepia(0%) saturate(32%) hue-rotate(142deg) brightness(97%) contrast(93%)', + snackbarBackground: '#ffbbbb', + focusOutline: '#16121E', + closeButtonHover: '#876aea', + closeButtonActive: '#7c62d7', + gitHubIconBackgroundFilter: + 'brightness(0) saturate(100%) invert(25%) sepia(50%) saturate(4034%) hue-rotate(248deg) brightness(98%) contrast(92%)', + }, + color: { + primary: '#16121E', + placeholder: '#050110', + snackbarContent: '#1f1f1f', + danger: '#e53232', + watchLaterIconFilter: + 'brightness(0) saturate(100%) invert(4%) sepia(24%) saturate(1525%) hue-rotate(218deg) brightness(91%) contrast(92%)', + }, + }, + typography: { + fontWeight: { + normal: '400', + bold: '700', + }, + fontSize: { + sm: 12, + md: 18, + l: 20, + xl: 24, + }, + }, + shape: { + borderRadius: 6, + }, +}); + +export default THEME; diff --git a/react-app/utils/endpoints/urls.ts b/react-app/utils/endpoints/urls.ts new file mode 100644 index 00000000..f35ea279 --- /dev/null +++ b/react-app/utils/endpoints/urls.ts @@ -0,0 +1,17 @@ +const urls = { + auth: { + login: 'auth/login', + logout: 'auth/logout', + removeAccount: 'auth/remove-account', + me: 'auth/me', + }, + keyWords: 'key-words', + ytVideos: { + getVideos: 'user-yt-videos', + updatePlaylist: 'user-yt-videos/update-playlist', + checkPlaylist: 'user-yt-videos/check-playlist', + }, + getErrors: 'error-logs', +}; + +export default urls; diff --git a/react-app/utils/hooks/use-focus.ts b/react-app/utils/hooks/use-focus.ts new file mode 100644 index 00000000..a455ea09 --- /dev/null +++ b/react-app/utils/hooks/use-focus.ts @@ -0,0 +1,14 @@ +import { IUseFocus } from '@interfaces'; +import { useRef } from 'react'; + +const useFocus = (): IUseFocus => { + const ref = useRef(null); + + const focus = () => { + ref.current && ref.current.focus(); + }; + + return { ref, focus }; +}; + +export default useFocus; diff --git a/react-app/utils/hooks/use-handle-key-events.ts b/react-app/utils/hooks/use-handle-key-events.ts new file mode 100644 index 00000000..f336fb17 --- /dev/null +++ b/react-app/utils/hooks/use-handle-key-events.ts @@ -0,0 +1,15 @@ +import { TVoid } from '@types'; +import { KeyboardEvent } from 'react'; + +const useHandleKeyEvents = () => { + const handleKeyEvent = (event: KeyboardEvent, escapeAction?: TVoid, enterAction?: TVoid) => { + if (escapeAction && event.key === 'Escape') escapeAction(); + if (enterAction && event.key === 'Enter') enterAction(); + }; + + return { + handleKeyEvent, + }; +}; + +export default useHandleKeyEvents; diff --git a/react-app/utils/hooks/use-language-switch.ts b/react-app/utils/hooks/use-language-switch.ts new file mode 100644 index 00000000..3556b1fe --- /dev/null +++ b/react-app/utils/hooks/use-language-switch.ts @@ -0,0 +1,17 @@ +import { changeLanguage } from '@internationalization'; +import { useEffect } from 'react'; +import { useLocalStorage } from 'usehooks-ts'; + +const useLanguageSwitch = () => { + const navigatorLanguage = new Intl.Locale(navigator.language).minimize().baseName; + + const [language, setLanguage] = useLocalStorage('language', navigatorLanguage === 'pl' ? navigatorLanguage : 'en'); + + useEffect(() => { + changeLanguage(language); + }, [language]); + + return setLanguage; +}; + +export default useLanguageSwitch; diff --git a/react-app/utils/hooks/use-search.ts b/react-app/utils/hooks/use-search.ts new file mode 100644 index 00000000..bbe3f3b7 --- /dev/null +++ b/react-app/utils/hooks/use-search.ts @@ -0,0 +1,23 @@ +import { useSearchParams } from 'react-router-dom'; + +const SEARCH_VALUE = 'searchValue'; + +const useSearch = () => { + const [searchParams, setSearchParams] = useSearchParams(); + const searchParamValue = searchParams.get(SEARCH_VALUE) || ''; + + const handleSearchParamsChange = (content: string) => { + const allParams = Object.fromEntries(searchParams); + setSearchParams({ ...allParams, [SEARCH_VALUE]: content }); + }; + + const clearSearchParamValue = () => handleSearchParamsChange(''); + + return { + clearSearchParamValue, + searchParamValue, + handleSearchParamsChange, + }; +}; + +export default useSearch; diff --git a/react-app/utils/hooks/use-ternary-darkmode.ts b/react-app/utils/hooks/use-ternary-darkmode.ts new file mode 100644 index 00000000..38883485 --- /dev/null +++ b/react-app/utils/hooks/use-ternary-darkmode.ts @@ -0,0 +1,43 @@ +import { TVoid } from '@types'; +import { useLocalStorage, useMediaQuery } from 'usehooks-ts'; + +const COLOR_SCHEME_QUERY = '(prefers-color-scheme: dark)'; + +type TTernaryDarkMode = 'system' | 'dark' | 'light'; + +interface IUseTernaryDarkModeOutput { + ternaryDarkMode: TTernaryDarkMode; + isDarkMode: boolean; + changeTheme: TVoid; +} + +function useTernaryDarkMode(): IUseTernaryDarkModeOutput { + const [ternaryDarkMode, setTernaryDarkMode] = useLocalStorage( + 'usehooks-ts-ternary-dark-mode', + 'system', + ); + + const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY); + + const isDarkMode = ternaryDarkMode === 'dark' || (ternaryDarkMode === 'system' && isDarkOS); + + const changeTheme = () => + setTernaryDarkMode(prevState => { + switch (prevState) { + case 'light': + return 'dark'; + case 'system': + return isDarkOS ? 'light' : 'dark'; + case 'dark': + return 'light'; + } + }); + + return { + ternaryDarkMode, + isDarkMode, + changeTheme, + }; +} + +export default useTernaryDarkMode; diff --git a/react-app/utils/hooks/use-validate.ts b/react-app/utils/hooks/use-validate.ts new file mode 100644 index 00000000..65cc2cf5 --- /dev/null +++ b/react-app/utils/hooks/use-validate.ts @@ -0,0 +1,19 @@ +import { useState } from 'react'; + +const useValidate = () => { + const [isValid, setIsValid] = useState(false); + + const handleValidation = (inputContent: string) => { + const inputContentLength = inputContent.length; + + if (inputContentLength < 3 || inputContentLength > 255) { + setIsValid(false); + } else { + setIsValid(true); + } + }; + + return { isValid, handleValidation }; +}; + +export default useValidate; diff --git a/react-app/utils/hooks/with-error-boundary.tsx b/react-app/utils/hooks/with-error-boundary.tsx new file mode 100644 index 00000000..445b4579 --- /dev/null +++ b/react-app/utils/hooks/with-error-boundary.tsx @@ -0,0 +1,41 @@ +import { Component, ComponentType, ReactNode } from 'react'; + +class ErrorBoundary extends Component< + { + children: ReactNode; + fallback: ReactNode; + }, + { + hasError: boolean; + } +> { + state = { hasError: false }; + + static getDerivedStateFromError() { + return { hasError: true }; + } + + componentDidCatch(error, errorInfo) { + console.error(error, errorInfo); + } + + render() { + if (this.state.hasError) { + return this.props.fallback; + } + + return this.props.children; + } +} + +function withErrorBoundary>(Component: ComponentType, ErrorComponent: ReactNode) { + return function WithErrorBoundary(props: T) { + return ( + + + + ); + }; +} + +export default withErrorBoundary; diff --git a/react-app/utils/instructions/DIRS_STRUCTURE.md b/react-app/utils/instructions/DIRS_STRUCTURE.md new file mode 100644 index 00000000..e5b6c8a9 --- /dev/null +++ b/react-app/utils/instructions/DIRS_STRUCTURE.md @@ -0,0 +1,16 @@ +`core:` + `Here you can save the core instances e.g useQuery or axios and etc. in the related folders` + +`hooks` + +`interfaces-` + `*.interface.[js/ts]` + +`types:` + + common.types.[js/ts] - For common/ungrouped types, + *.type.[js/ts], + +`endpoints:` + + urls.[js/ts] - save here all API paths relative to baseURL from env \ No newline at end of file diff --git a/react-app/utils/interfaces/index.ts b/react-app/utils/interfaces/index.ts new file mode 100644 index 00000000..7778ab14 --- /dev/null +++ b/react-app/utils/interfaces/index.ts @@ -0,0 +1,92 @@ +import { TVoid } from '@types'; +import { Ref } from 'react'; + +interface IUseFocus { + ref: Ref; + focus: TVoid; +} + +interface IKeyword { + id: number; + content: string; +} + +interface IStyledKeyword extends IKeyword { + openedInputId: number; + changeOpenedInputId: (id: number) => void; +} + +interface IStyledEditButton extends Omit {} + +interface IStyledStoreItem extends IStyledKeyword { + setKeywordToRemove: (id: number) => void; + changeModalVisibility: TVoid; +} + +interface IUser { + id: number; + displayName: string; + email: string; + avatar: string; + userYtVideos: IUserYtVideos; +} + +interface IProvidedAuthValues { + user?: IUser; + userIsLoading: boolean; +} + +interface IUserYtVideos { + id: number; + lastFetch: string; + playlistId: string | null; +} + +interface IEditKeywordRef { + handleApplyingChanges: TVoid; +} + +interface IErrorWithCause { + response: { + data: { + cause?: string; + reason?: string; + }; + }; +} + +interface IVideo { + id: number; + title: string; + description: string; + publishedAt: string; + thumbnail: string; + views: number; +} + +interface IChannel { + id: string; + title: string; + thumbnail: string; +} + +interface IUserVideo { + video: IVideo; + channel: IChannel; +} + +export { + IUseFocus, + IKeyword, + IStyledKeyword, + IStyledEditButton, + IStyledStoreItem, + IEditKeywordRef, + IUser, + IUserYtVideos, + IErrorWithCause, + IVideo, + IChannel, + IUserVideo, + IProvidedAuthValues, +}; diff --git a/react-app/utils/libs/authentication/index.ts b/react-app/utils/libs/authentication/index.ts new file mode 100644 index 00000000..53f90969 --- /dev/null +++ b/react-app/utils/libs/authentication/index.ts @@ -0,0 +1,9 @@ +import { IUser } from '@interfaces'; +import { createContext } from 'react'; + +interface IAuthContextValues { + user?: IUser; + userIsLoading: boolean; +} + +export const AuthContext = createContext({ userIsLoading: true }); diff --git a/react-app/utils/libs/http-client/index.ts b/react-app/utils/libs/http-client/index.ts new file mode 100644 index 00000000..fa7071bf --- /dev/null +++ b/react-app/utils/libs/http-client/index.ts @@ -0,0 +1,35 @@ +import { SESSION_COOKIE_NAME } from '@pages/popup/constant'; +import queryClient from '@query-client'; +import urls from '@utils/endpoints/urls'; +import axios from 'axios'; +import { t } from 'i18next'; +import { toast } from 'react-toastify'; + +const createHttpInstance = () => { + const axiosInstance = axios.create({ + baseURL: import.meta.env.VITE_API_URL, + withCredentials: true, + headers: { + 'Content-type': 'application/json', + }, + }); + + axiosInstance.interceptors.response.use( + response => response, + async error => { + if (error.response.status === 401 && error.config.url !== urls.auth.me) { + toast.error(t('unauthorized')); + await chrome.cookies.remove({ name: SESSION_COOKIE_NAME, url: import.meta.env.VITE_API_URL }); + await queryClient.resetQueries({ queryKey: [urls.auth.me] }); + } + + return Promise.reject(error); + }, + ); + + return axiosInstance; +}; + +export { AxiosError } from 'axios'; + +export default createHttpInstance(); diff --git a/react-app/utils/libs/internationalization/index.ts b/react-app/utils/libs/internationalization/index.ts new file mode 100644 index 00000000..858f9464 --- /dev/null +++ b/react-app/utils/libs/internationalization/index.ts @@ -0,0 +1,67 @@ +import translationEn from '@root/public/locales/en/translation.json'; +import translationPl from '@root/public/locales/pl/translation.json'; +import { formatDistanceStrict, isDate } from 'date-fns'; +import { enUS, pl } from 'date-fns/locale'; +import i18n from 'i18next'; +import I18NextHttpBackend from 'i18next-http-backend'; +import { initReactI18next } from 'react-i18next'; + +const locales = { en: enUS, pl }; +const plSuffixes = { 1: '', 1000: 'tys.', 1000000: 'mln', 1000000000: 'mld' }; +const enSuffixes = { 1: '', 1000: 'K', 1000000: 'M', 1000000000: 'B' }; + +const parseViews = (value: number, suffixesObj: typeof plSuffixes) => { + const createParsedString = (zerosAmount: number): string => + `${value.toString().slice(0, -zerosAmount)} ${suffixesObj[+`1e${zerosAmount}`]}`; + + if (value >= 1e9) { + return createParsedString(9); // Billion + } else if (value >= 1e6) { + return createParsedString(6); // Million + } else if (value >= 1e3) { + return createParsedString(3); // Thousand + } else { + return value; // Less than thousand + } +}; + +export const resources = { + en: { + translation: translationEn, + }, + pl: { + translation: translationPl, + }, +} as const; + +i18n + .use(I18NextHttpBackend) + .use(initReactI18next) + .init({ + fallbackLng: 'en', + defaultNS: 'translation', + ns: ['translation'], + resources, + + interpolation: { + escapeValue: false, + + format: (value, format, lng) => { + if (format === 'ago' && isDate(value)) { + return formatDistanceStrict(value, new Date(), { + locale: locales[lng ?? 'en'], + addSuffix: true, + }); + } else if (format === 'abbreviations' && !isNaN(value)) { + const currentSuffixesObj = lng === 'pl' ? plSuffixes : enSuffixes; + return parseViews(value, currentSuffixesObj); + } + + return value; + }, + }, + }); + +export { i18n }; +export { changeLanguage, t, TFunction } from 'i18next'; +export { useTranslation } from 'react-i18next'; diff --git a/react-app/utils/libs/query-client/index.ts b/react-app/utils/libs/query-client/index.ts new file mode 100644 index 00000000..9d80eb31 --- /dev/null +++ b/react-app/utils/libs/query-client/index.ts @@ -0,0 +1,8 @@ +import { QueryCache, QueryClient } from '@tanstack/react-query'; + +export { QueryClientProvider, useQuery, useMutation } from '@tanstack/react-query'; + +// TODO: DODAC TOASTIFY +export default new QueryClient({ + queryCache: new QueryCache({}), +}); diff --git a/react-app/utils/types/index.ts b/react-app/utils/types/index.ts new file mode 100644 index 00000000..7aa5ca1c --- /dev/null +++ b/react-app/utils/types/index.ts @@ -0,0 +1,7 @@ +import { ReactNode } from 'react'; + +export type TChildren = { children: ReactNode }; + +export type TComponentTag = { component: string }; + +export type TVoid = () => void; diff --git a/react-app/vite.config.ts b/react-app/vite.config.ts index 732e5f29..fd94f2db 100644 --- a/react-app/vite.config.ts +++ b/react-app/vite.config.ts @@ -1,11 +1,78 @@ -import {defineConfig} from 'vite' -import react from '@vitejs/plugin-react' +import react from '@vitejs/plugin-react'; +import { resolve } from 'path'; +import { defineConfig } from 'vite'; +import addHmr from './utils/core/plugins/add-hmr'; +import customDynamicImport from './utils/core/plugins/custom-dynamic-import'; +import makeManifest from './utils/core/plugins/make-manifest'; +import watchRebuild from './utils/core/plugins/watch-rebuild'; + +const rootDir = resolve(__dirname); +const outDir = resolve(rootDir, 'dist'); +const publicDir = resolve(rootDir, 'public'); + +const srcDir = resolve(rootDir, 'src'); +const pagesDir = resolve(srcDir, 'pages'); +const assetsDir = resolve(srcDir, 'assets'); + +const utilsDir = resolve(rootDir, 'utils'); +const hooksDir = resolve(utilsDir, 'hooks'); +const typesDir = resolve(utilsDir, 'types'); +const interfacesDir = resolve(utilsDir, 'interfaces'); + +const libsDir = resolve(utilsDir, 'libs'); +const authDir = resolve(libsDir, 'authentication'); +const httpClientDir = resolve(libsDir, 'http-client'); +const queryClientDir = resolve(libsDir, 'query-client'); +const internationalizationDir = resolve(libsDir, 'internationalization'); + +const isDev = process.env.__DEV__ === 'true'; +const isProduction = !isDev; + +// ENABLE HMR IN BACKGROUND SCRIPT +const enableHmrInBackgroundScript = true; -// https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], - server: { - port: 3000, - open: "/" - } -}) + envDir: './envs', + resolve: { + alias: { + '@root': rootDir, + '@src': srcDir, + '@utils': utilsDir, + '@assets': assetsDir, + '@pages': pagesDir, + '@hooks': hooksDir, + '@types': typesDir, + '@interfaces': interfacesDir, + '@authentication': authDir, + '@http-client': httpClientDir, + '@query-client': queryClientDir, + '@internationalization': internationalizationDir, + }, + }, + plugins: [ + makeManifest(), + react(), + customDynamicImport(), + addHmr({ background: enableHmrInBackgroundScript, view: true }), + isDev && watchRebuild(), + ], + publicDir, + build: { + outDir, + minify: isProduction, + modulePreload: false, + reportCompressedSize: isProduction, + rollupOptions: { + input: { + background: resolve(pagesDir, 'background', 'index.ts'), + popup: resolve(pagesDir, 'popup', 'index.html'), + options: resolve(pagesDir, 'options', 'index.html'), + content: resolve(pagesDir, 'content', 'index.ts'), + }, + output: { + entryFileNames: 'src/pages/[name]/index.js', + chunkFileNames: isDev ? 'assets/js/[name].js' : 'assets/js/[name].[hash].js', + }, + }, + }, +}); diff --git a/screenshots/auth-page.png b/screenshots/auth-page.png new file mode 100644 index 0000000000000000000000000000000000000000..99c0e0c43e6be892ce1c042e0652f95da75a034e GIT binary patch literal 7417 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 literal 0 HcmV?d00001 diff --git a/screenshots/keywords-light.png b/screenshots/keywords-light.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a49ec5c7b185d0106db10208b54afe7facdc29 GIT binary patch literal 15729 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

0h4=Qx6-Ko@4)DBLdbUk7txI29qb^?faS0kI96i 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 literal 0 HcmV?d00001 diff --git a/screenshots/notification.png b/screenshots/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..68b2c4b789af5f16ce0b340bf9198adea63a2c7d GIT binary patch literal 4985 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

!VkX<%;o`MkPuj9*^*laU`^}N1<^4-!Hglt` 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®6<0v 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 literal 0 HcmV?d00001 diff --git a/screenshots/videos-light.png b/screenshots/videos-light.png new file mode 100644 index 0000000000000000000000000000000000000000..f3434f464eb6ed9f13a0c3c15ce61cb51163baed GIT binary patch literal 73470 zcmbrlXHe78^FC^!BZxpy5g{Ngfq*C=P3cN6Aqj*kCDMB@f;7P(5Fi2R7%3qMh@m5* zg0vu@Xy}M^0g)yk(r)~Ie=~RHzPNXO_x~!BQ|9bBdv>2^_w471naMp4Hh#8Kr%rL` z>*+vGojNUb>eLx47AAU&%HMZ)Pn~*nN?%747H0qRjXTC=B)rHy)j3*ev0GBWG0;hb z%(|Z=5W8XZSftBwG#g@2QnUMwW_QrGZu4O6ATJkZ1Aj1VPdoU=5%l7UhVye4O>7(! zN{iPRikH;rda7YAs_`CXacaN+peWFHvEK$hg`A=#4*c4_tM)K(dOd48bf9-7=J$j{ z1oRwJ{EX(3(54U%4^I~J?YjtZadG5@Yf|)oGa}Rn z>$F6be%}MAef$z8DBIDur834#UnNU=z~Oi=eV&#TBm8P0v{ZdbY9elACOG`c7}tNg zKORi)TiIJ51?E=&?cm@Zmucnr#^<}OnMRjQpKoEQ_(<#c$HIA+hPAgon1MI#6Z78N zcLYED6VF9I`Y`@&&MM*2WagNAm{99WX2`$&Au(_FzgGkZZ>@1SH9Ksyg%zKN{%0Q> zHPmLMgF+6i=IM<)LZxhd^o`G-=Il;a`m@H@>+}8~+N`VQKO?_K?fg9%1!ATir_X5q zJEq>Vc_*81iYIfBZ`azp-*s<=FBQ4$I5_O*3JCqx5#Npxv3q-v5mwxKE9^=uSv| z7niERLb6Bk97BIvztg8#w)om0WIrCm@WC+>F`KETQ?A}D^s{XdtFsF$-jkX>Aqi1q zl=-nI3l76Rk1D1k*3a&DI2@1YheeV4PWn#1N;n*MthcPUe{h)y->vWg9^n{ zTc+Fj&)H=;9Hqb6GJI>DH6KC=uumJA+c7o@5owJ6J7#w@ynYZvlqz;OY-bD^9K3VX zd^mqkJ?rGSUdW(n!ShOWK5LXwlvlCkjcmY#975m3+#JfjRxFv@8WOd-bE$Q}1ZJg5 z=i)|Z>ow+w%CtZDeCVbx(wjLIKv(5T>?qm^b!=39VflSRg zj6K}H6;1v%CnekZcIMFNyYp*{Un8z6*O308)2@Ghnq3OL#`W#7&7FzF^acCch-1L|9r+p~A$*=3ioD?a;PIfZVFZ!ITs z_QVuM}T^?YtM{W|B{0V$@NQou`p>QZ!;yU*UD&z`YD?>E220Z6jZ zm;vJKy*3fn^^t{%^~0*D-7(p(#W&k>6l`-JRH%PZ6_FAg6upaR9DLyWYpS(Ud@Mf_ z2iP7{KeY8Z8Z@;yJaQ#E&22Fr0}?yiP8w!fCLC4AdIy8kBYsFZia|7sXGx zg@27)MMC*0RN>2y+P(~;-v5E3XL|QPFsG9 z(Ga#N)`nWiAkyTTtBNzydnfQpL$psNm#fX6n&ZjE5O#z9L2sj9ihF+p^AA8I@}Fjo zz}G@IEJST%bTySH-g^BJzFCW850yZUd5Kl^N2fVE1yoG#oX=gaB~uoYK8AcOPL_)i z>6$-Y@;TNycXGI~*S7B*zVp?=OUYNFhp2wRx%+VQHc!?;{_Fj@$k=i9Ouy}skog$* zkSttG)Zk_GheM<@y_;v-HT6rN=|9A2j*&ZY)QR}7_kDJPmIC~P2WF*3b!Fqu|M=HWodfcX?K*3p~IB= zI&L|)>)-OiEGH_GCn9G~64*}`VffW_n!}C&=+8sO^V{-8-F+LBRujd4a{j*osS!ow z{}2BDpHCw_-AZFPS$^50K8VR=SNEHKr=9h3Uto~7mv-P~xzTczH@CIs+v9zb)MDe? z_h>Ho(CKHs(k64jt9coRiSyNZ`dho;g<0lb?9W^*o|12%GjN4#z37~n$<6WK)c%Rl zmErtrX?=njS<`cs^ew8~MO>yI#y|*4%ps-6Ic?;@_kNpShE~mDz8p$E2OF2eO$&Wo zP_2!7nQ*iu-@bsz47KN7 z-GVt10gpgY&S>mK>6HQ#q_vJMZdj4-B#OD=tbdTs6J#50g!^^}9@|%<&~( zS(1(0&08_vLODk}92E8NNeIbit8nLW9iKwso7p$7^n>?U!JU&3d!bIAp{T7vMOb=N z!9igb$Cc5Py-yDzJg#&dQiq+IEPReO5vo}!64$nT#$9**N2Zpu5nT{msB`2k+Xsd> za5xem%4?Ly)?)o`(Njoupf!~o{pWF*uhc1tWlGBqyjZ)$=9Q(>dU^q9fqMM(Ie5jjq`76IUSGle7_LC=ycQ1#O2PrqT~McLrk1R=`$(Y+L;cnS5-v43o@Y}uhqKp;!3}qDVxJ~W$ z;o~Sbb-}t-iK|)xXoVyHJ2K7h8?#1U@4TPj4no)tEdB7h7sFFgv2(PX-Wk~e^7!v* z*-=*_T?M@LG86#CMSH_nRVRIA^j1=${>ge6glrCt{9Se^eS+1U`kQ0`u&!7 z4|R&ITu|2fonyC2n1jYHw1H<)|=iV%A<`B3ZFg?Urc-s%iPi z8;Mkw*?g}WAU7n{Z0cq1PMaQe0;N2mOWd5L)Sx#$5bo=YSgtjkZCNYKfd73)dyu{- z*hPj7y*%mMOm=?iS}Vr!5kWB!svS29vPnatu4gyNc`XR+H5ST|AOWi{_7MxnK5jtr^wtJYtm1Pn6WS5w@nDP^rKf6DZ$(X$Xm4Vkhp~9r! zMDfmx*RI%z7gnLfic0_?21^a4gFaB8jVw#O|I6Bz{w;+A4-< zm;G=nI!~ZDq$={J{y&E``G)*V_2vD0@K<9RospKdo{0h_Lu?U>F-DD9p9=@O2j;3v zGJoPq2F=ALQ^`%$Zf_4liUaiD=T7vnH7ABBy@@l}vmV>SccLTiUDIWWUbDc@|!5_FfH)L{=VdTpjWJDtuOA z`u*xkYqbqRW!Lv?af5E$Qp?*rA|q|VuQ$v4W3GgCPxEfw%9FTPy1zdi@bS^?@rJTh z+y3#II% zx3+dxugG{_za+>RVqm2Tmdbwki`hUDL|tZg_!Bofef;;OlzFr1+`{CD!liR#gC=ze zs$f!o7r{z*?1mFy;ZAWJ1=ZEJvGuF((z(Y!ANw?o{Cq}MI{Q8P5tc_6_vFz}KDjS_ zSLj`{_O7gyF{Hhb`|nSo~z!?}h3hY~QRzX^_!Y@G0+L7fV!V zeyeRoX$`)7pq7AgL4_qem-?kh4@dUiwcJK5M3+oBx-w7Py7;AWDbV)J1mjck zx%BIMH$Jt|UBSulpndjt`j8o)iJty3GG+W6q`rSbC-llP7bjz#tJUAH`^uEx91s7J z?7J7%4jNqQbR}IZS5Rr;ZY&rP7rZF}}+Gx;v z^1<#lNV%-hmHbrEAoT~Ew4KtxYKzO_hlj`gyZZ&_HtRcHQZay^_~9*9Q=T!DGhV zg+sbIcOIZP8n*xb>f=XV78Jg-SH_+XVSAGU__+tgd8bAy`qok<9x7fp_8Cy*s*qU7 zQuB3&XDeQDOX+)vye8Fg?ZZ-=B-a0A^6{v%WiFei>RT~+`c3ORyBT=pL9NgY)tG{) z*XpO|4tZ`g5JJ3KsrRp|aj9KbcX=>*c1;m`0fjQ`vrk$$jzom4x}N`(&(?Q8OsOd+ zHdvK@QLB#s2tKco6h;^|5Sq#`idTwn#K?5r4+{(XPVWhPt?t=sCkg(-$$xIF|LneN z>e|oJnsZFryA%t&)2|frrELfQ%jeQ%kn~?==i@Ak_?gebQYTp!p&w&}e6OoTsliSj zwmy0Cq}SyCD@XVLbPGLceJfu~)p4fBzt-pP+5T~-n;?JmVPlMxP|WX)!z0s}m2YdI zVyfaKhr`*6ccDxj*UpsfjJXy!EBHCoI#X`oZ(I_DNRp>MruCq!iVvR9%`d5V%8Qk5 z73D;FpK(ZS%lHLkbMYg(6OjL2a^OQJ{P(X<^1Q|k8Y8ApzBza+_20i96&-aFx$dh3 z;R%s?4VG%V;`#QCx3+Z%1l(*6bIuy?Wt=g(1N<2wQ*T@ALjv@!#gfX(-= zjXs{&GqKuAyITf~F=1nWP*&rIK%?hqB|I^uVwzEgC^!*2{P96 z9*g^mlhxDSzhRZxg%)!s+GZ~j0lMsNRo2eSpDplJ3^oW^enfsysadmS_T=6sS7iK9 zk@1&R&VGCl(3rHB+v338>3=6%@|UWXU%_blwD@S+Qu30*mxl89oBbPeYB8(C_7MvH znGdpSwOPc%UAj-yB(z9zOlzY^-gyGOm+<}JW#7ffdXX2#QNB54Z=>};TQ(-|#jqB~ zi$w|Y0qhjmXREBS14PDULLM_KSI#cAsSeR~s*%;bGTHE^8#rCxIoy`NZ+6IxFKc{= z5Ra^c-w=G^)>2II*a(XhmiGBsd zNz;+rtFvp!?CJ1o-CY6xjOqQMM`}ApuhsT!Z`rrXDF=mFaS8}#wYC!klvQ511oO&< zMEk(Dwjbb{>d199X!L`!OIY4PErc8>@Ck7U&xR)=@OhSaqLhOXnwkv|E7O5jx!1Z` zx*^@otMn|ZvSFcx+OS}dIfr;GfgeOvfPk)hIQDt8BG(zRxKjJEXX(@6P}u!)+M-n^ zP;7w<_om|>@GRBf2{F|PXpOMu>jr{Y?mb5V*1w)XYfI|`%ffrmqOEyBNOPa%4>a$l z_Y0~J5I7C=;Hr+M&a0xkmlDQDfYMYCfD^t(An1p8Nq-kNg2b17zPmSQ0^QDsRpGD^ zyD291>ErfrU5zb;KY=`yz$i(^lKDDq-bfa$FtYSz!?k*e#!tX@hHe!Qr>h!X*_lKjaN}sl z4`6WnUS$=aE=p55>;tpEv8D-@_LO%~+lULMY0sNfPY!Es;^OVsXO&DM59z?Q^u@5H zFkMDT;$OC8wo)+I4qlIVsbwN6R+*LuUrs1d@yv$kSAiou>PxVtE0zFv99B$H3}gs1 zfcCH6VDi#bCRJ7r2kB?H8zPAK00bOJP|DVUn^f^a4PY%ELja@F{&qeXl-HV1E=4Jp zz+J?WEGH|+0&?<$2@CpNL`%(Yv&`n*GlF*v)#GPq?n*$Q>q2I0bj4`5IEtpU4TZ*9$sxahJ_Rg_dyM^*s` z2jjRAwycJReIRnPXfQV0$%HipfT$-@9+YLapFwdt0+yb);A^(5?A(!KG};BY-Tpif zOo(R&l8)vmzSGZsPTh=SGkk$kkQ`LI3AA4ixC z3K;aYh6oO=dx(YQ5vbgMvh$Kk`AT19;;pfZR55p9;zE20usj4^Ioz)DGqyky4A+0P zV1XZsTX}g;0rkYd&;$NhSPaj|sH|XaqR5+Nr@37CNcC*)kkWxOCN3A&!%kwVBG(om?Mf7A^a z-eo5NEu81nhSKt}`YCi`Vw5IKz|uT^T{+tKhz5|XSBcYMU1|9(&sM$yEar5{8E{G32Gmi>@+( zwW8{B$x1+!l4T}DNLL|l_dc%{f1rlGvAik+s*hD9uWR_8Qd_$}AJ_M1Dg0TV8JfHo ztav9>BY)~QhO`vEC=iG0%_y||6BZg2O|g}>H!*Su?OP0|-BdLDT5K94$oR`@n|X?+6N)BN!YD^V&L{hJ2S zE9M?PlhC%tTZ+SPUOpEbGjbuojgbZ)cnp zF#kg57fA_7S$KisOPzZ06wYknJY4lhtKF@w{JA#r;w7abm&-Rq3_l2K2s*r*18xiA zJE`4+OPxzM*k`<$bo;48e4!t@KHnXm6}jog=nAZSl=wDLiD?mu(u8JVzA#+!wuL># zJZ6mIq^!6;nSEzh0Ajj+azKFW6__sxHEe49fOgSsJA3P1Nu%e$^X@ z6>;}n#xA#+vj(5n8@(y1T_o1}ZVpxgDM=6Xj1DJVh`TEKs(38T}fR{+WLES?0F#@J$7o zo}iA__K{Y}FUE#wQ1TO_I62#{UbnOKK%|;6D&w@CCuWvt_bx|3sw%ukDz*VLiw60Z zS=#W6y#z<9rND;^j0ATR*pT@0LlAP(eyx>VD0iq%^}{v5q~xvYq!HLLXC! zYC_Wj7`Rw0nFu6#$QYg?<2|zQP70k3>6r$f4S>W3aGJ0*I_IXM00TVET8j~N9$1jPPDV520juun5rv<-SRZ&&iBi z8}w1|P7xMH#2e_bGtlDDbj~4IH60iCg=$9|K1EQ7e<2F*+kD(P|C7@-Qfc+(WKDtr zdf_bulx9~VrV**}TfVXA@9<4S1S87Q1hMlWM4OdL%#$p?9#YQIZ7VP*y9_ZVR#|u# zaA*063EhIwcgX?d4A{xEA5q7xGEtvyEfpuiooKn=Rpfcx}SC`y6m1+1jRKNmi z6I+J>LYTui6{W)LqkK{dBS@T5?o}oDuhQRxZQgmRPMbJtI&twn(S%xC8*;~%ia^-8 zAD2p!fekK9GJY4;0M_I3&wa)VLXn5#hj8&~6}cK#|;4J-d1w1!o^e-BvZEC#0j zBc2c;O!Q$Pz79aNfFE?St6`uLr8+8)ruZAa``!HTm4V;z+K?HyG4%Y38C``e#Fk_{ zTe%C)^g&%sfGd{F7EmrWolSE@Ab8vuC9q^pO$0NL4xqwg?8sLw5y!dr=n17g`J%&h zMBmB&+moC7G>7Bv8zYv&vYmhD=SwVyli23FWB45ABn$pNJa0NgiP*=|X zk=0q@;Bub8=iNoaL6H?;i8>tvqi%V7lHHb{>x0+z)x-;-s@dFM^Y~zcDh#^7XM$7@ zxXJJ8UQj^@Q8mzH?yrf7X4HHsM}oGASG&K&6jyeq%CdEXPS@}S4FeKph|Ow|Z!pz{ z@&k#GE@`p;;Mp?j!_E%3%oqRW!OFhoz#E6wGP%H2UZ+6_w~xcnjIJe?ZPs3`(`CGz zq0i!hzw_WUGFI-o^~J0UXEZrzUA*xMay?)sWG9fMyqs7Xq0z_<2ox8$^u}C1^@q3Akq6@5Fpa3)LxmIQt@+#nYNq zD#tMX6O*8Ba4-Xfs(B^sndjBLR6IL>##uu3?u(Z3gP*`lqc!TU$Etp!$-7bRdTBpb zGh&Wj9>*X0p8Uy~f9HGDVw=iAO+1bccWkmg{^cngzGp2PvJsW*b|r&4>CXZpmXL`l z56Xx@a6J|#cMya|voCEx;&0{Qoy2HfDO8WWAcX}kz=yA_P3_MzDY~?ZE`TKHHplIG zE*imO2bu|m2uXnw#lQ-DWh0wEJgCGHfvT&YaXbu+Gk%GG3hwc2mnTQc59}Chvw5CF zXHu9-m9JMZlUc#yvd^FWR)SLAteCvwyim1g2IKvjmzmYCpJIVE30*8$whOH>x2^yR zIvK8tit3m&y+R?r)^ckcskeD3A4Kux3ay8R~5#o+#GdyekCc`_N%{v1x?_$X)I;mF}ci=T5X zBQ9pUxNI);IOXH5pIPYX{YJ{t^lh;nxBV5kkco1?!T#sVVv;_q(&n!md?jC$Zrq(U z9w9vno^VY!T+TM_L(_Pl6IzGQaeM~gvH`CCOv)U_N(%j;74b-0gT~0-?3YMW-@t51 z5cns92clPmq1{^`au%rEC}nNN1~U@4w9Cy>nWB#R{4sD>N}0V}x2(GuYIx?SoP@-x z$E3T$6Q8wH-A`M>1-z}!f6g3&WACz3XX_Zt0?Q?C4(wdbqCfcMedDe07y6J5H?YRw zMi}YkX?zB@N~wU67E4Pj&rz_NA=faJX!jdxZ^*~RXTK`ey6AFY{VY;L7x$=imLVW7 zzVv}6FAc_;?1H26cziX($KdJ(fq#z^_%z5*L$`uc2nik^TC#FS#`@srCmtZ}( zr8Y%~g0Go8sLh|ER`-BiPf7*CeDu-;FJ;WO%8l(A)gHb+iF|vw9kb;-fAU8nz1R6< zR-HOiv9j5Iu;El&u<*!Hr#`l!jwJ^D4w+GYgHtWQ7_HE0(^Wa$gy$Hd%$Qznig*@A zT%ygkR_7)BhIN8METthHAC zRpY^oP?aN|f7$izv*`{OgiVY+coKiH0$EzfX<}2bW&^luaLo5&wXjI9@4I(X71 z{W7p26m@pV>$zr-iHWwFk4dn*d*Ki3p{@39HBQjgv#V@9q(J>w0^6RbEGx;_+AeD1LBjq+uqw<4ks8QNDs=k-G`vl>_~pJPE^Y~O;~ zbHSN)X!ZhF#3x%`Oga8?NhdA2gM$mecy|TY8V6<9SGLh+OYwF@3U6A+hTav|0)z{n z--=qfOZ^%1DnhQ*zZpLoaKB(N>?@(AN? zL(VV(5og^8{(NvD<@k|~es{G-i?C{m*YXmrDcNK`NFBioS=Auhb3>~$AG14)*}ZUjaGG!WrjaG4%+3O`mGLpv=-vL8E`ye3Yv?IC`z`IVEB zW&%P2=ARm%GK6GjaWP~sYC+`^h0D)X?N8h5S9JetSrK*}fYC+BGqOGm05som# z^U@k8HX8)U(H(g~jO5YJ;G)2Wba&KsVZqTfpa@4@sMQr0fDx5Al?hJ~BLz7!0(LOa zs{}@cKU@te>Ybrc(1cRM(tgZ&uWWd`3Wp~*TQmpE~long{rD65J?<+Hc zaC1!<&2}B{>Z(-sao0B)4!>GaSWlqmhQ*s$YI^N25hm`av&aVuKc|mG*xL4Z7&Jz= z;3+87%YA(fgopK;n+k#Tr8=E*7a`)DmsY7yz8orAn+#l*AE;5DXuy{KZ16;~E{4=- z1r%qiq)SUY50g=DN}hPjuq^6dSb>Dv{t!;#^b-hZ(J-HBR#IkGZdPX3EZmiOr2A-v zEkI=kiQy?^Xg|}f0&xtM?y){-B{%l>S=(qKSX}DQAt4|n5{}4XoW}ya&I?yvnwMvO zAWR@+^1Yi$*0yqC@^&Z*K{&Ff7>&4<6BV-H7&wjm6xmKeDX<_fRFES+v+ZKX+YNfD zXZ3^QLh7QbvdLbK<_Keq`PtoECa)|?d$f)R*d`! z9h>+58-l^#zt;y1yk`&Q75kCl-fCqLHdAhhx4BZ^EU)>Dg zOPQ1TAQ%aqyFuL1?=SNIxhPMn@M#Dp<=InvtFdIXBF5X8tP%13*6(X(aD9yX-_2b7x1!gw)!M z0gwQ}JS-FjUuc%p6($W`vxY^brKPAZ{nUL81snSbln^R{rTNV7eYcM-i|C|PEqCz)T&o*p$S*K z&dw}&Udn6eUL{~2Kgkv;0HUGooB;Do6%LQFiUmG}p_RVo{<*))o1DJX0xesvj^>!h zS&zQ!{1wj39&mba?M#s?TU}BS4=X!mC7yt-F_52fJ88w>DkM)iGM1)N4A@fUETem< zvZzlRMP(KPuz7#a1ksr!UYgKO z&CLvGH7h+MYpdY(QWMp=0*>KdAUWVD0+KF5-;xbT&Ce{FN|Zz)f4bbISf$3B#Tmms zb4Pp@3DJbz#`6A1Ed2|TjO#c%$_dMQc5Xyede-A~F*ok4%j`bX*E{miAv=!8MClR0nvF;hG4A= zIdhmVo7v9WY^Th&|L7W<})0{wMj^%nr=g z_x>O?C2>aP9=AL)wr01SX&fZIcl`4~BSnf%4&E4QUbZJ}2_&;oh&pBP)P|bJW{9v1 zPu6d|yWf7kzalJU@};4KI+Rda|BN!^Y2NfGEoHd{Nb-rxu4!~K`OM5D38I5|6o$st zpbfWW<}tltfQ)5@S@KL0gXR5mXY=?yg-hNRdHO7(xNdUe%k~V_I5%rh z7hpU{`Pc{{?c7dTvpvu@f4*~8>gw?Q8ikZj|BDsmpL|J>^h|(K%GJLDAsgHJKq;10 zt#pOQA3TWpkQ|>kqj6*2d64rELF$hXGb46)+qL>1xzoIms!op9M_`Y@FhN0!k+@k( z&c{Bno@CpfPb>W2XItL0?Ol}?)iu#JsQ{4``+J9<&Fb_O2vm^sq_IsvX#x9q0^+?v z2RUviFNq*Yrso?i+v5lxbxl3e3;@Oq4>nJ}c03u6&h;?X=ta-cO;J2E6D|)TnX|Fu z`D05SQ_UP>PbYhn$cr8k%KsWXs3W5fF*s8-#xEFJU0pmvj0B?Nah{i?lpb1M0~%by z7e~~TGh;-8=oqHV1C6lKHg`vA!VY?q=VRrOYq8{_7*Ui06Eam_*`B}#v&1P!2@8|1 zaRD0Y!yG*~+ea4M`A3s15R3&o-}!kUbd^-A&PcOlemLqq(I%#`8D2lnwWOMdHugLBI)hXRv^gald|!k!cMpM=tkS zyjH*M&5Qg{L`tSxECE=>$l`ecHw?}1$4fT`LO#WjoeUkTg8e?~roV1N1+xK0KsHub z061ftQzj@2CRT>RdAzmitw9C$CBcVi$B^&gZ?@fS&&v8wWa(9?3d;rus=nm_zLDuq z;o=Q{ugx96=p>S(f6vHY|8#6DJBI!`9BJg=01M&s0`sH7|54f(!UkaxKVn z8xeD4vL=+YW1fOUCJ^}EMR^-oZSvz$y8a+XO&!s5`iY(|2sI+yrDPy67i{OqNVGz^ zmkWziJzAkJTu@IuO4UkHiGy;N-?_F3K^%mBfQBe522>A&@mCIYr`br#p-|Soa@IHx z1`Z7DDj~7JBhADB0IoDJi#@9T2)@)L%clhenLj6v-@^M*!ORqubI7X^zb<6Km!Dr~ zrSnQ$QpJYI-$&}kh~O~))c^@IstJ+O@Ji#nV8HN;dObs;vGEL3*;yQp*&BFqAY7Pa zk0w6F=i!b6AjIcv)F+ukc>dEb;CXUA)CU4I8pE?X7X>&;7bh+inaVLT>4zW`r7$%= z;_{OdF4c9y{(JUp72Q^9{e(w)EogNzBFo9+e0Ah;rNFXRDAXL5k2woOzA51LxWvk_ zFsZdCQ6}|v*u&o08~RkX_T}0S9grp_$0Z`*$;l5g% zc!}z;=Qp$G*_NNh*DPXNWrE#gH0Bm()C4ywvt8wsJATLseN3oDE{{_%t|M7kjX^HthKM?@j-x=UGN8A{jvRlAen z57Jj7xQaF-WMl*fvwN_Y~6VI z4D5ieO7SWxG`^dc&-FcDeN8K&#_UPKJ>7u!+{3zltg0udl&{}!f%$rbkykZ!a^Lr9 znJG5?;;?_KTHW-k9r9v=?jszVQ44$s1KXDIAvnTFromH^L_gD7Yb!{e1?CG#Z^gx# zjcrxQCHNd(#B(R3v?dz}rg}Wj_Toj*TLQDmcqMgXD|+GyQ8JVXM_t0R^#w7;k_GT0 zFS5x@!j+m)Ma;m;V-Xuz^fE{k10aIWgDW}3NUVnRJ8j~qAXrA;(2Zd@I4`Pe4qx(f zxYBVaNhG$ALlhq8f#%gRW7OzFXYy07Q!)d3h=<<^Fu}Mr5UJyfHO!6KlNHr@@h{;q z#bY3epg|Iol0na%QJw`oCung2Sf%JHh^0Sc^3qdu^Yh$*%N3>4SOOW>o$xP)IjL*6 zuQxLHFHE&S*lwyN4PPJbNle_v(9XCpn$K)RZMRCtiKQ&?^&6xVL6^S%wZ2j@sl4OU zM_idkvAI5^U3BunIj8a8Zz05(dHT z>OX=99(^GY={7JAa~AE@M_6%)igXJTcmCGI4O!ns)x${0ghzZHtflZ5`Wia^*O@Q$ zKS$?vqVQ;z@%H2dQhm(>pd|OB(nEmoCOujYFtp;LDcyPb;?K`CIwihojo^aEIBNU_ zR@$c&ohc4l@0RYS)>~63iL~U06*I|VQoIcHN!?}qFfAxRlAC%SU;F;pGU7gi z1_HwkIu+hP07@Ken2V84_YhAmU}@1kY_c#$dxF8GHhwX84hI;P6s&9!mQk_cWIA)j z$@;k{?z}$Wqh6%24kOaP@JSNA_~M6{ZIYHFEw({#L0?U@UIdI}D& zOpK7rWw4-eSs0)3yJGRB{|?L3Kl@o|{_2Vun8If~`m6tQAQ(&~nwa``YqXxepHC<@ ztez3J{ZjjtT+y%m&}3Mt>|4A0PC}l&V zW*N5cO-{~$`L;xKc0^n<7~+7Iksujv(=BdY7ei3*WV!8nq45^fRK7R0Xv{dgIn>1e zMH0OPHx2*rL-3mm;k`Wc688(8w6yEr6^RY94K_h{vsz1@!MR_5y+djuJbGt_vNQV_ zC+TumB%oSM#5G^R_1$t;%`8mY$|P=%gV4hNNqqK=O;XeFI}bY;g5^WKQHG{T!VN=M zlJLu95d?sV>r%1?%rP0v0AlRZz7a3`<KgBz3LZjf*T!YRPS@~DTKs3?F<(#p zkliqJXfyq+y;WYuj^A=xjV)10H_=zMZdHVtSF!1_9~iNlcrqC?&|ud@;pbN*rGEyN zuDq*({S<1CR+2;=JT7I(6zPn7T*{S6y~l`SmaBw_2Jp_c}Fsdv(~xKL{5eGfAzban*A@0JmP_*Yjot>M@_`57J6+3h{#kuqhB>Q zlUKALZiwiozw(q1ACcpoA-sTj9do3ce&;;4b2+3RnG%>?`ZGIu?K6OihVT+e7lBn5 zUkl*RSVlsX#CD**=VqU1>i7V2jhjyEy92Kby=Z>L2tt}e)3#f#1-y`w9(m)~!xrRG z9h`8gF}rTO0|WRWip}og8(!FztVt+iK=IHtU`saib~nzxvGSS%cedW#E{qrnQ$Rdl zi8f><33`h#)Y~WVT_6wN1xh_)^Jo?)TO|+{Nm@73z0cs$76{B&0qb`x;7S%9KslKz zjnssGDZ|3e#Le_m=K|H(lv6ce`t+#lX#YbdfI+uK7$mzPFr|aYCKOOSJ{*57arqC0 zqkBgVB9O?IOmvzq!N${*c4Axr6#VyL32#XRRl>mfY^EU{)9w|m;R^1pC4IyKbn9_s zNuny1cwJ0NjOZj&zz*_4a!3M6TS3TFC=6!}vwc?K0@p`A&m#`eco|WBU^88FB!#G- z1GvacSKW0z^DzoVmtH^4J+l3M11&}Z)PIxsr-@q@2!06hS!Y23L&4On^hMoZCU`tI z;JeqeOl+b@#;A(_$0R(If(BJXVQyclcR$SM@vxvNc!FXUF8iF+iz@#V_nVnHp+#NZ zIS>-Yb}s=4cIu-FlS8;OFRFUAyK(62R0o;C@(j6nP`Ee>+6`HsfF;zCwb;a@3}F)9 z$mdtp?yh_i9DeLlrFagRC@f{h6GzaZz^=li%@DxTvp7!rw%Fp$a>Ync8-!-A7F?my z1@MUiu5n2W@#Tu+KXnvtjll9QYo#omF2q=tuW?Vf}zM4m5df0rTj4?<8=iB8ugrm(X66C`_so&y00*K8f{LO!pximq(rjo>94Uf(rMM6cNlnelJuoc?u9h=X zo2D(VuIta|_xpVx|HtFJb8?3p@AvyWkK^@vzK+xGqxFZ4;(Kz@2m=j|$5xNtdmVrE zs9Svjci_pnSKx7Y>B@0BbdThGfe@p(^(^eZxGhH47IWsT^%4Kr5Z@gko`|FBv6E}V zKdRvlzIXb+M3#cbO4?$sLhNF>^D)>o;dR=C1PiZ;1ksw| zapdZx%JlDz^iO6FiSCa(L5*_Th~+x z?9mO%@jWXYzS#Zki1GLyCvo2Y(MbbN3=v8ko}mK6Vsbw}!M%;ER{VU2 zX+AxALxkrDR))aw8RL&pZ~UM=FBbWP#4RD)Puj&Ad%1w=8OhvD3FYnd(LdzHpVyJq~^i;*$uI1mIIl~LZcCX0l>Np zsLP|EDf*I5U;o+<9KRqr77NF1x0T6dN>PED7mR?=D;P&a(vRJQYa*RQN`be|nM0E; z<1td#g=b4A3(G9MzlU6K@clIZdZSYl{2<}-hRg*k-|ZBpIS=XNr(1p6b^OXrMSUET zXHxT6Cr@1)PhGTUOFxaN(?N3`7>K*eT|gt;{RDG<{fdEa(h{6+J@R8vId12Ulf17g; zPmp-o^n}wtEXL?$*7EEF@NK0Tn+Xq+2%QgL?ZPkn`^8l!9X@#O+09gD@Bi^l)P!kQ zY+L%Jc*NlX@8bo~4?h(_af{qPG{XfAC83GCA`@j7{+Z$L`Q9x6tai=%(03$dcsLeM zIKva1LrI(Sk~I)8^+AHzg9gHh0GY407?`6-N|>t;Tv_X+2x;i$zr+1!JsW3hyc)~g zcCQvHH_I@+u3%kh)=oRcsfE%|NV5A^Obp&7@J1*6!n0SqX;U#?l~{`Ldrg>u4 zO?3Jxa`ZrnVU0kw3Y5*3ZWEetq5wuST&G`u5Z9OvF9Avmo_Ty1l90UTl}7V9-n(pE zdwuw%!#eif#o6s54|5~kM~BK<5h_|^+vdRs<4!9fqTeR6CeOtmO@Ck{{R|&0GDeI< z=@)F+xVc6>&3`^-CPXT4J(y@xIP$GL<$A8ipT2g*=Dl%q&*suXW5tU=nRB?NIV}(5 zgp{XNRbgs$)zCzJ(uIJ!**=XJ;H^wA7=lO2?y;QKj|rrt@R$*wF~4=ba8?vsBw0bg z)=#2_wQURM@KV}yv#q_>*ZPYR1c&BsEf&f`8MdXMk8c0#j6EzH2mf^!wB~qWYX7QX zZya&~`-G<#pq0CKnSYcSzCz9RBo(@9m}u3fG-i+baWeZRo7X@7|6{d5&82_K#&+}$ zBiy;3j5vHVPv+~!pW(6wZXhIekel<7{m=pa`%5`e|I`9qEXkjZkfflv>zNega?;kT zK=vHQ_m;#RCQlHyq8q7UUaTCGgtDEBsvdw7K?zcl~BvA*4I)Q^)(@ZV|3T%Qq0RKfY=A3?IVt z+Qi1|*wOB4bz+vtob(u}hDW3MW}Xa;|7d=o#7xg{2tV9dTT^0IB$dA~>bkI2VX!|? zxyclg#OTAfUAUA)mQj}xP|1LLZWNT*RQ(dECz@Y0%#6DtRa4p*Cx)fS&eOzf(YC+- zIqv`J9*H!t!$qUG+AB9Svchc%xUgI!)5}`)N0ThZZL(VO(3AJaqqLi)2|&itCO8qx zi^ASzZwaNO(&=I>XezCp*`vaUz;J=_LcZ3tX#urR5NII-;a40)hToUMR{GwZ88wFZ9bv5{_gL$tbVi=Q&g&t*NQT+> zpIGR)!(HaPj#F$a{8KXX7b+?081l%BNDWcU8ow$cHND89uLM}N2Fypo4OavD`CA`1 z<&L3qE_K^In7}nZY`n+r8E!MzvD*N2`<7p4C1uG>e>UDZIKSl}dig<(2oM_j5q@0N zej~c9^6y&To=m5;Vx-GdUMd%TQ-`-k9eH&U6NH*nk5A2Jo5QW^wN^kjj=laZ0G2XD$ZO&OQX zO)V#kfkV8(v8Oga3K8oTs`dk#=V`9)LHyK45l5@EEF(43@N8Gla-Fn35aKdH>J_AK zN&a?brF$i6_IV+b-DL-=nIHe4-B7ER$6*WsP>z0OeQ{3}FmS?ss8$wL1ve1aWUe*g zC$r|&+_8$e?wQMp?u4jn>uZI068_KW^L;iZ_~MbjoiYAYD94x~My;pO`ZKP>hf|I0tt4knrsQaHQecKl8eusxn2IXccWL;=?~ zf`9_=Nk-E(5It>4iR9{JKLHu6@@)|-&-l`98UsWeP+_3FJ@e*-2*%mEpR7NM@-FKB zX}hAt04o8^(Dq#u9tWK-Z?KgFFU-l_!i(C&pmB}rAuQh924xalcbWtB3%A;8`0G5l)E^W-2E0>5=? z+c6oWqr`JCs+)U<;@TI@nj%>&1q*s=-I$8R{Hm}#&)r2`0pWFs#*!|6}U1_avwW~(@N}=GDLb-vRWM&VQ+1~g^3wO+u+xlRWd>_;hhK;oV zh2+AEEukf@d~@b?@Se7+RO6Ri~`I^o2CVrTm^6Xnl(w6Vajwa>S-p zJ=2)(&9--5RWp(f6eioexF!|LRM@|QzOF^Bbl=M6n2C#>*_LOBI&-y*s7%j+8P=N7 zQ%l236VOKD=720mQ>khVyOviVg^_Xs``VzKf$_CB%z+S~`m^Mk87sVx$?P5|;%@J1 z)U+Ao!8Mn$-MqQbPo-ty(t9Dhrp0+4%Jd?YrlPWu4S}w=eE!C{6UG@kA%mtcet%;m zo7(fgBWms0K|tsvfA5&hlYtwzn7TP9M)#0er86vO8D+h$AXn#gZ9>^Pk=Br;0u^uyQiOSt#bU{)uBaL#O`QW8@uQ9`;TjZ&Y>ja#{6 zJsatOUjs_DOl7*Ho|yhI8^qm3wC7*0jeR_NXE6AQ1m;D*utTU#kGPfBVF%M(8`trL zGk{==%so8yI#9Iv+N?-3Y@Dr`dasmWs@A_GEdI;5rYa(tVS2*BRBtg2-FfPYjmFy( z$5$xY+vWrEk}jJrj>q3(fX#TF%Gu_df_q(d!w>3jrGMY=k#P~cw`yb{9`DTKB7Y&q zeMHsD5%=7c8#$$?%ucCO$TBWf{4rffv7xA9bvBsJWjyoY=p+*f?7S46L1kM-gMvHQ z$9eMHt>&B2ip`ZMML~_}nsUam#^8O!Si|T}-@$(W+$Z>;mk;qpLbTXAqFw(EbV(%I z5^a$JH@~z|mwN}l6@AC0JuyV0EYLRY)o{oqo40qe-&P}g3-Z`0+@V`nwdo5z$_1Z= zyPNtB=7Jf;%Fq{LLN<{{Zz}R6N^8F@QmK76_~{v^a_wi-vuF24zq$*)I9+tc;TiQliDv?9a-C3 z&5Bp3x@K?`m9y@2L+o$}{B+2^Pp_IOVD(=TYJ2e3Y?k{2L04B_elHs#dY~@QI1Gy| zY+MxgVg(Sfcj@#$xQv}8rKZGsZ?^ULtS=;dgJ&}>UuH4}V z#a2{f924dKud2@c-9|tmLnv3%e>IYCfMkO}g@tqVJOmhr!W?-84=W<45V{ABqk`KR z|F8teH9Qo`F=8zJlAX&d7As{K$M}A5l-oASoz%u9O-yp5*4%TT)g`;FumI{flv%L& zC;F}v@3IR02P7w?TUqIAkI(A$5!9zV{dnooXRo(CdY8;vp!XM4+7=!wOX{kx$q#NG z#J;mS`BMP)O90xjpwhHpdG^@CmlJoZM>aln>i@oL5-}R3$TPV4Zs-%rz4v)p@XEih zgd(1C;SmKat7qvf4=&g@LLvX;F*S*Kp%i22!j9c0U0Z8xM+6qzoglVm(*gI#hU#FP zq5exV=H5+aZuiZ6OmrF?wu{Tvf$I{BrhFzxlbo&mq$L*l`0PML{$#ICh++X8<00y& z#Br~&lD3UCE;@g|c+&QO-w_@&svdn6Ibc7c?x5TxpE$+am;U095fo~}wb^sV!9Q{& z_4ow(kH9$3s%jJpD{l_Y9P2%_lTmV@$LJD?S%^oswF_wq(>&3y>9REl_Kv)_yAK5S zH==DCp$5`)DcfO(xH>mOaYv`{>crTWDw@40AG4JI;hIOEG&29>MpLi!Fw+{>&I&p9D%OhYeB#O*OY_|td&Yu=c9AWWPs|1Vqw;@axMolgWcP18rUJyYmX|xUg>Jv<276-ueDd#cQ!&?JVeu zuSbexf;J;7&ZtzLd1bF$?;mD-1sv&h2p%%LPn;cpC6C&=T^H_f>shSB+lW&Fy<+fm zlNV0%xvQoZ9`;AQ)rB3{y=v@Dns_FTdoqu-+u+DnrxmJ?_t`WhXOR z=WV=<1M_4FSc{_|DpLo`jq+Fthw>oVX6?ya%1sZ01Yg{FC{rLS9bKQuv!@y)orUtj zF_*p4^XB^y_Y3Ew;8^ZSAt<%@*(CkYyZxF>Nh2equ~Us?&hz{z;gy)r4UJz*s*=mc zOdUuf(F!By4EO|?&%h{d(k6{|Ls#CNLm|&q`omv+xBc&Y{1+LYQR=1Or<0}WI73U0 z+bj-?!}?GWj{AI$5-C65-uUw5XII~WfZW@=0{j2Fqk14Pm)H$xU&sZL((8x+Nz2j5 zJDi7qQgv-MJtP;DBVK33Jmvm;RAf@M$y8Hetvwzpi4AAqQ1YSZMvP3IJp_`Qpw*nn z4uN9-?ht@Q$Yuzmluw(xuYf%S>i+pcDoBe&I*}sQjmu@R^DJ&20_GXFQf&!TAZy08 zW{sthUL%Fu6i1v=q->YwGoD~B}ho)bsCr{G6do`J@>!a z9H17jlK>#p$#@>+yF0)jge-MVY~g>|nC^8@!)Wa)r0bekVxZZWu>2Ek&{>lL~rV zKnxdr^_)(-P{lpdcZ{f9mbsI4#p+gNeYH!}p~lHiNL-xagGZ~^D?a77W7u>RBrct9 zPHm@Yz235+rc+fJIv}m20jL^aR-E;u-ATJ){t@-6f3vGr6WxuPw)@>8v!G_i)7H8L zO;$AnP-{ddSQRu;r;?gNf^!|D@K#9$g|af_pa6#pj9ZnuO^?pB7VYPKri=!&t*w`E z%S&VWrj#p$FBmr_?eL zwP%+daPqEFP4*~tB3wju8KQZL$gx9ps9NlMXlZtTsr7xs8{knxc49=|8!KS#te{^u z7-G96P$hm`J9XZm^CV2 zpB;j?#>oWLc-f(ZC#Z}xFf@m%<1Q1*(78m1*3-HG^Hi~5mg>ndJGRq(m~r(Yy0xvt z=JC+eS~QGv;m;i5TSV)Z*3TYAo11(8yj@lre(Lqa7*Gn`Tf+QGK;N7DHsdEnh>eBsHpDbWUr|?BkMv*XABZk;zNq6 z*O250%~GVWAsT68N47N(m~jflNBhLv zGQUe0T_2VIU=YxjpOW=gC9%&2Y^-sH0)A>Pt=EWX3(lV@r)7CsO0PC+_+hTd)jDB(d(AIPCpo37+H@aKWK3_D3 zh8e?@L_^(z&znrBKggi>o_;kZE)sgVuJ3^D`%(3ACVqR_+Zl!ZN!Ro{48@O8^}7-E zt%bpgg_=Rf6rz7$Y;Cl(D?5}VD1Ct4724VI{N0;s!(34ZUZqcE&vqaY8;U@c^1t$X zp6YR#UmjyFt0t5`_)?8GFJ_rX)^zY{c>lr|NEV$$c0r>9**!=dl>4(g!k=n{vTDp< z{LP15%gy|(Wj6TN+}Y)u;e~nO*B8083Nbc&d&kqbKo&(@m9D!l6nYJ(5ruYFuo%ys zabb^>wE0cKWcR`sDH@Aykc$NzyP`%TJgbK0j&{+6VM-JxzzskVHq=&{b7JBw5DNJV zZdL)+_X7k4&@fB|0%PfT557q&S9DZ`g6OcMCN@yhwj4yy^<DUyOW zz_Ji8KeyhbFs=t|q?!0c7m?l5@oChFHb9|u3Ot)aO=YoYhA5&?Y2!yS!$1JS7-j8@ zE1>s@$K5a#%Gl0jv2Wc~hULxrHg+Wg6y{i$lb6$;ATt}8x2dYdN@i%CaAgFndBM$E z>igzd0KENu;awc4RhPV39T2mvCqE!t&#k5Yc9O#h7R0*gdlfQnL75>Js6r&*X*bTT z=sUy}>w5ZK3I)%W6E}1|l@A*hztK3KJGdca=C$SO@aK98^nN=UF*7bKvVFZJv*Jxg zEk{7Hd1jr^A>J^ytw5?DsrI$7!F}S68y78Of}Z8?g|Gh%_fKdXcnUHchPAoEilEEi zY+59BO-du{pXO{r60ZW~+K3 z3TYO?z~PyQ?Cg5h#{zY@*)h;7{XByG`Byh}53PJ{0#ebsXD-OfvRIUO?Y)buw8BhB+UoZcl)tx=&nQR%mE1 zeBZ{WE=`Dk+DG7yOW`Ah8qY424)`;)0bEJ~N!TSi28V;Cz?vY2Hqz4@QB3pvH=NkB zJW_{8$f3rG2Njz)7wht1++_PrB=!)}@|QAyv@l69v}dmF#;Ts#fKhCFt|Q$==Sygl zBf^Y-;ezGB=Yf&Esd}m>rN1P>@q%4kVqv&(Lb-P62v8DB)a1Y1cZ(fho0_}*uuv^Q z9Fe%5w{*8JxtL|ZrN-4sXO*k8Z9qR#V0-t0fwv&I1TW76(2 zvwn3lqfmyamo*NHUZz%Yrk_aE1txiO_SRj5U_eksE|fX`yNHoUa4rkGx@ zUI!zhYUs6%6ox7cQ_6s0WB{1>E>N?o3Z^y>@HI*)m3nfybxd3ax1A@m7y9@Gv`{ej zY#|j}K*a|T&A?|KKycj=L2hRrN#10|JuFj6WvRZO^Gy|+K!gSVB~2NzNmuJa_g(Q% z03KB|O}W2FJTD<{*LF#*lmTw_ms3mB$|mdAKhP(ImJfI#3-`XU@HxVT`4i)$sy6bP zm-D=<>wtNE+W~=hV(b_{i^eGKGs$9-y0kuX>&SDlRWIUHJsMJch&&U|SV|x3nLjYh zf0{q|LuRvhu{QVO_>n%syF-$#6IA_G*xlD<>e3r7vBsaS)=FP4EvJx8{`-ESrMJgH zA0Kqpx!g@)Ygeqx%FIXW%HVIrsoZ>HGioGgLuGLCxc{u>%J*`MvneH&o~9EgMK2}z zz1{B?s#;GfUwV5Y^Z7^PEC)}>1*5PhGqp-u>CXXlc@1c>_{5~C`=$PAw5T|BDJoA9+!1)bVD20u zg!`f#OM8PvS(H?FK79RZ3echbg49BpEmUNal9wsr!*-yi9Lk(IJ6IdXttMS&J*gqX zBJ5z*$y{PnoR)K2pfC0%2Kj>1H8J%uKQ zK&PqzWQu;P>tYC;q;d&1i6Gqn%pEse$^l}!w`>cj&To#Zo?&*7m>a&5`B+sr)d2+z zK0$_P1|aGg=sy720OwC0rVb5RI*4ZP6l$xmlVjHYWf%QB{YVkb0@hlzsZ-#_Wu$Ou zxmNvH;kP!ue6?&pGyeLOUCl8>>jUpIUsE0yH z_0InF?&&*nJFmV4xCy2X8RT#8@E4}I^^UzLVtwPk^;r}RLc4lE8Z=*z06|Z_<11@v zQ!J#VH=O%4ai`3UM@zf7qBXdBoRnd%Y*{32G5hYYiK6o1xUWdah5I8B^^FyjIdM?q zC#37EXsyN4@cv8eVCl{FOyLl_$DBSl6Z0@liRXE}M|mmM#Y zULJ1{%DU?2^+Z)`<_y2I$9ehZC(r{kG&l|-pikZ=%g9g6OW?F8YZ!bWmM{yS0*}(( zIxM`L#Y{8y&*u<)bcn-s)xudU_DSWNihh@`e&)dD23viWQ zD*`u)8i#kezG2TG(%(?hwa>{-zv$}!Zz(>q%H;I-t@yw{iWiVoyQw9Fsjv&r%i4s# z*T?sTcOHK~c~Cbd8!*k_7y9)VIrlq#-9b9lR`>~iHg{pi;;YTEiJ@h8cB8H1$J7LC z*rmiFN!?bd<*C3#W@ZFJ27l ze`=%oL)Nn`eLMJ3A74j7^0Ia3mMaG7>doT5X})cd5to14JGQuyS$@X+9nj1g1j`Rz z!!J#MoYuWxEgN%Ft3P@AdOu0Bb5q6O#O2{5(r)L8a~h4Xx;n0?;E~N=q1qHA8isT- zVUHoSrg`{f>Kxe;n^H3ToX=#6lnjsqnA+3L&V+t!qlFA|wPX@0nJ(psI&0HS2KYOA z*a&AbL{j{6{_)F~nRq7Qj7g^4R;53`SjK<`A}Lgpah=--+P9Ck&d5v?h_eLXwG}9C z{8TrY*-jx!_@nS6uzYvjR89i{2*!OgOBc#Ab%VL{k}8ev|CirhKU7CJ$nYnTB7G$M zbIAGzm33`Kp|CcsP>gV>8BS$w?FP(K6U?9j=AkU}tuMrm%DP%mvvt_>PwT8A$L92b zoqFzI#$+8X`>4fon|5w@`uKR<_x|&yar*1bK^Y|0;7n}_k<0F*!-uC4g|hF(N0gn$| zdk(r>=d(RR&A*y&?gu!F`ZjV_Q+v3h0N(&L(G5{KnLE&*@d%6@y?B4_UpFoXT;5d8 zEN*l$bglrKto>5sZkn#X3|oE>iJfi9FNF2} zHclA%xxS_78X=83vO=r&yF#xJeNJZ z%{n)>nHM1J#IDl<7U|#DzO3L~37NRXc&^X~Re5}|&HToZ(CCy~4B+nApK{-syT`gM z0dlEuldS{4(1Q|Iw0r_z|V5hSusFS7_-)1|>gm-z)BsUX3b>ZievNjVw z2MXS9;B5dm2U519K7SwIi!0X&9xbU6A8t~$%#}L{hN7+ZAX==VU5gTCoU4}wr1>US zJVSgL`WGV@S8o9Z*J~g`Zl(#JoXuV=4jU0Dj0r6;hcrg8Gb5|_pbW31Zo)dP*9&@+czs&hFnffE&XhQ<(J0ClYNw1-39(GgbuL(;g6T;se$d zYW*Du7g0O?2wq%L&G+Ld+pz#3c#TT)EJ=y(JKj-KIG5rHhV~;-`VuJyCsIy8G}YL) zVgPDV&5Rr76j(gO9wku#7#9VA!E$Da+C?uW49W=nJAjg;XDk91h6^4rsLh^%ZV5AJ z?IG8bcdw&&&6bTumZxcv)xfEypq$tm?bfWTwc1b9Gn+ls+U{jG7wzq=vIH-YoS5K0 z_`RBTu%7n}rK{bbt$=6OQ3Yo#4akwpe{$hE~j94 z`>yA})lQ=)RRc4gF7A0$)t2YyhUr=e&F15w;8x?Mo1RYd`3Fl+7W15OC@-#{`r0>a zGx}s|$KNk0!)Rt63rcGwapl$&IO>$&&ho{X@u6XK`sT}Xpd4O&Q@1dQ$S;@Bi*wl7CE zQCLvUDgrXAWOgBnJI8WLPq?yC0<{ee01X77$G)H!lL}H36g4-lsii|22jc}4*~Wgi zTa|8fKh=COHuK^+jM%Ru5+W!)XHuBxZBX1e}TWK{|V$u?69IB_r|gH-oQSzh^X*u)dsC=l8pCF69C-Be%` zEpemE2}8M;y89mD*sYi6UKppn$~8-98@03nb?yUB>mICbWqrrK#^64gMOP;F1F%e` zVIDXJCM<(Ss?zatW;RxWEZ+8mFmhdx{iQo!H4CsR#}g#&NozvV2uMrx$g+q|vwUo* zLpX)^fTpsXIr2fr$o`-jNI%|!;tk4DvI*T+_6qoA+A7%cjdEgQXr2#;CJ0;V4H^0m z|9t!bTbu#B|3z{hcFZCQ9pXbPgS4dYgHU*$s$Gq{j=Urlc4+a8Lj8u_7}#y;#IW(y zW`Ih|ai=i@gZ#JYo7+!FGWd)6*1`E$LhL2o`Mg-l!XK^r=I2Vzo&>`s@|)Baf_JO( zOh9n)*3eYqed)&{=53E(TKfx=nLUmgKTt?Pr%BTx^oPhyEn)t+#@8fXq{boJyX^r( z(!SVTT&~jq-q9$2o3y>-aLG8AFz0tU1o*Q__V;(5Rp;*KrDpd6{&1DEk2tNr+|e`o z?=0LvYnFOfMtH8DJtOEpq*Oqfen}`Nl5Zq!zBfkfc*Sbg%{kyY)}XVT%{AE>lGAWF zNfdwn!W2cXL_Nyq4Ap+G#Uum8Y>uz;detPe$J;Qmo#$o%XH-;8n}vw ztx*MmTtrhcAXXQwg-aV*ctX$E*DD(4w8Ot_0=6%|CJzup0Iz~k>;jJwNt){GB=%Pq zjJ+w!Hbm{QtK2p$hQ>Q7$@-{rlOmV-*)Aqb!wLQvDp$5xUAp!guUOz7cAhH+fLc94 zt;N140uJ%6zEKJw#H5tHe^l_+On+TL@-E_pGJenU4Xx)?EB@ArY8jN zPDu-J-5bhGD~1HAV6pWAYXSuzSU@ycEzly&SGp&ep%oiXvsEnl~h&VQ?b1unL^wq5`MBNTJwAa|a`UtHVg(iHlAys!}S03h!ebVboafD z*R#AIy6+t|g*)yW&E>N61lfb;D9QJ<_8wQ6>AE4T-1PQ9rho`Tg#;5NKQ&SaR8Nhq zh4d6b7~Jc4ILY@z&Ed-_;*IvSF(+M~+UMCrs;&h0fUMX|r0qK6Q|(n!#ZuhI=l2=W5GYGyA@}d^H>Q20^kb9xojc)3 zT{KtjTX(O!;uwAKEd?6p0ws3iCMl@lA=DrSo=G$cFzq?g^zdez-}2e#(cUSSiBE%n z=)w=q7jVi;?iFw&%@?|&%&xVbxinSJcX=xPznJf?o2MoXiVq9ivuz=%rd1wyn<;a| zXro%OEz%C8UI1T%)ZH|RT1v^%Lg~IoyKjg+dy&~|BH}grWqykMfLHK$MFV;69H_}s zUf`p{!vGJFdmdyNivsOMa==IeBE*MY0z5s@cl~7N&|;g)NK!|eIHR7Df<;|oRHuN7 zGYZk@tib&f8iD!(*>)v*14rYE!{hQMZi#o@MA};-&%POQG|#-dm`M$PV}l%W(3dYx z-ltWNC9l$Q?s+>-NE->DU3GTwa{|G0t}Yxm^4fP9TK0<~GTBOv2X95eFvIn6*lIc=JA zHB)IKt4XuxbV9%e_Y;A|xNqD%FKN>5qpJ2f+4443#;y96TL>p7ZWOI^Ok&d*X$O9Q zB86sW$J~VQcV;6aZ<^t(gIm;_ONO}bt|l!(pD@3@Wy;&sNge-i;43iWQwb7_O9nCi zXCy1Kp`-m$cJICSwKQHaONE265xnyoMgdN(;)i?LrY@NkT6*h2aVN#=IjdJAMByGU zjEd8JCPDwiFI@_&l>kXin2{UQTqDlsvBE1)*I&5!OVsi2e-nt5c30=l3D{wINu`#C zrGCXTLub&&W?@?JXQ3OnB*UUoUymv%BB4Xu?a}y&=27ZEf+9jYAk!l~2AM4PT>;!^ zhhMp7ej(WBdGMfFG!x zU+39Y$m3lVG-_ABHyP$swm4!EeFs07(w?@58$^c#aU=WZm4Z{$x^goc(>8I&(yrRe zcNJbrzI?7uv^_2OT1mXu2kGq68EVgTAZ;oY6i7)&brC$dG2r#Qqp1+R@fFMs)N2`F9 zLL^o8*Mb=rX$q(*P6SabMHP4C`JebFeBsBIM!eVg3vl=Dv!49cXYW{(TeT4A-$}9? z^qiCNu+?Ldmrqb_JzFE1g90}@AfDc zrb<2u%KmTzCLLTz>~gx4_$1XPROVNgcFoC8fQm{UL$vSv#iO3<0)F*FTGOi9MO|QR ziy{|9OV-uzH!Y(8a@!ibfJNnkB0X5zxRCs1h?(qc&UBE*$QZdR0_hquA)UZfO@d^p zdOOFr_zQOzHia5naMCau^T1csc9Z&LNQ+CD^P`6;ZEcuYQ2Mn?%S_E#7ysD6@Lc(> zf6uHmSKYZ1A*J)~KUu+(3BS#q2EurAS!c~lYX{BZK0hIvCtlwd`#P(=G7`QrDtMy# zrOL{+h~l4GZrnh>$;8ReNZiBAT0{H6-%pP_%wPW2z2xR00JNU`G4x#ibMeHeD&&lu z!A0Z1LXFC6ZwibyX?$oq+bh58$)l5XDL~{)-;9H_yB+sb5#NX)0%DoGnmnIQ zTt>)e>s4#C@m~3qAiUzAw(q!lGO};S?zpu3>4MvrnbaCpN|EJrabDv622ZcvSU{O$ z9mLU9n?ic2pc;dAH$v%6s+b_yX?FkK;%(YG-03>)9QGgQUs=i_^TIEA6dZz$_Qoc* z*lcWEwrV@>bhauE@GE+JfzLS8a!63@Ff;0!F{^XD;sEKYIhxeyjdLzp14A z`BdXO`lPVz7s5`z{*e+1lP_3gU9Z>XIZw%k z>Wk#{Mu#ujbv6hiJxhF$Zn9?+x4c)Tc>Tz)tN70Sk+sfZIRnx zvYH%AsrYR1y5I73!u5O4coY9gzqWdQLGb%!c8joYv6;`%dYvO;NPSZ|KNi@swH3Jh z{rd{&Oez{}*zj1h4T5tnI{!Ey(;+kqVQsxnpdYqgLV9QXo|W}qy{daq`5O>;!%Ay7 zKgn&|xT_F%&rJ*UVq<>I%1gM;EqhkW?ZqYI6+W}_r8@;BEvBWMk?03Gsu6=+1Z48% zs;fc)R%)UzCGMls%)^aY!>CR}jsd*h*sm-?sKNfx>fX?~Ue=EjzW7+aB9Qp%&{v(X zAVuqoiP8dUWlW=aQWU6Cm>oillp9HAoX8-UBVMj@Zc=34S#HFW`oj!{w|Hy ze~H(;Tu%kuBr#()9TN{eYrkF{Gam1+x{0`(v;OZwLD#|f&BVxqnEeG^k277I6t1j7 zf+R|GP~5eFn4g9_j(5q$T91u`yAdNJ%m`qMEE_53=np?WAYlmeKNz&iK0l~ve8hX> z$VYsf-SNKhpK)%!mTh-GWT_#&|B`M2TaFsAx9oqH>rD-Hs^7YEDoA1-@QUnNm=UF_ z?dYW?S%=TQMt6GOyz#bjBZA@bVQA<2NfXdRjN|7aS$1fsh*K#>u(JV8K>A7JK(BBA z^gerCZ+vh+Pmq-Ok9Oz0d0WwgQx`7F7r#y_Kq_g>E`POo7gFEkEhg~OYB&iecKh#& z8{hRbKb47ROA&92bv*Vi-Egyei?EA`=>>%Npl8HdVC7~vlM;O2H@z;d-YDcRsVzNI zv5Ryy{8hQNr8N-qu>Jga)QwylHA7Dkm)ldv_}|`-6acQBAYMIN&o{d66sg`JX0f)% z)V-f^=$&J@t=bH#A9Poo@T0Sy(PQiRbhvXZ^{+0}vHNVDc#NQ+XTdYd%?dq!wChpXtG^~Tx_QI#SMK8# zibBrd92du>?g(OX09M5*qTyxH z%@Mcs#D9G|i^Nlrx4S8>=LG*%Wb0&A6%D>{-n@bSoseuViiWfR`t7;y9RbwF9nS6W zHN>`8ZnogeCM@7dJs*d30s&oi3bJdz{9X6Y|BDQ$HUpG0%9Zme!X-%w1cBMF){_px z^wieg;}?7FE!s%&MhVXUri{Nj^Y!o6yOpwgPX}`@EDbze|E}70vhVF?I!8J3O5wqZVcvz{3=LlI5<`$q!Rwb@sZgio*w zNtVgPhE!mKaq^6aMq*ek-zQ2%!IxO{^*68Mbcg3hxkFl`qtqjWY*{Y);&um2-h)8L z0X;i{Wsf&CBP;L*rK=E)U)QhjtQ;GiR$RgbFfw+BM%r(MRd<~j^ES)wQ|VF%+;4C6Mb+ojB2PZn4Db5(J{^j(B&3&Z zM7@1>pj`R)i=lqSUWw&9k4b&U0rL4eN&U&Hty))dzyP^h!x87kQ?^Q;M}nG{kj^nB z)hTB9DhRRm^_9Am_o?wQy&dPLS7Yvfw~S}FF;xwYzv5v<8gz>^utM4_%?0hr?5J~3 zl;mbgqe_K$OeYotA(N)%%gIlIwHHfVaCMyl7o?n?nVupJA9RU_`H7VJkrU%LRYbOR zCI?Jn4lBvC8y?ppf38sHf_bGWyuaUm)U8Yaf!$BPw#z*unDDf4LQ3z=Ln=DN zTHz3@H1P}{q04#bli%x*j*K`{vFEgYnYQ;g6X2({NwvzXW5Kd7v(dt&XQ!VuI@UGt z6{a9uDQl`za(@cG^S*0Th@SY<YP+(_fzbmdmzSsC|+Ms6#5|?0u;#n_sV+eGoKw^4;y|Q6dG{Mj?biFXvnwpJqZa zAJ7va2s-GwqrVxINw@vjxH{%BI(l#)>3zO7-zfF!L&+c3a;?J6Z#q7%%pg%XFtnMA z$$d=xSlwO@z{_oeEGgJ4?I4B{iQ!SLc&KJ9keU%829NVMrB47`lt_pV=xn%|o%)J@@QfRSF6stJxwg`Qv7pSeH_88cV(B7pm>fn&FOVv)q}o zST4GGs=MK5J~Ic;KJzSMXDx)?HvxNMOK~)*k}0VO+ahytGNl@qQX6nSf#qLvGmcPH z#}k@xB(WL$l3TDNg(S6LcYF&DGf^E(&|^n@JC^hD3Ht`%GurqbxkJ9Xiz};-VpG!+ z_22j#mw$G+bN~kjcHyfxzR=pzq}HB3y7WEsDTozV=}7pHlW0#RZ+^+Q^pikM(K#8 zin%VLDj@}49g0F9rYnCN1!ZNKM`3v}Iq|t%epVJs!E_2IlOzm# zl?fRcdXXEljKAN9tZZx7OB5}qil~LlR!Lgn{YqSIG8xbGRHW3!fLMz{6pa@$i;(G5U)GVswd)m~^fBh8K0Lw-v1!)R0!Wm;jPqYpF zQJoZ)6T{J67>eyePoz!#f%KKWQ+Rdk0?s)OU|Cu>h9eCaXUVZN+=Ph;5@}-kGN3b} z9+sp!-1rka+%1`ZnpE8S=u3>%m@t^$h|%~u41|Hp?%$5^66}ksW2$PyiFitj>`!RM&P1lG zgchc$Rve6N$3C((UWXMF^cN@p2(a=~sfh{v{P=$Kg*9Vwm=Q~uD3&mBjQAVSAF4+; z%j6F(eW2buDG7^d>(Z+8(EGN+!ojs+ZW(1$h0B{SYN=la(+Brek}dYBLf)KmQii;l zB`BTWfI5n$iHWG5qN`DfiRoun5v-Ym*kIg?{r%^#Mz@#g--wL)RVZV7$aHT;KBbb! zc9rg4jWqXKiisjx*p9SC?TDLOi{NMT5H-6JS(K-ekxwi8MHAu|Rl`ua6kCSRV@>yI zG_n0eyH_B=vjNGzGI6d)?4lNycFhQ#SB}8BB`D^=KVm+Jb^M)W-N(^Vx{T?m20pV2 z5y{^RTO>3hl(G^+C^X^8{`@3Q>*uM+N)B8yN0MYl;TWlzLu>K&o1bW-8XJMk_saUG z@83jn2v2fAC(`^KNN2niGJ;4jN0#t5)aID+HQy)k{+$=UKxvX(`EZ~(q#uQ$gUDlg z$%|#o&Nk!J!Hc;4?Om<0P0d@#`j5bir(Z{N2}iJ)W|TA4)I^M+Dwv~USRWhPAey2^ zP!ny&@%3l5kyU=5AKO(hfmXi95HSRUy35`UN5P=B-A4%#xV+_xDiQm`hS5%$y}b8N z>i1vSeHA_OZyWLV`r^CLm)Vbx&U~tsCW4w*d8pREI{S|L4^AwJXWEj#K$A8d1 z%XQ4|^Z(uD|2>c$d?@t_JJh|0+P?7n{`BXsFdA5eJ=FuiUw+W$aPCWj1^)QPd-&}? zJ&XBsd@z?u$=q&Y$GwNwUVRnMJ@-7zJ~y~gHa_0L*thqXsx}3g&!3tmd*h8a5FeMw za?cI(=4+Gj^3TT1p5ck-C8f>sWRjYVO&hl1hnu(5u04?RuI3{rap#@)vAn(sCciLT zOKf22*UE!LiTrR6Z%pjQL8hof@eMc_*FbqSVOJbw72Aqk(K_r2Ys0S47Ho=;+c%8B zC$}*9(?f0BJjY8)2hkH|z;Kueqrpt0JilX1J%ipB3d@S&+#XE6e@BV!k4N5Oy4InC zZRzT&%j);FHuLaNnwK%*0gv~j>)1}Ur8|EBS~z$WdNLJJRPrxxcDD@Rn-9N)x&R`j z`c(V-4%j%p7a3u7Z0GGtDE7Jyxck)uTs`_0tBwwqYs9-Aqn3?o>f^O@A0so&%+k$- zL{=mCr!{qMDHikMy7{^{GFFxImUk=~VvWq*tEZbVviBetzQ!q>F#ppf5D^5y^d zdoNyo7lqjdLq07Jl^Vcw6+}c@K{jGWB1e_oE3e_gzIV{uwi!809feFf*#S-_ zFf%eEJFsWdW&FfO@jy-@8}65X{Q+kVT*JkKf57K|lDQ11lXmy}hd93bGU_tBP#9!a zrDQFo*BG%FRTNTdRu_Kw=tr%0aXa6A@FPls^k@njfQ}N~=WTrZ@@M$`&5tp8L%NQ9<|M1Ydw6*3C;aW554o)m z@a-S|itpe293P+hBPPO{u%}^^CDIK|X42)@^WJ>xJtn4SF>j_f<~=_jW}Tid-@(nB zKccOz4bMM61O9#?c;VV>xXu#Nq zb>mRaQGET%U-8N7AL1vOq?hv{gQ|9l@#pKG;e$87!pE7y^10tF)CG;9%WtKn_c$2;7g3x+Ax^Wie*`5tjuv>O_mcISUT=&UJQILm%*gFQC1Hg%WBTF zMOZM+9VVBokH7u#Z3O;qCK6d@7I+0>qsht$`6VX5{tD}x z%((I9`znb%U;=!7Y!{A(HsU~JEA~b*MMbn>E04jZhz_F1R?2F9P$O1_H)1%w8DPg1 z72lVGA@f#$o5cHv{;2-5S8WSwVE53W*T)9?LYCx#c9@v9I+%jYQ6{wbwV|DDsMV*7 zN!S8?d>a~>^sXJdtR(xub(rM@m#{P~jBG?%B+I|31~f%mQOdSj6sE(G4KF+{8(j%< zdG9vlMmHfdq5)-TZFuGM`)VNCzTzlW4(@z(ap|>-?;#`H$iBisePK2FEo-!t%x!$| z#y9Yuor-r}`w=(TY*NA-kizYy$JF5m5ukkWdm^y!5b0ZwdB4x&`uC60{>ztn+&%IT z;nT=vIYPWD5bjrjwJVM(S=|>Y@_qaFyn+C)Y9%Wlk9sVcU;c~!{3K87=c&jl(xVPh zo;r>U?JNPC@bP;$wRr-_xn~2T4Bma~YXmQzs(vIhQlHrUA|`LkP;pOn$}c~;i^}|NWJFl`UI$WqEyxLVB7Bqqt~I%V}wnyltiR>n318?9zt5z($)dz7eFuGrwZ zT|sUHosVapnTDL4d?ld!5AKmk6(B|j$MM^L{XJ$N!1bVN@wT)-TvfL zq(3(oJ$`Z65MPM>x%JqVS&hq!*(q5f{_x&k*)ASv7wcGly*|DNhgs(B3e{l;rLsL# zk4>Qlem4WwaD8)x8Eb=eSP|Ze@oXc0dha_XIM?yez9x_3110>s?|zRrcD;a!no&5C zD5DSq+Bq;9yezP=tr>l-Xjx>2Ibalx?nbl)=ujQhz(Gc2#eL`TxJzR_;2|ufEQ|d* zQ0k{cnST>XxSr?Rftqv!?nvL2=EwKm<2hWtWH(~j{xbp$$mBUr@ozvysukb7$7A-x zB!2k(2iHJ1i8rqO1xb8Q3=?4RyejmW*FsD6chq+}edsD4^58U-3?pD(4a>X^gn2fg zIJ*OP`TRXnTQUOw`IT(*#ibd+HGvQjOa@Kldb> zQs_r3K>E&BYSE{ z7n1p0d-ViIn7eEwa(}~5>|_tHf5*#+@@+;2(^m$ikr6P6biW>!m;;#TKfsdfjyjQ$ z85;s17 zpu*oxzWWx1`T5JALeG+BIM9J%ex@zbh?{@Dqjpb1#6$Ti@7>1ooNo0eBb&Lc4NRjO zd3@GISg@&j7?YohtmJ>1jNZKdF8=v9zsKAeo|yaGd>C{_h94e7DP`|V>SZ|j>N{kl z=c^k+7tHs?9Qj*6xw<#o4e!7I0Y!CRUGI?Z{^8pn;=laY-{AS_a}g2{t_hUM;5NUt z%&YAgUxH5m7+lF~#M!tKoQ?jt8(3jb((mkhLd>`uD^f%2gC)nvp-o8y3m5qMFxcVR^Z(6 zcd>5y8TiaAC)F71J)y?z$w{phz53GI2=}jm=j>_(ENEh%G$LrB9zOGHkdbIWf6pfP zd1p~hW$<=yVfkl(7t6p!?j^tI&rkBSex8b~LcD4aPFV%Iw;`FaRn_4tdfw+i&t`o0 zF4nC$g)nb93EdQo8PPs=(u){h!jl&hpyxJPkPu`?Vo)#Q0-T8PHzJ-5I4;11^~+Cj zB$G2MQRBAil$8ZTd_U8fe?L>z7-cnvG`~Tlar89Suf`8w%NS0x$iy`F=cS`x@O3+q z*bw?mo7HpoM1E|1-+g`;rK$3-NA#g6Xb45zPI1663WB=O^rWn~esujcimVrvL4E3P zw=VB_OTEqi7|z ziFWid_4V+(>%&d>?(Ms{&3%+gP!iCC_wHgzMh`}POjzmPg=IbttPStSa>{UZ*?_v& z=;yM!e*GQF>KVAr^v3MpyD3@Sxpz+`CJA8D>8`)|HvaXu&tS&11?pCWSu+=4`m{N4 zcVC2~M~|zLSIJl2f9E0o@BinY@VjTHVcGZucWhF9=Ue;^Hy_-@N`o0oLsRfZb{)$0Db9sgVrx_dZk@TVPTeC}@q1kw-GfabO<2!lwT|Lg%S5?4h>{94V;PUx5^p2F zqY+Dd_2{LrEb#{X_1YIoR+3?Pbl6RQpcC$BF;yilk&df2;;Fs!;a!{=JBK=-W_2TH zJ4B{0A*kmo;wG+#UFa{3=NXt`n}+d91I3i5(FQN;2!+p7gv_xw?P%w0BS={NUo-oqN_ zc2xS?SO!vf6jiIwAR4`UP{#7&i|aRBSD%;#*VDPcA3~j^T-npf^ zop@3{`@siyFqYYa!9W|vm^z0;y3x<$HB8Zu<#yukr?<5^ZvNlxJGb%bYj5E<|L=cd zHp{@7zncrQ-pa-rVL98*L{Kv(0$Z@$zYWX$^jJ)hj4^$WG2M*0n=rD#fFVA%2U}3O zs0wFSU&K!z-F6KiRI}95GC1CrTzik(|B({=9_k9J>^D8|>fSfd#CBBUpY|n$T9dL>sIi$M}|d-`>?%khGAg%Bu$% zY&R)hOkkefNM@V%onGqNrVOkydIPUq{*djt1rc6)_|L0@)38n3Keb^QR3Bi;@ILs> z(;?Wyq6p&l13Wt5J--3|9t~V?=du-Ja4H4quNpM26MiCmDfU z9ea{TPGq%n>t!0g2L21p2=O)|)Qb_uW6$$ToRWzWEaHnp4k|Wv8=R*Tk@l(R}&sH~xm)cni|_yBU;KHcQG(KbDq3J*dj*)qE!t&gzIv z;=qvRI<~D07)H?2Cp>Hd`d_%56 zLTkt@$!=0arnEjv%?TaL;u<9@DH4^Q)q5Yle;Y$AU%ULROkiE;VhLyuw!!Jyg7N%b z-2PM=yw-qaUtfRyPfAwu_kh#?b1qDJ8)bT52}_BeET345XMQ&e@{j6G-N`QVR3kEqz46|*FvKksg8k+yD3l>cRZE1(Z}3sfF9@D!9%1mCadscvQh_Q8N~?Rt^oS!+Y=Ecw~9)iXd?9 z%KMl*GZ)?qcp^9g1$mheOc{lE+cYSwa6c!-)y1gGk%o>+L+X=h++8<<;z6o*Ud81L220$8`OfoymwE{x7?%MCV3+N_USFu)SzX@qXVo~h^vA~X!(A-z*ojJ?Q4|FXu%sMdqUuK#w_o7jg0J5EL2IZo!OG6^ z-P^ZNA8kitU_Y999I7a*uiuu^KsLuW-s3jky@lRXCoFze*jWZz0$EzJT(Y<~VOi-Y ze)>d{mF%PZyvY*ppZ?qLR2ew!Kj*+mS>3rW$3iojNPlE_DV~4M4RdCBV&-)DR~H0# z%$>6Un_RMbAf4@@B$s>mKmO1E3;+1veuLLveO+DElMlPgWBc`Y-=Q)!2c>iTu{|Om zyTXdFHKGdZqZ%<9UX2&W_B_5=ARA>TJJq!l6P_|p*NVXa9n(_>F`>`bif*3IZpvza z>3e8VCweI@%OW#NX*-<012A$xYxb6Zz|N%pQ|f~aD{=MUb$tKPT`h4<3FwYinoE+q z`x%ftzlNeRAcu)PizWKmsXN%^y^vcqfQ*nfq%5)^b&(TU{ym6X(1w2VUN!ynKvI?K z>d3nOV~BIpBf-;*I0`6QZsDO=q8HjR??3XjZE6k1C9A(ES%vYve)DVLFl^BV0dCD$g*#Njgn%*@@j|If@b(EY-K{K#iE7zXl@?GXP-}M?fjvf zi`%NLKX@Q>lQNBv$dmTLhujeWJEd;IHw8Ue<^0s_D{C?<||)NR-H&><4pAHMKWcT60jJFEa7_1+xZ?zRodkF zJ#K5ymaE7L=te%plIEquxjpZw{gOr@pLPGoTNrQOhGOq=_6m^ulDoVr=Q`!{MUcLZ~y(@aPIv1sV|E=ckbhdAAUl0K?Oqi zIirEu*ce=nO@Xyo7uJS>penq#{i2#+SBB(9<)Y-#p4}MtZbPrX9zDJW^ie)N9Kh@x zyv&r9(c2E2j{^=qXa4`#d+)$F>O1fMkKa9azkBX}Pwu(P<#KtROL74uZEw;_t5vsT zbz5>Ta_^RGxu{r{En9N$4G0|!CKv}}AO;eONq`U%APJ#_7BIaSW2(Wl&+q;DerI;4 zt%_yFB+S6eyE{8OyPBPO&HMA6@66_`pk>&|7oy}|&OiRiCkvLwK zGGDoj_*N#XR#Xhju`_O>o)uS%bw=zvc+r5JTW_Hpe>>&pG($>@QH^v^EWCmW@b~9N zmrxw(Ehn;6lyI@=9ExU5ryqR3f)+2jh;F^@F?#Bmx9RP-zMxYd%lU~udL*vJAy&7C z9yv;}*kpX)lPQ{sWEJ>^bzR8GT}oLnbT0NRxzR ze<=2d~JsH__u8 zGri~FAI0^H=I5-Zg@s6Ar7P&zQy(cS`{!&R`tazdv}*hoYDcNMs%SgX)i&zMM_HKH zMHkH8Lm$2>lb`r&G1DiXc#eMfUoLrBnDk6q*50L)6>rEpA*=Jw^$S_~z497X+{hjd zMd^3HeMBr9?z6>x$bNC>9rXPl{*ca1Pov%EpD(*~DI4M`h-gW3J9&QSrMiqbb;TR# zg5rgAN!4;%SJp%)kgP>bF5<@L;=sX8n-9`f{LO3e`PU&quaB*!H7Kc8LQ?IJa0^QO zRtRimaW^eRdTlG~q&s)tM=$;AO()+1r9r@Ie6Dz<7C5P!e?1&=H1fUJ6GG|E60)^L2T zvg}3l@ker9I>m=YVB25a@i+}H?x6CVZW@ZzSBd!!MTt5jx|CKf-J492T3MA~{e#%J z(Y$-b6|w@6Pm7(*_ANJ2)Za#V*$XJ1wUlxrE0Ly_W4l3`%34HuIc>N_Ifxx(R(LLD zLyD2We98k(%Iny@NiuNn$hU*#|IrL065fZMgp4^b6Xyz2OJI&#~C^dEzq;D4UQQX1cL$FU>6E z6J@c{ff=PM>CLC)kxI^UT#CK>@@KRHsiCE83#}S*KCLa~mNLJ_mz)L}w{K3+;ww3e|cUkyCmOFezZuhQ>Dec^V5LLj(ojtQen^icRO@Ddr zsQCUr7h5~gyv9aKOV1#$-%qi4o(v8c zO8V@j_wl}*O1M#=!`6fN8#-uJ-fHU3T|+$(!z$2$`%56JW|X^2Q06W~c{o3R zDIMN%x4cl^J9zER+h}^cg_;W2QDf02nuQ&~%=~pU8xoq0WIYk<;@*un$+HCb^T9)> zP<)5MN9H#n2-JpAWms#0b3>ldk}1Qi3;``pM}TD9^r zu_IR}`4sE**3CCkmakRxfy&KnL8@9w+2Ixn`5>fF6U4NTvXLHhG8a#fdWd)GBFm2d9n3114yoT9x~{RHLWbjl9#(Tz0} z53fUg-UERxrkd)xbk~vJi3Q6Syxg?mCZw=dOxJ~J7Seo zXg*5N86}L!Z3F2I7}| zj=kx}^z>uT&^g~trN-;#IU9%cd=N9kt~^RM8dGj#9TNdnGM` z;2V*e*H6Ec2+K(vO61o=JeRGzPW-ydbQtV_lAT_O~(S=LsjvF2j-bwf;=9gke$n*OAi&M0I%|1v6DGKR~E0s9jJC@lFP<2GwAu-&~YC@`- zNV8_GqT>+vbI*N3A@6v+4oNGplp>yH3T9xMzyb(v5?y`uFGTa=hxq5Y=ijGz9EmCj zQDrva`~HTNfzcTD0(r1~d?DrKH&brzT$B=HsB!*Qdf^35C2}t=dUu1n?|GP(F4;*F z$E~HI*wc(1xsE#8FQ@x|{ggbafyr(>_z0eBqhi$mLr{tpq6`>a--*QbnwTH+F@$#D zC%>T~`SVc%HiM;g5k;`Q-JqXy_VhE!afM;#+AYM98Q8 zY@2flee#MFDJL-&){}qyGyUM(=TKHg9{Dn&)Yi$ek|i;xiO(VHT{~q1J0~k{v*M$I z>E{KgzHW?c=VAY0IUc(4u=p9TAphV5(i8vUO;KSvJ@x0mh-p4WO8pcI`+)}@q;V4` zQ&CAdRae(xuG-NYFadAEv;E}0bO_5 zZS(=38pmPj!!PK)SH7fXq|(t?&ZBZS&?uCeV}~rIU;OmfLVn`3BK~Oje3ke&v{*j@hx=g4Nr((?(#|^aOR2kY4!5UsH|WfMZDu^{>&}(z`cKwZBe|O zxx7@mF8ucXm#8Ff9z@g#+03EUE3Xq(2Y0*`vcgVe>*fO#4YW{BRx8ra5{hPV`G?8{ zDJv_qRFs36p_#OJ(H^;e^LBvs?wMzfVH>)DJn41hbB`l;+Bix-XB1UdG||J4yr?w3 z6J2%9FDMe3KoQI%;GaPr&o?YtWo0cy9lV5ckdETHi>WYw32Ns?Fq0;X@1&=nmPZFU z5wVE4?mq#Wy!OWX^!(BH>7|$X&(R0met?C~QhM^qx9FO^chfaj-bar=`l0yp#L*F~15ZBwF^w9&Ml|XVg{X>S zYlQ$y@EMmhUqr|8U5Io*EWl6bgAY#93(p^;KR@;soj}R)(Yr)Tn)Xm>{#@#4xq#kB zBH*K9Ke_xKswRgIs#6@4L&aQRz0k`>aioo9E)F+?Q_O0jB zdFS}WRX*j>z#KaF953y^?qEVzAL4IW)Z9jHR}j-gC=`rAR#B9XJ{mK6620~22_ZD~ zpvv1PKE!wWCcSv{bvkwO3(-OL?z`{iU4on;-#}J7+s~&F;juKcpb@2SJ2mEY(LAK2 zr6}i`A&N!$Yf%brqDC+uX>xi=D_ynur}C&A&x7s44ax6+PH(?(jNW?wO?v0m6Lj*# zCt@02#JnDS0%`47b&y8nub`1gUgJ>r8oe zHw}&UfYnId%S4;gA0Ip}zGptolH2n>{`fO`{x7f7(|>-Qj=k}jXxn=7iRbB^6DYqv z|5)w}G2@3Ge1WRU8bxPJJ_@(0^MH_*2w*HN7;gL48&J}nlk`s?ok_agcJiC%o^GvX6DI9WZ0 z&sR2d2KoI+VVQGK>dzvdZ;EMqHe%Oci>xA{1(X$O#sb8b5M4s~F)ZkCBNp^LjGsp7 zX~XEk3x7^eKl3rYgN^?rHazaf$G>a93-R3#_^>L`1HXBl=FHlGFJ~^IGEx;*-ZG@1 zqWF3$fMoKrS5rZ}Q;2Za?wjc^FTO*^-u(#i_A@abmLc~$;kx|!=Rc$$UvL)%+%rWo zi-%WJNsJreyRjFMRTb~nq?0uL1nucPpJFIXsl_9SGZ2#kQ0!yj-9rV`GkK}F+sp{6BJWLHpN)wAV(Bz_xG`VmMO~PJ(YH1g}_{d2*g>~g5 zq{*e?+mC%ho#VG6X{@HU(#_O@WVdw4dRkb4L^6IIz4FxibmHAl==l2|(mU^eKo39o zDE;t1P?EXw$#qU9Ep6?hH{bn`j=g;XY3Boa@7B>X*qrIiOfDvHeM5=%t#*n;^+6!>#rZ9_ue~6A987n4dg>e zikX~Tw%LZG5mjsM3^W@Y0V%Kh&m%Ky<28WovJjgas>lyD0mtCr$T)SS1D z7D34K@;1=iqIEO_>1txZVwzIdO84IWBprL<6n&;%VU|ln7CWaTUc4w1kH2<`9{uer zv}DHlG$e=}9oC=voJ~}pjWQ7Pu8X(O&-Oh`A7L54fBXwNar_j$bNovx&s#|4v1Ryv zS5O%wRhrd9L$bQ5II^5dvX@fWJ)ZVmafIG@rA-?Sin1>nSxVVi zZ4?eILBg5`abf!kE~U%>o(r{5&^HSycQj3yxR@UP{nPZuTki=evHU)U8MzA_SKhpB zy@)Vy?R7`U>#v2NCS#s+Q3fu+d>3G+Gt0C+8?kG!MOJZa^jQ#A4)zw}s6~{MRV!-l zMU;yYF&dpinOW1Ruy`IdExdrby7tq?O*he&tvAv7jn`A>%ByG+%9}`dI^||BqI{&N zyqx8f7lTl+hs()nqrCV^Dnyx(j}195cNvo0JSr)hNlV+e(YlS7(~ey?(e~}P)4DZ> zsb$IKR8z_GSVV=fPAWw?QG)WK5PR$5IHLU!+|TWVuvSx1?n=n4ojO|gioM#7?FVT0 z&ReLb>v|ed(*wD6ivC_hvB8w)ucDE)YiaqCD{1D03#c-0BbDcJkNYl~HGT(mEZ9qJ zjTccHlGt*jwn@X0rb>2GeeOmYfobdWduZAG3lbaGiI)ha$u1gGxE7@%WCi(*M+r0$ z(@sKi>Y8^ot#7@CHnd(vYZqRI^t6u_mT#uHdFyEbB)Oz?8#R@zr%6SvG$b^ZW=w3M zDbt&1>g@S6eRd;FZkR*<^c>3a7E{ojN2R58G<9Yp&6qKd=FM%U*)tbVd0D-X4*&22 z9})DpB2+hQjBK0Z6(2Em^r%TfO8k7#$JcL<<28J3_FSdQLzI5-{dB6W8A&Zmm(#M2 zZd$gihZZ)rW2ZBezW3c9(8ZTrMkhbxzV0X&VZry``IzQ3ETqs6b12tUNO@@$RG&E; z<=$$VlfQ=MLne)27GyCycP-7r{mIxlOfBd^QpHXJ>q+C7EwriiTDo*2UvTbLx^nx^ z=+Z4W(dAozM(bLypr(oIs3Lnd)$sMm<6Sfiudm7MqFPWLUQYGc@y#2zgO)X3Os!4l zQ)}~XZ~+a)^g>kGST~ULO0rf8%8;~*qAe7U%%j}Q=`^~ogSwVqPMbGgL)%c&ZrN}X zHP5@8N()iK`KD7#^A*&#(^gHYt~&x-D|F(?w)3-g|fakEX^vk|)ndt}8Y zL}I~ag|T2Gd~)Ps#LQ-j<={(!FtTHdC^I^rf|;{KV|;d2JJQ%^D$>)nNBaFRA zZj2igJMnsm3KEHBx1+3t{PGr2JiiV1S73Y(=DU*e5$R)bZYx8%nFmqwk;v>$NN7D) zq*eG#T}WfAu;TP!ZzhjC7UMO1pG7zXD?LA7lFxm*mP1+{pdCpL^A^2?IZ1Il*ETAR zZ=tfhO`>~5Nt}Dy_fQ4oHN0dGRY5Y>#GD0Zl!lH|U{3)&+Au3Kv{P+j|l}9?=hr8{jj;g%k-ELQc8l zPLEQ^pO4pOlPf(Ue!9yoE`=PS^z z2R^TmFO|$cBEj>^3KdWQGAqa}rI%iMT{P)^^yR0bN7LSGucz<-7fMuo-k>iNpFa*^ zRZyX;ff}%!ry&VXL8{^-eUqarsR6Q@7+p`}vNqCalyf6)vhg^ln<}%{B7Lo+q1kJw6px4GbSdZM zDWbv-kk8E%=j27(r~u@HJnV4uvX%*ADA{5W?q+~>HQX+5F^+fOIhha=(u*K62Xf(U zg|`!IBiL4=S#wb0aWhH_k`%U)$YN9&OGWAlW9J^ugs8HnfNA1!2+|6PL^U7f9K$8u z9MKz{`&)&XV54|G6r79igPDgk)u;fm`5QqK`A~}b{LQBA*@#_(Ewakang#GhWX*+y zu$KW@e8eMXfj||NL=hNbd=#>ZLQc^fW(mMJJTGrKm9+qf3$Z*0sV9fazc`C)1%%ZF zS*=DA>&7jMs~e)~hKyKP5SK_{EHRXWajaBaT8eR9U=>&`rp-rrP=IL);@pVOM;)0p zU@c0&gHVdcg~QHtlvutzV;?*?myyebOT$n=%JP9(4j%(EH^ zt_&Nr^atoX!_*WW!(IeAEE;`a(Moj*(b%5%h3LV2Fi;>S80P!3Omj3z-!4cO_7 z$M-xAfBV=RK3|W2?WK!Gf_i+1!?Ap8A-5WQXVqMmi*5(9>p^uk3kf?Cr16RzZZvNf zNA}9`U6eyg+<0CV#dirAiX@fIf?6ie%R}NSM5-zP`JDEVj9E@`h$^1dM!8w7phW|p zAiM-D5|>|zMVlywow%e?bUEPuQQT0@iHN%nWMZ4igsdWwB@h&seG8DLnxw445DyYp z2*L_w&cOH?6l9Qyf}td#5S~L?3Zc9U`sX2iErOsHKumLhOj3Rb&Bx_mU?!LWkhCzZ z*SEm5JsYuWutipxSu>OlX0yQ@lza@ngzWjE?90qd?H!-|~0 z9O7Cnj#duIW4O_N1(gTtiVaILsN;b@3&JlV|w%t z&tRFA(f|40IrO9RJaq24e){+S{e5bh-9jH6Kc!xHfIj~63z{}}4xN+crl9z(LVUge zU)wzg=_;RMo*Ml9i%{aNqzRDE1WuaqRWt^S!m=KP9mE)jXH2XU!s--PI^c4z4%9$K z)ks2BNMcn;WtCaoRFMT4;kGPm6@;_`iKzoDLu%>}7pN-{AXR5^smFrietnA}s3k~H zts+6ixd(Y>C*?-4ZgG23W}7%Fmy^X!9((~i?oz;~!Ysmih{srm<5-7tvl%|<)GUtv zi7p5bS~S#(at{eAf>JMY4n#B`5?TP}fjNN7Ka5A&7z!+boSFa<63WCtXd245sbC8E zLz5w*DPSt(#BEX2Dd6YQuNk+Eij<~+sbCs;F`Xya0LF`3H>P*{zG3~WB3ZK&g!vY- z5wjq6WB7MmO zHk7X?T9?S zR#FFz%kQKy`OA>TmQhu_Ns5Yp@6XFU)#Cy_d6@;nzwPJa_ACDNWtL7tRAxc}PGRbF zGK~fOJRenP5Efq>OCjUDEUGLYO@I9Tv*KL8hk8%h#dZ%JU->68>R6|ER*F} z1}kY8mMLGBWh4YM5~3Li!PIB-kAAjMO=c@qK_nHK%cv}Z9Y?&qbySpH)IO|~q#!9G z-OK>e4bm`_#0-qmAtl{NcgHY8Nhlqoz<|;q4KoM=B1lO}Nq2wqJkR@ne|~Fy>$leL z|9jo%+~?kBpX<8zK6~S>nc9lcsPD_!DQQsXTG3kcS<=(ke!-wp^vuFl4n^n^ne_)F z!ZNuF%j*vtTP4zFAusT{C`-fqe*WpJKblaxg!H#J=q#v5 z;1Lx%4?rja)nwy&z)3;NCPbCO_J=R39-Q07CR_gXOi?AQHyR-bNOYvJV{dd>TNIC> z6w3Uj&iH63{p&J?iGYEL?i>1zdl^{&FeLB zNP|Az3s2@sq0Smu_dOV@n7hR%LZi|d{$2#ByIxtxe=I9{+!+3mmJN{LRUE=?8}0e5 zRvA}kC?NUBqy>2{n+BjnGB)qkI25Om1M@>#wvp$?910) zi*rzq5AZmJjPB`0_T8rEgo&ePE8-lxgPU2w6%j>$C$ti@#MNjhnGZ-VZJP%grJ;5A z!08u~;dY91%8v87F2}1>p&tzA29j;>xa31K>`uB4^fpFjcRy4b+Ar5f)rOzzw=4z= z30e^R*%pL5j^=CT?Bc+^MI8LSc_;0B#%hrWqewwsqNQ zM)ldHMhOjuux4r{r*Q8kZD+bwW$TMaB_$dRea&=|u3ka{Bb=|eC?#!S4C%d1S33Uj zEZl8`o-Z}Vo}E1|EMyVsw#>&G50Q{R@X6P8o<;f8_1*h8$g2-hMeMI1+c7i>Mk{OR z@vP&d!I*2#qG@4t=PZI2c=1FN_&7&(ZFEaAruQ^8^#fEd#2FSl`~(8RrZ8va#U<}> zxWegI!y9C8Jyr<>=KKQeBj_oNa7(Y$BlY2b81x($+)NYzDRr=bh-arftQ0X7-4uu@ z)xP%xqy0>r_K*nohpU;92O4IqtjIn#JI<15nr9+fu;}$7jn}{QX=zXW^S;#DC$rA1 zzdmBM802|NX19JECIC;v=*xe>{Y&FDE4t{D*LIkR9vALEGT~1V?LVL6&!o{Jp7_&W z7yIoM3kEa@Ou6W{0kvlH$Ti-j6|5I$ z1x4|`OBMCe_ZT7O>w0T!9fZ$B-nXrlz6)Xn%I8N4`n)27#{WQI6yE++Ej5wXgxVS6 z*@5vKIZ2g(ECO{AdB|10o(Iw1!$sD%3IJUb{4{mcqj?j7sx=N~`qf)#P~by9+TGj$QZg`tnkYOg3?iZXMOQ@+A0>_P0ZH*&|30i*EJRINDp+@wQe*o5>7NkSuK z$gK+!gk2wjV^}K*K~8a{c&UkL4J1t~LVn3sFJ7*Ry`~dZsSEq((ivTNaK8zbZC;-3{l}<7d%x5!DWIV9F+c!oPTMEsHI!{p&T(v@$`RHGy)F z>k3=gEFl`)d-Dvk@eFeO4C3U$yrT5zB!FpjR0Ie{^bsElS){W865ZbQ-SCLRdGMaD zT|E{YT)n!UV|(-B8*ySStEP4Q0SRx)8P%eX$1Wu$56w;fbxX$1MYqgSQYi; zOCZUe&cbUed+2CMYt~(+@1!0;3dZDmHXymKFzMN z3ui1u0cmk_{`n*m^`>+3KGK=wwktVd2UNW-F%LNNW^qO(pFz@gadw67Z4UJ%(e5{i zo@s!Nend*I`9}S3tU3C@>9x*Fd zzb4OoNvm@4-CIh$MAn0!uZ9kFXthG8$;b6%mJH(o_4lj6Z6 zSblN?R3aN_!D^Kh5zD?GILrzAGbmsYsnNwHPxDJSlw^smpJIl}nQK%NG$LOi9^n!N zkUlq{j2jYD!d+c`z2*J5@jv54Cp!T4Z9ZHv!0_sf!+JRkML7mIqhsW>p7*hc4i4Kz zMfX!qgsb#ZQZ>GATl&S-l>BwHl4Mg$i)A<-LmcAjiW7iW?$@n>gUcE*W&2XtIKn^% zVCY+s{F;>!4^aDo#38Dvirt z$;gX0aW)bU$SctKT3Nf^J8FOaL1g>AM+alV>_rldp;ciF<>2!mDJ>Q@8o?DsKFXo; zuCFTby3#9D72_TOu$6|DZ-c!Y28K#TKu#K7E`CSXk0ol~1C)#cHA|agNs|6YI$UD_ zxC?~v=;Rtg1|tD+wp)7s z4q)9&0#83&Fl6pE0!V%}@YQaz@qL3kbkNuUQ2EV24JOOPKP^>lJeX)2a*;~O)o^l1p?(7&E3NS+p(W&>oo*+!6d@q`1g+aul5bh+a) zk7UKP>i{RDfV>(sq(j{luC5*#t_ixx=}q<)r;sIRQb@?^vp>iSD!4*w1hKvjtU1rI zyd%VG&L|XX`%rb(vqT?3D8BXLJ?)S!;pw@@8>6}GPv``@uiZ<x|EH)WSSj)R~H zroOm>ouch1{J9VsLS+>oz_m%RRKo!;x=voDR+(5?iM7k<`ev>?j-jA@YyYa8u-EEJ zk*zmse3+OVueXW*>>Ll6=S|WOuOY1V-bH!5C`F>nMX%^4evLy)Pg4uR0g}V^6y&5Q zaN-wo9aa1LPqf?0DnLWd#J#^# z7urU!t6UVVHKu8KcyIBcC$Rl?Np)u8QFjcE_6p7Q^jCt2zZ+S(mT^~0+R+VVj|x?p ziGNrXGZRB;(j@a^LMuco#BBkaptxB4gGmf1@zkOCK47|gNT$~Q)!h{+tOAhmap-R^92X^ls*yTKu7*D;&=E-_eQPO%muCKoa zw{3V{R>U#XTf$t(Czqe4FE}>DqiJBICNybcJ@@ZlWe5CzMpFB|t%qZo!ZA3)o3(xk z&99Kzgri{}qA{%SGL~V5BS;~Bpa!j#ijnA|^y16#PoGBae-QoLjfooefALee;)rTTZ!4sQKi>2_ZJ-%%EAV+n!HZ&Zl{|itp|498oPtix6 zYfJn>@zv^xJT)aFD)(6yLThg7uYSvPq9)6Ien@p1G7NY8Y|pZ$oH@u5`4xZjSd9Rt z2TF?(o?|CV3Y#NPd#RR>Kiwf51BLCrc49?7VO+N}3I|d3|BpQ7dErE9d+tQl4LbS> za#!Hx?pPa`@qm$r%00fXw&l+KqLlN1B|T>;N_>P;&pm?E9A1#Q??wCA!Yx{&cN})E z3pT8%KK&!u8%!sFfdi3}xNm?jF(I0*uw0v=rU=j{6rlxb@~Ryb_%1WH)4WN0YTtI4UQ=rz?V#VJa% zlWMb__^tFyTb=i3oHY32;fB#fEC1$@GC>2XX^fznlA~Z&E}9S|nol#v0)XVu zgwhL@^K`J8kL0p_|@BxkHDeia%`t~G~R)t3Gkb*%B)b$)+1^nDR z6On31gFqQ*)v7R;*StfX)A=;L!?nQX$b#h_&rb^8pz&HyO?_ebM{J z8iaNd<>0iV*;h9By3VX8|5pRKZyj6G6T4^nUPCL6MEEd8d?j6jwJzHT7O(Nvq7a50 zr%Zf(POr$#m!+?pmwRjg@-x=zT>+6Lyq{Z>{@2IH)U#AOWgvTlwV;z+Dx4If9=O5n z59Q^)5`V5+h&$aVp|zpUxd*7@1agrit(7J~UbaNpu~scC`HDIRX{XJ$asUNfCx{*d z^n7}RMTMT&WmOE$x9f9Xkp?~Yn^S_=u<`+*$wEtg4>bqw*_LV~2;8a;}7!X4G8;Jw%* ze7GdDza%4K4WlV{{LK?tJ6trL6>P%H!k6`c_qUuZXW)V53@Ls`s)vBAeHjG%9TK(4 z&p|(ppfBP_xrf5?j^VHV#{;oddjlUMNXcolACQbkdQ!l~BcsXbHRCm*&DTAY99qik zLq=tK4td?MCKjRos`I@$#N{ep^OK4Du_!#u{+~y)t3M0kVmB`S++-F>dXS-L* zC)9*qyn~D?HXsIYrizZ>!VetbQ^~z*8~ZA3eT3D4z=L=%>UQE~j}%Fk#iL@p<0JeF z^mDO_*j}}8Axk6$JQv<}-f^7Nd!A0a!g-xX+vpb+Hj(j&m2Yrxhv_vN?>i29wK*|@ zDk@Fx_&o9XQVx#vlm?!)S8CDkCB{nZNhi}Y&0ptoO*ZiT>yLV%a2jqP07|y4457`2 zWf2t4{6ugdkOo$7_D~#S+)1i72iJ~^L@4je)XQ7fdH-KAf9#;q>IN)E{1Y@;?n)5- zcwNZr1BW%6Udeoqz=?AeadUXsY#MAfHV7#i(fUK2+pCqTkso_BJcQzKRk-^I4OGw@CcH^YBr?*6a-+bFN|> zpOL^48+huY74QDd6fds7Z-gw7+2B6(;EfZ0COX0b2#B}-CHB=E>iG8K*{{g?0b^o*{J9;aM>HJN`+&7V z3PfOu9s(gHRF~Ai2GVK&%2Rne$VVeU{&Ng3_oU4jI&?S+tXxfRoyY+5x;}{U_&2dA z1Bs@ghHggL(Hgg8EvfmJ@GFp1OPD}@c7x8`H625AXU7^8ns9EYGBuTM`jm_!5eNzd zPUEYKZW~?-deyGlaVaCyr3{P!Z3J~fFlxD4x&me}LbjTCkIx0_qz=|(Vloc5>g^0& zk4-Z%y037{Rj6|MZutuzCo2(Bg;UkG>`c_>)E4p5C^8-Vl0c+4O5fo33n-ZmA)p7- zZ9tWo-BI0?ZW~x={{sdx`fke4_W@}V6d3yXeJp0IL6ZF%jUUeRip%ESd1i4 zGD^}0o0nLUN0nuO6;w)e!2Rn<)9ip!l?FH%RbOTfQRWxQ^j3mwDg%W;TMWF_q=H%? zwmweH5}@)7%5?>Vul22n5y1JU;2=2tkKOsT>h|GSTwT)N>O6S&mV%m8WrT2wR<{{v zt>OdqG{LXygqg|@IXOb4wb%i_f>}S?8d$-n!psXdl)??*6X1I=;?;Qe%<$)R8sXvh zvVv`BUX0){Q@!Z=&9pdCtwv1g0*UeE^%}D81(tK5_NbYOj{Pq~MPH;TK_ED=)Q=o? z*}9vxIU^>7WfI6<_>y%_PPyHG@cx}`pEYd5u2d8H#47kRYTWPn4!HrOhX#6*{N}3! zJ5?^dpF1{ar$?eReJ_3Z@&U%Ffvx(b#|)W;u$sAoT+XMzFvJ_l_4Rr(l+v$(sW-6| z*Wm^)9#*LqQMwpDX*$+A*2XqV_Pj)a@;i*IDp4R#AVAjwLfeiJD}texk8NqS-Ae4> zi3R*-pcly8bAAza>uAc zh)9uBKd{tmw%~a>!ojpL6O5A6N)Qj0a%eC8UO?miFpo&sKw`~`UIku zPb;nA*__hCrpnqYM*r`rX@DP+2PDrh3R**<7u7C8is=yg&vCnWD)A`3Ki3#Uv+z&& z(eam1MU2M2=!L~6DJ zdM>$#mU)4JMo!R^nC9(>hpJdcREj`QXF^{@W`OTh)&{pk307hyU`v3{X*8*Z80E;? zIT|9<0{ssH%|coKl+sz7cJg3IB{dcd&Frfy^1^ zd2&Re`S>~(WX=k*$hJ*!XqS#y!57Zd`W~~?cikkg3`u@9e9xtR?=dw_yHdHVqhni6 zAx(643k#se*cuMuBM<JWiJ^qO4~$~qi6RF!86!p z@eF9HGy8r2rSH_3F-hf2Rd0Ns(u*g(j}(g20@WL!*tz!O3klH&RXe_!O5n@KDB!y` zdOGTtl&GJE(aA081lKqXF@|b28R$&t~XxxkOo6pvS{1&IHq@pb6rEZCz{Nk&(ajiX_ob z5x-<2W8z~oY?-<91VVaO`TM{8nOMGjApLuMk*B~;L6tG0ekVHkiI|hk%Fz&eiplDh z4*nNq1VdoLswS7BoT^~nXFiVKy`8^*23Nl2)`gVa8s8H}sRWp#s{{%7s+YK+CgaS| zN+sd<9U~KN&}3Z>Kh?yGAtGAPJ#tpvF``VD|OWU%c^URM$iJjgaQXlJW# zk+ezC8~wpFxfcl&gV?L!sECU3j3QwShz4wh^B)xvhiV>od(zKV zQIfteNvI&;1J-9FCEuc!IpD_zINnr(dD0^gl#Jl zD-S6LFy+gW_AMQgpg`RgMH8G(AbIljvuGbxdoDt~EL7NFil0-t_LRH&QSf^-$eN$8Og@}?(mj0B zK(*4g)Dk|niADz<$i$zb^SSgra#3%J$2qEwODcq$Y|7K%)L86w5d5)(cte&;?)U!& zxdniPS-K`Dp!Zw5EAUoSDUGp{6%q8{B1#Qfx>%hB&exRXx?}|~bJ#=+SUHy1YForR z8bPDCSgM~4R$+t0pGZt`xZc)Q;|QVGw2MLM2O`TG?9802ry?C}coy|eO`f7|4Z6Zy zmv98s=+LJMNm}WYhC1Y_nH)+moNydO^YF<(l49kfeKZbJVdvK=0--@5K30GsJr719 z137+#_aA|FL3y@neWeK3N=M{2s4!&y5q&BWq-*75l_U5Ld%}N<^9XFLQCmEi;-U{j z%63UJ9uB?_kdF72Uh(>Ql)=Gi-}?_{Q$tU&f&*|76pEFS={d9Uwr|sc15H4!%-0r- zFZB=f-dxBv?G4fLj_&dId#zE>^oGH7Of?nZQ9bx5ev*|7H(geMStpN9GxzN07!pNJ z4Z^C-AGqRGNN=|B#gl!P&qQ<^{M-c*=dJ_`wt7|KS zg+bo6NK*m%_84Y505#G01PQB3+4Hm*BgE-91R{YtQ^N!V<%ynr*YE>w=Q)>)FQ;`$1+08(nj0W+2RB;NM1#=v zggAgm>|vI$)~gw(DyGfK3v`A~a*sV_rA96HI`dXP2@i~C+oiRU^(;rg=(bY^z8P&j z1CzoAVzX7g@uIw6x;WU>KI_lJ_teC=N83po&PnGB8R(8d+_&hz_FC ztQ>Rf`dnVoahADZ5#3)f^j z9puwAVh0G|H1NUIU6n#MuQsY%Rz<_IA*yZtyGc`EsU7Uf0`a*791rwr({yV z%7SHHL>M4ILaQIgtHw{RfAh1yq!|%VcS`>mF{Y29XG$M(4UGt@4U-7T1b6&Rs^lMN z^Bqc9PxTzl(7LauEeL=|$lo^emjG(W3nvt)Bf8GEYe2+WB@0HVR7y zhFUh?xxPqv@d;$rtWVhz+=gp)F4HCar#Lzd;SfdFU8PshIl!B+R-){9L|Fr_)Y+YW zypw{YgVIwWs1ZU$C&|rMiu9%B9#DIx(b57qwrzuw0kJDxKlh6@jz*zyHS9`&v}~k! zc~AzbC*Lv7U}TTS^ZP8HKari1!>QWiEC*J2=KT ze8ww(jatVt$h;sWgL}4yg|>zc^Haw3gKh$7Zor>;&(wdtC%EBUqv+AX{R7=^Nm&OR z2mZ%o>uSR&gXn0VsmajewO5p%S0`Xw8wJ|>s_!Y5`NDo&a_zJQkp*CVhtUh1f~!NtoZBa-6x%4iZ zWi-^>z*23KW0id*Rm3LmlOJ^Qkpt} z@-&*e?~VqL$*{Ga2~^YYV@^aGLd|GFUS+Zx35@!|pvGF7iTFG1NR60r7%B3!rzV6p zzZf}r7= zX47$fH?W|_9Fju-^+>po#(*-{G_C58Tcjx15J(*NF(&XtO5{ez$o?gSExz6DlKwPrp&w6c3k&g>)_V$#2EgvG?pNiI;FHHvml+M>(Z zOmMU!gmMgH77Q%NQW9>|2bJXU>10p9^;K?`M6ujIA8EU3p9wx3T=;5N%Eia8sUO^9 z2QKOY^5-K>K0c1o}i!uog6)*=A6a6_8Wa>-daz{Jd)86-3BG;t_%9$o-6hx3QUNC^@aj|Kv~21dFte4{J?j;e;d|2dEOQHPfxQPM7SAKb}Ov$7W1 zB!kQG#|C}b`)!^PuM#Uy7+S=!$Af+|t#}2erzM;|Ro2y_UG{KZEom3Xl3bcmN^7^y zYdj|vO9Ru0`vbMyn0$$YDX43cWmI>?$S*%n7GYTW&{x=&ET{C`XCbjg+VDjEOozf zdB{?G=S6!u)*qN`HnWuV{I_99uw)n8>w3M-(_}@yWwFfE20_|6fix>#uT_5YkG*{fXt}k5rz4QwD~9k$wF6Rfh{qsb zJu?a=Fw{Yu6oJYF$DbFJ)>ct&ZfOspvnx!DP#oF?Z{`F?nvln^aYQJP*ZBUf*Y8TK zOJ?CMJ)S7z1snb5fwmvaIGcnwO*JIwn^cyrMJENBXo9sz6CIJZ2$0E*Ish=g$@C-% zwxtEhB-B56q(}oc{lg*d4_%8O%(Rn?MxKxJ=N$WFARcTdPYcC=0SG*hG9zQ(IVpq9 zQyJL6;EIr{65X1cEi5d^D?2Wd&Oiy5^Jf@Nq5X9w1&h#%ee zXy*-Y)4+Ntg!6M9a9)W~5!~0Dc4r|V{eMXv)71o(sJ-qxO@ko;GEgJI{f@_>M2j0W zgd;t0OLhQFZN-l-e5`z(N=inkWX(L)!i|LYE;Xnp_Gy{YdhthrX!;3wO&nhir89iC?2$PBDLF!b|?=;{ykdxvWggWB!9%STPPxB@uz z7S=tk^Wcz{G6lp8e;2M)^P~X5a|De=hzV#oFWYnz@?3Y_j@zA8RTFg}@1Mt{^US#) zC-CpsfcC#3^;foibHP(J4hG7Gf+$dT5hd!d9+?n@3`#>NumW_AfP9fAlm?ZQE|P)J z%1ta?6{5jPDh+PX_;KV*VvuQss-bx9Ols4$&C+AN4`Ub})>3K|j0bBWrRF%Q#G<@< zf@d{{2dPT66~`PkfYJd;GmFO-HTkI?bB;sk9&WMv+Czj-EJjg`eyE|B&07CLHt*}( zN12LPZ?TDAYE6w0SLC$ALfv-3D^MwnhGR_tPH2^5#~D4@iZn3_YWHTX^7eAXrlE7K zv^n5p!a)WQsHn#rY0LHqd)dx3aVx>BZJ&GhO#79vhVy+Inp9!UEo={59DPbup1*8j zl^^uL4rGgCeV3CseQ>(kWZgJC5Zn2^~nC`jLB-jPPS($ ze(vt)f!0&*Kka<3&t;CU)C-GtWCTl_b*d|Ujo86PI%U7SW*qLw{Kk98@8TD}_~%DP z_Dtcn#$d&bm4VHlG9fzkFa0Ls4qS}Hf*yj&-sw#Ctn0hnnDPl0K4(`Ko2Y#x;&}Lj zRyt@_&VSzHC04$oUvm|&S;3N+W@pEPDnNzR$djsy93?|+ z2jrH^93!w?e7`8LOiG8r@o(?zmy=#Z?dRjwWfxMCl6i92xPR6piQv;xv$uOC;8xd? z3$2k@WQcZR%cqh)=TD`GS+}B?&3sX3a|wQvX;o#+fT70_4d~4H?j>+GXsHo&@_Em8`NT1Fr@?fP!WxzTkC>&fgOA>Tt*M@yXQcn$U2j z7AL8li_(A&d*Y+F(vsIFmj8^;6#7@FWk2EF=1lO_=DuDiXzF^E#ieyIuw^m#?MB4S z*;uaG14o)(u#`1zeijpJjY5nqSesp4w|pj-NHl0#C0FF1!XIWD-*gxo-uxoCT$Ae* zZ%?IB-)l+w;xd<0;@FlpvBC9C^3T`e*B-JRsZXBmT(%A$$r)xZOmr>P5Mr&_)@M0? z#T#>SwXwx)p>ZYH9QCRBoU&!_YhT0OIAF6V*zddQ)V!9NvtVg|=DcXV2U&AaG&Lbj znqZoi7zG$S>F}~KM8ahuP{{1_9>q?FKeL(N5u^9yXNhqcjW_*g+ZnCm#LyG1=i=C1 zvQ$I=&yXiG81>D?j&|>}h${r;9mHqNVNSp?y?2OXnY{m)CGjz&4-?mRK$rD{`wj>j4*eQ-R7ak$03HU?k@(!$QRUq&& zP3@I#mNq1Q3L5fd)qnn)n-2CWDCOWs$fWWyLBZXG56013mvADA$No@P+y3?~<5Pmf zf9~%DE{(n2v^U;;Kb6|9RxU5AS=e?bU{>$fN%39p?67wo2E97Ox0xm`=D$q&zQy*I}XlxTO$-mQto2TXqd4tp%- zy;rQC7Bk{_~6alc{dj@)2W8RjgXQ z(Y9c*0{x%O#b+k}B=2C$cbjREFEqv8di&EchHmRfdtT{nWMWH~2@37{zWK_Sn5jRJ z$0=$xEXp@1SpL_6Xsr+A=;KH3BPKC%+4rrX-iK(%!Le-qW8!A_2yKhE9l$l~yARzP zk#>v1V`GTyND*mUs01aLsN^8`^mEOa3uB&jlJJGRnCWfBu3U=uD;>WUl<@G~=h@19 zDo9&wio^J9p}^C4NBfD}^5Y|K_s2ji5^F{-gsk`k?(fqaA2EC?dPQ!oQ`2!Md=qrX z>3ugZF`-w}5mz8{iDTwAKREE`#?uJAgboN4eN*_nMy^U>m2;;GBd z2N}0HJ@SQsYyq=QSPR{^QVgVVqEC*o?CfubBASop@H1vpT-7>0;AYH8x;QT>^$Gx3 zxla8am^lgRaqGBgQ@`_*lFVcM`=rAY${2}soo~%>ZMJ3Dnf;u}bT`4gQ4p*FCI78w z{MSS=mYnfD`_x{MjO(3L`}G#a8{2T|yH2cYk;U&&L2N+_9_$r*erfLwiutBH?&Edt zI~BS&7FwgXn|{ZC4fV!V0l6FdU)KJanFvRO10-`FI>%;qVs z@dWOJk@80Kx9J5JM^xTBK2zh_`cxa4J&oVT>4z|A07$svzde9G zDQ~4~|G8t|Dd!28KVJEK+=}bGkplQR@r~|N`F5k*n&UfBCqPp6wfADks!2`&6WES$hOwEjHWBzYNKeIVdjr>*A=FO$;3lwOK z>$qRJq5O6j9s$E8N09Nur>2gpr~{vt(RHlzsoZe@MhUn(|*vE}~++MdVe zN-p(QSgqV|*@3v$&uC0|DN#S{4@A7EI(sG`vQFQ|-581hmdH)b>o%JCv3{#g8asBB z&1VP1*3kX4iV4ks(16X~ohNr=q1Twkjl8=nxhLjut$Y#gah+M2js280@7WaJz{T#h z9}|-KpUl2L7u?HLEDUZ7*KHruEtH#3EH~dMqB`>%PgHmX5@ho6L@#Y)!I}#y@amfc@1j)d?U}+2`Q=pT?SsqR&KnZ^&~v$# zpg)9xuh%JCLXQlj8+=(m=8NPDnvuZv5Fv_Qq_{A6u_WULGU1H;yDiwad-_ejqP22l<&wBThfPQ|Y`IV!K@2 zDK5K^k(8WHHH-X+vfk}H%R0_?yAk9-hQ7bM&I&E+ZeSh@=QP|vaf(#5I!gPDOy+$!!+X32KH6Bl@Y?84$uWAA`aSjbN?{{jomu?bR9Dy1Uo1{(MP_p|h2~YE zwKgp}PEz3qzkioQ;K4c>{bN$U?*!JOgN>L{4Ms}>XQZm4n6|UkI!&drI!^RL_2g4u zwf&S-z@p^(ShF5zI!%v@NtU^%Q1IT}E%$}U_-1Fv+1|0+-R0=<=-m>#UVB58Gd>uO z829Tqa=AS1ykj8aWmGZ)K)$zkULvxwf+2SJng>{PYX-prztH*rLzw>m3HD<f%@Rs{zFCmd@Zl)0Hi)vws z>+{~#x_`1fkDYosU-xLtIa?UK@$RbmJKI+B;qq zif3$=HwKVDy%EkV{04_7ZHltG_jnqHuxd2E@u@*fa4+b!vVZS5B_+=3j#1Kv`;Qb{H6&8>H~|Hj7B)}!p1J>havNw{ z`b+W>P`!GMl#sqK-9v#g0hcK4S5>9j@-3dR>3cTRX+rG|S;|#wrQ@Mc`a9R7x0M_V zhK;hMC}DmEsr+2{d1krX__t7zP6#`X4v|6yF19SlkQ1ig#mF4u4AM_Qj$n;01*yH3 z1A*LV-m5IjK-I&FJm^WepeLQAq9e2C7orsyR{fTP^AIkr5EqF?MXtM_C&pH$#Jnfc zHTTo1NNojL_9@XL!{yGW=Ig zVqM+xJJ}nz`X_|e3p4%hn9*-M7>%=qOG?3u3&a}yJS1iC3*WcjEKIM0EztI$i*|B~ zY64$`eW7l`oTH^e{j^vRu3c$|nrjl-^fq@!I@?3#O&j3-WKL_o90yD(!B~h5JS(WC znhc}z=DO@mR)k~S1woLpQNsHSsB9KromC)Dc8D79%<^r{s}xT2Xc73AR%Rh0(|@?A zKg1o_q;^vHXHiB7`eXbOOE%pvCCg{0vG^W)igiNssB(6?K6Rxdusr*Ht+Tr=Rsnd% z^Y_V9D3!TxPsYbaz`6A zg`c=pq!1*IH$HcvZ`bMA`_g}VbpGK@V7{i{4Tz1d2%yi)}i=!raX1~HlLw4 znAkMYHowgJ3ugB6DWTk1$9o&`y0@jS;yqP#56 z=*iX8gTCQM^)^Cplt*>npq?p@VIJ)eu2Pl8h{@nVKX5@yHk)qYD9&XVA`ffYQj~*3Ui=})v zUGKlB~P3raWf2$_$B^{BzLt9&VVcq{Fsa`!zy(kVGZa zqQ(T+>UuTy(LeB`NfH(NarIHzbZ3!q^hk9f)8st4Tl>DCv51LIJp1-Rsg`BOg!Qiw zv-LsO@3j_FA)?(6)FLkq=F~D9=A56`+kZAGnBAw~m%sP;IN?fskLCe6Gv!SdLPS3PqcHN@8nMAfcran zb=M6B+JSGUTSvp`>*H*7uIsFbLrH&w5I4_@pyr@W8}=;`reEA=V-FnUa$4-uvpgfg zK@F5Pdvvy^w1W1l`6@>eDbY{B4lypD6V;BN6jI$E>U~K6@nk6D zu*fh~{BLNdebFB0MR&(%V#0TSHApbz-o9w9 z1Df=2kL1os<8)*=<5KczCVW@_%DmhoDQ2)$p^+1(lF900de=9);ea;L(Rf=kK_=I% z49t9V{UW1y)bFZ!-W$z;}9??lf+lDkFliUl;) z9xL#1Au~9AepTtxs{9>|vgo7;vq_0=HElO%iAhn#%z6h$9_HD21(AeYWRxY0_HTAt z*mz&8iTnN1PpC_gbbXfQt58_iD!bN9IkmyQUBXx0W$%BhX6_T7#RtCaRH>X8i-p5>_>GPyYb_ z+%uD_c`kCu>E!dM4idY_-C35?Lf=*)e)x_!QzNMeIB-00*YoW2tAe4s=548g*LS!- zJM0HTdefy*hw_nBVlfNO+x}uQ#*5i%d!JT1Qq1(!UYwx=U6bO++nJPXugVH2=|=Jh zTk?Vr)%#;LwA+&f3+Si@j%jv2oH*ZHgC|D44x*-a&F;sppUw;Z9NPWs@ds(JDrz2w zf%ZMMEmw@u-Hkc5T=T^hM6XrVbc{Q?|2Ma!*Dt)XT5IMHVQi^iQj=ZwB%|k8q>nlp zV}1+5_T{vCw-{GY3-kA@&HU!Gg^<9`xS;XmK675Qo#SfRBnYiE-^>(x2E_Gh^* zxB;)4+8Ed8(~eqQAah9E6Yme&65pS*EJ^k<*SuaQemb!+?=v@5w=H%~D(K*^{-rS} zh=FBdu`Ty0*fHjP!B`;k?=R08BX>$WM4H$V{{v ztsEiI3KI4ZRd33jzDBp1av&9HA^Gd>OkhGhY7$|YRuGH;`usA_XVd%@jO+Qfx{i?n z(wW^dmU}XM{>fp*3p3%pjt|vp zSVimI^eB7kQkAN;>*|Borf<}HP3%oRi$%ztvJCJ`7+c!XrzXcmHvM>`raN$am0?LE ziW7j-;h_5!Zui#5U^@phKikHN^Uh^)a8S`lDl1+`l3-zN_x1rKp)bAP-a@`H=IQjB zSU7l&BHS$1s^sEnbz*w-XhLMFfWg&6wc2g1O};zIO>6aS8X4~or7MU(rUz_|t&KxA zGY%U{xhPxXeRJoH?j?Pps1GFdxjmp8%Qrs-s=|!qk zrISFAsx(2WiXbf^2!Vit)JRFFA6>erC`b{cL}>{D5d?yC5DC&jq=YIUEhxPR+~o7W z_xXNKx6>0+ zkb&~hgQDCI|d*vfsk0Hz5th>Idf6dw*lyeeOE(lQjbt|Bcm*0q+XY z=OaCuTXjR_W-wsnOrfKFKjU`gs>OY-9sdK*`fq1{SKO#DyMM-`VfDOrwDU1QL9|YD zNl%|oLxB@wn_XGsa>OlN=LEeTkU$au&yH>6UuA8V@P*$Z49D%Uke#A#Jb2`X{no#r)}8J zh7}Di6fg0fpJi@8y5VzG{=#cE(@tZE$49cNKAxT5!ZNS4VU^#x;+rb^U+-KZ6~qzn zr`xr`{kg>^3zSj?yAP=Mo(%agK_zkMhrWvW1LoP{t~1qlqR&5jH;pL*JZmB3Dar)> zs5m>|-t;Ae2x=X2DI21((z|c-6x9JW2xeuv;lpcWAz=?6slE9kL38U8lil6OSp#FG z`Fmcb_W9J};L#OjYbE~;U0-LE8D!7xHm_O&*x zz6?$q^JgT4fC0gUJk>{#x4J+O8Yngi|_X5PGFZl$xzPs}T5D>fqN9pyZ^T!q~D93kP za&1>*$Jy0Eyoh1ecMSX>K1toze@;R(i0? z@tKM6gnnc_m$+w3s)m(k+*rkmY+#82h3jDiec1%)FdW z(8;*}eYn_o#M*7JUl*D_NN%iEjZk%JP%@y{U8p1nsz_Ju}pq=lZ1;q!SvtxpRol;+q1b-*+f7mkc@YuHX?^tK> zDm1@sPhyAta<$xZ1+uvw=U(Wlh40Nc_|6=0s>bZ5hKW1>5|JRBQiFgT;e#Mr6Rs}J`ZZ~Jc2=fc*JEvW_TcBR-dqTd=>sQu18v+F+Y`4D zRZ0p)`u3ST244-iZKSe|?33Mc@OV~=30_?B>n3dwg<2hqDA`TQw+t06EbfVGycSOE zW2#=Ic~x?~dh_2^AbuBib2)L)NwM0u94dz{JAB=R4LwMz4qw%4e(h6iGDktZZ}0zb zd-?anoyJgYj8R8W+d%YG%ChY)o%qicKXr2Nsh9>*7S*5%F_qjrhQml>GA$m{Vd4J? zrZHl}Pv+uN*>#7J`-0v&3NADl@-xF_wl0$wdN_Jx`Q07(?qt8tvws+}iyCI!j)P^n zpf{f2-0%*4%4N|?F{5LS5vK4#r0J87Pu22@m15F4+w}h7kRrO{8=k18e9V0~)(=^# zER;#gX5@r$8-n#7^B7vBb2u4VSW6l}Ex5t|@BTk&Vs6v6x_!4I(ecxtcLx=XjtLQy zTUiIis(DG}Ge-tqpVsdGKFAeK>^gSGC(HG_=S*Jf^2IIWbk#poi~KkszbXKQ&G3B#LlZ#(m#*3JOi_v9fX3h zj=!9~xCXnyM7%c{-|2ztm~Bd(_ioDj`(&gnvJRp&um>54;z?$wP|hR}Dh;J0hi;vziM zrKCx)LiCZYRzN&`8vSs?{3C>p!neK%V{GGw_wTXV6UQ&mxcy2B2PXR}mb6$U)Z2Gx zc_Uk7Zi*UID*XZ^^?`=&qOp}|nHxjojkIdgUh@3l;j-kD=?k8ST<)31-JFBIaveU* z*?dIjs@?SSaN@S0$G^1rCgFBz1!5q&@*ao%f#fO%Is9jk)leg{vQ2X27xnM}bkooZ z->?t7C`@g+S(3o`i#h?)8w%4>+QdTDH&s_`Y98%*IrRLc_np@zUoI`N>OFhz*bq!V zfO$ouL9SikHXV?~jQJT_?*SL`n7-+-DJfDU_Y6TLdr{F{w-ErD`sZGVz1EZ_NMu#} zqUWc0R3+$R>qi;!$ZriEqTe%CcnjIi@xpA-rmvi4-Ads+0$HTM6C43I&Xdkz{FITC z1MicNBvRk0yP6g~(5_u^^HQUn$ZD{ymQ2do@3B+S&AA9HrWJKt-{e)Sl7-q{!M5#B zUi$990LB%(fcFQtbb3hL-EN(0A|-dm?nbTdnE=#JiFPyA>LtcYxfX+|(bk*5>-lM+ zXT}X(@0+!#_&$yfXp|ES#=oE6iw$$0DF9uLG8`K*oH2n4K*z62zV^Lav=%R89J87O zm2@gZ%T{0>>JwtEtR@G)-2zJyK3}g?pp&cL%r|kPPc>@3nN12nr|_0qwg9-nhwWU~ ztrHQs=poK@>h#2-iTE^6*we%+8hB&rUb!E%3bYDv(%H5_hQS^n!A#J@el*i!DF_4f zzZrxPN~bG}AK1`m1K==YI2T*Mj0-jM@rXJ$5DeR?qz^d1awOngBg4Z6w0B`(Ga5K) z&y;47Y~j%$-$<+uP|!(NEqS61cOq*}aOw_2vw1+QFN3r4Qv>6O*WsaWV*1X5u9?o!_f-2u1_jM1dIPX zRqeK*wp=!gn9m3cUS*~OQ1v*d9b|Bs=DXmyvq`gpWuTImNjM*cf+Q@1+?dYfw%uXR zap+l4LtE&TZ~nFKCb!v}P7*cV6rWnLPj~$8JcI5j(5AeB4!udfUCqY?oRV>8iwq8l z?gN{aPQtCNRmpGI`fQQ)7|+b>ZD7d(-&vn&<_V5CAyxor?V-y$0VkH}8@PwGCV}Vg zmhK{vD2LJBei$d@GTK+SC{<#dij|chAA{&!%6u(Kbue@G+aKjMbNx8|EUa!4wJL`2 z193x6!MZx{aTQd~byTED{U#Yx>zdFWL$CRojGQ%GTS_*Ak8Raphq{HeC; zuMg7dWqM=mw`l>B2~8YMC$pLw!JADL<;Hk4TM6^(V|-~;VHq&N&bQF<0qoPGwTJT? z%8sRuw%aD5rh8NoXQ)|)>kU$UO>XR_gGRLC*omu!Qr}@B4~I>^ZUvz?mdf>sWHC8pVd>{@H}gr`&cL;NjDlU+tO{Dj#+I!7y%9&rcU8nRs8 zbd>wFXll{-bSv3&exl||CIe>A>#3dP7`v`s9|6Wj3r+dx-Rag4j4_8g;XP00HZC(~ zjOcIOX(}7^p?it(%cz}?>kjbbkLk86K$M^_wwaH8VG_{ECfOXl(?0^FH$JKK=wB+! zYnZCz#KMunA8ywDM;R?PdVSts=Grgq+2iDX8aH$VQs31Id{++2_x57fnFd*o@ToRUUQg6l<<9V%AyAQ8d6vfHw}4IvB7GDX0wjV|LQI%fePoxV;gz?TqYTIY4IAIvao!a8rv>+E60)QS;zJIcVklP8Kj)(b2V5Pz<{jsLZb# zs`G(aFmToX(p|6sgvzuyl?Oh?AM_ZUbGZ!=ArA03C;n;1EtBSB?~l4MR!D9DtuM3b zLP<%zXUN1h?9oB$=7c&M-t(`}OsB+xLWx^lzayX?o z4=?3>tpo6R`SwisZd_Q;WrGdu)2zO?B!#+rJ?bf7F28u28K@jNfRM>T8GE?C^uMkA zr$yL*)a$!G5Jwz{m7|ZHFM3dt%el@`sKmzPO*Fp;b<+OQ^h~~oItk_9fFAsywNxX> zo!z;imXPqZT-iO!Mc3uqvy`&5;0Dtdm-!$%_x1%U?l_h-s#4(Q%3F}p zNBy9b#h{rup4^nl`qcWtkaB#$Ri%fA3H;de{L~PR(`;WTX&ZY-Z(8E#g1FLkv7*%9 zMCzLfZ!b-WyUjjs4ifE|4qfxC5jhR)$=Cc47NaC4ZE)`kopaW$4t-mR5!e`sQ_=ht z`;2}do4Q;J15BG1@Q3a>%UknTD@WtclHcFxjNepML)0kh`Za`=WAy_Ox;^1>=__J1 zmL#%T_C4{NH$qj+ju!yU1M)3o;dH)7LD`_%PNDzRg1dB=Estp?D+;AMRW-UR)DOhLg{=KvgX}kWz_jq3)MN@0&zKH7nu(X z70U)weG=97{2Xif@HCHpMKb?=RvF=2vNyZEEhw2}>=sM@;6xFnPUKV-gHp+O8aLoM za7LrOEg;rl4!B1=Hk}fY?{=q-Z#CTha%rv@!zE)M>Io% zqUG$gq5Y&IPHSXJikdCGAskE(7yeVQEn(1XQnD#(-7Y}Ngm7{gr7x)QPu0eQgl1!m z>!}P9GM~o`h3m_=heFS22ochoNc+8DU8OYb6$g}ynubei(e{tSu0H@wj$)LIJv1L$2!%%Lx^k3 zsKf6YX!jGJMll2g@ivZQz#Z7QD1MghMtTEspB}Sho2OQA@B&^7nv34`ryB zh}y!2htHi=49BM2{M|xbtgN6sta1a|Ly|1xR6R&e)=wNLYIs!d)&L%m2R)qcbQx} zmq4i`G@TmCpTjG#Vm6GNG_nJ_om+9dHAJW6~@pD*;@UmmXIIO##sI*=&N|G~Q?cu~7nb4pT+l!;seiqBL17oF=)jB+GoMGMbSLs`~ciFNk2N{1*fO_R9PP$*C;-1!;gm z|1m5Oe~k$+?mvbF>927QeEC0yg;Qm8UdVhgB1|T!&>1X)T{>A=n4b(hE4PzQDlAE0 ziWw!?Npawy}lN3mdxh#Iu=kt}QYP1UWIBp3oFn^g8*BbujB ziccw5z(;w}e^$oO!brH4KxbO~@rKJCIQebpHLMsTSaSd?w7_nKluW7R4Xw{#>4;2= z5bjcdN%--bMmdu`sQ<)Zx6$^0+5?K^vi6rzQt&}Z{^D!$HF0r`~ z2U4M+i4`B=E;&4v>j+1nMY=b6g7J33txQJNKiZ1HwahYOWS*!BjW}@e0&d9u(6f_r zT&xkt!ve1nbaLSVkCWS^?3n!T$P+s{2qtj{LYBrlP}U0Cx+kxE%M5R;?nxfis5U_e z;$z9y6Yk;WK>3EIig;zx8e5+M0#Ht#gt8{ra}b2hm1iJFWr_&iy$o2mflcsY(GX>v zs~(@>UambJI{&iTC|8=mAiu~(XjcCljs literal 0 HcmV?d00001